欢迎来到天天文库
浏览记录
ID:49712162
大小:281.50 KB
页数:13页
时间:2020-03-03
《利用51单片机与ADC0809和数码管设计数字电压表.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.利用51单片机与ADC0809和数码管设计数字电压表一、课题功能描述:利用单片机AT89C51芯片与ADC0809芯片设计一个数字电压表,能够测量0―5V之间的直流电压,三位数码显示。二、程序设计本实验采用AT89C51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1所示。该电路通过ADC0809芯片采样输入口AI0输入的0~5V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89C51芯片的F0口。AT89C51负责把接收到的数字量经过数据处理,产生正确的
2、7段数码管的显示段码,并通过P1口传送给数码管。同时它还通过其三位I/O口P3.0、P3.1、P3.2产生位片选信号,控制数码管的亮灭。另外,AT89C51还控制着ADC0809的工作。其ALE管脚为ADC0809提供了1MHZ工作的时钟脉冲;P2.3控制ADC0809的地址锁存端(ALE);P2.4控制ADC0809的启动端(START);P2.5控制ADC0809的输出允许端(OE);P3.7控制ADC0809的转换结束信号(EOC)。电路原理图如下:Word资料.三、器件清单:1.AT89S51芯片1块2.ADC0809芯片
3、1块3.74HC245芯片1块4.数码管1个5.6MHZ晶振1个6.30pF电容2个7.10uF电解电容1个8.复位电容1个9.510Ω电阻8个10.10KΩ电阻1个11.导线若干四、程序设计Word资料.1、主程序设计由于ADC0809在进行A/D转换时需要有CKL信号,而此时的ADC0809的CLK是连接在AT89C51单片机的30管脚,也就是要求从30管脚输出CLK信号供ADC0809使用。因此产生CLK信号的方法就等于从软件产生。电压表系统有主程序,A/D转换子程序和显示子程序,如下流程1-2所示:图1-2主程序流程图调用
4、显示程序调用数据处理程序调用A/D转化程序初始化开始2、A/D转换子程序Word资料.启动ADC0809对模拟量输入信号进行转换,通过判断EOC(P3.7)来确定转换是否完成,若EOC为0则继续等待;若EOC为1,则把OE置位,将转换完成的数据存储到70H中。程序流程图如图1-3开始A/D转换结束?(P3.7=1?)启动A/D转化器初始化是P2.5置位,允许输出将转换得到的数据存储结束开始图1-3A/D转换程序流程图3、数据处理子程序数据处理子程序主要根据标度变换公式1-1,把0~255十进制数转换为0.00~5.00V.AX=A
5、0+(Am-A0)(NX-N0/Nm-N0)(1-1)Ax:模拟测量值;A0:模拟输入最小值;Am:模拟输入最大值;NX:模数转换后的值;N0:模/数转换后的最小值;Nm:模/数转换后的最大值。在本设计中,根据要求知:A0=0V,Am=5V,N0=0,NmWord资料.=255,则公式1-1可化简为:AX=A0+(Am-A0)(NX-N0/Nm-N0)=5·NX/255=NX/51(1-2)程序流程图如图1-4所示:从70H中取数据,除以51得到个位,存放在70H中,余数移入A余数与51的一半即1AH借位相减比较,以便四舍五入,利
6、用P0开始余数×10,再除以51商放入A中P0=1?是四舍否数据调整,相当于五入A放入79H中,得到十分位再将余数放入A中,进行除51操作P0=1?是否A=A+5四舍A放入7AH中,得到百分位结束图1-4数据处理子程序流程图4、显示子程序显示子程序采用动态扫描法实现三位数码管的数值显示。测量所得的A/D转换数据放在70H内存单元中,测量数据在显示时需转换成10进制BCD码放在78H~7AH单元中。寄存器R1用作显示数据地址指针。程序流程图如1-5所示:Word资料.R1→A查表取得相应段码输出显示置位P1.7点亮小数点图1-5显示
7、子程序流程图结束R1→A查表取得相应段码输出显示R1=R1+1R1→A查表取得相应段码输出显示初始化R1=78H,P1置高,P2置低R1=R1+1开始四、程序代码ORG0000HLJMPSTARTWord资料.ORG0030H;初始化参数START:CLRASETBP3.7;初始化EOCCLRP3.0;初始化LED位选,全不选中。CLRP3.1CLRP3.2MOVP2,A;初始化P2口,清除对ADC0809的控制信号。MOV70H,A;初始化数据采样后存储空间。MOV78H,A;初始化数据处理后3位有效数字的存储空间MOV79H,
8、AMOV7AH,AMOVA,#0FFH;初始化P0,P1口,写入高电平MOVP0,AMOVP1,A;主程序MAIN:LCALLAD_SUB;调用A/D转换子程序,开始采样并转换。Word资料.LCALLTURN_SUB;调用数码转换子程序,将采样转
此文档下载收益归作者所有