8位A/D转换器ADC0809
A/D转换器是模拟信号源与计算机或其它数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机等数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其它领域中,A/D转换器是不可缺少的重要组成部分,它的应用已经相当普遍。目前用软件的方法虽然可以实现高精度的A/D转换,但占用CPU时间长,限制了应用。8位A/D转换器ADC0809作为典型的A/D转换芯片,具有转换速度快、价格低廉及与微型计算机接口简便等一系列优点,目前在8位单片机系统中得到了广泛的应用。
基于ADC0809与单片机的数字电压表设计
从ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形式显示出来,如下图3.1所示。ADC0809的REFV接+5V电压。
图3.1 数字电压表电路图
其中CD4013由两个相同的、相互独立的触发器构成。每个触发器有独立的数据、置位、复位、时钟输入和Q及Q输出。此器件可用作移位寄存器,且通过将Q输出连接到数据输入,可用作计数器和触发器。如前所述,使用CD4013目的就是对单片机ALE引脚输出的时钟频率2MHz进行4分频,以提供0809合适的时钟信号。引脚图及具体单元电路图如图3.2所示。
硬件连线是:把单片机系统区域中的P1.0-P1.7与动态数码显示区域中的A、B、C、D、E、F、G、H端口用8芯排线连接。P2.0-P2.7与动态数码显示区域中的S1——S8端口用8芯排线连接。P3.0与模数转换模块区域中的ST端子用导线相连接。P3.1与模数转换模块区域中的OE端子用导线相连接。P3.2与模数转换模块区域中的EOC端子用导线相连接。IN3端用导线连接到三路可调电压模块区域中的VR1端子上。P0.0-P0.7用8芯排线连接到模数转换模块区域中的D0——D7端上。因为ADC0809的参考电压REFV=CCV,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值(D/256REFV),其中D为转换成的数字量。[8]
程序设计时注意,进行A/D转换时,采用查询EOC标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0口读入,经数据处理后在数码管上显示。进行A/D转换之前,要启动转化的方法:ABC=110选择第三通道,ST=0,ST=1,ST=0产生启动转换的正脉冲信号。
汇编源程序如下:
CH EQU 30H 。
DPCNT EQU 31H
DPBUF EQU 33H
GDATA EQU 32H
ST BIT P3.0
OE BIT P3.1
EOC BIT P3.2
ORG 00H
LJMP START
ORG 0BH
LJMP T0X
ORG 30H
START: MOV CH,#0BCH
MOV DPCNT,#00H
MOV R1,#DPCNT
MOV R7,#5
MOV A,#10
MOV R0,#DPBUF
LOP: MOV @R0,A
INC R0
DJNZ R7,LOP
MOV @R0,#00H
INC R0
MOV @R0,
#00H INC R0 MOV @R0,#00H
MOV TMOD,#01H
MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256
SETB TR0
SETB ET0
SETB EA
WT: CLR ST
SETB ST
CLR ST
WAIT: JNB EOC,WAIT
SETB OE
MOV GDATA,P0
CLR OE
MOV A,GDATA
MOV B,#100
DIV AB
MOV 33H,A
MOV A,B
MOV B,#10
DIV AB
MOV 34H,A
MOV 35H,B
SJMP WT
T0X: NOP
MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256
MOV A,DPCNT
ADD A,#DPBUF
MOV R0,A
MOV A,@R0
MOVC A,@A+DPTR
MOV P1,A
MOV DPTR,#DPBT
MOV A,DPCNT
MOVC A,@A+DPTR
MOV P2,A INC DPCNT
MOV A,DPCNT
CJNE A,#8,NEXT
MOV DPCNT,#00H
NEXT: RETI
DPCD: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH,00H
DPBT: DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
END