单片机数字电压表课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

51单片机数字电压表课程设计指导教师:么么哒班级:电气工程及其自动化12(1)班姓名:GentleVan1.数字电压表简介2.设计要求3.ADC0809简介4.程序设计及仿真5.实物制作与感悟1.数字电压表简介数字电压表定义:数字电压表(DigitalVoltmeter,DVM)是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表数字电压表特点:★显示清晰直观、读数准确★准确度高、分辨率高★测量范围宽、扩展能力强★抗干扰能力强等2.设计要求此次课程设计的设计要求是:利用AT89C52与A/D转换器ADC0809设计一个数字电压表,使其能够测量0~5v直流电压,4位数码管显示。3.ADC0809简介ADC0809仿真引脚图8路模拟输入,通过3根地址线ADDA、ADDB、ADDC来选通一路模拟通道选择地址信号,ADDA为低位,ADDC为高位A/D转换后的数据输出正负参考电压输入端地址锁存允许信号,高电平有效输出允许信号,高电平有效时钟脉冲信号A/D转换启动信号,正脉冲有效转换结束信号,高电平有效1.ADC0809:是采样分辨率为8位的、以逐次逼近原理进行A/D转换的器件。3.ADC0809简介ADC0809时序图2.ADC0809时序图分析4.程序设计及仿真1.程序设计流程图开始选择ADC0809的转换通道开始设置定时器,为ADC0809提供时钟信号启动A/D转换转换是否结束?否输出转换结果数值转换显示是4.程序设计及仿真2.C语言程序源代码#includereg52.h#includeintrins.hsbitEOC=P2^6;sbitSTART=P2^5;sbitOE=P2^7;sbitCLK=P2^4;longinta;intb,c,d,e,f,g;//定义长度为7的字符串unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};voiddelay_display(unsignedintz)//延时子程序{unsignedintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}4.程序设计及仿真2.C语言程序源代码voidADC0808(){if(!EOC)//如果EOC为低电平,则产生一个脉冲,脉冲的下降沿用于启动A/D转换{START=0;START=1;START=0;}while(!EOC);//等待A/D转换结束START=1;//转换结束后,再产生一个脉冲,脉冲下降沿用于将EOC设置为低电平,为下一次转换做准备START=0;while(EOC);}4.程序设计及仿真2.C语言程序源代码voidbianma(){START=0;ADC0808();a=P1*100;a=a/51;}voidyima(){b=a/1000;//取出千位c=a-b*1000;//取出百、十、个位d=c/100;//取出百位e=c-d*100;//取出十、个位f=e/10;//取出十位g=e-f*10;//取出个位}4.程序设计及仿真2.C语言程序源代码voiddisplay()//显示子程序{P2=0xfe;P0=table[b];delay_display(1);P2=0xfd;P0=table[d];delay_display(1);P2=0xfd;P0=table[10];delay_display(1);P2=0xfb;P0=table[f];delay_display(1);P2=0xf7;P0=table[g];delay_display(1);}4.程序设计及仿真2.C语言程序源代码voidmain(){EA=1;TMOD=0X02;TH0=216;TL0=216;TR0=1;ET0=1;while(1){bianma();yima();display();}}voidt0()interrupt1using0{CLK=~CLK;}4.程序设计及仿真3.Proteus仿真4.程序设计及仿真3.Proteus仿真滑动变阻器在100%位置时4.程序设计及仿真3.Proteus仿真滑动变阻器在80%位置时4.程序设计及仿真3.Proteus仿真滑动变阻器在50%位置时4.程序设计及仿真3.Proteus仿真滑动变阻器在0%位置时5.附件:proteus仿真源文件+c语言源程序

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功