微机原理与接口技术课程设计-倒计时(共20页).doc

上传人:飞****2 文档编号:14493290 上传时间:2022-05-04 格式:DOC 页数:20 大小:1.61MB
返回 下载 相关 举报
微机原理与接口技术课程设计-倒计时(共20页).doc_第1页
第1页 / 共20页
微机原理与接口技术课程设计-倒计时(共20页).doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《微机原理与接口技术课程设计-倒计时(共20页).doc》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计-倒计时(共20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上微机原理与接口技术课程设计报告题目:倒计时学 院 专 业 计算机科学与技术班 级 学 号 学生姓名 指导教师 课程成绩 完成日期 2011年6月23日目 录题目:倒计时一 设计功能 本次课程设计我们在TD-PIT+实验系统和PC机平台上利用并行接口8255A、键盘及数码管显示单元、开关及LED显示单元、键盘按键和电脑显示屏设计成一个倒计时器。具体功能包括:1. 用2位8段共阴数码管显示倒计时时间;2. 使用开关K0实现暂停/启动功能,开关K1实现倒计时复位功能;3. 倒计时为0时8盏LED灯实现跑马灯功能;4. 利用数字键输入倒计时初始数值,按键“r”实现重新启动倒计

2、时器,按键“e”实现退出程序进入DOS环境下,并对其他按键进行屏蔽;5. 屏幕显示相应的提示信息,包括提示用户输入数据、倒计时结束、倒计时结束后用户进行的操作;6. 可以任意设定倒计时的初始时间,每隔1秒钟计时器减1,直到为0;7. 在倒计时过程中可通过开关K1实现退出当前的倒计时并开始新一轮的倒计时。二 设计原理及原理图1. 系统总设计原理我们选择并行接口8255A芯片,在程序中使用延时语句来输出秒脉冲,并在其中调用显示函数不断刷新数码管进行数值显示。使用8255A作为输入/输出接口,其中A端口为输出口,连接LED显示单元的D8D15;B端口为输出口,连接数码管的ADp,进行数码管的段锁存;

3、C端口高4位为输出口,连接数码管的X4X1,进行位锁存,低4位为输入端,连接开关的K3K0。采用在软件中控制循环程序的方式来控制倒计时的复位和暂停功能,并通过程序来显示语句和读入用户的键盘输入,以进行相应操作。此方案性价比高,但由于使用了软件延时,当芯片损耗以及芯片在工作时间过长后会出现倒计时不够准确。2. 硬件框架原理图图1 系统设计硬件框架3. 硬件介绍3.1 并行接口8255A(1) 8255A的内部结构图2 8255A的内部结构1) 8255A有3个8位数据接口,即接口A、接口B和接口C,可利用编程方法设置3个端口是作为输入端口还是输出端口;2) 8255A能适应CPU和I/O接口之间

4、的多种数据传送方式的要求,如无条件传送、查询方式传送、中断方式传送。8255A设置了方式0、方式1以及方式2;3) 数据总线缓冲器是个双向三态8位数据缓冲器,与CPU系统数据总线相连,是8255A与CPU之间传输数据的必经之路。输入数据、输出数据、控制命令字都是通过数据总线缓冲器进行传递的;4) 读/写控制逻辑电路接收来自CPU地址总线的信号和控制信号,并发出命令到两个控制组(A组和B组)。它控制把CPU发出的控制命令或输出的数据送到相应的端口,或者把外设的状态或输入的数据相应的端口送到CPU;5) A组控制和B组控制一方面接收芯片内部总线上的控制字,一方面接收来自读/写控制逻辑电路的读/写命

5、令,从而解决端口的工作方式和读/写操作。其中,A组控制电路控制端口A和端口C高4位(PC7-PC4)的工作方式和读/写操作:而B组控制电路控制端口B和端口C低4位(PC3-PC0)工作方式和读写操作。(2) 8255A的外部引脚图3 8255A的功能引脚图1) 与外部设备端相连的引脚 PA7-PA0:A端口的输入/输出引脚; PB7-PB0:B端口的输入/输出引脚; PC7-PC0:C端口的输入/输出引脚;2) 与CPU相连的引脚RESET:复位信号,低电平有效。当RESET信号来到时,所有内部寄存器都被清0,同时3个端口被自动设为输入端口;D7-D0:8255A的数据线,和系统数据总线相连;

6、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图

7、4 8255A工作方式控制字格式方式0为基本的输入输出方式;方式1为选通式输入/输出;方式3为双向选通输入/输出方式。2) C口置位/复位控制字8255A的C口置位/复位控制字的格式如图5图5 8255A的C口置位/复位控制字3.2 八段共阴数码管一般8段LED显示器的内部结构和引脚如图6(a)所示。每段都是一个发光二极管,通过点亮不同的字段,可以显示0,1,9和A,B,F。其内部各发光二极管之间的连接方法有共阴极和共阳极两种,如图6(b)和图6(c)所示。(a)结构和引脚 (b)共阴极接法 (c)共阳极接法图6 八段LED显示器(1) 共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用

8、时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的数码管为共阴极接法;(2) 共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极 接5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。表1 8段LED显示字形段码字型共阴极字形代码字型共阴极字形代码字型共阴极字形代码03FH67DHC39H106H707HD5EH25BH87FHE79H34FH96FHF71H466HA77H灭00H56DHB7CH4. 功能电路4.1 数码管显示电路图7 显示连接电路实验箱上有四个LED显示器,本实验利用PC口的最高两位选

9、中X4和X3两个数码管,即进行位锁存;八段数码管为阳极LED器件。要让A段点亮,要求PB0输出高电平“1”;要使B段熄灭,要求从PB1输出低电平“0”。其余各段以此类推。要使LED上显示0-9十个数字,需要按照如下段码表来驱动数码管的八段LED:表2 8段数码管段码表显示字符0123456789八段代码3FH06H5BH4FH66H6DH7DH07H7FH6FH4.2 开关与LED灯控制电路图8 开关与LED灯控制电路设置8255的A端口工作在方式0下,作为输出端,电路连接如上图,在倒计时到0的时候LED灯从左到右接着再从右往左依次点亮,实现跑马灯功能。开关K1为复位开关,在倒计时过程中置K1

10、为“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的方式控制字为1000 0001B,即81H。2. 显示程序模块根据方式控制字和连线可知,B口连

11、接数码管的ADp进行段锁存,C口的高4位连接X4X1进行位锁存。显示程序如下:DIS PROC NEAR;数码管显示子程序 PUSH AX;保护现场 PUSH DX MOV SI,3000H;找到存数的缓冲区 MOV AL,0BFH ;1011 1111B,选中X3数码管 MOV DX,MY8255_C;选中PC口,进而选中数码管 OUT DX,AL MOV AL,SI;取出缓冲区中存放的键值 XLAT;查表指令,将以BX为基地址,AL为位移量的字节存储单元中的数赋给AL MOV DX,MY8255_B;写入数码管ADp OUT DX,AL CALL DALLY1;调用延时函数 MOV AL,

12、7FH ;0111 1111B,选中X4数码管 MOV DX,MY8255_C;选中PC口,进而选中数码管 OUT DX,AL MOV AL,SI+1;取出缓冲区中存放的键值 XLAT MOV DX,MY8255_B;写入数码管ADp OUT DX,AL CALL DALLY1;调用延时函数 POP AX POP DXDIS ENDP3. 延时程序模块控制一个循环程序循环N次以到达延时的目的。具体语句如下:DALLY: PUSH CX;保护现场 PUSH AX MOV CX,0FFFFHA1: MOV AX,4FFFHA2: DEC AX;自减 JNZ A2 LOOP A1;计数循环 POP

13、AX POP CXRET程序循环次数为N=(FFFF+1)*(4FFF+1),延时时间为N*n(n为程序语句执行时间)4. 控制程序模块控制程序有暂停和复位,其中暂停可以用一个循环程序来实现,当暂停键拨下时,循环程序会进入死循环状态,直至暂停键拨回。复位则只需按条件跳转至输入初始时间的程序语句处即可。C口低4位为输入,读入开关状态,判断“0”和“1”状态进行控制。程序代码如下:PAUSE: CALL DIS;调用显示子程序 MOV DX,MY8255_C;C口低4位为输入 IN AL,DX;读入C口的最低位的状态 TEST AL,01H;0000 0001B JNZ PAUSE ;最低位为1暂

14、停倒计时RESET1: MOV DX,MY8255_C ;C口低4位为输入 IN AL,DX TEST AL,02H ;0000 0010B JNZ RESET2 ;第2位置1后执行RESET2 DEC TIME ;减1倒计时 MOV CL,TIME CMP CL,0FFH ;当从初始值减到0后继续减1则值为0FFH,说明计数结束 JNZ DISPY ;倒计时未到0,继续倒计时 JMP OUTPUT1 ;跳到流水灯点亮;重新开始倒计时 RESET2: JMP SHURU5. LED灯点亮程序模块当程序运行至倒计时结束的语句时启动点亮LED灯程序。A口连接LED显示单元的D15D8,通过A口送入

15、的数据控制LED灯的点亮情况。程序代码如下:OUTPUT1: PUSH CX;点亮流水灯,流水灯0灭1亮 MOV CX,7;循环计数初值 MOV LA,80H;流水灯从左往右依次点亮P4: MOV AL,LA MOV DX,MY8255_A OUT DX,AL;通过A口输出控制LED点亮 CALL DALLY ROR AL,1;不进位的循环右移 MOV LA,AL LOOP P4 MOV CX,8 MOV LB,01H;流水灯从右往左依次点亮P5: MOV AL,LB MOV DX,MY8255_A OUT DX,AL CALL DALLY ROL AL,1;不进位的循环左移 MOV LB,A

16、L LOOP P5 JMP prompt;流水灯显示结束跳转到prompt四 源程序;利用8255A设计倒计时,其中A端口连接LED显示单元的D8D15,B口连接数码管的ADp,;进行段锁存,C口高4位连接数码管的X4X1,进行位锁存,C口的低4位作为输入端,连;接开关的K3K0,其他引脚与系统总线相连;*根据CHECK配置信息修改下列符号值*IOY0 EQU 9C00H ;PCI卡中断控制寄存器地址;*MY8255_A EQU IOY0+00H*4 ;8255计数器0端口地址MY8255_B EQU IOY0+01H*4 ;8255计数器1端口地址MY8255_C EQU IOY0+02H*

17、4 ;8255计数器2端口地址MY8255_MODE EQU IOY0+03H*4 ;8255控制寄存器端口地址;*DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;对应09 TIME DB ?;存储倒计时的初始时间 CHU DB 10;存储被除数10 LA DB ?;存储数码管从左往右亮的数值 LB DB ?;存储数码管从右往左亮的数值 BUF DB ?;存储输入的十位数 TISHI DB 13,10,Input the time:,$ TIMESUP DB 13,10,Times up!,$ STRMSG DB 1

18、3,10,press r to restart, e to exit:,$ ENDMSG DB 13,10,Thanks for using!,$DATA ENDS;*STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDS;*CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX;装载数据段 MOV DX,MY8255_MODE ;初始化8255 MOV AL,81H ;置8255的C口PC0PC3输入开关状态,PC4PC7进行数码管的位锁存B;口的PB0PB7进行数

19、码管的段锁存,A口的PA0PA7控制流水灯的点亮 OUT DX,ALSHURU: LEA DX,TISHI;给出输入时间提示 MOV AH,09H INT 21H;显示输入倒计时时间的提示 MOV AH,01H INT 21H;输入第1个数作为十位数 SUB AL,30H;将AL的ASCLL减30H变为十进制的值 MOV CL,10 MUL CL;将操作数10和AL相乘结果存入AX中 MOV BUF,AL;把十位数存入BUF中 MOV AH,01H;输入第2个数作为个位数 INT 21H SUB AL,30H;将AL的ASCII减30H变为十进制的值 ADD AL,BUF;将两数相加作为倒计时

20、的开始时间 MOV TIME,AL;将数给TIMEDISPY: MOV BX,OFFSET DTABLE;取DTABLE的偏移值 MOV AL,TIME;初值给AL CBW;将AX的高8位置0 MOV CL,CHU;除数10给CL DIV CL;商/十位数存入AL,余数/个位数存入AH MOV SI,3000H;定义一个缓冲区 MOV SI,AL;商/十位数存入SI,X3中 MOV SI+1,AH;余数/个位数存入SI+1,X4中 PUSH AX;保护现场 PUSH CX MOV CX,1FFFH;通过延时不断刷新数码管C1: MOV AX,0FFFHC2: DEC AX CALL DIS;调

21、用显示子程序 JNZ C2 LOOP C1;通过循环调用不断刷新数码管显示 POP CX POP AX;弹出现场 PAUSE: CALL DIS;调用显示子程序 MOV DX,MY8255_C;C口低4位为输入 IN AL,DX;读入C口的最低位的状态 TEST AL,01H;0000 0001B JNZ PAUSE ;最低位为1暂停倒计时RESET1: MOV DX,MY8255_C;C口低4位为输入 IN AL,DX TEST AL,02H;0000 0010B JNZ RESET2 ;第2位置1后执行RESET2 DEC TIME ;减1倒计时 MOV CL,TIME CMP CL,0F

22、FH ;当从初始值减到0后减1则值为0FFH,计数结束 JNZ DISPY ;倒计时未到0,继续倒计时 JMP OUTPUT1;跳到流水灯点亮RESET2: JMP SHURU;重新开始倒计时OUTPUT1: PUSH CX;点亮流水灯,流水灯0灭1亮 MOV CX,7;循环计数初值 MOV LA,80H;流水灯从左往右依次点亮P4: MOV AL,LA MOV DX,MY8255_A OUT DX,AL;通过A口输出控制LED点亮 CALL DALLY ROR AL,1;不进位的循环右移 MOV LA,AL LOOP P4 MOV CX,8 MOV LB,01H;流水灯从右往左依次点亮P5:

23、 MOV AL,LB MOV DX,MY8255_A OUT DX,AL CALL DALLY ROL AL,1;不进位的循环左移 MOV LB,AL LOOP P5 JMP prompt;流水灯显示结束跳转到promptDALLY: PUSH CX;流水灯点亮延时函数 PUSH AX MOV CX,0FFFFHA1: MOV AX,4FFFHA2: DEC AX JNZ A2 LOOP A1 POP AX POP CXRET DIS PROC NEAR;数码管显示子程序 PUSH AX;保护现场 PUSH DX MOV SI,3000H;找到存数的缓冲区 MOV AL,0BFH ;1011

24、1111B,选中X3数码管 MOV DX,MY8255_C;选中PC口,进而选中数码管 OUT DX,AL MOV AL,SI;取出缓冲区中存放的键值 XLAT;查表指令,将以BX为基地址,AL为位移量的字节存储单元中的数赋给AL MOV DX,MY8255_B;写入数码管ADp OUT DX,AL CALL DALLY1;调用延时函数 MOV AL,7FH ;0111 1111B,选中X4数码管 MOV DX,MY8255_C;选中PC口,进而选中数码管 OUT DX,AL MOV AL,SI+1;取出缓冲区中存放的键值 XLAT MOV DX,MY8255_B;写入数码管ADp OUT D

25、X,AL CALL DALLY1;调用延时函数 POP AX POP DXDIS ENDPDALLY1 PROC NEAR;数码管显示延时函数 PUSH AX PUSH CX MOV CX,0FFHC3: MOV AX,0FFHC4: DEC AX JNZ C4 LOOP C3 POP CX POP AX RETDALLY1 ENDPprompt: LEA DX,TIMESUP;将TIMESUP字符串输出 CALL PUTS LEA DX,STRMSG;将STR字符串输出 CALL PUTSP3: MOV AH,1 INT 21H;键盘输入单个字符,AL=输入字符的ASCII码 CMP AL,

26、72H;测试按下的键为r重新开始 JZ P1 CMP AL,65H;测试按下的键为e退出 JZ P2 JMP P3;不处理其他按键的输入P1: JMP RESET2;重新开始P2: LEA DX,ENDMSG CALL PUTS MOV AH,4CH;退出程序 INT 21HPUTS: MOV AH,9 INT 21H;进行字符串显示 RETCODE ENDS;程序结束 END START五 实验结果图8 课设平台图9 系统连线图10 数码管显示 图11 LED灯点亮显示图12 PC显示屏提示显示六 总结 通过本次微机接口课程设计,让我对微机原理与接口技术和汇编语言的了解更加深刻。我和我的组员

27、王乐在TD-PIT+实验系统和PC机平台上利用并行接口8255A、键盘及数码管显示单元、开关及LED显示单元、键盘按键和电脑显示屏设计成一个倒计时器,最终很完美地实现了所有基本功能和扩展功能,感觉很有自豪感。在这次课设中,我学到了很多,包括书本上的和书本外平时易忽视的东西。一方面锻炼了我的动手能力,一方面提升了我的分析问题和解决问题的能力,还有就是团队合作精神。在这过程中,我们遇到了很多问题,最突出的就是数码管显示问题,我们一起讨论研究并询问老师,最终都很完美地解决了所有问题,设计出了一个多功能的倒计时器。感谢XXX老师的细心指导,感谢我的组员XX,最后感谢学校给我们提供这么好的学习平台。附录1:系统硬件框架附录2:系统总程序流程图附录3:8086/88计算机主板图专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁