设计分享|基于51单片机的多量程数字电压表

电子说

1.3w人已加入

描述

目录

具体实现功能

 设计介绍

51单片机简介

资料内容

仿真实现(protues8.7)

程序(Keil5)

全部内容

具体实现功能

1、输入直流电压值,自动选择量程,处理后利用LCD1602进行显示。
2、仿真模拟实现直流电压的测量与显示,可进行四个量程的切换(2V、20V、200V、500V)。

单片机

设计介绍

单片机

51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。

本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

单片机

资料内容

仿真实现(protues8.7)

本设计利用protues8.7软件实现仿真设计,具体如图。

单片机

程序(Keil5)

本设计利用KEIL5软件实现程序设计。

主函数如下:

 

void main()
{
   float DATA,temp2;
   char temp1;
   LcdInit(); 	   //LCD初始化
   LCD_word(0x80,"voltage:");
   while(1)
   {
  	   P2=0xFF;
       temp1=P2;
	   temp1=temp1&0xf0;
	   switch(temp1)
	   {
	       case 0x80: {P2=P2&0xF8;A=0;break;}
	   	   case 0xc0: {P2=P2&0xF9;BB=0;break;}
	   	   case 0xE0: {P2=P2&0xFA;C=0;break;}
	   	   case 0xF0: {P2=P2&0xFB;D=0;break;}
	   }
     AD_START=0; 
	   AD_OE=0;
	   AD_START=1;
	   _nop_();
	   AD_START=0;
	    
	   while(!AD_EOC);
       AD_OE=1;
	   temp2=P1;
	   AD_OE=1;
	   DATA=temp2/255.0*5.0;
	   temp1=P2;
	   temp1=temp1&0x0f;
	   switch(temp1)
	   {
	   	  case 0x08:DATA=DATA*1;break;
		  case 0x09:DATA=DATA*10;break;
		  case 0x0A:DATA=DATA*100;break;
	   	  case 0x0B:DATA=DATA*1000;break;
	   }
       LCD_DATA(0x89,DATA);
	   LCD_word(0x80+15,"V");
  }
 }

 

程序运行结果如图:

单片机

全部内容

全部内容如下:

单片机

资料链接:https://docs.qq.com/doc/DT0ZleG9PZ0NhSWxU

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分