
Hefei University
微机原理与接口技术课程设计报告
论文题目:基于ADC0809采样实验
报 告 人:刘彪 0705076032
廖凯 0705076033
李扬虎 0705076034
班 级:07级自动化(2)班
指导老师:刘伟、林泽坤
2009年1月2日
论文
| 题目 | 基于ADC0809采样的设计 | 设计类型 | 导师姓名 | 刘伟,林泽坤 | |
| 主要内容及目标 | 1.编写实验程序,从IN0通道采样模拟信号,转换成数字量,并在液晶显示器上显示“IN0 XX”,其中XX为输入模拟电压对应的数字量。 2.自行设计硬件连线并编写实验程序,要求使ADC0809利用其EOC信号工作于中断方式 | ||||
| 具有的设计条件 | 1.PC机一台,EL教学实验箱一台及汇编程序; | ||||
| 计划学生数及任务 | 3人 (1):明确课题对程序功能,运算精度等方面的要求及硬件条件 (2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。 (3):存储器资源分配 (4):编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序 (5):对程序进行汇编,调试和修改,直到程序运行结果正确为止。 | ||||
| 计划设计进程 | (按课程设计周计算) 第一周设计任务:(1):明确课题对程序功能,运算精度等方面的要求及硬件条件 (2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。 (3):存储器资源分配 第二周设计任务:(4):编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序 (5):对程序进行汇编,调试和修改,直到程序运行结果正确为止。 | ||||
| 参考文献 | 《微型计算机原理及接口技术》中国科技大学出版社 吴秀清 周荷琴编著 《16-32位微型计算机技术及应用》清华大学出版社 戴梅萼 史嘉权 编著 《汇编语言程序设计》南京大学出版社 姚君遗编著 《汇编语言程序设计教程》清华大学出版社 杨记文编著 《微型计算机原理及接口技术》实验指导书 | ||||
【摘 要】: 本设计以8086作为主控芯片,通过ADC0809的IN0端口采集模拟量信号,然后进行AD转换,转换完成后的数字量在LCD128液晶屏上显示出来。模拟信号由0~5V的可调电位器提供,ADC0809的时钟频率由试验箱上的频率输出区的500KHz提供。
【关键词】: ADC0809 模数转换 显示
一、总体概括 4
二、方案的论证与比较 4
1、主要电路硬件方案的选择 4
2、显示设备的选择 5
三、电路设计 5
1、电路原理框图 5
2、电路原理图 5
四、软件设计 6
1、主程序流程图 6
2、程序清单 7
五、调试结果 7
六、总结与体会 7
一、总体概括
具体的系统方框图如下所示:
该系统以8086作为主控芯片,通过ADC0809的IN0端口采集模拟量信号,然后用软件延时代替8259A的中断,进行AD转换,转换完成后的数字量在LCD128液晶屏上显示出来。IN0端口采集的模拟信号由0~5V的可调电位器提供,ADC0809的时钟频率由试验箱上的频率输出区提供500KHz加到ADC0809的CLK端。
二、方案的论证与比较
1、主要电路硬件方案的选择
方案一:采用8259A中断
选用8253芯片来产生定时脉冲,控制采样频率。假设加到8253的CLK上的时钟频率为1MHz,编程使8253芯片的通道0工作于方式2,选择时间常数5000,则可从OUT0端输出200Hz的负脉冲序列。每隔5ms会从8253的OUT0引脚输出一个正跳变脉冲,该该脉冲加到系统板上的8259A的IR2引脚上,在8259A的控制下定时向CPU发出中断请求,在每次中断时进行采样。在每次中断出现后,在中断服务程序中用OUT指令启动转换,然后查询EOC引脚状态当EOC为高时,表示转换结束,这时用IN指令读入结果。这个设计思路明确,完全符合要求,但是硬件设计复杂,
方案二:采用软件延时中断
此方案比较简单,只采用一片ADC0809,采用软件延时代替EOC引脚接8259A的硬件中断,IN0引脚接0~5V的的可调电位器提供模拟信号输入量。进行数模转换。此方案比较简单,且能实现预期目标。
考虑到课程设计的要求和实际情况,在实现课程设计目标的前提下,我们选择方案二。
2、显示设备的选择
方案一:采用传统数码管作为显示设备。
传统数码管具有低能耗、低损耗、低压、长寿命、耐老化、防晒、防潮、防火、防高(低)温的特点;对外界环境要求低,易于维护;同时其精度比较高,精确可靠,操作简单,程序编写容易,资源占用少。
方案二:采用液晶显示屏(LCD)显示数字量。
液晶显示器具有功耗低、无辐射危险、平面直角显示以及影像稳定等,可视面积大,画面效果好,也可以显示汉字,分辨率高,抗干扰能力强,显示内容多等特点。
星研实验箱上的数码管接口和ADC0809没有直接相连,要是选择用数码管的话需用8255,这样增加了设计的复杂性和不必要的资源浪费,采用液晶显示,显示较好,控制起来更简单。综合考虑我们选择方案二。
三、电路设计
1、电路原理框图
2、电路原理图
四、软件设计
1、主程序流程图
2、程序清单
见附录1
五、调试结果
调节电位器W1,显示器上会显示出新的转换结果。经过多次在星研上调试,最终我们得到了正确的显示结果,经典模拟量相对应的数字量:0V--00H,+2.5V--80H,+5V--FFH。唯一不足的是我们没有把结果显示在128液晶显示器上,只是在星研软件上显示出转换结果。
六、总结与体会
在刘伟老师和林泽坤老师的帮助指导下,经过我们三人的分工协作和不懈努力,终于完成了本设计题目中的基本要求。本课程设计以8086为核心控制部分,利用ADC0809数模转换,把输入的模拟量转换成相应的数字量并显示出来。在调试过程中,我们遇到了许多问题,对一些芯片的工作原理不是很清楚。这次课程设计中,我们充分发挥团队协作精神,积极工作并最终完成了作品,通过这次实践使我们加深了对微机原理与接口技术的理解,并从中受益颇多。
参考文献
《微型计算机原理及接口技术》中国科技大学出版社 吴秀清 周荷琴编著
《16-32位微型计算机技术及应用》清华大学出版社 戴梅萼 史嘉权 编著
《汇编语言程序设计》南京大学出版社 姚君遗编著
《汇编语言程序设计教程》清华大学出版社 杨记文编著
《微型计算机原理及接口技术》实验指导书
附录1:
.MODEL TINY
PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RAM板卡上;的8237提供基地址)
Vendor_ID EQU 10EBH ;厂商ID号
Device_ID EQU 8376 ;设备ID号
.STACK 100
.DATA
ADDR_0809 DW 00F0H
BUFFER DB ' H . V$'
LastAD DB 0 ;上一次AD转换值
msg3 DB 'AD转换结果(前边是16进制数,后边是十进制数): $'
IO_Bit8_BaseAddress DW ?
msg0 DB 'BIOS不支持访问PCI $'
msg1 DB '找不到Star PCI9052板卡 $'
msg2 DB '读8位I/O空间基地址时出错$'
.CODE
START: MOV AX,@DATA ;初始化
MOV DS,AX
CALL InitPCI
CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址
MOV AH,00H
MOV AL,03H
INT 10H ;清屏
MOV AH,09H
LEA DX,msg3
INT 21H ; 显示字符串
XOR AL,AL ;清零
JMP START3
START1: MOV CX,50 ;采样五十次
MOV BX,0 ;累计五十次的采样值
START2: CALL AD0809
XOR AH,AH
ADD BX,AX
LOOP START2
MOV AX,50
XCHG AX,BX
DIV BL ;五十次的平均值
CMP AL,LastAD
JZ START3 ;结果为零或相等转移到START3
START4: MOV LastAD,AL
CALL Display_Data
MOV AH,02H
MOV DL,43
MOV DH,0
INT 10H ;定位光标
MOV AH,09H
LEA DX,BUFFER
INT 21H ;显示结果
START3: CALL DLTime
JMP START1
AD0809 PROC NEAR
PUSH CX
MOV AL,0 ;给AL一个任意值
MOV DX,ADDR_0809
OUT DX,AL ;启动ADC0809转换
MOV DX,IO_Bit8_BaseAddress
MOV CX,200
AD08091: IN AL,DX
LOOP AD08091 ;延时,等待AD转换完成
MOV DX,ADDR_0809
IN AL,DX
POP CX
RET
AD0809 ENDP
ToChar PROC NEAR ;转化为可显示的16进制数
ADD AL,'0'
CMP AL,'9'
JBE ToChar1
ADD AL,07H
ToChar1: RET
ToChar ENDP
DISPLAY_DATA PROC NEAR
MOV AH,AL
AND AL,0FH
CALL ToChar
MOV BUFFER + 1,AL
MOV AL,AH
AND AL,0F0H
ROR AL,4
CALL ToChar
MOV BUFFER,AL
MOV AL,AH
XOR AH,AH
MOV BL,51 ;255/51 (16进制的1 = 1/51V)
DIV BL
OR AL,'0' ;转化为可显示的10进制数
MOV BUFFER + 4,AL ;整数部分
MOV AL,10
MUL AH
DIV BL
OR AL,'0'
MOV BUFFER + 6,AL ;第一位小数
MOV AL,10
MUL AH
DIV BL
OR AL,'0'
MOV BUFFER + 7,AL ;第二位小数
RET
DISPLAY_DATA ENDP
DLTime PROC NEAR
PUSH AX
PUSH DX
MOV DX,100 ;延时100ms
MOV AH,0FFH ;星研公司提供的软中断
INT 21H
POP DX
POP AX
RET
DLTime ENDP
