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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微机原理与接口技术课程设计报告题目:倒计时学院专业计算机科学与技术班级学号学生姓名指导教师课程成绩完成日期2011年6月23日目录一.设计功能........................................................3二.设计原理及原理图.........................................31.系统总设计原理............................................32.硬件框架原理图............................................33.硬件介绍........................................................44.功能电路........................................................7三.程序模块及流程图.........................................81.8255A初始化.................................................82.显示程序模块................................................83.延时程序模块................................................94.控制程序模块................................................95.LED灯点亮程序模块....................................10四.源程序.........................................................11五.实验结果......................................................15六.总结.............................................................16附录1:系统硬件框架.........................................17附录2:系统总程序流程图.................................18附录3:8086/88计算机主板图............................19题目:倒计时一.设计功能本次课程设计我们在TD-PIT+实验系统和PC机平台上利用并行接口8255A、键盘及数码管显示单元、开关及LED显示单元、键盘按键和电脑显示屏设计成一个倒计时器。具体功能包括:1.用2位8段共阴数码管显示倒计时时间;2.使用开关K0实现暂停/启动功能,开关K1实现倒计时复位功能;3.倒计时为0时8盏LED灯实现跑马灯功能;4.利用数字键输入倒计时初始数值,按键“r”实现重新启动倒计时器,按键“e”实现退出程序进入DOS环境下,并对其他按键进行屏蔽;5.屏幕显示相应的提示信息,包括提示用户输入数据、倒计时结束、倒计时结束后用户进行的操作;6.可以任意设定倒计时的初始时间,每隔1秒钟计时器减1,直到为0;7.在倒计时过程中可通过开关K1实现退出当前的倒计时并开始新一轮的倒计时。二.设计原理及原理图1.系统总设计原理我们选择并行接口8255A芯片,在程序中使用延时语句来输出秒脉冲,并在其中调用显示函数不断刷新数码管进行数值显示。使用8255A作为输入/输出接口,其中A端口为输出口,连接LED显示单元的D8~D15;B端口为输出口,连接数码管的A~Dp,进行数码管的段锁存;C端口高4位为输出口,连接数码管的X4~X1,进行位锁存,低4位为输入端,连接开关的K3~K0。采用在软件中控制循环程序的方式来控制倒计时的复位和暂停功能,并通过程序来显示语句和读入用户的键盘输入,以进行相应操作。此方案性价比高,但由于使用了软件延时,当芯片损耗以及芯片在工作时间过长后会出现倒计时不够准确。2.硬件框架原理图图1系统设计硬件框架3.硬件介绍3.1并行接口8255A(1)8255A的内部结构图28255A的内部结构1)8255A有3个8位数据接口,即接口A、接口B和接口C,可利用编程方法设置3个端口是作为输入端口还是输出端口;2)8255A能适应CPU和I/O接口之间的多种数据传送方式的要求,如无条件传送、查询方式传送、中断方式传送。8255A设置了方式0、方式1以及方式2;3)数据总线缓冲器是个双向三态8位数据缓冲器,与CPU系统数据总线相连,是8255A与CPU之间传输数据的必经之路。输入数据、输出数据、控制命令字都是通过数据总线缓冲器进行传递的;4)读/写控制逻辑电路接收来自CPU地址总线的信号和控制信号,并发出命令到两个控制组(A组和B组)。它控制把CPU发出的控制命令或输出的数据送到相应的端口,或者把外设的状态或输入的数据相应的端口送到CPU;5)A组控制和B组控制一方面接收芯片内部总线上的控制字,一方面接收来自读/写控制逻辑电路的读/写命令,从而解决端口的工作方式和读/写操作。其中,A组控制电路控制端口A和端口C高4位(PC7-PC4)的工作方式和读/写操作:而B组控制电路控制端口B和端口C低4位(PC3-PC0)工作方式和读写操作。(2)8255A的外部引脚图38255A的功能引脚图1)与外部设备端相连的引脚PA7-PA0:A端口的输入/输出引脚;PB7-PB0:B端口的输入/输出引脚;PC7-PC0:C端口的输入/输出引脚;2)与CPU相连的引脚RESET:复位信号,低电平有效。当RESET信号来到时,所有内部寄存器都被清0,同时3个端口被自动设为输入端口;D7-D0:8255A的数据线,和系统数据总线相连;CS:芯片选择信号。只有当CS有效时,读出信号RD和写入信号WR才对8255A有效;RD:读出信号。CPU通过IN指令使RD有效,将数据或状态信息从8255A中读到CPU;WR:写入信号。CPU通过OUT指令使WR有效,将数据或状态信息从CPU中写道8255A;A1,A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,共4个端口。规定A1,A0为00、01、10和11时,分别选中端口A、端口B、端口C和控制端口。(3)8255A的控制字1)8255A的方式控制字8255A共有两个控制字,即工作方式控制字和对C口置位/复位控制字。8255A的工作方式字格式和各位的含义如图4图48255A工作方式控制字格式方式0为基本的输入输出方式;方式1为选通式输入/输出;方式3为双向选通输入/输出方式。2)C口置位/复位控制字8255A的C口置位/复位控制字的格式如图5图58255A的C口置位/复位控制字3.2八段共阴数码管一般8段LED显示器的内部结构和引脚如图6(a)所示。每段都是一个发光二极管,通过点亮不同的字段,可以显示0,1,…,9和A,B,…F。其内部各发光二极管之间的连接方法有共阴极和共阳极两种,如图6(b)和图6(c)所示。(a)结构和引脚(b)共阴极接法(c)共阳极接法图6八段LED显示器(1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的数码管为共阴极接法;(2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。表18段LED显示字形段码字型共阴极字形代码字型共阴极字形代码字型共阴极字形代码03FH67DHC39H106H707HD5EH25BH87FHE79H34FH96FHF71H466HA77H灭00H56DHB7CH4.功能电路4.1数码管显示电路图7显示连接电路实验箱上有四个LED显示器,本实验利用PC口的最高两位选中X4和X3两个数码管,即进行位锁存;八段数码管为阳极LED器件。要让A段点亮,要求PB0输出高电平“1”;要使B段熄灭,要求从PB1输出低电平“0”。其余各段以此类推。要使LED上显示0-9十个数字,需要按照如下段码表来驱动数码管的八段LED:表28段数码管段码表显示字符0123456789八段代码3FH06H5BH4FH66H6DH7DH07H7FH6FH4.2开关与LED灯控制电路图8开关与LED灯控制电路设置8255的A端口工作在方式0下,作为输出端,电路连接如上图,在倒计时到0的时候LED灯从左到右接着再从右往左依次点亮,实现跑马灯功能。开关K1为复位开关,在倒计时过程中置K1为“1”可以实现退出当前倒计时,置K1为“0”时又开始重新倒计时。开关K0为暂停开关,在倒计时过程中置K0为“1”可以暂停倒计时,置K0为“0”时,数码管接着当前的显示数据执行递减,并且在暂停过程中数码管始终显示暂停时的数据。三.程序模块及流程图1.8255A初始化程序开始时对8255A进行初始化,A组和B组控制工作在方式0,因此方式字中的D6D5和D2为0。A口为输出,因此D4为0;C口高4位为输出,因此D3为0,低4位为输入,因此D0为1;B口为输出,因此D1为0。根据程序设计要求,8255A的方式控制字为10000001B,即81H。2.显示程序模块根据方式控制字和连线可知,B口连接数码管的A~Dp进行段锁存,C口的高4位连接X4~X1进行位锁存。显示程序如下:DISPROCNEAR;数码管显示子程序PUSHAX;保护现场PUSHDXMOVSI,3000H;找到存数的缓冲区MOVAL,0BFH;10111111B,选中X3数码管MOVDX,MY8255_C;选中PC口,进而选中数码管OUTDX,ALMOVAL,[SI];取出缓冲区中存放的键值XLAT;查表指令,将以BX为基地址,AL为位移量的字节存储单元中的数赋给ALMOVDX,MY8255_B;写入数码管A~DpOUTDX,ALCALLDALLY1;调用延时函数MOVAL,7FH;01111111B,选中X4数码管MOVDX,MY8255_C;选中PC口,进而选中数码管OUTDX,ALMOVAL,[SI+1];取出缓冲区中存放的键值XLATMOVDX,MY8255_B;写入数码管A~DpOUTDX,ALCALLDALLY1;调用延时函数POPAXPOPDXDISENDP3.延时程序模块控制一个循环程序循环N次以到达延时的目的。具体语句如下:DALLY:PUSHCX;保护现场PUSHAXMOVCX,0FFFFHA1:MOVAX,4FFFHA2:DECAX;自减JNZA2LOOPA1;计数循环POPAXPOPCXRET程序循环次数为N=(FFFF+1)*(4FFF+1),延时时间为N*n(n为程序语句执行时间)4.控制程序模块控制程序有暂停和复位,其中暂停可以用一个循环程序来实现,当暂停键拨下时,循环程序会进入死循环状态,直至暂停键拨回。复位则只需按条件跳转至输入初始时间的程序语句处即可。C口低4位为输入,读入开关状态,判断“0”和“1”状态进行控制。程序代码如下:PAUSE:CALLDIS;调用显示子程序MOVDX,MY8255_C;C口低4位为输入INAL,DX;读入C口的最低位的状态TESTAL,01H;00000001BJNZPAUSE;最低位为1暂停倒计时RESET1:MOVDX,MY8255_C;C口低4位为输入INAL,DXTESTAL,02H;00000010BJNZRESET2;第2位置1后执行RESET2DECTIME;减1倒计时MOVCL,TIMECMPCL,0FFH;当从初始值减到0后继续减1则值为0FFH,说明计数结束JNZDISPY;倒计时未到0,继续倒计时JMPOUTPUT1;跳到流水灯点亮;重新开始倒计时RESET2:JMPSHURU5.LED灯点亮程序

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功