模数转换实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机控制ADC0809的模数转换与显示
一、实验内容和要求
本题目对单片机控制ADC0809(Proteus的元件库中没有ADC0809,用ADC0808来代替)的通道3的电压模拟量进行模数转换,转换为数字量后,显示在3位数码管上。调节图中的电位器,可观察到数码管显示的电压值在变化。
二、实验主要仪器设备和材料
计算机一台
三、实验方法、步骤及结果测试
所有操作都在ISIS中进行,步骤如下。
(一)、Proteus电路设计
1.从Proteus库中选取元器件
(1)AT89C51:单片机;
(2)RES:电阻;
(3)7SEG-MAPX4-CC-BLUE
(4)CAP、CAP-ELEC:电容、电解电容
(5)CRYSTAL:晶振;
(6)BUTTON:开关
(7)BUTTON
(8)ADC0808
(9)POT-HG
(10)LED-YELLOW
(11)MAX7219
(12)RESONATOR
2.放置元器件、放置电源和地、连线、元器件属性设置、电气检测
所有操作都在ISIS中进行
完成的电路图设计如图
(二)、源程序设计
1、流程图
2、通过Keil u Vision4建立工程,再建立源程序文件
源程序如下
主机程序:
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 00H
SJMP START
ORG 0BH
LJMP INT_T0
START:
MOV LED_0, #00H
MOV P2,#0FFH
MOV LED_1,#00H
MOV LED_2,#00H
MOV DPTR,#TABLE
MOV TMOD,#02H ;设置定时器工作方式2 MOV TH0,#245
MOV TL0,#00H
MOV IE,#82H ;开总中断和定时器0中断
SETB TR0 ;启动定时器0
WAIT:
CLR ST
SETB ST
CLR ST
JNB EOC,$ ;判断A/D转换结束否
SETB OE ;允许数据量输出
MOV ADC,P3
CLR OE
MOV A,ADC
MOV B,#51
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: ;定时器T0中断子程序
CPL CLOCK
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
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1 ;显示数码管右边第三位数字
ORL A,#80H ;显示小数点
MOV P0,A
LCALL DELAY
SETB P2.1
RET
DELAY: ;延时子程序
MOV R6, #10
D1:
MOV R7,#250
DJNZ R7,$
DJNZ R6, D1
RET
TABLE:
DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH
END
通过按钮“Build target”编译源程序,生成目标代码文件*.hex文件。若编译失败,对程序修改调试直至编译成功。
(三)、Proteus仿真
1、加载目标代码
右击选中的ISIS编辑区中的单片机AT89C51,再单击打开其属性窗口,在“Program File”右侧框中输入目标代码“*.hex”文件,再在Clock Frequency 栏中设置12MHz,仿真系统则以12MHz的时钟频率运行。
2、仿真
单击仿真按钮进行仿真,仿真运行片段如下图所示: