微机接口课程 设计报告
课题名称 班 级 学 号 学生姓名
指导教师:
韩 雁
数字钟实验
2011 年 1 月 13 日
摘要
数字钟实验的目的是熟悉8255A、8253、8259等I/O接口的编程技术,掌握键盘扫描和LED动态显示的工作原理。此实验是制作一个时间显示系统。能实现C键清除,G键启动,D键停止,E键终止程序及P键设置初始值等基本功能。
关键词:数字钟、LED、时间显示系统
Abstract
The purpose of this digital clock experiment is having intimate knowledge of the programming technology of the I/O interface of the 8255A、8253、8259 and so on.It could accomplish such function as clear of the “c” key, start of the “g” key , stop of the “d” key, end of the “e” key and set up the initial value of the “p” key.
Keywords: the digital clock , LED , the system of the time indication
目录
第一章 设计要求.............................................................. 1 第二章 设计所用芯片 .......................................................... 1 第三章 设计思想.............................................................. 1
3.1 设计思想 ............................................................................................................................ 1 3.2 设计原理 ............................................................................................................................ 2 第四章 设计所用芯片结构 ...................................................... 2
4.1 8255A芯片的内部结构及引脚 ......................................................................................... 2 4.2 8253芯片的内部结构及引脚 ............................................................................................ 3
4.2.1 8253功能用途 ......................................................................................................... 3 4.2.2 8253的工作方式 ..................................................................................................... 4 4.2.3 8253引脚功能 ......................................................................................................... 4 4.2.4 8253端口地址 ......................................................................................................... 4 4.3 8259芯片的内部结构及引脚 ............................................................................................ 5 第五章 系统各个模块设计 ...................................................... 6
5.1 系统总体设计 .................................................................................................................... 6 5.2 定时模块 ............................................................................................................................ 6 5.3 中断处理模块 .................................................................................................................... 7 5.4 显示模块和小键盘模块 .................................................................................................... 8 第六章 系统框图............................................................. 10
参考流程 ................................................................................................................................. 10 致谢 ....................................................................... 11 参考文献 ................................................................... 12 附录 ....................................................................... 13
附录一:总体原理图 ............................................................................................................. 13 附录二:源代码 ..................................................................................................................... 14
第一章 设计要求
利用试验平台提供的硬件资源设计一个数字钟。该数字钟以分、秒的形式实时显示当前时间,且具有校表功能,利用小键盘与标准时间校准。
掌握8255A、8253、8259芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8088微处理器完成了数字钟的小系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程。
第二章 设计所用芯片
8255A:可编程通用并行接口芯片,可作为单片机与各种外部设备连接的接口电路。
8253定时器:用于产生秒脉冲,其输出信号可作为中断请求信号送IRQ2。 8259中断控制器:用于产生中断 LED:四个LED用于显示分:秒值。 小键盘:用于控制设置。
第三章 设计思想
3.1 设计思想
本系统设计的数字钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255A做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次后,CPU即处理,使液晶显示器上的时间发生变化。
其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电平触发方
式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送CPU处理。
3.2 设计原理
利用定时器8253和8259以及键盘和数码显示电路,设计一个数字钟,由8253中断定时,小键盘控制数字钟的启停及初始值的设置。
数字钟的显示格式MM:SS由左到右分别为分、秒,最大计时为59:59起过这个时间分秒位都清零从00:00重新开始。
设计一个定时显示装置,用4个数码管显示时间,用小键盘控制计时,设置和显示时间,系统一运行就从00分00秒开始计时,并在数码管上显示分、秒当前值,而且可以用小键盘设置当前时间。
基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分寄存器的内容加一;4个数码管动态显示分、秒的当前值。
C键:清零,显示初值;
G键:启动,显示XXXX变化的时间; D键:停止,显示XXXX不变;
E键:终止程序,熄灭数码管,程序退出; P键:设置初始值,设置初值
第四章 设计所用芯片结构
4.1 8255A芯片的内部结构及引脚
8255A是Intel公司研制的通用可编程并行接口芯片。
键盘部分提供一种扫描的工作方式,可以和具有16个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖。
显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号。
CS:片选信号,低电平有效,8255A才能和CPU交换信息。 RD:读控制信号,低电平胡效,8255A向CPU传送数据或状态信息。 WR:写控制信号,低电平有效,8255A接收CPU写入的数据或控制字。
RESET:复位信号,高电平有效,所有内部寄存器的内容都被清除,端口PA、PB、PC都被置成输入方式。
A1、A0:端口选择线,8255A中内部共占用4个端口地址,它们是PA、PB、PC3个数据端口,以及1个控制寄存器端口,这4个口用A1、A0的状态组合来进行选择。通常将这两个引脚接到地址总线的最低位上,使8255A占用的4个端口地址是连续的。
4.2 8253芯片的内部结构及引脚
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。 4.2.1 8253功能用途
8253的功能用途是: (1)延时中断 (2)可编程频率发生器 (3)事件计数器 (4)二进倍频器 (5)实时时钟 (6)数字单稳
(7)复杂的电机控制器 4.2.2 8253的工作方式
8253有六种工作方式: (1)方式0:计数结束中断 (2)方式1:可编程频率发生器 (3)方式2:频率发生器 (4)方式3:方波频率发生器 (5)方式4:软件触发的选通信号 (6)方式5:硬件触发的选通信号 4.2.3 8253引脚功能
8253引脚图如图所示,各引脚功能如下。 D7~D0——八条双向数据线; WR(低电平有效)——写输入信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形; GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。 4.2.4 8253端口地址
8253端口地址表
4.3 8259芯片的内部结构及引脚
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在MD微机系统中,8259芯片工作于单片方式。
8259引脚图如图3.3,各引脚功能如下。 D7~D0——八条双向数据线; WR(低电平有效)——写输入信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; A0——地址信号; INT——中断请求信号;
INTA(低电平有效)——中断响应信号;
CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;
SP/EN——从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;
IR0~IR7——外部中断请求输入线。要求输入的中断请求信号是由低电平到
高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。
8259中断矢量地址与中断信号之间的关系如表所示:
第五章 系统各个模块设计
5.1 系统总体设计
本系统设计的数字钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255A做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。
5.2 定时模块
定时模块是为8259提供中断请求信号的。由一片8253实现,选用定时器0#,工作在方式3,由于时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。
定时模块原理图
5.3 中断处理模块
中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。
中断模块原理图
5.4 显示模块和小键盘模块
显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。硬件上由六个LED构成,软件上由扫描显示的方法实现。
小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255A互连,将小键值由8255A送入主控模块。软件上使用行扫描法获得键值并送回主控模块。本课题只考虑去抖动。执行一个约10ms的延时程序后再扫描键盘,若F0=1表示真正有键按下,从而消除了抖动影响。
显示模块原理图
键盘部分原理图:
第六章 系统框图
参考流程
致谢
通过本次课程设计,我对利用微机原理课程所学的知识设计电子表的基本过程的设计方法、步骤、思路、有一定的了解与认识。它相当于实际工业设计的模拟。在课程设计过程中,我先是收集、调查有关资料,然后进入草案阶段。设计方案确定后,又在老师指导下进行扩初详细设计,并分别设计了相应的模块;将这些模块组合起来,便形成了一个完整的数字钟的设计。
这门课周老师上的特别好,而且对我们要求很严,这样才是一位好的老师,因为对我们比较负责。我们才能真正的学到东西。在这里要感谢周老师,是她教会我们如何去学习,上了大学以后老师都不怎么管了,很多同学根本就不学习了,整天抄作业。这样下去到了毕业那天都会后悔的。
通过学期末的课程设计对自己的帮助很大,感觉自己就是一位小的工程师一样,能设计东西出来了,很有成就感。短短的两周课程设计就使自己学会了一种思想,通过这为期两个多月的实验课程的实践体会我收获了不少,在刚开始做实验时我真的一点都摸不着头绪,第一次实验给我的启发也比较深,使我明白了预习的重要性,做好预习在实验室里就会很轻松,如果没有预习的话在实验课上就会遇到很多问题的,可能还不能明白。但通过这段时间的学习和实验课中也充分暴露出我对这门课的学习和掌握情况不是太好!每次实验都不能进行顺利的写出和分析程序的原因之所在。用一句话讲:不是自己学不会而是自己下的功夫不到吧!针对以上这些情况,在这段时间我一定加倍努力把微机原理学好,不仅仅是为了考试,更重要的是为将来的工作增加自己的竞争力。
俗话说:“难者不会,会者不难。”其实学好一门课并不难,关键看自己有没有理解,如果理解的话很多问题都迎刃而解了,当然理解也要下工夫才行。学习这门课更需要理解,如果对这门课理解学起来会很轻松,如果没有理解的话,那是寸步难行啊,我相信自己最终对这门课会理解的!
经过这次成功的设计,我更加深刻的理解了微机原理的相关知识。对一些常用芯片有了更深一步的认识,并且能够很好的使用它们。应该说,这次课程设计达到了目的。
参考文献
1. 2. 3. 4. 5.
韩雁.《现代微机原理与接口技术》.北京:电子工业出版社,2010.8
杨立新.《微型计算机原理和应用》.北京:科学技术文献出版社,1986.11 眭碧霞.《微型计算机原理与组成》.人民邮电出版社,2003.8 李大友.《微型计算机原理》.北京:清华大学出版社,1998.7
李顺增,吴国东,赵河明等.《微机原理及接口技术》.北京:机械工业出版社,2006
6. 周明德.《微型计算机系统原理及应用》.北京:清华大学出版社,2002
附录
附录一:总体原理图
AD0
AD7
A0A7
附录二:源代码
inttype equ 08h p8253ctrl equ 43h p8253cto equ 40h cnto equ 11930 .model small .data
buff db 0,0,0,0 bit db 1 k db 0 flag db 0
dseg db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;共阳段码 mess db 0dh,0ah,"this is A 8259 inTERUPT$" ASCTAB db "0123456789cgdepr" buf db 32 dup(0) count db 0 time db 0 .code .startup
mov al,36h
mov dx,p8253ctrl out dx,al mov ax,cnto
mov dx,p8253cto out dx,al mov al,ah out dx,al
mov dx,0c803h ;写方式字,A口工作方式口输出 mov al,10000001b ;PB口为输出(行),PC口为工作于输入 out dx,al
mov al,inttype mov ah,35h int 21h push es push bx
mov dx,offset intp ;把用户定义的8号中断写入 mov cx,seg intp push ds mov ds,cx
mov al,inttype mov ah,25h int 21h pop ds in al,21h
and al,11111110b out 21h,al sti
ab: call key
cmp k,"r" jnz abg cli pop dx pop ds
mov al,inttype mov ah,25h int 21h
.exit 0 abg:
cmp k,"g" jnz abd
or flag ,00000101b jmp ab abd:
cmp k,"d" jnz abc
and flag ,00000010b jmp ab abc:
cmp k,"c" jnz abp
and flag,00000000b mov buff,0 mov buff+1,0 mov buff+2,0 mov buff+3,0 jmp ab abp:
cmp k,"p" jnz ab
and flag,00000000b mov buff,0 mov buff+1,0 mov buff+2,0
;按R键终止程序 ;按g键开始 ;按D键停止 ;按C键清0 ;按p键初值
mov buff+3,0
aa1:
call key cmp k,"0" jz a1
cmp k,"1" jz a1
cmp k,"2" jz a1 jnz aa1 a1:
sub k,30h mov al,k mov buff,al
aa2:
call key cmp buff,2 jnz a2 cmp k,"0" jz a2
cmp k,"1" jz a2
cmp k,"2" jz a2
cmp k,"3" jz a2
cmp k,"4" jz a2 jnz aa2 a2: sub k,30h mov al,k
mov buff+1,al
aa3:
call key cmp buff,2 jnz a31
cmp buff+1,4 jnz a31 cmp k,"0" jz a3 jnz aa3
a31:
cmp k,"0" jz a3
cmp k,"1" jz a3
cmp k,"2" jz a3
cmp k,"3" jz a3
cmp k,"4" jz a3
cmp k,"5" jz a3
jnz aa3
a3: sub k,30h mov al,k
mov buff+2,al
aa4:
call key
cmp buff,2 jnz a4
cmp buff+1,4 jnz a4
cmp k,"0" jz a4
jnz aa4 a4: sub k,30h mov al,k
mov buff+3,al jmp ab
intp:
push ax push bx push cx push dx push si
push di
test flag,1
jz iexit
Inc time cmp time,10 jnz iexit 17
inc buff+3 mov time,0 cmp buff+3,10 jnz iexit
mov buff+3,0 inc buff+2 cmp buff+2,6 jnz iexit
mov buff+2,0 inc buff+1 cmp buff+1,10 jnz iexit
mov buff+1 ,0 inc buff cmp buff,6 jnz iexit
mov buff ,0 iexit:
call display mov al,20h out 20h,al pop di pop si pop dx pop cx pop bx pop ax iret
display:
lea bx,dseg lea si,buff agi:
mov al,[si] xlat mov dx,0c800h out dx,al
mov dx,0c801h mov al,bit out dx,al mov di,10 mov cx,6000h delay:
loop delay ;BX指向段表首址 ;Si指向缓冲器首址 ;取当前所要显示的内容 ;将显示的内容转化为段码 Dx指向段码口PA,输出段码,经反向驱动变大DX指向位码口PB,输出位码,1有效 18 ; ; ;延时
jnz delay inc si shl bit,1 cmp bit,10h jnz agi mov bit,1 mov al,0 out dx,al ret
key:
mov dx,0c801h mov al,0 out dx,al inc dx ab11:
in al,dx and al,0fh cmp al,0fh jz ab11
mov cx,8000h delay12:
loop delay12 mov bh,0 mov bl,0 mov cx,4 mov ah,0feh again: mov al,ah mov dx,0c801h out dx,al inc dx in al,dx and al,0fh cmp al,0fh jnz ab1
add bh,4 rol ah,1 loop again jmp key ab1:
mov cx,4 ab3:
shr al,1 jc ab2 ;使PB口的行线为全0电平 ;判断是否全为1,DX指向PC口 ;读列线,判断是否有键按下 ;高4位清零,接低4位 ;全1无键按下,继续等待按键 ;延时,去抖动 ;bh为首行号 ;bl为列号 ;判别行数CX,扫描4行 ;PB口逐行输出为0,判断该行是否有键按下 ;无键按下,则首行号加8 0电平左环移1位,判别所有行都判别完没?19 ;输出码
ab2:
inc bl loop ab3 ab4:
add bh,bl mov al,bh
lea bx,ASCTAB xlat
mov ah,2 mov dl,al mov k,al int 21h
push dx mov dx,0c801h mov al,0 out dx,al inc dx ab5:
in al,dx and al,0fh cmp al,0fh jnz ab5
mov cx,8000h delay11:
loop delay11 pop dx
ret
end
;是否释放 ;延时抖动20
微机接口课程 设计报告
课题名称 班 级 学 号 学生姓名
指导教师:
韩 雁
数字钟实验
2011 年 1 月 13 日
摘要
数字钟实验的目的是熟悉8255A、8253、8259等I/O接口的编程技术,掌握键盘扫描和LED动态显示的工作原理。此实验是制作一个时间显示系统。能实现C键清除,G键启动,D键停止,E键终止程序及P键设置初始值等基本功能。
关键词:数字钟、LED、时间显示系统
Abstract
The purpose of this digital clock experiment is having intimate knowledge of the programming technology of the I/O interface of the 8255A、8253、8259 and so on.It could accomplish such function as clear of the “c” key, start of the “g” key , stop of the “d” key, end of the “e” key and set up the initial value of the “p” key.
Keywords: the digital clock , LED , the system of the time indication
目录
第一章 设计要求.............................................................. 1 第二章 设计所用芯片 .......................................................... 1 第三章 设计思想.............................................................. 1
3.1 设计思想 ............................................................................................................................ 1 3.2 设计原理 ............................................................................................................................ 2 第四章 设计所用芯片结构 ...................................................... 2
4.1 8255A芯片的内部结构及引脚 ......................................................................................... 2 4.2 8253芯片的内部结构及引脚 ............................................................................................ 3
4.2.1 8253功能用途 ......................................................................................................... 3 4.2.2 8253的工作方式 ..................................................................................................... 4 4.2.3 8253引脚功能 ......................................................................................................... 4 4.2.4 8253端口地址 ......................................................................................................... 4 4.3 8259芯片的内部结构及引脚 ............................................................................................ 5 第五章 系统各个模块设计 ...................................................... 6
5.1 系统总体设计 .................................................................................................................... 6 5.2 定时模块 ............................................................................................................................ 6 5.3 中断处理模块 .................................................................................................................... 7 5.4 显示模块和小键盘模块 .................................................................................................... 8 第六章 系统框图............................................................. 10
参考流程 ................................................................................................................................. 10 致谢 ....................................................................... 11 参考文献 ................................................................... 12 附录 ....................................................................... 13
附录一:总体原理图 ............................................................................................................. 13 附录二:源代码 ..................................................................................................................... 14
第一章 设计要求
利用试验平台提供的硬件资源设计一个数字钟。该数字钟以分、秒的形式实时显示当前时间,且具有校表功能,利用小键盘与标准时间校准。
掌握8255A、8253、8259芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8088微处理器完成了数字钟的小系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程。
第二章 设计所用芯片
8255A:可编程通用并行接口芯片,可作为单片机与各种外部设备连接的接口电路。
8253定时器:用于产生秒脉冲,其输出信号可作为中断请求信号送IRQ2。 8259中断控制器:用于产生中断 LED:四个LED用于显示分:秒值。 小键盘:用于控制设置。
第三章 设计思想
3.1 设计思想
本系统设计的数字钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255A做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次后,CPU即处理,使液晶显示器上的时间发生变化。
其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电平触发方
式还是上升沿触发方式,是单片8259还是多片8259。8259接收到信号后,产生中断信号送CPU处理。
3.2 设计原理
利用定时器8253和8259以及键盘和数码显示电路,设计一个数字钟,由8253中断定时,小键盘控制数字钟的启停及初始值的设置。
数字钟的显示格式MM:SS由左到右分别为分、秒,最大计时为59:59起过这个时间分秒位都清零从00:00重新开始。
设计一个定时显示装置,用4个数码管显示时间,用小键盘控制计时,设置和显示时间,系统一运行就从00分00秒开始计时,并在数码管上显示分、秒当前值,而且可以用小键盘设置当前时间。
基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分寄存器的内容加一;4个数码管动态显示分、秒的当前值。
C键:清零,显示初值;
G键:启动,显示XXXX变化的时间; D键:停止,显示XXXX不变;
E键:终止程序,熄灭数码管,程序退出; P键:设置初始值,设置初值
第四章 设计所用芯片结构
4.1 8255A芯片的内部结构及引脚
8255A是Intel公司研制的通用可编程并行接口芯片。
键盘部分提供一种扫描的工作方式,可以和具有16个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖。
显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号。
CS:片选信号,低电平有效,8255A才能和CPU交换信息。 RD:读控制信号,低电平胡效,8255A向CPU传送数据或状态信息。 WR:写控制信号,低电平有效,8255A接收CPU写入的数据或控制字。
RESET:复位信号,高电平有效,所有内部寄存器的内容都被清除,端口PA、PB、PC都被置成输入方式。
A1、A0:端口选择线,8255A中内部共占用4个端口地址,它们是PA、PB、PC3个数据端口,以及1个控制寄存器端口,这4个口用A1、A0的状态组合来进行选择。通常将这两个引脚接到地址总线的最低位上,使8255A占用的4个端口地址是连续的。
4.2 8253芯片的内部结构及引脚
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。 4.2.1 8253功能用途
8253的功能用途是: (1)延时中断 (2)可编程频率发生器 (3)事件计数器 (4)二进倍频器 (5)实时时钟 (6)数字单稳
(7)复杂的电机控制器 4.2.2 8253的工作方式
8253有六种工作方式: (1)方式0:计数结束中断 (2)方式1:可编程频率发生器 (3)方式2:频率发生器 (4)方式3:方波频率发生器 (5)方式4:软件触发的选通信号 (6)方式5:硬件触发的选通信号 4.2.3 8253引脚功能
8253引脚图如图所示,各引脚功能如下。 D7~D0——八条双向数据线; WR(低电平有效)——写输入信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形; GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。 4.2.4 8253端口地址
8253端口地址表
4.3 8259芯片的内部结构及引脚
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。在MD微机系统中,8259芯片工作于单片方式。
8259引脚图如图3.3,各引脚功能如下。 D7~D0——八条双向数据线; WR(低电平有效)——写输入信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; A0——地址信号; INT——中断请求信号;
INTA(低电平有效)——中断响应信号;
CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;
SP/EN——从编程/允许级联。在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。在非缓冲方式中,作为输入信号用于表示主片还是从片;
IR0~IR7——外部中断请求输入线。要求输入的中断请求信号是由低电平到
高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。
8259中断矢量地址与中断信号之间的关系如表所示:
第五章 系统各个模块设计
5.1 系统总体设计
本系统设计的数字钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255A做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。
5.2 定时模块
定时模块是为8259提供中断请求信号的。由一片8253实现,选用定时器0#,工作在方式3,由于时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。
定时模块原理图
5.3 中断处理模块
中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。
中断模块原理图
5.4 显示模块和小键盘模块
显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。硬件上由六个LED构成,软件上由扫描显示的方法实现。
小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255A互连,将小键值由8255A送入主控模块。软件上使用行扫描法获得键值并送回主控模块。本课题只考虑去抖动。执行一个约10ms的延时程序后再扫描键盘,若F0=1表示真正有键按下,从而消除了抖动影响。
显示模块原理图
键盘部分原理图:
第六章 系统框图
参考流程
致谢
通过本次课程设计,我对利用微机原理课程所学的知识设计电子表的基本过程的设计方法、步骤、思路、有一定的了解与认识。它相当于实际工业设计的模拟。在课程设计过程中,我先是收集、调查有关资料,然后进入草案阶段。设计方案确定后,又在老师指导下进行扩初详细设计,并分别设计了相应的模块;将这些模块组合起来,便形成了一个完整的数字钟的设计。
这门课周老师上的特别好,而且对我们要求很严,这样才是一位好的老师,因为对我们比较负责。我们才能真正的学到东西。在这里要感谢周老师,是她教会我们如何去学习,上了大学以后老师都不怎么管了,很多同学根本就不学习了,整天抄作业。这样下去到了毕业那天都会后悔的。
通过学期末的课程设计对自己的帮助很大,感觉自己就是一位小的工程师一样,能设计东西出来了,很有成就感。短短的两周课程设计就使自己学会了一种思想,通过这为期两个多月的实验课程的实践体会我收获了不少,在刚开始做实验时我真的一点都摸不着头绪,第一次实验给我的启发也比较深,使我明白了预习的重要性,做好预习在实验室里就会很轻松,如果没有预习的话在实验课上就会遇到很多问题的,可能还不能明白。但通过这段时间的学习和实验课中也充分暴露出我对这门课的学习和掌握情况不是太好!每次实验都不能进行顺利的写出和分析程序的原因之所在。用一句话讲:不是自己学不会而是自己下的功夫不到吧!针对以上这些情况,在这段时间我一定加倍努力把微机原理学好,不仅仅是为了考试,更重要的是为将来的工作增加自己的竞争力。
俗话说:“难者不会,会者不难。”其实学好一门课并不难,关键看自己有没有理解,如果理解的话很多问题都迎刃而解了,当然理解也要下工夫才行。学习这门课更需要理解,如果对这门课理解学起来会很轻松,如果没有理解的话,那是寸步难行啊,我相信自己最终对这门课会理解的!
经过这次成功的设计,我更加深刻的理解了微机原理的相关知识。对一些常用芯片有了更深一步的认识,并且能够很好的使用它们。应该说,这次课程设计达到了目的。
参考文献
1. 2. 3. 4. 5.
韩雁.《现代微机原理与接口技术》.北京:电子工业出版社,2010.8
杨立新.《微型计算机原理和应用》.北京:科学技术文献出版社,1986.11 眭碧霞.《微型计算机原理与组成》.人民邮电出版社,2003.8 李大友.《微型计算机原理》.北京:清华大学出版社,1998.7
李顺增,吴国东,赵河明等.《微机原理及接口技术》.北京:机械工业出版社,2006
6. 周明德.《微型计算机系统原理及应用》.北京:清华大学出版社,2002
附录
附录一:总体原理图
AD0
AD7
A0A7
附录二:源代码
inttype equ 08h p8253ctrl equ 43h p8253cto equ 40h cnto equ 11930 .model small .data
buff db 0,0,0,0 bit db 1 k db 0 flag db 0
dseg db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;共阳段码 mess db 0dh,0ah,"this is A 8259 inTERUPT$" ASCTAB db "0123456789cgdepr" buf db 32 dup(0) count db 0 time db 0 .code .startup
mov al,36h
mov dx,p8253ctrl out dx,al mov ax,cnto
mov dx,p8253cto out dx,al mov al,ah out dx,al
mov dx,0c803h ;写方式字,A口工作方式口输出 mov al,10000001b ;PB口为输出(行),PC口为工作于输入 out dx,al
mov al,inttype mov ah,35h int 21h push es push bx
mov dx,offset intp ;把用户定义的8号中断写入 mov cx,seg intp push ds mov ds,cx
mov al,inttype mov ah,25h int 21h pop ds in al,21h
and al,11111110b out 21h,al sti
ab: call key
cmp k,"r" jnz abg cli pop dx pop ds
mov al,inttype mov ah,25h int 21h
.exit 0 abg:
cmp k,"g" jnz abd
or flag ,00000101b jmp ab abd:
cmp k,"d" jnz abc
and flag ,00000010b jmp ab abc:
cmp k,"c" jnz abp
and flag,00000000b mov buff,0 mov buff+1,0 mov buff+2,0 mov buff+3,0 jmp ab abp:
cmp k,"p" jnz ab
and flag,00000000b mov buff,0 mov buff+1,0 mov buff+2,0
;按R键终止程序 ;按g键开始 ;按D键停止 ;按C键清0 ;按p键初值
mov buff+3,0
aa1:
call key cmp k,"0" jz a1
cmp k,"1" jz a1
cmp k,"2" jz a1 jnz aa1 a1:
sub k,30h mov al,k mov buff,al
aa2:
call key cmp buff,2 jnz a2 cmp k,"0" jz a2
cmp k,"1" jz a2
cmp k,"2" jz a2
cmp k,"3" jz a2
cmp k,"4" jz a2 jnz aa2 a2: sub k,30h mov al,k
mov buff+1,al
aa3:
call key cmp buff,2 jnz a31
cmp buff+1,4 jnz a31 cmp k,"0" jz a3 jnz aa3
a31:
cmp k,"0" jz a3
cmp k,"1" jz a3
cmp k,"2" jz a3
cmp k,"3" jz a3
cmp k,"4" jz a3
cmp k,"5" jz a3
jnz aa3
a3: sub k,30h mov al,k
mov buff+2,al
aa4:
call key
cmp buff,2 jnz a4
cmp buff+1,4 jnz a4
cmp k,"0" jz a4
jnz aa4 a4: sub k,30h mov al,k
mov buff+3,al jmp ab
intp:
push ax push bx push cx push dx push si
push di
test flag,1
jz iexit
Inc time cmp time,10 jnz iexit 17
inc buff+3 mov time,0 cmp buff+3,10 jnz iexit
mov buff+3,0 inc buff+2 cmp buff+2,6 jnz iexit
mov buff+2,0 inc buff+1 cmp buff+1,10 jnz iexit
mov buff+1 ,0 inc buff cmp buff,6 jnz iexit
mov buff ,0 iexit:
call display mov al,20h out 20h,al pop di pop si pop dx pop cx pop bx pop ax iret
display:
lea bx,dseg lea si,buff agi:
mov al,[si] xlat mov dx,0c800h out dx,al
mov dx,0c801h mov al,bit out dx,al mov di,10 mov cx,6000h delay:
loop delay ;BX指向段表首址 ;Si指向缓冲器首址 ;取当前所要显示的内容 ;将显示的内容转化为段码 Dx指向段码口PA,输出段码,经反向驱动变大DX指向位码口PB,输出位码,1有效 18 ; ; ;延时
jnz delay inc si shl bit,1 cmp bit,10h jnz agi mov bit,1 mov al,0 out dx,al ret
key:
mov dx,0c801h mov al,0 out dx,al inc dx ab11:
in al,dx and al,0fh cmp al,0fh jz ab11
mov cx,8000h delay12:
loop delay12 mov bh,0 mov bl,0 mov cx,4 mov ah,0feh again: mov al,ah mov dx,0c801h out dx,al inc dx in al,dx and al,0fh cmp al,0fh jnz ab1
add bh,4 rol ah,1 loop again jmp key ab1:
mov cx,4 ab3:
shr al,1 jc ab2 ;使PB口的行线为全0电平 ;判断是否全为1,DX指向PC口 ;读列线,判断是否有键按下 ;高4位清零,接低4位 ;全1无键按下,继续等待按键 ;延时,去抖动 ;bh为首行号 ;bl为列号 ;判别行数CX,扫描4行 ;PB口逐行输出为0,判断该行是否有键按下 ;无键按下,则首行号加8 0电平左环移1位,判别所有行都判别完没?19 ;输出码
ab2:
inc bl loop ab3 ab4:
add bh,bl mov al,bh
lea bx,ASCTAB xlat
mov ah,2 mov dl,al mov k,al int 21h
push dx mov dx,0c801h mov al,0 out dx,al inc dx ab5:
in al,dx and al,0fh cmp al,0fh jnz ab5
mov cx,8000h delay11:
loop delay11 pop dx
ret
end
;是否释放 ;延时抖动20