目录
1 前言............................................................................................................................ 1
1.1 设计目的.......................................................................................................... 1
1.2设计要求 .......................................................................................................... 1
1.3 设计背景.......................................................................................................... 1
2 设计思想与原理 ....................................................................................................... 2
2.1 设计思想 ......................................................................................................... 2
2.2 设计原理 ........................................................................................................ 2
2.2.1内容 ........................................................................................................ 2
2.2.2要求 ........................................................................................................ 2
2.3 设计环境 ......................................................................................................... 3
2. 4 设计所用设备 ................................................................................................ 3
3 系统硬件设计............................................................................................................ 4
3.1设计所用芯片及功能介绍.............................................................................. 4
3.1.1 8259芯片的内部结构及引脚............................................................. 4
3.1.2 8255芯片的内部结构及引脚............................................................. 5
3.1.3 8254芯片的内部结构及引脚............................................................. 6
3.2 电子钟硬件接线图 ........................................................................................ 7
4 系统软件设计............................................................................................................ 8
4.1软件工作流程图............................................................................................... 8
4.2 必要的程序清单.............................................................................................. 8
5 系统调试及结果...................................................................................................... 15
5.1 调试结果描述 ............................................................................................... 15
5.2 测试结果分析 ............................................................................................... 15
6 总结.......................................................................................................................... 16
参考文献...................................................................................................................... 17
1 前言
1.1 设计目的
通过本次课程设计学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使设计者的设计水平和对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。
掌握8255、8259、8254等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
1.2设计要求
利用8259A中断控制器、8254定时/计数器、8255A接口芯片以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式HH:MM:SS
由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。
1.3 设计背景
微机控制即微型计算机原理控制。是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,这些都离不开微型计算机原理控制。我们组本次设计的题目是简单电子钟程序设计,用到了定时芯片8254,中断控制器8259和可编程并行芯片8255。在编辑1毫秒定时程序时,用到了中断控制器8259。
2 设计思想与原理
2.1 设计思想
本系统设计的电子时钟以8088微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。8254采用计数器0,工作于方式2,使8254的OUT0端输出周期性的负脉冲信号。即每隔20ms,8254的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。 其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送CPU处理。
2.2 设计原理
利用实验台上提供的定时器8254和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的启停及初始值的预置。电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。
基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。
2.2.1内容
利用实验台上提供的定时器8254和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8254中断定时,小键盘控制电子时钟的启停及初始值的预置。
电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时59:59:59超过这个时间时分秒位都清零从00:00:00重新开始。
2.2.2要求
本实验要求设计一个定时显示装置,用六个数码管显示时间,用小键盘控制计时,设置和显示时间。系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值,而且,可以用键盘设置当前时间。
基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。
用开关(模块A5)控制计时和显示:
K1键(清除):显示00-00-00;
K2键(启动):显示XX-XX-XX变化的时间值;
K3键(停止):显示XX-XX-XX不变;
K4键(设置):设置XX-XX-XX时间值,时间值由模块B2开关输入。
2.3 设计环境
PC机一台、windows XP系统、实验箱,导线若干。
2. 4 设计所用设备
8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。
8255并口:用做接口芯片,和小键盘相连。
8259中断控制器:用于产生中断。
LED:六个LED用于显示时:分:秒值。 小键盘:用于控制设置。
3 系统硬件设计
3.1设计所用芯片及功能介绍
3.1.1 8259芯片的内部结构及引脚
中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在MD微机系统中,8259芯片工作于单片方式。8259引脚图如图3.1所示。
图3.1 8259引脚图
各引脚功能如下:
D7-D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0——地址信号;
INT——中断请求信号;
INTA(低电平有效)——中断响应信号;
CAS0-CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;
SP/EN——从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;
IR0-IR7——外部中断请求输入线。要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。
8259中断矢量地址与中断信号之间的关系如表3-1所示:
表3-1 8259中断矢量表
3.1.2 8255芯片的内部结构及引脚
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:
方式2—双向选通输入/输出方式
8255引脚图如图3.2示,
图3.2 8255引脚图
各引脚功能如下:
D7~D0——与CPU侧连接的八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器选择输入信号;
PA7~PA0——A口外设双向数据线;
PB7~PB0——B口外设双向数据线;
PC7~PC0——C口外设双向数据线;
RESET——复位输入信号。
8255端口地址表如表3-2所示:
表3-2 8255端口地址表
3.1.3 8254芯片的内部结构及引脚
8254是Intel公司生产的可编程计时器,具有以下功能:
(1)有3格独立的16位计数器
(2)每个计数器可按二进制或十进制计数;
(3)每个计数器可编程工作于6种不同工作方式;
(4)8254每个计数器允许的最高计数频率为10MHZ;
(5)8254有读回命令,除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;
图3.3是8254芯片的内部结构及引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:
(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率放生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
图3.3 8254芯片引脚图
3.2 电子钟硬件接线图
图3.4 电子钟硬件接线图
4 系统软件设计
4.1软件工作流程图
主程序流程图如图4.1所示,服务程序流程图如图4.2所示。
图 4.1主程序流程图 图4.2 服务程序流程图
4.2 必要的程序清单
电子钟的程序:
control equ 0c003h ;8253控制口
count0 equ 0c000h
count1 equ 0c001h
count2 equ 0c002h
md8255 equ 82h ;8255控制字
pa8255 equ 8000h
ctl8255 equ 8003h
outbit equ 08002h ;位控制口
outseg equ 08004h ;段控制口
icw1 equ 00010011b ;8259,上升沿中断,要写icw4
icw2 equ 00100000b ;中断号为20h
icw4 equ 00000001b ;工作在8086/88方式
ocw1 equ 11111110b ;只响应int0中断
cs8259a equ 0d000h ;8259地址
cs8259b equ 0d001h
data segment
cnt db 0
ledbuf db 6 dup(?) ;显示缓冲
num db 1 dup(?) ;显示的数据
delayt db 1 dup(?)
hour db 0
minute db 0
second db 0
ledmap: ;八段管显示码
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
data ends
code segment
assume cs:code,ds:data
delay proc near ;延时子程序
push ax
push cx
mov al,0
mov cx,ax
loop $
pop cx
pop ax
ret
delay endp
displayled proc near ;数码管显示控制子程序
mov bx,offset ledbuf
mov cl,6 ;共6个八段管
mov ah,00100000b ;从左边开始显示
dloop:
mov dx, outbit
mov al, 0
out dx, al ;关所有八段管
mov al, [bx]
mov dx, outseg
out dx, al
mov dx, outbit
mov al, ah
out dx, al ;显示一位八段管
push ax
mov ah,1
call delay
pop ax
shr ah,1
inc bx
dec cl
jnz dloop
mov dx,outbit
mov al,0
out dx,al ;关所有八段管
ret
displayled endp
ienter proc near ;8253中断服务程序
push ax
push dx
inc second ;秒加1
mov al,second
cmp al,60 ;秒数与60比较
jne exit
mov second,0 ;秒清零
inc minute ;分加1
mov al,minute
cmp al,60 ;分数与60比较
jne exit
mov minute,0 ;分清零
inc hour ;时加1
mov al,hour
cmp al,24 ;时数与24比较
jne exit
mov hour,0 ;时清零
exit:
mov dx,cs8259a
mov al,20h
out dx,al ;结束本次中断
pop dx
pop ax
iret
ienter endp
iinit proc ;初始化8259的命令字和操作命令字
mov dx,cs8259a
mov al,icw1
out dx,al
mov dx,cs8259b
mov al,icw2
out dx,al
mov al,icw4
out dx,al
mov al,ocw1
out dx,al
ret
iinit endp
start:
mov ax,data
mov ds,ax
mov hour,0 ;时、分、秒清零
mov minute,0
mov second,0
cli ;清除中断标志位
mov ax,0
mov ds,ax
mov al,76h ;8253控制字
mov dx,control
out dx,al
mov ax,62500 ;利用8253计数器1分频
mov dx,count1
out dx,al
mov al,ah
out dx,al
mov al,md8255
mov dx,ctl8255
out dx,al
mov bx,4*icw2 ;中断号
mov ax,code
shl ax,4 ;*16
add ax,offset ienter ;中断入口地址(段地址为0)
mov [bx],ax
mov ax,0
inc bx
inc bx
mov [bx],ax ;代码段地址为0
call iinit
mov ax,data
mov ds,ax
mov cnt,0 ;计数值初始为0
mov al,cnt
mov dx,pa8255
out dx,al
sti ;开中断
lp: mov al,hour
mov ah,0
mov cl,10
div cl
mov ch,ah
mov ah,0
mov bx,offset ledmap
add bx,ax
mov al,[bx] ;时的十位转换成显示码
mov ledbuf,al ;显示码存入显示缓冲区
mov bx,offset ledmap
mov al,ch
mov ah,0
add bx,ax
mov al,[bx] ;时的个位转换成显示码
or al,80h
mov ledbuf+1,al ;显示码存入后一位显示缓冲区
mov al,minute
mov ah,0
mov cl,10
div cl
mov ch,ah
mov ah,0
mov bx,offset ledmap
add bx,ax
mov al,[bx] ;分的十位转换成显示码
mov ledbuf+2,al
mov bx,offset ledmap
mov al,ch
mov ah,0
add bx,ax
mov al,[bx] ;分的个位转换成显示码
or al,80h
mov ledbuf+3,al
mov al,second
mov ah,0
mov cl,10
div cl
mov ch,ah
mov ah,0
mov bx,offset ledmap
add bx,ax
mov al,[bx] ;秒的十位转换成显示码
mov ledbuf+4,al
mov bx,offset ledmap
mov al,ch
mov ah,0
add bx,ax
mov al,[bx] ;分的个位转换成显示码
or al,80h
mov ledbuf+5,al
call displayled
jmp lp
code ends
end start
5 系统调试及结果
5.1 调试结果描述
本系统设计实现后进行了为期一周左右的调试。调试包括电路板的调试和汇编程序的调试。下面就系统调试情况作一介绍:
(1)系统对于输入有格式要求,不能输入不正确的时间格式。
(2)系统对于临界值进行了验证。
(3)系统预计各功能的实现。
5.2 测试结果分析
测试结果表明,电子钟系统已能初步实现主要功能,但是由于我的能力有限,开发实践经验不足,系统功能不是十分完善,还存在着许多问题,目前通过测试等发现
系统存在以下几个问题:
(1) 由于试验条件的限制,开机有时候不能自动复位。
(2)对于多次连续输入错误格式的时间值,系统可能出现异常。
(3)由于是教学模拟课题,不能适应实际使用中复杂的需求,只能根据其他一些简单的调查和推测来设定系统的功能和要求,不论是功能和内容都相对简单。尚有不满足要求的地方,一些技术问题也没有克服。
6 总结
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.
经过这次课程设计,使我对8250A有了更深一步的认识。同时使我认识到RS-232C是微型计算机与通信工业中应用最为广泛的一种串行通信接口标准。加深了对芯片接口可编程原理的理解,加深了对课堂上知识的巩固。另外,通过亲手编写汇编程序的过程也增强了程序设计的能力,学到了很多知识。
回顾起课程设计,至今我仍感慨颇多。通过本次课程设计可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。 其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过几次在计算机上的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的指导下,终于迎刃而解。在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
参考文献
[1]马春燕.微机原理与接口技术(基于32位机).北京:电子工业出版社.2007.08
[2]马维华.微机原理与接口技术.北京:科学出版社.2005
[3]马瑞芳,王会燃.微机原理与接口技术要点与解题.西安:西安交通大学出版社.2006
[4]牟琦,聂建萍.微机原理与接口技术.北京:清华大学出版社
[5]沈美明等.IBM-PC汇编语言程序设计.北京:清华大学出版社
[6]彭虎.微机原理与接口技术(第2版)[M].北京:电子工业出版社.2008
[7]张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社
[8]龚尚福.微机原理与接口技术.西安:西安电子科技大学出版社.2009
[9]王玉良.微机原理与接口技术.北京:北京邮电大学出版社.2006
[10]戴梅萼.微型计算机技术及应用[M].北京:清华大学
[11]沈美明.IBM-PC汇编语言程序设计[M].北京:清华大学出版社