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

上传人:碎****木 文档编号:85435819 上传时间:2023-04-10 格式:DOCX 页数:19 大小:1.51MB
返回 下载 相关 举报
微机原理与接口技术课程设计倒计时.docx_第1页
第1页 / 共19页
微机原理与接口技术课程设计倒计时.docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

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

1、微机原理与接口技术课程设计报告题目:倒计时学院专业 计算机科学与技术班级学号学生姓名指导教师课程成绩完成日期 2023 年 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+试验系统

2、和PC 机平台上利用并行接口 8255A、键盘及数码管显示单元、开关及 LED 显示单元、键盘按键和电脑显示屏设计成一个倒计时器。具体功能包括:1. 用 2 位 8 段共阴数码管显示倒计时时间;2. 使用开关 K0 实现暂停/启动功能,开关 K1 实现倒计时复位功能;3. 倒计时为 0 时 8 盏 LED 灯实现跑马灯功能;4. 利用数字键输入倒计时初始数值,按键“r”实现重启动倒计时器,按键“e”实现退出程序进入 DOS 环境下,并对其他按键进展屏蔽;5. 屏幕显示相应的提示信息,包括提示用户输入数据、倒计时完毕、倒计时完毕后用户进展的操作;6. 可以任意设定倒计时的初始时间,每隔 1 秒钟

3、计时器减 1,直到为 0;7. 在倒计时过程中可通过开关 K1 实现退出当前的倒计时并开头一轮的倒计时。二 设计原理及原理图1. 系统总设计原理我们选择并行接口 8255A 芯片,在程序中使用延时语句来输出秒脉冲,并在其中调用显示函数不断刷数码管进展数值显示。使用 8255A 作为输入/输出接口,其中 A 端口为输出口,连接 LED 显示单元的 D8D15;B 端口为输出口,连接数码管的 ADp,进展数码管的段锁存;C 端口高 4 位为输出口,连接数码管的 X4X1,进展位锁存,低 4 位为输入端,连接开关的 K3K0。承受在软件中掌握循环程序的方式来掌握倒计时的复位和暂停功能,并通过程序来显

4、示语句和读入用户的键盘输入,以进展相应操作。此方案性价比高,但由于使用了软件延时, 当芯片损耗以及芯片在工作时间过长后会消灭倒计时不够准确。2. 硬件框架原理图图 1 系统设计硬件框架3. 硬件介绍3.1 并行接口 8255A(1) 8255A 的内部构造图 2 8255A 的内部构造1) 8255A 有 3 个 8 位数据接口,即接口A、接口B 和接口 C,可利用编程方法设置 3 个端口是作为输入端口还是输出端口;2) 8255A 能适应 CPU 和 I/O 接口之间的多种数据传送方式的要求,如无条件传送、查询方式传送、中断方式传送。8255A 设置了方式 0、方式 1 以及方式 2;3)

5、数据总线缓冲器是个双向三态8 位数据缓冲器,与CPU 系统数据总线相连, 是 8255A 与 CPU 之间传输数据的必经之路。输入数据、输出数据、掌握命令字都是通过数据总线缓冲器进展传递的;4) 读/写掌握规律电路接收来自 CPU 地址总线的信号和掌握信号,并发出命令到两个掌握组(A 组和 B 组)。它掌握把 CPU 发出的掌握命令或输出的数据送到相应的端口,或者把外设的状态或输入的数据相应的端口送到CPU;5) A 组掌握和 B 组掌握一方面接收芯片内部总线上的掌握字,一方面接收来自读/写掌握规律电路的读/写命令,从而解决端口的工作方式和读/写操作。其中,A 组掌握电路掌握端口 A 和端口

6、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 的数据线,和系统数据总线相连; CS:芯片选择信号。只有当CS

7、 有效时,读出信号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 口置位/复

8、位掌握字。8255A 的工作方式字格式和各位的含义如图 4图 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)

9、共阴极接法(c)共阳极接法图 6 八段LED 显示器(1) 共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。试验中使用的数码管为共阴极接法;(2) 共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。表 1 8 段LED 显示字形段码字型共阴极字形代码字型共阴极字形代码字型共阴极字形代码03FH67DHC39H106H707HD5EH25BH87FHE79H34FH96FHF71H466HA77H灭00H56D

10、HB7CH4. 功能电路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 灯掌握电

11、路设置 8255 的 A 端口工作在方式 0 下,作为输出端,电路连接如上图,在倒计时到 0 的时候 LED 灯从左到右接着再从右往左依次点亮,实现跑马灯功能。开关 K1 为复位开关,在倒计时过程中置 K1 为“1”可以实现退出当前倒计时,置K1 为“0”时又开头重倒计时。开关K0 为暂停开关,在倒计时过程中置K0 为“1”可以暂停倒计时,置K0 为“0”时,数码管接着当前的显示数据执行递减, 并且在暂停过程中数码管始终显示暂停时的数据。三 程序模块及流程图1. 8255A 初始化程序开头时对 8255A 进展初始化,A 组和 B 组掌握工作在方式 0,因此方式字中的 D6D5 和 D2 为

12、0。A 口为输出,因此D4 为 0;C 口高 4 位为输出,因此D3 为 0,低4 位为输入,因此D0 为 1;B 口为输出,因此D1 为 0。依据程序设计要求,8255A 的方式掌握字为 1000 0001B,即 81H。2. 显示程序模块依据方式掌握字和连线可知,B 口连接数码管的 ADp 进展段锁存,C 口的高4 位连接 X4X1 进展位锁存。显示程序如下:DIS PROC NEAR;数码管显示子程序PUSH AX;保护现场PUSH DXMOV SI,3000H;找到存数的缓冲区MOV AL,0BFH;1011 1111B,选中 X3 数码管MOV DX,MY8255_C;选中PC 口,

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

14、. 延时程序模块掌握一个循环程序循环 N 次以到达延时的目的。具体语句如下:DALLY:PUSH CXPUSH AXMOV CX,0FFFFHA1:MOV AX,4FFFHA2:DEC AX JNZ A2 LOOP A1 POP AX POP CX;保护现场;自减;计数循环RET程序循环次数为N=(FFFF+1)*(4FFF+1),延时时间为N*n(n 为程序语句执行时间)4. 掌握程序模块掌握程序有暂停和复位,其中暂停可以用一个循环程序来实现,当暂停键拨下时,循环程序会进入死循环状态,直至暂停键拨回。复位则只需按条件跳转至输入初始时间的程序语句处即可。C 口低 4 位为输入,读入开关状态,推

15、断“0” 和“1”状态进展掌握。程序代码如下:PAUSE:CALL DISMOV DX,MY8255_C IN AL,DX;调用显示子程序;C 口低 4 位为输入;读入C 口的最低位的状态TEST AL,01H;0000 0001BJNZ PAUSE;最低位为 1 暂停倒计时RESET1:MOV DX,MY8255_C;C 口低 4 位为输入IN AL,DXTEST AL,02H;0000 0010BJNZ RESET2;第 2 位置 1 后执行RESET2DEC TIME;减 1 倒计时MOV CL,TIMECMP CL,0FFH;当从初始值减到 0 后连续减 1 则值为 0FFH,说明计数

16、完毕JNZ DISPY;倒计时未到 0,连续倒计时JMP OUTPUT1;跳到流水灯点亮;重开头倒计时RESET2: JMP SHURU5. LED 灯点亮程序模块当程序运行至倒计时完毕的语句时启动点亮 LED 灯程序。A 口连接 LED 显示单元的 D15D8,通过 A 口送入的数据掌握 LED 灯的点亮状况。程序代码如下:OUTPUT1: PUSH CXMOV CX,7 MOV LA,80HP4:MOV AL,LAMOV DX,MY8255_A OUT DX,ALCALL DALLY ROR AL,1 MOV LA,AL LOOP P4MOV CX,8 MOV LB,01HP5:MOV A

17、L,LBMOV DX,MY8255_A OUT DX,ALCALL DALLY ROL AL,1 MOV LB,AL LOOP P5JMP prompt;点亮流水灯,流水灯 0 灭 1 亮;循环计数初值;流水灯从左往右依次点亮;通过A 口输出掌握LED 点亮;不进位的循环右移;流水灯从右往左依次点亮;不进位的循环左移;流水灯显示完毕跳转到prompt四 源程序;利用 8255A 设计倒计时,其中 A 端口连接LED 显示单元的D8D15,B 口连接数码管的ADp,;进展段锁存,C 口高 4 位连接数码管的X4X1,进展位锁存,C 口的低 4 位作为输入端,连;接开关的K3K0,其他引脚与系统总

18、线相连;*依据CHECK 配置信息修改以下符号值* IOY0EQU9C00H;PCI 卡中断掌握存放器地址;*MY8255_AEQUIOY0+00H*4;8255 计数器 0 端口地址MY8255_BEQUIOY0+01H*4;8255 计数器 1 端口地址MY8255_CEQUIOY0+02H*4;8255 计数器 2 端口地址MY8255_MODEEQUIOY0+03H*4;8255 掌握存放器端口地址;* DATA SEGMENTDTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;对应 09TIMEDB?;存储倒计时的初始时间CHUDB10;存

19、储被除数 10LADB?;存储数码管从左往右亮的数值LBDB?;存储数码管从右往左亮的数值BUFDB?;存储输入的十位数TISHIDB13,10,“Input the time:“,“$“TIMESUPDB13,10,“Times up!“,“$“STRMSGDB13,10,“press r to restart, e to exit:“,“$“ENDMSGDB13,10,“Thanks for using!“,“$“DATA ENDS;* STACK1 SEGMENT STACKDW 256 DUP(?) STACK1 ENDS;* CODE SEGMENTASSUME CS:CODE,DS

20、:DATA,SS:STACK1 START: MOV AX,DATAMOV DS,AX;装载数据段MOV DX,MY8255_MODE ;初始化 8255 MOV AL,81H;置 8255 的 C 口 PC0PC3 输入开关状态,PC4PC7 进展数码管的位锁存B;口的PB0PB7 进展数码管的段锁存,A 口的PA0PA7 掌握流水灯的点亮OUT DX,ALSHURU:LEA DX,TISHI;给出输入时间提示MOV AH,09HINT 21H;显示输入倒计时时间的提示MOV AH,01HINT21H;输入第 1 个数作为十位数SUBAL,30H;将 AL 的 ASCLL 减 30H 变为十

21、进制的值MOVCL,10MULCL;将操作数 10 和 AL 相乘结果存入AX 中MOVBUF,AL;把十位数存入BUF 中MOVAH,01H;输入第 2 个数作为个位数INT21HSUBAL,30H;将 AL 的 ASCII 减 30H 变为十进制的值ADDAL,BUF;将两数相加作为倒计时的开头时间MOVTIME,AL;将数给TIMEDISPY:MOVBX,OFFSETDTABLE;取 DTABLE 的偏移值MOVAL,TIME;初值给ALCBW;将 AX 的高 8 位置 0MOVCL,CHU;除数 10 给 CLDIVCL;商/十位数存入AL,余数/个位数存入AHMOVSI,3000H;

22、定义一个缓冲区MOVSI,AL;商/十位数存入SI,X3 中MOVSI+1,AH;余数/个位数存入SI+1,X4 中C1:C2:PUSH AX PUSH CXMOV CX,1FFFH MOV AX,0FFFH DEC AXCALL DIS JNZ C2 LOOP C1 POP CX POP AX;保护现场;通过延时不断刷数码管;调用显示子程序;通过循环调用不断刷数码管显示;弹消灭场PAUSE:CALL DISMOV DX,MY8255_C IN AL,DXTEST AL,01H;调用显示子程序;C 口低 4 位为输入;读入C 口的最低位的状态;0000 0001BJNZ PAUSE;最低位为

23、1 暂停倒计时RESET1: MOV DX,MY8255_CIN AL,DX TEST AL,02H;C 口低 4 位为输入;0000 0010BJNZ RESET2;第 2 位置 1 后执行RESET2DEC TIME;减 1 倒计时MOV CL,TIMECMP CL,0FFH;当从初始值减到 0 后减 1 则值为 0FFH,计数完毕JNZ DISPY;倒计时未到 0,连续倒计时JMP OUTPUT1 RESET2: JMP SHURUOUTPUT1: PUSH CXMOV CX,7 MOV LA,80HP4:MOV AL,LAMOV DX,MY8255_A OUT DX,ALCALL DA

24、LLY ROR AL,1 MOV LA,AL LOOP P4;跳到流水灯点亮;重开头倒计时;点亮流水灯,流水灯 0 灭 1 亮;循环计数初值;流水灯从左往右依次点亮;通过A 口输出掌握LED 点亮;不进位的循环右移MOVCX,8MOVLB,01H;流水灯从右往左依次点亮P5:MOVAL,LBMOVDX,MY8255_AOUTDX,ALCALL DALLY ROL AL,1 MOV LB,AL LOOP P5JMP prompt DALLY:PUSH CXPUSH AXMOV CX,0FFFFHA1:MOV AX,4FFFHA2: DEC AX JNZ A2 LOOP A1;不进位的循环左移;流

25、水灯显示完毕跳转到prompt;流水灯点亮延时函数POPAXRETPOPCXDISPROCNEAR;数码管显示子程序PUSHAX;保护现场PUSHDXMOVSI,3000H;找到存数的缓冲区MOVAL,0BFH;1011 1111B,选中 X3 数码管MOVDX,MY8255_C;选中PC 口,进而选中数码管OUTDX,ALMOV AL,SI;取出缓冲区中存放的键值XLAT;查表指令,将以BX 为基地址,AL 为位移量的字节存储单元中的数赋给AL MOV DX,MY8255_B;写入数码管ADpOUT DX,ALCALL DALLY1;调用延时函数MOV AL,7FH;0111 1111B,选

26、中 X4 数码管DIS ENDPMOV DX,MY8255_C OUT DX,ALMOV AL,SI+1 XLATMOV DX,MY8255_B OUT DX,ALCALL DALLY1 POP AXPOP DX;选中PC 口,进而选中数码管;取出缓冲区中存放的键值;写入数码管ADp;调用延时函数DALLY1 PROC NEARPUSH AX PUSH CXMOV CX,0FFHC3:MOV AX,0FFHC4:DEC AX JNZ C4 LOOP C3 POP CX POP AX RETDALLY1 ENDPprompt: LEA DX,TIMESUPCALL PUTSLEA DX,STRM

27、SG CALL PUTSP3:MOV AH,1 INT 21H CMP AL,72H JZ P1CMP AL,65H JZ P2JMP P3P1:JMP RESET2;数码管显示延时函数;将 TIMESUP 字符串输出;将 STR 字符串输出;键盘输入单个字符,AL=输入字符的ASCII 码;测试按下的键为r重开头;测试按下的键为e退出;不处理其他按键的输入;重开头P2:LEA DX,ENDMSG CALL PUTSMOV AH,4CH INT 21HPUTS:MOV AH,9 INT 21H RETCODE ENDSEND START;退出程序;进展字符串显示;程序完毕五 试验结果图 8 课

28、设平台图 9 系统连线图 10 数码管显示图 11 LED 灯点亮显示图 12 PC 显示屏提示显示六 总结通过本次微机接口课程设计,让我对微机原理与接口技术和汇编语言的了解更加深刻。我和我的组员王乐在 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 淘文阁