如图6-38所示是MCS-51与ADC0809构成的简易数字电压表的接口电路原理图。被测电压(≤5V)从ADC0809的第0道模拟信号端IN0输入(输入通道选择位ADD-A、ADD-B、ADD-C三端直接接地)。用P2.0口控制ADC0809的启动。转换结果显示在两个数码管上。从电路可知,ADC0809的地址为FEFFH(无关位为1时)。
(1)中断方式
中断方式是最方便、最及时、效率最高的方式。但必须占用一个外中断资源。ADC0809的EOC端通过反相器接到单片机的外中断INT1端上。在程序设计中开启中断,该系统便成为工作在中断方式下的A-D转换。
(2)查询方式
ADC0809的EOC端与单片机的任一位I/O接口相连。启动A-D后,不断查询此I/O接口,直到EOC变为高电平,转换结束,再读A-D的值。把INT0脚当作普通I/O接口的一位,不开通中断,程序中不断查询此端口,系统便工作在查询方式下。
(3)延时方式
可断开ADC0809的EOC端与INT1端的连接电路。启动A-D后延时一段时间直接读A-D的值。延时时间一定要不小于A-D转换器的转换时间。若延时太短,A-D转换尚未结束,得到不正确的转换结果。
图6-38 MCS-51与ADC0809的接口电路原理图
2 接口程序设计
可用三种方式编写ADC0809转换程序,即中断方式、查询方式和延时方式。本程序采用延时方式。程序如下:
ORG 0000H
LJMP MAIN
ORG 100H
MAIN:MOV DPTR,#0FEFFH;P2.0控制A/D的开始
LOOP:SETB P3.4;关数码管显示
SETB P3.5;关数码管显示
MOVX @DPTR,A;启动ADC0809,与A中内容无关
MOV R6,#34H;ADC0809编程方式为延时,12MHz,延时104μs
DJNZ R6,$
MOVX A,@DPTR;读A-D转换数
MOV 30H,A;暂存RAM 30H单元
ANL A,#0FH;屏蔽高4位,显示低4位
LCALL SEG7;查出显示码(www.xing528.com)
SETB P3.4;关显示高位
CLR P3.5;开显示低位
MOV P1,A;显示低位
LCALL DELAY;延时6ms
MOV A,30H;将转换数重新存入累加器
ANL A,#0F0H;屏蔽低4位,显示高4位
SWAP A;累加器A的高低4位互换
LCALL SEG7;查出显示码
SETB P3.5;关显示低位
CLR P3.4;开显示高位
MOV P1,A;显示高位
LCALL DELAY;调转到延时程序
SJMP LOOP;重复显示
SEG7:INC A;查表位置调整
MOVC A,@A+PC;查显示码
RET;返回
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH;共阳段码
DELAY:MOV R5,#2;延时
DEL1:MOV R6,#249
DEL2:DJNZ R6,DEL2
DJNZ R5,DEL1
RET
END
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。