《基于51单片机的数字电压表.doc》由会员分享,可在线阅读,更多相关《基于51单片机的数字电压表.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计 题 目 数字电压表 学生姓名 张玉龙 学 号 学 院 信息与控制学院专 业 测控技术与仪器指导教师 葛化敏二一一年六月三十日基于51单片机的数字电压表一、设计内容:先在proteus上进行软件仿真设计,在仿真实现的基础上,要求完成部分硬件模块的制作和系统联调,实验内容为设计一个数字电压表,实现从模拟信号输入到数字信号输出的基本功能。二、设计要求:采用51系列单片机和ADC设计一个数字电压表电路,通过调节滑动变阻器改变电压,在LCD液晶屏上显示其相应的电压值,要求电压精确到小数点后第四位,显示格式为,LCD第一行前一段为“”(班级同学张玉龙的学号),后一段则为“V:”(电压单位);第二
2、行的前一段为“Class 2”(班级2班),后一段则显示电压值,单位为“V”。三、设计原理:通过在Keil软件对单片机AT89C52进行编程,硬件电路中单片机与ADC0804及LCD显示屏连接。P0与ADC0804相连接,P1与LCD连接。通过start()子程序启动ADC0804,通过init()子程序初始化LCD。模拟信号通过ADC0804的VIN+引脚输入到ADC0804中转换为数字信号,P0获得此数字量后,经过处理得到每位的数据后,通过P1口写数据到LCD屏上。51系列单片机A/D电压输入复位电路晶振电路等LCD显示 上图为基本的原理图 四、实验电路图及仿真结果:五、程序代码:#inc
3、lude#define uchar unsigned char#define uint unsigned intsbit lcdrs=P30;sbit lcden=P31;sbit wrad=P36;sbit rdad=P37;uint temp,a1,a2,a3,a4,a5,num;uchar code table=.;/显示数字uchar code table1= V:;uchar code table2=Class 2;void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=100;y0;y-);void start()/启动ADwrad=1;
4、wrad=0;wrad=1;void write_command(uchar com)/写命令 lcdrs=0; P1=com; delay(2); lcden=1; delay(2); lcden=0;void write_data(uchar date)/写数据 lcdrs=1; P1=date; delay(5); lcden=1; delay(5); lcden=0;void init()/lcd初始化lcden=0;write_command(0x38);/设置16x2显示write_command(0x0c);/设置光标write_command(0x06);/写字符指针加1,光标
5、加1write_command(0x01);/清屏void main()init();/LCD初始化write_command(0x80);/LCD写地址for(num=0;num15;num+)write_data(table1num);delay(5);while(1)start();/启动ADdelay(50);rdad=0;/rd低脉冲读数据delay(50);temp=P0;a1=(temp*50000/255)/10000;/区分位数,最高位 255*50000/255/100005.0000Va2=(temp*50000/255)%10000/1000;a3=(temp*5000
6、0/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(table2num);delay(5); write_command(0x80+0x49);/LCD写地址write_data(tablea1);delay(1);write_data(table10);delay(1);write_data(tablea2);delay(1);write_data(tablea3);delay(1);write_da
7、ta(tablea4);delay(1);write_data(tablea5);delay(1);write_data(V);delay(1);六、心得体会: 课程设计中不得不遇到一些问题,但只要自己有恒心有毅力,终究会克服一切困难;在设计中我们要学会运用keil软件及protues软件对我们设计的电路不断地进行仿真、调试和修正,遇到程序问题时我们应该学会一段一段地去排查,最终解决所有问题;另外,还应熟练掌握每个芯片及器件如51单片机及ADC0804和LM016L每个引脚的作用和接法及各种状态的判断。比如:在本次设计中,我初步完成电路设计并在protues上进行仿真时,无论如何调节模拟信号输入端的可变电阻器,每调一次,电压变化幅度为0.9019V,而且每当变阻器调到中间时,LCD便显示满量程5v,而实际输入的模拟量只有2.5V,经过多次调试电路,最终在参考电压VERF/2输入端将两个串联的10K电阻换成一个可变电阻器,并将滑片接入参考电压作为输入信号,最终满足了模拟信号与液晶显示器一一对应输出的要求,所以,设计时遇到困难不可怕,关键是有耐心地进行调试并不断地进行修改!