1 TLC549芯片ADC数据采集
(1)硬件设计
单片机使用ADC芯片转换数据,通过如图8-13所示电路还可输出存储的数据,完成数据采集。
图8-13 TLC549芯片ADC数据采集
(2)程序设计
DAT BIT P1.0
CS BIT P1.1
CLK BIT P1.2
ADDATA DATA 40H
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H
ACALL TLC549ADC;先进行一次采集
MOV R7,#0FFH
DJNZ R7,$;延时
ACALL TLC549ADC;获得上次采集的结果
MOV ADDATA,A;存储采集结果
SJMP $
TLC549ADC:SETB CLK
CLR A
CLR CLK
CLR CS;选中TLC549
MOV R6,#8
LP1:SETB CLK
NOP
NOP
MOV C,DAT
RLC A
CLR CLK;DAT=0,为下一次读出数据做准备
NOP
DJNZ R6,LP1
SETB CLK
RET
END
2 ADC0808数据输出
(1)硬件设计
使用单片机与ADC0808设计数字电压表,其电路如图8-14所示。电压表能够测量0~5V之间的直流电压,4位数码管显示。
图8-14 ADC0808数字电压表电路
(2)程序设计
ADC0808进行ADC转换时需要CLOCK信号,而ADC0808的CLOCK信号接在单片机的P2.4引脚,CLOCK信号要求采用软件来产生。
LED_0 EQU 30H
LED_1 EQU 31H
LED_2 EQU 32H
ADC EQU 35H
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 0000H
SJMP START
ORG 000BH
LJMP INT_T0
START:MOV LED_0,#0FFH;关显示,采用共阳极数码管
MOV LED_1,#0FFH
MOV LED_2,#0FFH
MOV DPTR,#TABLE
MOV TMOD,#02H;方式2,自动重置
MOV TH0,#245;初值11μs
MOV TL0,#245
MOV IE,#82H
SETB TR0
WAIT:CLR OE
CLR ST
SETB ST;ST下降沿时,A-D转换
CLR ST
JNB EOC,$;等待转换结束,EOC=1
SETB OE;OE=1,转换结果输出
MOV ADC,P1
CLR OE
MOV A,ADC;数据处理
MOV B,#51;255/51=5V,最高电压
DIV AB
MOV LED_2,A
MOV A,B
MOV B,#5
DIV AB
MOV LED_1,A
MOV LED_0,B
LCALL DISP;调用显示子程序
SJMP WAIT
INT_T0:CPL CLOCK;提供ADC0808时钟500kHz
RETI
DISP:MOV A,LED_0
MOVC A,@A+DPTR
CLR P2.3;个位选
MOV P0,A;段选
LCALL DELAY
SETB P2.3
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2;十位选
MOV P0,A;段选
LCALL DELAY
SETB P2.2(www.xing528.com)
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1
ANL A,#7FH;百位选+小数点
MOV P0,A;段选
LCALL DELAY
SETB P2.1
RET
DELAY:MOV R6,#10
D1:MOV R7,#200
DJNZ R7,$
DJNZ R6,D1
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END
3 数据采集转换输出
(1)硬件设计
硬件设计如图8-15所示。
图8-15 数据采集转换输出
(2)程序设计
ORG 0000H
START:MOV DPTR,#7FFFH;设定P2.7为0
MOVX @DPTR,A;为ADC0808的ALE和START产生上升沿及下降沿
MOV R7,#100;延时,采用定时取数的方法,延时约200μs
DJNZ R7,$
MOVX A,@DPTR;产生OE为“1”信号
MOV R0,A
LCALL TUNBCD;调用输入数据子程序
LCALL DISP;调显示程序
AJMP START
/***数据显示程序***/
DISP:MOV R7,#255
LOOP:MOV A,7AH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,#01H
MOV P1,A
LCALL DELAY
MOV A,79H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,#02H
MOV P1,A
LCALL DELAY
MOV DPTR,#TAB
MOV A,78H
MOVC A,@A+DPTR
MOV P2,#04H
MOV P1,A
LCALL DELAY
MOV P2,#08H
MOV P1,#0C0H
LCALL DELAY
DJNZ R7,LOOP
RET
/***输入数据处理程序***/
TUNBCD:MOV A,R0
MOV B,#51
DIV AB
MOV 7AH,A
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP2
ADD A,#05H
LOOP2:MOV 79H,A
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP3
ADD A,#05H
LOOP3:MOV 78H,A
RET
/***延时子程序***/
DELAY:MOV R4,#0FFH
DJNZ R4,$
MOV R4,#0FFH
DJNZ R4,$
RET
/***个位,带小数点***/
TABLE:DB 40H,79H,24H,30H,19H,12H
/***小数后数据***/
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
END
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。