数字温度计(微机原理课程设计)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
1、学习ADC0809、8279A与微机8088系统的接口方法,以及8088CPU用查询方式对键值扫描的
编程方法,了解并掌握LED数码管显示的原理和编程方法。
2、掌握ADC0809和微机接口方法工作方式和编程原理。并且学会用8255A并行口传输数据的方法。
3、通过自己编写汇编程序和在实验箱上的调试,学会8086/8088的编程原理和方法,和各芯片与其
的连接原理和方法,并学会通过编程协调各芯片的正常工作。
二、实验内容说明
通过编程,本实验要求通过温度传感器向ADC0809芯片中输入模拟信号,通过ADC0809输出数字信号后,由8086CPU处理,在数码管上显示十进制的温度数值。
由于实验室没有温度传感器的放大电路,于是温度传感器和放大电路由一个0-5V滑动变阻器代替。
三、ADC0809的介绍
ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。
1.主要特性
1)8路8位A/D转换器,即分辨率8位。
2)具有转换起停控制端。
3)转换时间为100μs
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
2.内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近
3.外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路
ALE:地址锁存允许信号,输入,高电平有效。
START:A/D转换启动信号,输入,高电平有效。
EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一
直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才
能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结
果的数字量输出到数据总线上。
四、实验原理接线图
根据图示,在DVCC8086试验箱上按要求连接线路图。
五、实验程序的编写
1、程序的编写思路
通过ADC0809芯片将输入的模拟量转化为2位16进制数,数值为0-FFH,共256个数,要求输出温度为0-100°C。所以根据要求,将ADC0809所得数据乘以100再除以FFH,再对所得数据进行16进
制向10进制转换,并通过8279A从数码管输出。
2、实验程序
CODE SEGMENT ;定义代码段
ASSUME CS:CODE
ADPORT EQU 0060H ;定义0809端口地址
CONTPORT EQU 00DFH ;定义8279命令口地址
DATAPORT EQU 00DEH ;定义8279数据口地址
START: JMP ADCONTORL ;无条件跳转至ADCONTORL
DATA1 EQU 0583H ;定义DATA1地址为0583H
DATA2 EQU 0500H ;定义DATA2地址为0500H
ADCONTORL:CALL FORMAT ;调用FORMAT
MOV CX,4 ;设CX为4
MOV BX,0 ;设BX为0
A0: MOV WORD PTR DS:[BX+0584H],0000H ;0584-0588无任何显示(对应数码管前四个)
ADD BX,2 ;BX加2再给BX
LOOP A0 ;循环A0四次
ADCON: MOV AX,00 ;AX清零
MOV DX,ADPORT ;通道值送0809端口
OUT DX,AL ;启动本次A/D转换
MOV CX,0500H ;将0500H送入CX
DELAY: LOOP DELAY ;延时
MOV DX,ADPORT ;读取A/D转换结果
IN AL,DX
CALL CONVERS ;调用显示转换程序
CALL LEDDISP ;调用显示子程序
JMP ADCON ;跳转至ADCON CONVERS: MOV BL,100 ;进行显示转换,将100送入BL MUL BL ;A/D转换结果乘100再给到AX
MOV BL,0FFH ;将FFH给到BL DIV BL ;AX中数据除FFH,商在AL中,余数在AH中
MOV AH,0 ;余数清零
A1: MOV BL,100 ;显示温度值百位数,将100送入BL
MOV SI,DATA1 ;SI指向0582H
DIV BL ;AX中数据除100,商在AL中,余数在AH中
PUSH AX ;保存AX
MOV AH,0 ;余数清零
MOV BX,AX ;将AX送入BX中
MOV AL,DS:[BX+DATA2] ;取数码管段码
CMP AL,3FH ;如果是0
JZ C1 ;跳到c1,
CMP AL,3FH ;如果大于0
JNZ C2 ;跳到c2
C1: MOV AL,0H ;不显示百位
JMP C3 ;跳到c3