77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2021-04-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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

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

一、课程目的

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

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库基于8086的数字电压表、与秒表的设计在线全文阅读。

基于8086的数字电压表、与秒表的设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1203467.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: