微机原理与接口技术课程设计
题
学生姓名: 专 业:__________ 学 号: 系 别:_________ 指导老师: 日 期:
一、课程目的
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的数字电压表、与秒表的设计在线全文阅读。
相关推荐: