51单片机AD转换代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OE EQU P1.0//给特定的符号名赋值
EOC EQU P1.1
ST EQU P1.2
CLK EQU P1.3
SHU EQU 30H
TEMP EQU 31H
ORG 0000H ;起始指令
AJMP MAIN
ORG 000BH
CPL CLK ;i这是在定时器中翻转CLK,也就是给ADC提供时钟。
RETI
ORG 0100H
MAIN:
MOV SP,#60H ;这个是设置堆栈的位置,否则默认的堆栈肯定会被冲掉
MOV TMOD,#02H ;设置T0工作于外启动,定时,方式2
MOV TH0,#14H
MOV TL0,#00H ;给定时器赋初值,X=M-T/Tm
MOV IE,#82H ;IE初始化
SETB TR0 ; 启动定时器T0
MOV A,#3FH
MOV P1,A ;选通模拟量输入通道3
MOV SHU,#0
SCAN:
CLR ST
SETB ST
CLR ST ;人为地在ST引脚上产生脉冲,给ADC一个开始脉冲,告诉它启动AD 转化
M0: JNB EOC,M0 ;EOC是AD转换结束的标志,可作为转换结束中断的请求信号SETB OE ; OE是数字量输出允许信号输入,高电平有效
MOV A,#0FFH
MOV P3,A
M1: MOV A,P3
MOV SHU,A ;把转换出来的数给SHU
LCALL CHANGE
LCALL DISP
CLR OE ;使能ADC,让它能够工作,看来这个ADC是低电平使能
AJMP SCAN
DISP:
MOV R0,#TEMP
MOV R2,#00H
DISP1:MOV A,R2
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P2,A ;把选通的那一个管的数给P2口
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR ;取字符
MOV P0,A ;A就输出
MOV R5,#5
ACALL DELAY
INC R0
INC R2
CJNE R2,#3,DISP1 ;扫描显示
MOV P0,#00H
RET
CHANGE: ;把数字分成百、十和个位
MOV A,SHU
MOV B,#100
DIV AB
MOV TEMP,A
MOV A,B
MOV B,#10
DIV AB
MOV TEMP+1,A
MOV TEMP+2,B
RET
DELAY: ;延时
MOV R6,#1
DELAY0:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DELAY0
DJNZ R5,DELAY
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;字形码表TAB1: DB 0FDH,0FBH,0F7H ;选通数吗管的通道
END