基于8086的数字电压表与秒表的设计.docx
- 文档编号:30651434
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:31
- 大小:427.38KB
基于8086的数字电压表与秒表的设计.docx
《基于8086的数字电压表与秒表的设计.docx》由会员分享,可在线阅读,更多相关《基于8086的数字电压表与秒表的设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于8086的数字电压表与秒表的设计
微机原理与接口技术课程设计
题目:
数字电压表和数字秒表的综合设计
******
专业:
__________软件工程
学号:
**********
系别:
_________信息工程系
**************
日期:
2014年12月28日
一、课程目的
1、加深对微机原理与接口技术课程内容的理解,增强综合运用课程知识的能力和编程能力,加深软、硬件应用的综合能力,在微机应用系统软、硬件开发中有初步的能力。
2、把课堂实验中分布学到的知识,在课程设计中综合加以应用,进而加深理解、不断巩固、努力创新。
通过学习查找、运用设计资料,完成工程所必备的基本训练,提高分析问题、解决问题的能力,养成良好的学习习惯、严谨的工作作风。
二、课程设备
微机,微机接口实验箱,示波器,三用表等。
三、课程设计内容及要求
用中断法实现数字电压表和数字秒表的综合设计
8255PC口外接四位数码管和K7、K6两位开关,当k7=1时系统运行,k7=0时系统停止运行;系统运行时分两种情况:
1.当K6=1时,8254作为秒发生器,其OUT作为中断请求信号,秒表时间在数码管显示。
2.当K6=0时,用中断法,将ADC0809通道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值。
ADC0809的CLK脉冲为1MHZ,ADC0809的EOC信号,用作8259中断请求信号。
8254作为秒发生器,它的CLK脉冲为1MHZ,工作方式自行确定,其OUT作为秒中断请求信号。
要有较好的人机对话界面;控制程序的运行。
四、硬件系统设计
因采用了PC机和微机实验箱,硬件电路设计相对比较简单,主要利用微机实验箱上的8255并行口、ADC0809、七段LED数码管单元、8254定时/计数器、电位器等单元电路,就构成了数字电压表和数字秒表,硬件电原理框图1-1所示。
图1-1电路原理框图
(1)根据课设内容的要求,设计完成该任务的所需硬件系统框图;
设计的基本思想和顺序
利用0809采集电压数据,将模拟电压信号数字电压信号。
8255通过I/O控制两位数码管显示 采集电压值。
8254设置采样频率。
8359设置中断。
基本思路:
当到定时时间时产生中断信号,进入中断采集电压数据。
采集的数据转化后保存到内存空间里,返回主程序后在数码管上显示。
(2)根据硬件系统框图,细化成电原理图;
1、并行接口8255A
8255A是一个40引脚的双列直插式并行接口芯片。
8255芯片内部有3个8位的输入输出端口,即A口,B口和C口。
从内部控制角度来讲,可分为两组:
A组和B组;A组控制模块管理A口和C口的高四位,B组控制模块管理B口和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-1ADC0809引脚图
3、定时计时/计数器8254
8254 芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。
是8253的改进型,比8253具有更优良的性能。
与大多数微处理器兼容;技术频率从支流到10MHz;有6种可编程计数器方式;3个独立的16位计数器,二进制或十进制(BCD)计数;任一引脚对地电压-0.5~7V.
3.18254芯片主要由四部分组成:
1.数据总线缓冲器;
2.读写逻辑;
3.3.控制字寄存器;
4.4.计数器;
3.28254的工作方式:
方式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
;-------------------------------------------------------------
A8255EQU0600H;8255端口地址:
PA0~PA7-->LED.D0-D7
B8255EQU0602H;PB0~PB7-->A~G.DP段码口
C8255EQU0604H;PC0~PC3-->X1~X4,PC4.PC5-->EOC
CON8255EQU0606H;PC6-->K6电压表,PC7-->K7开机
A8254EQU0640H;8254端口地址
B8254EQU0642H
C8254EQU0644H
CON8254EQU0646H
ADC0809EQU0680H;ADC0809端口地址
;-------------------------------------------------------------
;-------------------------------------------------------------
CODESEGMENT
ASSUMECS:
CODE
;-------------------------------------------------------------
START:
MOVDX,CON8255;8255控制字:
PA7~PA0显示AD转换值
MOVAL,10001000B;A口.B口,PC0~PC3输出,PC4~PC7输入
OUTDX,AL
;-------------------------------------------------------------
BEGIN:
MOVDX,A8255;L0~L7灯显示01010101
MOVAL,55H
OUTDX,AL
;-------------------------------------------------------------
MOVDX,B8255;LED数码管显示2
MOVAL,5BH
OUTDX,AL
MOVDX,C8255
MOVAL,11110101B
OUTDX,AL
;-------------------------------------------------------------
MOVDX,CON8254;启动秒计数
MOVAL,00100111B
OUTDX,AL
MOVDX,A8254
MOVAL,10H
OUTDX,AL
MOVDX,CON8254
MOVAL,01100111B
OUTDX,AL
MOVDX,B8254
MOVAL,10H
OUTDX,AL
;-------------------------------------------------------------
;-------------------------------------------------------------
ALEST:
MOVDX,ADC0809;选择通道,启动转换
OUTDX,AL
EOC:
MOVDX,C8255;检测EOC状态,判断转换是否结束
INAL,DX
TESTAL,00110000B
JZEOC
MOVDX,ADADC0809;转换结束,取AD转换结果
INAL,DX
;-------------------------------------------------------------
MOVDX,A8255;显示AD转换结果
OUTDX,AL
JMPALEST;继续
;-------------------------------------------------------------
CODEENDS
ENDSTART
;-------------------------------------------------------------
五、软件系统设计
(1)根据课设内容的要求,画出软件系统框图;
(2)根据软件系统框图,分出各功能模块,并设计各功能模块的控制流程;
1、8254和8259模块
2、中断程序
3、A/D转换部分
(3)根据程序框图设置存贮变量,编写汇编语言的控制程序;(见附录)
六、在调试过程的问题及解决办法
(1)问题:
在连接好线路进行调试时,发现只有电压表的数值能够正常在8位数码管上显示,而当K6=1时,数码管上上显示的是三位乱码。
办法:
在确认电路没有连错的情况下,对程序进行了修改,再进行测试的时候,秒表能够正常跳动。
(2)问题:
当对秒表进行分显示的时候,通过修改线路不能完成这个任务。
办法:
在程序AA3的位置增加一段显示分的程序,通过测试后,能成功运行。
七、收获与建议
刚开始接触这个课程设计,觉得自己什么都不懂,之前上的理论课里面讲的一些理论知识也没有好好掌握,觉得自己肯定做不好这个课设。
但是,课设来了,还是要硬着头皮去做,开始自己按照电路图搭线,翻书看程序的功能,看各个器件的工作原理。
并试着去写一小段汇编程序。
通过本次课程设计,我能更加深刻地掌握8086的编程、0809A/D转换器、8255的功能、中断控制器、模数转换及LED/LCD显示原理,用实践验证了所学理论的正确性,清楚学习过程中的不足,对于平时学的理论知识要及时复习。
在课程设计的过程中遇到了不少问题,在自己的努力下和同学的帮助下,都能够得到解决,这个让我体会到了团队的重要性。
附录:
MY8254_AEQU06C0H
MY8254_BEQU06C2H
MY8254_CEQU06C4H
MY8254_MODEEQU06C6H;8254控制字寄存器
MY8255_AEQU0600H
MY8255_BEQU0602H
MY8255_CEQU0604H
MY8255_MODEEQU0606H;8255控制字寄存器
A8255EQU0600H;8255端口A地址,I|O接口为IOY0
B8255EQU0602H;8255端口B地址,I|O接口为IOY0
C8255EQU0604H;8255端口C地址,I|O接口为IOY0
CON8255EQU0606H;8255控制字寄存器地址,I|O接口为IOY0
ADC0809EQU0640H;0809控制字寄存器,I|O接口为IOY1
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
DATASEGMENT
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;字形码表
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
NUMDB?
NUM1DB?
NUM2DB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
SSTACK,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
;-------------------------------------------------------------------------------
;数字时钟的初始化
;初始化8255
MOVDX,MY8255_MODE
MOVAL,88H;控制字10001000B:
方式0,C口高四位输入
OUTDX,AL
MOVDX,0646H;新加的
OUTDX,AL;新加的
MOVSI,3000H;源变址寄存器:
用来存放源数据区的偏移地址
MOVAL,00H
MOV[SI],AL
MOV[SI+1],AL
MOV[SI+2],AL
MOV[SI+3],AL
MOVDI,3000H
PUSHDS;将DS中字数据入栈
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETIRQ7;取中断入口地址
MOVSI,003CH;中断矢量地址
MOV[SI],AX;填IRQ7的偏移矢量
MOVAX,CS;段地址
MOVSI,003EH
MOV[SI],AX;填IRQ7的段地址矢量
;CLI;清中断允许标志位,CPU将禁止中断
POPDS;将堆栈中字数据弹出到DS中
;-----------------------------------------------------------------------------
;初始化主片8259
MOVAL,11H
OUT20H,AL;ICW1
MOVAL,08H
OUT21H,AL;ICW2
MOVAL,04H
OUT21H,AL;ICW3
MOVAL,01H
OUT21H,AL;ICW4
MOVAL,6FH
OUT21H,AL;OCW1
MOVDX,MY8254_MODE;8254的初始化
MOVAL,27H;计数器0,方式3(信号为方波)
OUTDX,AL
MOVDX,MY8254_A
MOVAL,10H;初始化A组方式控制字,D6-D5方式选择,D4A口输出,D3(Pc7~Pc6I|0控制0=输出,1=输入)
OUTDX,AL
MOVDX,MY8254_MODE
MOVAL,67H;计数器1,方式3
OUTDX,AL
MOVDX,MY8254_B
MOVAL,10H;初始化B组方式控制字,D6-D5方式选择,D2B组方式(0=方式0,1=方式1),D2B口I|0控制(0=输出,1=输入),D0(Pc0~Pc2I|0控制0=输出,1=输入)
OUTDX,AL
;STI;置中断允许标志位,CPU将允许中断
P1:
MOVDX,C8255
INAL,DX
TESTAL,10000000B;K7=1系统运行
JZP1
TESTAL,01000000B;K6=1数字秒表
JZAD;K6=0跳到电压表
MOVAL,00H
MOVNUM,AL
MOVDX,MY8254_MODE;8254的初始化
MOVAL,27H;计数器0,方式3
OUTDX,AL
MOVDX,MY8254_A
MOVAL,10H
OUTDX,AL
MOVDX,MY8254_MODE
MOVAL,67H;计数器1,方式3
OUTDX,AL
MOVDX,MY8254_B
MOVAL,10H
OUTDX,AL
JMPAA1;跳到秒表
;------------------------------------------------------------------------------
;电压表显示程序
;------------------------------------------------------------------------------
AD:
MOVDX,MY8254_MODE;8254的初始化
MOVAL,00100000B;计数器0,方式0
OUTDX,AL
MOVDX,ADC0809
OUTDX,AL
EOC:
MOVDX,C8255
INAL,DX
TESTAL,00110000B;PC6=0,PC6清零
JZEOC;跳到EOC:
ADC0809的EOC信号,用作8259的中断请求信号
MOVDX,ADC0809
INAL,DX
MOVNUM1,AL;显示程序段
MOVCL,AL
ANDAL,0F0H
SHRAL,4
CMPAL,0AH
JBB2;小于0AH转到AA2
ADDAL,07H
B2:
ADDAL,30H;将低四位转换成ASCII码
MOVAH,01H
;INT10H
MOVAL,CL
ANDAL,0FH
CMPAL,0AH
JBB5
ADDAL,07H
B5:
ADDAL,30H;将低四位转换成ASCII码
MOVAH,01H
;INT10H
MOVAX,0120H;显示一个空格
INT10H
MOVAH,00H
MOVAL,NUM1
MOVBL,51
DIVBL
PUSHAX
ADDAL,01H
MOVNUM2,AL
;数码管显示程序
MOVAL,0FEH
MOVDX,MY8255_C
OUTDX,AL
MOVAL,NUM2;显示
MOVBX,OFFSETDTABLE
XLAT
MOVDX,MY8255_B
OUTDX,AL
CALLDELAY
POPAX
PUSHAX
ADDAL,30H
MOVAH,01H
INT10H
MOVAL,2EH;显示一个点
INT10H
MOVAH,00H
MOVAL,NUM1
MOVBL,51
DIVBL
MOVAL,AH
MOVAH,00H
MOVBL,10;显示十分位
MULBL
MOVCL,51
DIVCL
PUSHAX
ADDAL,30H
MOVAH,01H
INT10H
POPAX
MOVAL,AH
MOVAH,00H
MOVBL,10;显示百分位
MULBL
MOVCL,51
DIVCL
ADDAL,30H
MOVAH,01H
INT10H
MOVAH,01H
MOVAL,56H;显示一个V
INT10H
MOVAX,0120H;显示一个空格
INT10H
POPAX
MOVAH,00H
CMPAX,0000H
JZBB1
CMPAX,0001H
JZBB2
CMPAX,0002H
JZBB3
CMPAX,0003H
JZBB4
CMPAX,0004H
JZBB5
JMPP1
BB1:
MOVBX,0101H
MOVCX,08H
BB11:
MOVDX,0600H
MOVAL,BH
OUTDX,AL
ROLBH,1
CALLDELAY1
CALLDELAY1
LOOPBB11
JMPP1
BB2:
MOVBX,0C001H
MOVCX,08H
BB22:
MOVDX,0600H
MOVAL,BH
OUTDX,AL
RORBH,1
CALLDELAY1
CALLDELAY1
LOOPBB22
JMPP1
BB3:
MOVBX,0101H
MOVCX,08H
BB33:
MOVDX,0600H
MOVAL,BH
OUTDX,AL
ROLBH,1
ADDBH,1
CALLDELAY1
CALLDELAY1
LOOPBB33
JMPP1
BB4:
MOVBX,0FF01H
MOVCX,09H
BB44:
MOVDX,0600H
MOVAL,BH
OUTDX,AL
RORBH,1
SUBBH,80H
CALLDELAY1
CALLDELAY1
LOOPBB44
JMPP1
JP1:
JMPP1
BB5:
MOVBX,000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 8086 数字 电压表 秒表 设计