数字温度计(微机原理课程设计)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档