基于8086的数字电压表、与秒表的设计

2021-04-05 01:08

微机原理与接口技术课程设计

学生姓名: 专 业:__________ 学 号: 系 别:_________ 指导老师: 日 期:

一、课程目的

1、 加深对微机原理与接口技术课程内容的理解,增强综合运用课程知识的能力和编程能力,加深软、硬件应用的综合能力,在微机应用系统软、硬件开发中有初步的能力。

2、 把课堂实验中分布学到的知识,在课程设计中综合加以应用,进而加深理解、不断巩固、努力创新。通过学习查找、运用设计资料,完成工程所必备的基本训练,提高分析问题、解决问题的能力,养成良好的学习习惯、严谨的工作作风。

二、课程设备

微机,微机接口实验箱,示波器,三用表等。

三、课程设计内容及要求

用中断法实现数字电压表和数字秒表的综合设计

8255 PC口外接四位数码管和K7、K6两位开关,当k7=1时系统运行,k7=0时系统停止运行;系统运行时分两种情况:

1. 当K6=1时,8254作为秒发生器,其OUT作为中断请求信号,秒表时间在数码管显示。

2. 当K6=0时,用中断法,将ADC 0809通道0外接0 ~ 5V电压,连续转换采集10次成数字量后,用均值滤波算法得到的平均值,在CRT的输出窗口,以小数点后两位(几十毫伏)的精度,显示其模拟电压的十进值。并且当: (1) 当0V < ADJ ≤1V时,数码管显示“1”; LED单元的D7~D0单灯左跳; (2) 当1V < ADJ ≤2V时,数码管显示“2” ,LED单元的D7~D0双灯右跳; (3) 当2V < ADJ ≤3V时,数码管显示“3” ,LED单元的D7~D0向左渐亮; (4) 当3V < ADJ ≤4V时,数码管显示“4” ,LED单元的D7~D0向右渐灭; (5) 当4V < ADJ ≤5V时,数码管显示“5” , LED单元的D7~D0 闪动显示A/D值。

ADC 0809 的CLK 脉冲为1MHZ,ADC 0809的EOC信号,用作8259中断请求信号。8254作为秒发生器,它的CLK 脉冲为1MHZ,工作方式自行确定,其OUT作为秒中断请求信号。 要有较好的人机对话界面;控制程序的运行。

四、硬件系统设计

因采用了PC机和微机实验箱, 硬件电路设计相对比较简单, 主要利用微机实验箱上的8255并行口、ADC 0809、七段LED数码管单元、8254定时/计数器、电位器等单元电路, 就构成了数字电压表和数字秒表, 硬件电原理框图1-1所示。

2

3

4

XD0-D7

D0-D7 RD WR A0 A1 CS D0-D7 RD WR ADDA ADDB ADDC

PB0-PB7

1 2 3 4 5 6 7 8

DPY a a b c f b g d e e c d f dp g dp

1 2 3 4 5 6 7 8

DPY a a b c f b g d e e c d f dp g dp

1 2 3 4 5 6 7 8

DPY a a b c f b g d e e c d f dp g dp

1 2 3 4 5 6 7 8

DPY a a b c f b g d e e c d f dp g dp

8255

PC0-PC3 PC7 PC6

PC

0

PC1 K7

PC2

PC3 1K K6 1K

+5V

+5V IN 0

10K PA0 1MHZ MIR7 1K 1K 1K PA1 D0 D1 PA7

0809

CLK EOC

D7

CS D0-D7 CLK 0 OUT 0 1MHZ

RDWR A0 A1 CS

8254

CLK 1 GATE 1 +5V

OUT 1

MIR6

图 1-1 电路原理框图(1) 根据课设内容的要求,设计完成该任务的所需硬件系统框图;

控 制 面 板2

LED 显示模块

计数器

A/D 转换模块3

中断请求与响应4

外部电压

设计的基本思想和顺序

利用0809采集电压数据,将模拟电压信号数字电压信号。8255通过I/O控制两位数码管显示 采集电压值。8254设置采样频率。8359设置中断。基本思路:当到定时时间时产生中断信号,进入中断采集电压数据。采集的数据转化后保存到内存空间里,返回主程序后在数码管上显示。

(2) 根据硬件系统框图, 细化成电原理图;

1、并行接口8255A

8255A是一个40引脚的双列直插式并行接口芯片。

8255芯片内部有3个8位的输入输出端口,即A口,B口和C口。从内

部控制角度来讲,可分为两组:A组和B组;A组控制模块管理

口的高四位,B组控制模块管理B口和C口的第四位。

A口和C

1.0 方式0:基本输入输出方式 适用于无条件传送和查询方式的接口电路

1.1 方式1:选通输入输出方式 适用于查询和中断方式的接口电路

1.2 方式2:双向选通传送方式 适用于与双向传送数据的外设 适用于查询和中断方式的接口电路

本设计中使用8255端口A输出LED数码管的位选信号和端口B输出段码信号

2、A/D转换器0809

ADC0809是双列直插式8位A/D转换芯片,具有8路模拟量输入线,可在程序控制下对任意一路进行A/D转换,得到8位二进制数字量。

ADC0809包括一个8位的逐次逼近型的ADC部分,并提供一个8通道的 模拟多路开关和联合寻址逻辑。用它可以直接输入8个单端的模拟信号,分时进行A/D转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。

2.0 主要特性

1) 8路输入通道,8位A/D转换器,即分辨率为8位。 2) 具有转换起停控制端。 3) 转换时间为100μs 4) 单个+5V电源供电

5) 模拟输入电压范围0~+5V,不需零点和满刻度校准。 6) 工作温度范围为-40~+85摄氏度 7) 低功耗,约15mW。

本设计中电压模拟量从ADC0809的IN0端输入。

图2-1 ADC0809引脚图

3、定时计时/计数器8254

8254 芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。是8253的改进型,比8253具有更优良的性能。与大多数微处理器兼容;技术频率从支流到10MHz;有6种可编程计数器方式;3个独立的16位计数器,二进制或十进制(BCD)计数;任一引脚对地电压-0.5~7V.

3.1 8254芯片主要由四部分组成: 1.数据总线缓冲器; 2.读写逻辑; 3.3.控制字寄存器; 4.4.计数器; 3.2 8254的工作方式:

方式0:计数到0结束输出正跃变信号方式; 方式1:硬件可重触发单稳方式; 方式2:频率发生器方式; 方式3:方波发生器; 方式4:软件触发选通方式; 方式5:硬件触发选通方式。

图3-1 定时计时/计数器8254引脚图

4、七段LED数码管单元

LED数码管是由发光二级管显示字段组成的显示器,有8段和“米”字段之分,这种显示器有共阳级和共阴极两种。所谓共阳方式是指笔画显示器各段发光管的阳极(即P区)是公共的,而阴极互相隔离。所谓共阴方式是笔画显示器各段发光管的阴极(即N区)是公共的,而阳极是互相隔离的。 本设计用2位8段LED数码管分别显示电压值(电位器模拟电压)的十位和个位部分。

图4-1 七段式LED显示部件引脚图

(3) 根据电原理图,编写简单的硬件检测程序

;------------------------------------------------------------- ; 课程设计三硬件检测: 数据采集控制与数字电压表 ;

HLXKSJC3.ASM

;------------------------------------------------------------- A8255

EQU 0602H ;PB0~PB7-->A~G.DP 段码口 EQU 0604H ;PC0~PC3-->X1~X4,PC4.PC5-->EOC EQU 0606H ;PC6-->K6电压表,PC7-->K7开机 EQU 0640H EQU 0642H EQU 0644H EQU 0646H

;ADC0809端口地址

;8254端口地址

B8255 C8255 CON8255 A8254 B8254 C8254 CON8254

ADC0809 EQU 0680H

;------------------------------------------------------------- ;------------------------------------------------------------- CODE

SEGMENT ASSUME CS:CODE

EQU 0600H ;8255端口地址:PA0~PA7-->LED.D0-D7

;------------------------------------------------------------- START: MOV DX,CON8255 ;8255控制字:PA7~PA0显示AD转换值

MOV AL,10001000B ;A口.B口,PC0~PC3输出,PC4~PC7输入 OUT DX,AL

;L0~L7灯显示01010101

;------------------------------------------------------------- BEGIN: MOV DX,A8255

MOV AL,55H OUT DX,AL MOV DX,B8255 MOV AL,5BH OUT DX,AL MOV DX,C8255

;LED数码管显示2

;-------------------------------------------------------------

MOV AL,11110101B OUT DX,AL MOV DX,CON8254 MOV AL,00100111B OUT DX,AL MOV DX,A8254 MOV AL,10H OUT DX,AL MOV DX,CON8254 MOV AL,01100111B OUT DX,AL MOV DX,B8254 MOV AL,10H OUT DX,AL

;启动秒计数

;-------------------------------------------------------------

;------------------------------------------------------------- ;------------------------------------------------------------- ALEST: MOV DX,ADC0809

OUT DX,AL

MOV DX,C8255

;检测EOC状态,判断转换是否结束

IN AL,DX

TEST AL,00110000B JZ EOC

MOV DX,ADADC0809 IN AL,DX MOV DX,A8255 OUT DX,AL JMP ALEST

ENDS

;继续

;显示AD转换结果

;转换结束,取AD转换结果

EOC:

;选择通道,启动转换

;-------------------------------------------------------------

;------------------------------------------------------------- CODE

END START

;-------------------------------------------------------------

五、软件系统设计

(1)根据课设内容的要求,画出软件系统框图;

(2)

根据软件系统框图,

分出各功能模块,

并设计各功能模块的控制流程;

1、8254和8259模块

2、中断程序

3、A/D转换部分

(3)根据程序框图设置存贮变量,编写汇编语言的控制程序; (见附录)

六、在调试过程的问题及解决办法

(1)问题:在连接好线路进行调试时,发现只有电压表的数值能够正常在8位数码管上显示,而当K6=1时,数码管上上显示的是三位乱码。

办法:在确认电路没有连错的情况下,对程序进行了修改,再进行测试的时候,秒表能够正常跳动。

(2)问题:当对秒表进行分显示的时候,通过修改线路不能完成这个任务。

办法:在程序AA3的位置增加一段显示分的程序,通过测试后,能成功运行。

七、收获与建议

刚开始接触这个课程设计,觉得自己什么都不懂,之前上的理论课里面讲的一些理论知识也没有好好掌握,觉得自己肯定做不好这个课设。但是,课设来了,还是要硬着头皮去做,开始自己按照电路图搭线,翻书看程序的功能,看各个器件的工作原理。并试着去写一小段汇编程序。

通过本次课程设计,我能更加深刻地掌握8086的编程、0809A/D转换器、8255的功能、中断控制器、模数转换及LED/LCD显示原理,用实践验证了所学理论的正确性,清楚学习过程中的不足,对于平时学的理论知识要及时复习。在课程设计的过程中遇到了不少问题,在自己的努力下和同学的帮助下,都能够得到解决,这个让我体会到了团队的重要性。

附录:

MY8254_A EQU 06C0H MY8254_B EQU 06C2H MY8254_C EQU 06C4H MY8254_MODE EQU 06C6H ;8254控制字寄存器 MY8255_A EQU 0600H MY8255_B EQU 0602H MY8255_C EQU 0604H MY8255_MODE EQU 0606H ;8255控制字寄存器

A8255 EQU 0600H ;8255端口A地址,I|O接口为IOY0 B8255 EQU 0602H ;8255端口B地址,I|O接口为IOY0 C8255 EQU 0604H ;8255端口C地址,I|O接口为IOY0 CON8255 EQU 0606H ;8255控制字寄存器地址,I|O接口为IOY0 ADC0809 EQU 0640H ;0809控制字寄存器,I|O接口为IOY1

SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS

DATA SEGMENT

DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;字形码表 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H NUM DB ? NUM1 DB ? NUM2 DB ? DATA ENDS

CODE SEGMENT ASSUME CS:CODE,SS:SSTACK,DS:DATA

START: MOV AX,DATA MOV DS,AX

;------------------------------------------------------------------------------- ;数字时钟的初始化 ;初始化8255 MOV DX,MY8255_MODE MOV AL,88H ;控制字10001000B:方式0,C口高四位输入 OUT DX,AL MOV DX,0646H ;新加的 OUT DX,AL ;新加的 MOV SI,3000H ;源变址寄存器:用来存放源数据区的偏移地址 MOV AL,00H MOV [SI],AL MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV DI,3000H PUSH DS ;将DS中字数据入栈 MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ7 ;取中断入口地址 MOV SI,003CH ;中断矢量地址 MOV [SI],AX ;填IRQ7的偏移矢量 MOV AX,CS ;段地址 MOV SI,003EH MOV [SI],AX ;填IRQ7的段地址矢量 ;CLI ;清中断允许标志位,CPU将禁止中断 POP DS ;将堆栈中字数据弹出到DS中 ;----------------------------------------------------------------------------- ;初始化主片8259 MOV AL,11H OUT 20H,AL ;ICW1 MOV AL,08H OUT 21H,AL ;ICW2 MOV AL,04H OUT 21H,AL ;ICW3 MOV AL,01H

OUT 21H,AL ;ICW4 MOV AL,6FH OUT 21H,AL ;OCW1 MOV DX,MY8254_MODE ;8254的初始化 MOV AL,27H ;计数器0,方式3(信号为方波) OUT DX,AL MOV DX,MY8254_A MOV AL,10H ;初始化A组方式控制字,D6-D5方式选择,D4A口输出,D3(Pc7~Pc6 I|0控制 0=输出,1=输入) OUT DX,AL MOV DX,MY8254_MODE MOV AL,67H ;计数器1,方式3 OUT DX,AL MOV DX,MY8254_B MOV AL,10H ;初始化B组方式控制字,D6-D5方式选择,D2B组方式(0=方式0,1=方式1),D2B口 I|0控制( 0=输出,1=输入),D0(Pc0~Pc2 I|0控制 0=输出,1=输入) OUT DX,AL ;STI ;置中断允许标志位,CPU将允许中断 P1: MOV DX,C8255 IN AL,DX TEST AL,10000000B ;K7=1 系统运行 JZ P1 TEST AL,01000000B ;K6=1 数字秒表 JZ AD ;K6=0 跳到电压表 MOV AL,00H MOV NUM,AL MOV DX,MY8254_MODE ;8254的初始化 MOV AL,27H ;计数器0,方式3 OUT DX,AL MOV DX,MY8254_A MOV AL,10H OUT DX,AL

MOV DX,MY8254_MODE MOV AL,67H ;计数器1,方式3 OUT DX,AL MOV DX,MY8254_B MOV AL,10H OUT DX,AL JMP AA1 ;跳到秒表

;------------------------------------------------------------------------------ ;电压表显示程序

;------------------------------------------------------------------------------ AD: MOV DX,MY8254_MODE ;8254的初始化 MOV AL,00100000B ;计数器0,方式0 OUT DX,AL MOV DX,ADC0809 OUT DX,AL

EOC: MOV DX,C8255 IN AL,DX TEST AL,00110000B ;PC6=0,PC6清零 JZ EOC ;跳到EOC:ADC0809的EOC信号,用作8259的中断请求信号 MOV DX,ADC0809 IN AL,DX MOV NUM1,AL ;显示程序段 MOV CL,AL AND AL,0F0H SHR AL,4 CMP AL,0AH JB B2 ;小于0AH转到AA2 ADD AL,07H B2: ADD AL,30H ;将低四位转换成ASCII码

B5: MOV AH,01H ;INT 10H

MOV AL,CL AND AL,0FH CMP AL,0AH JB B5 ADD AL,07H ADD AL,30H ;将低四位转换成ASCII码 MOV AH,01H ;INT 10H

MOV AX,0120H ;显示一个空格 INT 10H

MOV AH,00H MOV AL,NUM1 MOV BL,51 DIV BL

PUSH AX

ADD AL,01H

MOV NUM2,AL ;数码管显示程序 MOV AL,0FEH

MOV DX,MY8255_C OUT DX,AL

MOV AL,NUM2 ;显示 MOV BX,OFFSET DTABLE XLAT

MOV DX,MY8255_B OUT DX,AL CALL DELAY POP AX

PUSH AX ADD AL,30H MOV AH,01H INT 10H

MOV AL,2EH;显示一个点 INT 10H

MOV AH,00H

MOV AL,NUM1 MOV BL,51 DIV BL

MOV AL,AH MOV AH,00H

MOV BL,10;显示十分位 MUL BL MOV CL,51 DIV CL

PUSH AX

ADD AL,30H MOV AH,01H INT 10H POP AX MOV AL,AH MOV AH,00H

MOV BL,10;显示百分位 MUL BL MOV CL,51 DIV CL

ADD AL,30H MOV AH,01H INT 10H

MOV AH,01H

MOV AL,56H;显示一个V INT 10H

MOV AX,0120H ;显示一个空格

INT 10H

POP AX

MOV AH,00H CMP AX,0000H JZ BB1

CMP AX,0001H JZ BB2

CMP AX,0002H JZ BB3 CMP AX,0003H JZ BB4 CMP AX,0004H JZ BB5 JMP P1

BB1: MOV MOV BB11: MOV MOV OUT ROL CALL CALL LOOP JMP P1

BB2: MOV MOV BB22: MOV MOV OUT ROR CALL CALL LOOP JMP P1

BX,0101H CX,08H DX,0600H AL,BH DX,AL BH,1 DELAY1 DELAY1 BB11 BX,0C001H CX,08H DX,0600H AL,BH DX,AL BH,1 DELAY1 DELAY1 BB22


基于8086的数字电压表、与秒表的设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:C51 串口通信

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: