资源描述
课程设计报告
课程 微机原理课程设计
题目 实时数据采集器
系 别 物理与电子工程学院
年 级 08级 专 业 电子信息工程
班 级 1班 学 号
学生姓名
指导教师 职 称
设计时间 2011.6.27—2011.7.8
18
目录
绪论 1
第一章选题分析 2
1.1题目内容与要求 2
1.2原理和结构框图 2
第二章方案设计 3
2.1硬件设计 3
2.1.1设计所用元件 3
2.1.2硬件连接 8
2.2软件设计 8
2.2.1编程分析与程序框图 8
2.2.2 程序代码 9
第三章结果及分析 15
3.1实验结果 15
3.2 结果分析 15
第四章 总结与体会 16
参考文献 17
绪论
微机原理的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。
微机原理与接口技术是计算机应用专业必修的一门课程,通过这门课我们能够知道计算机内部的工作原理,各部件的作用,各部件间的联系,学习了汇编语言和指令系统能让我们进行简单的程序设计,但是我们在课堂上学习的都是些理论方面的知识,没有进行过真正的实际接触。正所谓,“实践是检验真理的唯一标准”,只有通过真正的接触,实际的操作,我们才能将理论知识和实际应用联系在一起,真正的将理论实际化。因此,学校组织我们进行了为期两个星期的课程设计,通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
本次课程设计,主要是了解可编程外围芯片8255的工作原理,以及学会对ADC0809和8255芯片的应用和设计技术。对微型计算机基本的系统结构、对微型计算机硬软件的工作原理有个整体的认识。
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。这不仅丰富巩固了我们在课堂上学的知识,而且还为我们日后步入社会打下了基础。
第一章 选题分析
1.1题目内容与要求
内容:利用PC机和微机原理实验箱A/D转换制作一个可动态采集外部缓慢变化得模拟量的数据采集器,将最终的模拟量转换为7段显示码显示。
具体要求:
(1) 通过实验箱ADC0809芯片接收模拟量(从实验箱可调电压部分可获得,注意输入电压不得高于5V)并将其转换为数字量供8088CPU进行读取;
(2) 8088CPU对连续读到的10个数字量进行处理(例如:去掉最大最小数,然后求平均);
(3) 8088CPU将处理后的数字量转换为7段显示码,并通过8255芯片发送到7段显示模块显示,要求最少显示两位(小数点前后各一位);
(4) 提高要求:每1秒采集10次数据。
1.2原理和结构框图
该数据采集系统是一种基于ADC0809模数转换芯片和并行通信接口芯片8255A的设备,可以把ADC采集的电压信号转换为数字信号,经过微处理器的简单处理而交予数码管实现电压显示功能,并且通过与PC的连接可以实现计算机更加直观化显示。
A/D转换模块
数据采集模块
8255A接口模块
8086CPU
数码管显示模块
图1 原理框图
第二章 方案设计
2.1硬件设计
2.1.1设计所用元件
1.ADC0809
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。
1)主要特性:
(1)8路输入通道,8位A/D转换器,即分辨率为8位。
(2)具有转换起停控制端。
(3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
(4)单个+5V电源供电
(5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
(6)工作温度范围为-40~+85摄氏度
(7)低功耗,约15mW。
2)内部结构:
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图2所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
图2 ADC0809内部结构框图
3)外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图3所示。
图3 ADC0809外部引脚图
下面说明各引脚功能:
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路
ALE:地址锁存允许信号,输入,高电平有效。
START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
4)ADC0809的工作过程:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
2.8255A
8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:A组包括A口及C口高4位,B组包括B口及C组的低4位。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。
1)8255A内部结构:
图4 8255A内部结构框图
由图4知,8255A由以下三部分组成:
(1) 外设接口部分(数据端口部分A、B、C)
(2) 内部逻辑(A组控制和B组控制)
(3) CPU接口部分
2)8255A的引脚及功能:
D7~D0:三态、双向数据线,与CPU数据总线连接,用来传送数据。
CS:片选信号线,低电平有效时,芯片被选中。
A1, A0:地址线,用来选择内部端口。
RD:读出信号线,低电平有效时,允许数据读出。
WR:写入信号线,低电平有效时,允许数据写入。
RESET:复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。
PA7~PA0:A口输入/输出信号线。
PB7~PB0:B口输入/输出信号线。
PC7~PC0:C口输入/输出信号线。
VCC:+5V电源。 GND:电源地线。
图5 8255A芯片引脚信号
3.七段数码管
发光二极管显示器LED是微型计算机应用系统中常用的输出装置。七段LED显示器内部由7个发光二极管和1个原点发光二极管组成(如图6所示)。根据各管的亮暗程度组合成16进制数,小数点和少数字符。常用的七段LED的管脚排列如下图所示。发光二极管显示器led根据内部发光二极管的接线形式可分为共阳极型和共阴极型。
图6 七段数码管引脚图
当为共阴型时,公共极低电平,段码高电平的段亮,低则灭;而共阳型则反之。实验中我们采用的是共阳极型的接法。共阳极型的七段数码表字形编码如下表所示(表1)
表1 七段数码管字形编码表
D7
D6
D5
D4
D3
D2
D1
D0
七段
代码
dp
g
f
e
d
c
b
a
1
1
0
0
0
0
0
0
C0H
1
1
1
1
1
0
0
1
F9H
1
0
1
0
0
1
0
0
A4H
1
0
1
1
0
0
0
0
B0H
1
0
0
1
1
0
0
1
99H
1
0
0
1
0
0
1
0
92H
1
0
0
0
0
0
1
0
82H
1
1
1
1
1
0
0
0
F8H
1
0
0
0
0
0
0
0
80H
1
0
0
1
0
0
0
0
90H
1
0
0
0
1
0
0
0
88H
1
0
0
0
0
0
1
1
83H
1
1
0
0
0
1
1
0
C6H
1
0
1
0
0
0
0
1
A1H
1
0
0
0
1
1
1
0
86H
1
0
0
0
1
1
1
0
8EH
2.1.2硬件连接
本设计过程中实验箱上相关芯片可按以下方式进行连线:
(1)用16芯扁平线将CZA和CZB连接
(2)ADC0809芯片:
IN0→AOUT1(可调电压,VIN→+5V);
IOWR→IOWR;
IORD→IORD;
CLK→500K(单脉冲与时钟单元);
ADDA、ADDB、ADDC→GND;
CS4→8000H
JX6→JX17(数据总线)
2.2软件设计
2.2.1编程分析与程序框图
1.编程分析:
(1).ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:
MOV DX,ADPORT;ADC0809端口地址
OUT DX,AL;发CS和WR信号并送通道地址
(2).用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果.
MOV DX,ADPORT;ADC0809端口地址
IN AL,DX
(3).循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量
2.程序框图
图7 程序框图
2.2.2 程序代码
DATA SEGMENT
DATA1 DW 10 DUP(?) ;定义DATA1为字型
MAX DW ?
MIN DW ?
TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0~9的段码(字形码)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
ADDR_0809 EQU 8000H ;AD0809端口地址
PROC_A EQU 0FF28H
PROC_B EQU 0FF29H
PROC_C EQU 0FF2AH
PROC_CTL EQU 0FF2BH
ORG 1100H
……………………………….…数据采集……………………………………………
START0:
MOV CX,10 ;采集10次数
MOV BX,0
MOV DI,OFFSET DATA1 ;把DATA1的首地址赋给DI
LP1: ;采集数据,进行A/D转换
CALL AD0809
XOR AH,AH ;高位清零
ADD BX,AX ;BX=BX+AX,求采集数据之和
MOV [DI],AX ;DI存储10个数据
INC DI ;DATA1为字型
INC DI
LOOP LP1
……………………………去掉最大最小求平均………………………………………..
MOV SI, OFFSET DATA1
MOV AL,[SI]
MOV CX,9 ;比较9次
P1:
INC SI
INC SI
CMP AL,[SI]
JAE NEXT
MOV AL,[SI]
NEXT:
LOOP P1
MOV AH,00H
MOV MAX,AX ;求出最大值
MOV SI, OFFSET DATA1
MOV AL,[SI]
MOV CX,9
P2:
INC SI
INC SI
CMP AL,[SI]
JBE CONT
MOV AL,[SI]
CONT:
LOOP P2
MOV AH,00H
MOV MIN,AX ;求出最小值
XOR AH,AH ;采集10个数据
MOV AX,BX
MOV DX,MAX
SUB AX,DX ;减去最大值
MOV DX,MIN
SUB AX,DX ;减去最小值
MOV BL,8
DIV BL ;求剩余8位数的平均值
………………………………整数和小数部分……………………………………………
XOR AH,AH
MOV BL,50 ;A/D的输出结果经过运算法则 (Y=50*X)
DIV BL
MOV BH,AL ;BH为整数部分
CMP AH,5 ;AH为小数部分
JAE LP3 ;大于等于5时跳转
MOV AH,0 ;小于5时置零
JMP LP4 ;无条件转移
LP3:
MOV BL,5
MOV AL,AH
XOR AH,AH
DIV BL
MOV AH,AL ;十进制小数
LP4:
MOV AL,BH ;十进制整数
……………………………整数部分换码………………………………………………….
MOV CH,AH
LEA BX,TAB ;装入有效地址
MOV AH,0
ADD BX,AX ;得到整数的段码字节
MOV AL,[BX] ;整数段码显示
MOV CL,AL ;完成整数部分换码
………………………………小数部分换码………………………………………………
MOV AL,CH
LEA BX,TAB
MOV AH,0
ADD BX,AX
MOV AL,[BX]
MOV CH,AL ;完成小数部分换码
MOV BH,CH ;换码后小数
MOV BL,CL ;换码后整数
AND BL,7FH ;得到整数和小数点的段码
MOV AL,80H ;8255控制字 ,方式0工作
MOV DX,PROC_CTL
OUT DX,AL
MOV SI,05FH ;实现循环显示
………………………………小数显示……………………………………………….
LP:
MOV AL,BH ;显示小数部分
MOV DX,PROC_A
OUT DX,AL
MOV AL,0FEH
MOV DX,PROC_B
OUT DX,AL
MOV CX,0FFH ;延时
DELAY1:
LOOP DELAY1
………………………………整数显示……………………………………………….
MOV AL,BL ;显示整数部分
MOV DX,PROC_A
OUT DX,AL
MOV AL,0FDH
MOV DX,PROC_B
OUT DX,AL
MOV CX,0FFH ;延时
DELAY2:
LOOP DELAY2
DEC SI ;减1
JNZ LP
JMP START0 ;实现连续采集不同的模拟量
………………………………采集数据完成AD转换……………………………………….
AD0809 PROC NEAR ;A/D转换
PUSH CX
MOV AL,00H
MOV DX,ADDR_0809
OUT DX,AL
MOV CX,0500H
DELAY: LOOP DELAY ;延时,等待A/D转换完成
MOV DX,ADDR_0809
IN AL,DX
POP CX
RET
AD0809 ENDP
CODE ENDS
END START0
第三章 结果及分析
3.1实验结果
图8 实验结果1
3.2 结果分析
数码管显示值随着电压旋钮的旋转在0-5V之间变化,与题目所要求的采集10个数据求平均,将采集的模拟量经过ADC0809转化为数字量,通过8255A并行通信接口与七段数码管连接,经换码显示出来相符。因此本次实验根据题目要求所编写的程序是正确的。
第四章 总结与体会
此次课程设计要求我们将从可调电压采集的10次模拟电压量转化为数字量在数码管显示,题目的思路很清晰,但是实际操作过程却遇到了不少麻烦,首先编写各个部分程序,再结合起来,编译找错误并改正,再调试运行,没有达到正确显示的目的,于是不断地找原因重新修改代码,直到最后有了正确的结果。
在这一个多星期的微机课程设计里,我们不断找资料解决问题,回顾了上学期所学的内容,给了我们一个很好的机会将所学内容综合应用实践,温固而知新,对未来的学习也有很大帮助。在设计中发现的一些不足的地方也让我们不断找问题的根源,不断学习改进,最终得到正确的结果。
在实训中还锻炼了我其他方面的能力,提高了我的综合素质。首先,它锻炼了我做项目的能力,提高了独立思考问题、自己动手操作的能力,在编写调试运行程序的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等。其次,实训中的项目作业也使我更加有团队精神,我们小组每个人都有自己分配到的任务。
在实训过程中,老师对我们亲切认真负责,很有耐心的解决我们遇到的难题。 从他身上我看到了认真,负责的工作作风,严谨,细心的工作态度,以及对教育工作的极大热诚。同时他也给了我们一些宝贵的工作经验,这些经验,都是学校里的一些老师很少提到的。这些可贵的教学精神,就是我们的榜样,是十分值得我们大家去学习的。
这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。
参考文献
[1]李干林,李升.微机原理及接口技术[M]. 北京:北京大学出版社,2010.
[2]朱金钧,麻新旗 等. 微型计算机原理及应用技术[M]. 第二版 机械工业出版社,2005.
[3]李广波,王海,李岗.微机接口技术与实例[M].国防工业出版社,2010.
[4]周明德 微机原理于接口技术实验指导与习题集. 人民邮电出版社,2002.
课程设计独创性声明:
本人声明所呈交的课题设计是本组独立进行的研究工作及取得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果。本报告对他人的作品的使用的数量和质量均是在著作权法规定的合理范围内。
学生签名:
指导教师评语:
课程设计成绩: 指导教师签名:
教研室意见:
教研室主任签名:
展开阅读全文