您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机的数字电压表
课程设计题目数字电压表学生姓名张玉龙学号20081341056学院信息与控制学院专业测控技术与仪器指导教师葛化敏二O一一年六月三十日基于51单片机的数字电压表一、设计内容:先在proteus上进行软件仿真设计,在仿真实现的基础上,要求完成部分硬件模块的制作和系统联调,实验内容为设计一个数字电压表,实现从模拟信号输入到数字信号输出的基本功能。二、设计要求:采用51系列单片机和ADC设计一个数字电压表电路,通过调节滑动变阻器改变电压,在LCD液晶屏上显示其相应的电压值,要求电压精确到小数点后第四位,显示格式为,LCD第一行前一段为“20081341056”(班级同学张玉龙的学号),后一段则为“V:”(电压单位);第二行的前一段为“Class2”(班级2班),后一段则显示电压值,单位为“V”。三、设计原理:通过在Keil软件对单片机AT89C52进行编程,硬件电路中单片机与ADC0804及LCD显示屏连接。P0与ADC0804相连接,P1与LCD连接。通过start()子程序启动ADC0804,通过init()子程序初始化LCD。模拟信号通过ADC0804的VIN+引脚输入到ADC0804中转换为数字信号,P0获得此数字量后,经过处理得到每位的数据后,通过P1口写数据到LCD屏上。上图为基本的原理图四、实验电路图及仿真结果:51系列单片机A/D电压输入复位电路晶振电路等LCD显示五、程序代码:#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitlcdrs=P3^0;sbitlcden=P3^1;sbitwrad=P3^6;sbitrdad=P3^7;uinttemp,a1,a2,a3,a4,a5,num;ucharcodetable[]=0123456789.;//显示数字ucharcodetable1[]=20081341056V:;ucharcodetable2[]=Class2;voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=100;y0;y--);}voidstart()//启动AD{wrad=1;wrad=0;wrad=1;}voidwrite_command(ucharcom)//写命令{lcdrs=0;P1=com;delay(2);lcden=1;delay(2);lcden=0;}voidwrite_data(uchardate)//写数据{lcdrs=1;P1=date;delay(5);lcden=1;delay(5);lcden=0;}voidinit()//lcd初始化{lcden=0;write_command(0x38);//设置16x2显示write_command(0x0c);//设置光标write_command(0x06);//写字符指针加1,光标加1write_command(0x01);//清屏}voidmain(){init();//LCD初始化write_command(0x80);//LCD写地址for(num=0;num15;num++){write_data(table1[num]);delay(5);}while(1){start();//启动ADdelay(50);rdad=0;//rd低脉冲读数据delay(50);temp=P0;a1=(temp*50000/255)/10000;//区分位数,最高位255*50000/255/10000=5.0000Va2=(temp*50000/255)%10000/1000;a3=(temp*50000/255)%1000/100;a4=(temp*50000/255)%100/10;a5=(temp*50000/255)%10;write_command(0x80+0x40);for(num=0;num7;num++){write_data(table2[num]);delay(5);}write_command(0x80+0x49);//LCD写地址write_data(table[a1]);delay(1);write_data(table[10]);delay(1);write_data(table[a2]);delay(1);write_data(table[a3]);delay(1);write_data(table[a4]);delay(1);write_data(table[a5]);delay(1);write_data('V');delay(1);}}六、心得体会:课程设计中不得不遇到一些问题,但只要自己有恒心有毅力,终究会克服一切困难;在设计中我们要学会运用keil软件及protues软件对我们设计的电路不断地进行仿真、调试和修正,遇到程序问题时我们应该学会一段一段地去排查,最终解决所有问题;另外,还应熟练掌握每个芯片及器件如51单片机及ADC0804和LM016L每个引脚的作用和接法及各种状态的判断。比如:在本次设计中,我初步完成电路设计并在protues上进行仿真时,无论如何调节模拟信号输入端的可变电阻器,每调一次,电压变化幅度为0.9019V,而且每当变阻器调到中间时,LCD便显示满量程5v,而实际输入的模拟量只有2.5V,经过多次调试电路,最终在参考电压VERF/2输入端将两个串联的10K电阻换成一个可变电阻器,并将滑片接入参考电压作为输入信号,最终满足了模拟信号与液晶显示器一一对应输出的要求,所以,设计时遇到困难不可怕,关键是有耐心地进行调试并不断地进行修改!
本文标题:基于51单片机的数字电压表
链接地址:https://www.777doc.com/doc-2567841 .html