微机原理课设简易电压表设计.docx
《微机原理课设简易电压表设计.docx》由会员分享,可在线阅读,更多相关《微机原理课设简易电压表设计.docx(18页珍藏版)》请在冰点文库上搜索。
微机原理课设简易电压表设计
成绩
南京工程学院
通信工程学院
课程设计说明书
题目简易电压表设计
课程名称微机原理及接口技术课程设计
专业
班级
学生姓名
学号
设计地点
指导教师
设计起止时间:
2013年12月23日至2013年12月26日
1.设计目的……………………………………………………………….3
2.设计内容及要求……………………………………………………….3
3.设计原理……………………………………………………………….3
3.1实验模块………………………………………………………...…3
3.2实验主要器材…………………………………………………..….3
3.3设计流程图…………………………………………………….…..4
4.实验元件解释……………………………………………………………4
4.1ADC0809(A/D转换)…………………………………….…….4
4.28255A原理…………………………………………………..........6
4.38259A芯片………………………………………………………....6
4.4数码管……………………………………………………...……....7
5.实验原理图与电路元件图……………………………………………....7
6.测试结果及问题分析…………………………………………….…...…8
7.实验代码…………………………………………………………...…….9
8.实验体会…………………………..…………………………………….13
1.设计目的
通过课程设计达到理论和实际应用相结合,提高对硬件微机结构和软件设计方法的理解。
能够根据实际应用初步实现硬件和软件的基本设计,并且对硬件开发有更深层次的认识,为今后的软件开发打下坚实的基础。
2.设计内容及要求
基本内容:
利用STARES598PCI实验仪的硬件资源8259中断控制器、8255可编程并行接口芯片和数码管、电位器和ADC0809设计一个简易电压表,编写响应的程序,使电压表能够正常运行,3位数码管显示电位器的电压,精确度要求小数点四位。
基本任务:
软件查询的方式获取AD转换结束信息
附加任务:
中断方式获取AD转换结束信息
3.设计原理
3.1实验模块
3.2实验主要器材
实验器材
数量
备注
PC机
1
装有实验所需软件
ES598PCI实验仪
1
8255A芯片
1
8259A芯片
1
ADC0809芯片
1
数码管
1
事先检验完好可用
3.3设计流程图
4.实验元件解释
4.1ADC0809(A/D转换)
ADC0809是逐次逼近型A/D转换器,其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
具有较好的精度和速度,其采集结果为8位二进制数,以逐次逼近原理进行模—数转换。
每采集一次一般需要100μs。
设计程序时可采用中断方式读取A/D转换结果数据。
在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8259的中断输入端相接即可。
主要特性:
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
引脚功能:
ADC0809芯片有28条引脚,采用双列直插式封装。
引脚图见右图1-1
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:
地。
工作过程:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
4.28255A原理
Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。
工作方式:
●方式0:
基本输入输出方式
适用于无条件传送和查询方式的接口电路
●方式1:
选通输入输出方式
适用于查询和中断方式的接口电路
●方式2:
双向选通传送方式
适用于与双向传送数据的外设
适用于查询和中断方式的接口电路
8255A控制字格式:
(a)工作方式控制字(b)c口按位置位/复位控制字
4.38259A芯片
概述:
8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。
单个的8259A能管理8级向量优先级中断。
在不增加其他电路的情况下,最多可以级联成64级的向量优先级中断系统。
8259A有多种工作方式,能用于各种系统。
各种工作方式的设定是在初始化时通过软件进行的。
在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态.编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态
主要功能:
在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到cpu的INTR端;当cpu响应中断并进入中断子程序的处理过程后,中断控制器仍负责对外部中断请求的管理。
4.4数码管
七段式LED显示部件
(a)典型的七段式LED器件(b)共阳极LED(c)共阴极LED
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
5.实验原理图与硬件电路图
6.测试结果及问题分析
测试结果:
当调节电位器左端旋转至右端时,数码管显示电压0.0000~4.9939,可通过改变电
阻来改变电压值,再通过A/D转换为数字量通过数码管发出二极管显示数字。
问题分析:
(1)、一开始无法进入调试状态,经检查没有将出现警告无法继续下一步前面的钩去掉
(2)、线路接好之后没有电压显示,经检查将B4区的PA和PC插口插在了PB和PC上
(3)、LED段程序后发现数码管发光不稳定,闪烁比较严重,通过更改延时主程序参数问题得到解决。
(4)、小数点后只显示两位小数,在实验代码中加入第三位第四位的定义之后有显示
7.实验代码
MODEEQU082H;10000010H,方式0,A和C输出
PORTAEQU09000H;A口地址
PORTBEQU09001H;B口地址
PORTCEQU09002H;C口地址
CONTROLEQU09003H;命令口地址
CS0809EQU08000H;0809地址
ICW1EQU00010011B;上升沿触发,单片8259A,需要ICW4
ICW2EQU08H;中断类型号为40H
ICW4EQU00001001B;正常全嵌套,非自动EOI,工作在8086/8088方式
OCW1EQU11111110B;IR1-IR7上的中断请求被屏蔽,只响应INT0中断
CS8259AEQU0A000H
CS8259BEQU0A001H
DATASEGMENT
NUMDB5DUP(?
);开辟五个空间的缓存
LEDMAP:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;数码管显示0到9的字型代码
DB7FH,6FH
LEDDMAP:
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H
DB0FFH,0EFH;包括小数点的显示
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
DELAYPROCNEAR;延时子程序
PUSHBX
PUSHCX
MOVBX,0
MOVCX,100
A1:
INCBX
LOOPA1
POPCX
POPBX
RET
DELAYENDP
IENTERPROCNEAR;中断服务程序
PUSHAX
PUSHDX
MOVDX,CS0809;0809端口地址
INAL,DX;读入结果
LED:
;转换为原始电压值显示程序
MOVBL,0C4H;乘以5/256*10000=196
MULBL;AX=AL*BL,得16位结果
PUSHAX;压栈,存入结果
MOVBX,0001H
POPAX
MULBX;将AX扩展为32位,结果在DX:
AX中
MOVBX,64H;100
DIVBX;DX:
AX/BX,得32位,商在AX中,余数在DX中
DIVBL;AX/BL,得16位,商在AL中,余数在AH中
MOV[SI],AL;整数部分,结果放进NUM
MOVSI,OFFSETNUM;段码地址,指向七段码表
MOVAL,AH
MOVAH,00H
MOVBL,0AH
DIVBL;再除10
MOV[SI+1],AL;AL中为小数点后第一位
MOV[SI+2],AH;AH中为小数点后第二位
DIVBL
MOV[SI+3],AH
DIVBL
MOV[SI+4],AH
MOVAL,[SI]
MOVDI,OFFSETLEDDMAP;段码地址,查表,显示第一位包括小数点
MOVAH,0
ADDDI,AX
MOVAL,[DI]
MOVDX,PORTA
OUTDX,AL
MOVDX,PORTC
MOVAL,11101111B
OUTDX,AL;选通第一位数码管,整数位
CALLDELAY
MOVAL,[SI+1]
MOVDI,OFFSETLEDMAP
MOVAH,0
ADDDI,AX
MOVAL,[DI]
MOVDX,PORTA
OUTDX,AL
MOVDX,PORTC
MOVAL,11110111B
OUTDX,AL;选通第二位数码管,小数点后第一位
CALLDELAY
MOVAL,[SI+2]
MOVDI,OFFSETLEDMAP
MOVAH,0
ADDDI,AX
MOVAL,[DI]
MOVDX,PORTA
OUTDX,AL
MOVDX,PORTC
MOVAL,11111011B
OUTDX,AL;选通第三位数码管,小数点后第二位
CALLDELAY
MOVAL,[SI+3]
MOVDI,OFFSETLEDMAP
MOVAH,0
ADDDI,AX
MOVAL,[DI]
MOVDX,PORTA
OUTDX,AL
MOVDX,PORTC
MOVAL,11111101B
OUTDX,AL;选通第四位数码管,小数点后第三位
CALLDELAY
MOVAL,[SI+4]
MOVDI,OFFSETLEDMAP
MOVAH,0
ADDDI,AX
MOVAL,[DI]
MOVDX,PORTA
OUTDX,AL
MOVDX,PORTC
MOVAL,11111110B
OUTDX,AL;选通第五位数码管,小数点后第四位
CALLDELAY
MOVDX,CS0809
MOVAL,0
OUTDX,AL
MOVDX,CS8259A
XORAX,AX;AX置零
MOVAL,20H;中断服务程序结束指令
OUTDX,AL
POPDX
POPAX
IRET
IENTERENDP
IINITPROCNEAR;初始化8259A
MOVDX,CS8259A;偶地址
MOVAL,ICW1;00010011B,上升沿触发,单片8259A,需要ICW4
OUTDX,AL;写ICW1用偶地址
MOVDX,CS8259B;奇地址
MOVAL,ICW2;中断源IR0-IR7,中断类型号为40H-47H
OUTDX,AL;写ICW2用奇地址
MOVAL,ICW4;正常全嵌套,非自动EOI,工作在8086/8088方式
OUTDX,AL;写ICW4用奇地址
MOVAL,OCW1;11111110B,IR1-IR7上的中断请求被屏蔽,只响应INT0中断
OUTDX,AL;写OCW1用奇地址
RET
IINITENDP
STARTPROCNEAR
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETNUM
MOVDX,CONTROL;8255A控制端命令口
MOVAL,MODE
OUTDX,AL;输出8255控制字到命令口
CLI;屏蔽外部中断
CALLIINIT;调用初始化8259A
MOVAX,0;初始化中断向量表
MOVES,AX
MOVDI,4*ICW2;中断号
LEAAX,IENTER;设置中断入口地址(灯的显示)
STOSW
MOV[BX],AX
MOVAX,SEGIENTER
STOSW
MOVSI,OFFSETNUM;代码段地址为0
MOVAL,0;初始值为0
MOVDX,CS0809
OUTDX,AL;启动模/数转换芯片
STI;将处理器标志寄存器中断标志置1,允许中断
LP:
NOP;短暂延时程序,等待中断
JMPLP
CODEENDS
ENDSTART
八、实验体会
短短一周的微机原理与接口技术的课程设计就结束了,但是我在这段时间学习到了很多。
也明白了实践与理论的区别。
在设计前一天我就去图书馆找了很多关于这方面的资料。
我仔细阅读了有关ADC0809、8259A和8255A方面的知识,了解了它们的芯片功能、工作原理及初始化等等。
以前我们的实验只是单独的芯片,这一次需要将所有芯片组合在一起,不但需要较高的理论水平,而其还要求有较高的实际的动手能力。
这次的课程设计目的是提高实践能力,还包括汇编语言的编程能力以及对接口等硬件的分析和设计接口电路的能力,从而学以致用。
总而言之,通过这次的课程设计,我不仅仅巩固了课堂上学习到的微机原理与接口技术方面的知识,也大大地补充了我对相关硬件功能的全面认识和理解,并且能够基本掌握它们的使用方法和操作环境。
只有通过实际编程和微机及接口的硬件实践,才能真正掌握软硬件设计的方法,从中得到收益和提高。
同时,在同学和老师的帮助下,自己独立完成这项课程设计,在这个过程中,不仅仅让我尝到了成功的喜悦以及付出的辛苦,更让我认识到了学习的正确方法,我们绝不能孤立自己,与同一组的同学一起讨论将电压表做出来的感觉真好。