|
A/D转换
硬件设计:8路输入模拟信号数值显示电路由A/D转换.数据处理及显示控制等组成.A/D转换由集成电路0809完成.0809具有8路模拟输入端口,地址线(23--25脚)可决定对那一路模拟输入做A/D转换.第22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存,6脚为测试控制,当输入一个2US宽的高电平时,就可是A/D转换,7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平,9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出;10脚为0809的时钟输入端,利用单片机30脚的六分频晶振信号在通过14024二分频得到.单片机的P1,P3端口做四位LED数码管显示控制,P0端口做A/D转换数据读入用,P2口用做0809的A/D转换控制. 系统主要程序设计 初始化程序 系统上电时,将70H--77H内存单元清零,P2口置0. 主程序 在刚上电时,因70H--77H内存单元的数据位0,则每一通道的数码管显示值都为000.当进行一次测量后,将显示出每一通道的A/D转换值,每个通道的数据显示时间在1S左右.主程序在调用显示程序和测试程之间的循环,起流程图为 开始 初始化
调用子程序
调用A/D转换子程序 显示子程序 采用动态扫描实现四位数码管的数值显示,测量所用的A/D转换数据放在70H--77H内存单元中,测量数据在显示时需进过转换成为十进制BCD码放在78H--7BH中,其中7BH存放通道标准数,寄存器R3用来做8路循环控制,R0用做显示数据地址指针 模数转换测量子程序 模数转换测量子程序是用来控制对0809 8路模拟输入电压的A/D转换,并将对应的数值移入70H--77H内存单元, 程序清单 ORG 0000H LJMP START ORG 0003H RETI ORG 000BH RETI ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI
CLEARMEMIO:CLR A MOV P2,A MOV R0,#70H MOV R2,#0CH LOOPMEM:MOV @R0,A INC R0 DJNZ R2,LOOPMEM MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RET
START: LCALL CLEARMEMIO MAIN: LCALL DISPLAY LCALL TEST AJMP MAIN NOP NOP NOP LJMP START
DISPLAY:MOV R3,#08H MOV R0,#70H MOV 7BH,#00H DISLOOP1:MOV A,@R0 MOV B,#100 DIV AB MOV 7AH,A MOV A,#10H XCH A,B DIV AB MOV 79H,A MOV 78H,B MOV R2,#0FFH DISLOOP2:LCALL DISP DJNZ R2,DISLOOP2 INC R0 INC 7BH DJNZ R3,DISLOOP1 RET
DISP: MOV R1,#78H MOV R5,#0FEH PLAY: MOV P1,#0FFH MOV A,R5 ANL P3,A MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS INC R1 MOV A,P3 JNB ACC.3,ENDOUT RL A MOV R5,A MOV P3,#0FFH AJMP PLAY ENDOUT: MOV P3,#0FFH MOV P1,#0FFH RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET
TEST: CLR A MOV P2,A MOV R0,#70H MOV R7,#08H LCALL TESTART WAIT: JB P3.7,MOVD AJMP WAIT
TESTART:SETB P2.3 NOP NOP CLR P2.3 SETB P2.4 NOP NOP CLR P2.4 NOP NOP NOP NOP RET
MOVD: SETB P2.5 MOV A,P0 MOV @R0,A CLR P2.5 INC R0 MOV A,P2 INC A MOV P2,A CLR C CJNE A,#08H,TESTCON JC TESTCON CLR A MOV P2,A MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RET TESTCON:LCALL TESTART LJMP WAIT
END |