微机原理课程设计报告—简易电压表

  • 格式:docx
  • 大小:1.04 MB
  • 文档页数:14

一、设计题目简易电压表设计二、设计目的通过课程设计达到理论和实际应用相结合,提高对硬件微机结构和软件设计方法的理解。

能够根据实际应用初步实现硬件和软件的基本设计,并且对硬件开发有更深层次的认识,为今后的软件开发打下坚实的基础。

三、设计内容及要求基本内容:利用STAR ES598PCI实验仪的硬件资源8259中断控制器、8255可编程并行接口芯片和数码管、电位器和ADC0809设计一个简易电压表,编写响应的程序,使电压表能够正常运行,3位数码管显示电位器的电压,精确度要求小数点两位。

基本任务:软件查询的方式获取AD转换结束信息附加任务:中断方式获取AD转换结束信息四、设计原理1、主体思想ADC0809是逐次逼近型A / D转换器,具有较好的精度和速度,其采集结果为8位二进制数,每采集一次一般需要100μs。

设计程序时可采用中断方式读取A / D转换结果数据。

在中断方式下,A / D转换结束后会自动产生EOC信号,将其与8259的中断输入端相接即可。

电压模拟量可由实验箱上的电位器提供,电压范围0 ~ 5V,其经ADC0809转换得到的数字量范围为0 ~ 255,再将转换的结果通过软件编码得到相应的原始电压值并在LED数码管上显示。

2、实验主要器材3、设计流程图4、相关电子元器件及其功能介绍(1)8255A芯片a.概述:Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

b.8255A工作方式:●方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路●方式1:选通输入输出方式适用于查询和中断方式的接口电路●方式2:双向选通传送方式适用于与双向传送数据的外设适用于查询和中断方式的接口电路c.8255A控制字格式:(a)工作方式控制字(b)c口按位置位/复位控制字(2)8259A芯片a.概述:8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。

单个的8259A能管理8级向量优先级中断。

在不增加其他电路的情况下,最多可以级联成64级的向量优先级中断系统。

8259A有多种工作方式,能用于各种系统。

各种工作方式的设定是在初始化时通过软件进行的。

在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态.编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态b.初始化命令字:2) ICW2写入单数地址。

3) ICW3写入单数地址。

4) ICW4写入单数地址c.操作命令字:1)OCW1写入单数地址。

2) OCW2写入双数地址。

3) OCW3写入双数地址。

d.主要功能:在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到cpu的INTR端;当cpu响应中断并进入中断子程序的处理过程后,中断控制器仍负责对外部中断请求的管理。

(3)ADC0809芯片a.概述:ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A / D 转换。

b.主要特性:1) 8路输入通道,8位A /D 转换器,即分辨率为8位。

2) 具有转换起停控制端。

3) 转换时间为100μs 4) 单个+5V 电源供电5) 模拟输入电压范围0~+5V ,不需零点和满刻度校准。

6) 工作温度范围为-40~+85摄氏度 7)低功耗,约15mW 。

c.引脚功能:ADC0809芯片有28条引脚,采用双列直插式封装。

引脚图见右图1-1IN0~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 :地。

图1-1d.首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器。

START上升沿将逐次逼近寄存器复位。

下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

(4)数码管七段式LED显示部件(a)典型的七段式LED器件(b) 共阳极LED (c) 共阴极LED数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

五、实验原理图与硬件电路图实验原理图:硬件电路图:六、测试结果及问题分析1、测试结果当调节电位器左端旋转至右端时,数码管显示电压0.00~4.99,可通过改变电阻来改变电压值,再通过A/D转换为数字量通过数码管发出二极管显示数字。

2、问题分析(1)按照实验电路图连接完实物图后,发现数码管显示不了,后来发现,由于B4区的PA和PC插口与G5区的B、C口连接错了,与程序编写不相符,这才导致了数码管显示不了电压值。

(2)刚开始编写程序时没有意识到最终显示的要为原始电压值,而是单纯的将八位二进制数转换为十进制数显示,没有考虑到输入电压与转换后数字的关系,所以并没有达到设计要求。

(3)重新编写LED段程序后发现数码管发光不稳定,闪烁比较严重,通过更改延时主程序参数问题得到解决。

七、课程设计总结短短一周的微机原理与接口技术的课程设计就结束了,但是我在这段时间学习到了很多。

它让我体会到了平时在课堂上所不能体验的感受,那种面对硬件实物的激动的心情,已经在自己付出努力后却迟迟得不到想要结果时的焦急。

但我深深地明白,这才是课程设计的魅力所在,正是因为有这样或者那样的困难,才让这次的课程设计充满乐趣。

设计之初,我仔细阅读了有关ADC0809、8259A和8255A方面的知识,了解了它们的芯片功能、工作原理及初始化等等。

以前我们只在课堂上做过一些关于软件设计方面的题目,这次与硬件相结合不仅难度上有所提升,并且对自身能力的要求又提高了不少,不但需要较高的理论水平,而其还要求有实际的动手能力。

这次的课程设计目的是提高实践能力,还包括汇编语言的编程能力以及对接口等硬件的分析和设计接口电路的能力,从而学以致用。

总而言之,通过这次的课程设计,我不仅仅巩固了课堂上学习到的微机原理与接口技术方面的知识,也大大地补充了我对相关硬件功能的全面认识和理解,并且能够基本掌握它们的使用方法和操作环境。

只有通过实际编程和微机及接口的硬件实践,才能真正掌握软硬件设计的方法,从中得到收益和提高。

同时,在同学和老师的帮助下,自己独立完成这项课程设计,在这个过程中,不仅仅让我尝到了成功的喜悦以及付出的辛苦,更让我认识到了学习的正确方法,我们绝不能孤立自己,往往在困难肚子解决不了的时候,可以向周围的人寻求帮助,这样可以事半功倍,更加能及时发现自己的设计不足和错误之处。

所以,在此,我十分感谢那些在本次课程设计中给我提供很大帮助的人。

附件:程序清单MODE EQU 082H ;10000010H,方式0,A和C输出PORTA EQU 09000H ;A口地址PORTB EQU 09001H ;B口地址PORTC EQU 09002H ;C口地址CONTROL EQU 09003H ;命令口地址CS0809 EQU 08000H ;0809地址ICW1 EQU 00010011B ;上升沿触发,单片8259A,需要ICW4ICW2 EQU 08H ;中断类型号为40HICW4 EQU 00001001B ;正常全嵌套,非自动EOI,工作在8086/8088方式OCW1 EQU 11111110B ;IR1-IR7上的中断请求被屏蔽,只响应INT0中断CS8259A EQU 0A000HCS8259B EQU 0A001HDATA SEGMENTNUM DB 3 DUP(?) ;开辟三个空间的缓存LEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;数码管显示0到9的字型代码DB 7FH,6FHLEDDMAP: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87HDB 0FFH,0EFH ;包括小数点的显示DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATADELAY PROC NEAR ;延时子程序PUSH BXPUSH CXMOV BX,0MOV CX,100A1: INC BXLOOP A1POP CXPOP BXRETDELAY ENDPIENTER PROC NEAR ;中断服务程序PUSH AXMOV DX,CS0809 ;0809端口地址IN AL,DX ;读入结果LED: ;转换为原始电压值显示程序MOV BL,0C4H ;乘以5/256*10000=196MUL BL ;AX=AL*BL,得16位结果PUSH AX ;压栈,存入结果MOV BX,0001HPOP AXMUL BX ;将AX扩展为32位,结果在DX:AX中MOV BX,64H ;100DIV BX ;DX:AX/BX,得32位,商在AX中,余数在DX中DIV BL ;AX/BL,得16位,商在AL中,余数在AH中MOV [SI],AL ;整数部分,结果放进NUMMOV SI,OFFSET NUM ;段码地址,指向七段码表MOV AL,AHMOV AH,00HMOV BL,0AHDIV BL;再除10MOV [SI+1],AL ;AL中为小数点后第一位MOV [SI+2],AH ;AH中为小数点后第二位MOV AL,[SI]MOV DI,OFFSET LEDDMAP ;段码地址,查表,显示第一位包括小数点MOV AH,0ADD DI,AXMOV AL,[DI]MOV DX,PORTAOUT DX,ALMOV DX,PORTCMOV AL,11111011BOUT DX,AL ;选通第一位数码管,整数位CALL DELAYMOV AL,[SI+1]MOV DI,OFFSET LEDMAPMOV AH, 0ADD DI,AXMOV AL,[DI]MOV DX,PORTAOUT DX,ALMOV DX,PORTCMOV AL,11111101BOUT DX,AL ;选通第二位数码管,小数点后第二位MOV AL,[SI+2]MOV DI,OFFSET LEDMAPMOV AH, 0ADD DI,AXMOV AL,[DI]MOV DX,PORTAOUT DX,ALMOV DX,PORTCMOV AL,11111110BOUT DX,AL ;选通第三位数码管,小数点后第二位CALL DELAYMOV DX,CS0809MOV AL,0OUT DX,ALMOV DX,CS8259AXOR AX,AX ;AX置零MOV AL,20H ;中断服务程序结束指令OUT DX,ALPOP DXPOP AXIRETIENTER ENDPIINIT PROC NEAR ;初始化8259AMOV DX,CS8259A ;偶地址MOV AL,ICW1 ;00010011B,上升沿触发,单片8259A,需要ICW4OUT DX,AL ;写ICW1用偶地址MOV DX,CS8259B ;奇地址MOV AL,ICW2 ;中断源IR0-IR7,中断类型号为40H-47HOUT DX,AL ;写ICW2用奇地址MOV AL,ICW4 ;正常全嵌套,非自动EOI,工作在8086/8088方式OUT DX,AL ;写ICW4用奇地址MOV AL,OCW1 ;11111110B,IR1-IR7上的中断请求被屏蔽,只响应INT0中断OUT DX,AL ;写OCW1用奇地址RETIINIT ENDPSTART PROC NEARMOV AX,DATAMOV DS,AXMOV SI,OFFSET NUMMOV DX,CONTROL ;8255A控制端命令口MOV AL,MODEOUT DX,AL ;输出8255控制字到命令口CLI ;屏蔽外部中断CALL IINIT ;调用初始化8259AMOV AX,0 ;初始化中断向量表MOV ES,AXMOV DI,4*ICW2 ;中断号LEA AX,IENTER ;设置中断入口地址(灯的显示)STOSWMOV [BX],AXMOV AX,SEG IENTERSTOSWMOV SI,OFFSET NUM ;代码段地址为0MOV AL,0 ;初始值为0MOV DX,CS0809OUT DX,AL ;启动模/数转换芯片STI ;将处理器标志寄存器中断标志置1,允许中断LP: NOP ;短暂延时程序,等待中断JMP LPCODE ENDSEND START。