A/D转换

chinapluss Post at 2006/3/13 13:08:00

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

已有 0 位网友发表了看法