C51编程:让我们共同来体会
各位阿G 好:
因上网不便,关于软件A/D一文回应让大家久等了甚歉!
除89C2051系统外您只需3电阻,2电容可构成,建议用低压差精密三端lm2950-5供电,
(VREF=4.995-5.005V,压差 <100MV)R1=R2=1M,C1=C2=104,R3=5.1K,R3是 P3.7的上拉电
阻,R1 C1和 R2 C2都作积分连接,前者作VIN入和去藕,后者和P3.7一道构成冲放电回路
跟踪VIN变化。
DIN=D0*VIN/VREF 和晶体频无关,但直接影响测量速度, 软件改变D0可免硬件调试软定
标,但当VIN> =VREF时 DIN=D0,已溢出! 精度1/5000 ,测量速度4次/秒 @24MHZ
ORG 0000H
NOP
SJMP MAIN
ORG 000BH
MOV C,P3.6
MOV P3.7,C ;冲放电,A/D转换核心
JNC $+3
INC DPTR
RETI
MAIN:MOV TMOD,#22H
MOV TL0,#156
MOV TH0,#156
MOV TCON,#15H
MOV IE,#10000010B
MOV R3,#250
ADSTR:MOV DPTR,#0000H ;DIN 记数
MOV R4,#20
INC PCON
DJNZ R3,$-2
MOV R3,#250
DJNZ R4,$-6 ;R4 R3 D0记数,典型值为5000
MOV R7,DPH
MOV R6,DPL
SJMP ADSTR
END
实际上A/D程序就两条 MOV C,P3.6 MOV P3.7,C,所以用两等值电阻R4=R5=1K,分压作
VIN加在R1上,然后动态测P3.7电压 ,当非常接近1/2VREF时,软硬件就基本正常了
发表时间:2002年1月22日13:55:00