电子跑表 课程设计

上传人:仙*** 文档编号:28822907 上传时间:2021-09-14 格式:DOC 页数:18 大小:188.01KB
收藏 版权申诉 举报 下载
电子跑表 课程设计_第1页
第1页 / 共18页
电子跑表 课程设计_第2页
第2页 / 共18页
电子跑表 课程设计_第3页
第3页 / 共18页
资源描述:

《电子跑表 课程设计》由会员分享,可在线阅读,更多相关《电子跑表 课程设计(18页珍藏版)》请在装配图网上搜索。

1、课 程 设 计 书系别 专业 班级 题目 电子跑表 教师 学生 年 月 号 一、 设计任务:1.电子表,具有十分、分、十秒和秒的计时功能,并可以在数码管上显示。2电子表具有启动键、停止键、复位键,而且可以随时通过键盘进行各位时间的设置。二、 设计原理:本程序的主要设计原理是用主程序完成键盘按键的扫描,实现计时结果的数码管显示,实现秒与分之间的转换。通过判断键盘按键调用相应功能程序段以实现相应功能,即实现了启动、暂停、复位功能,以及通过键盘进行十分、分、十秒、秒时间的手动设置功能。1.8254的初始化字 由此,本设计中的8254的初始化为:MOV DX,MY8254_MODE ;初始化8254工

2、作方式 MOV AL,36H ;计数器0,方式3 OUT DX,AL MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,00H ;18432分频 OUT DX,AL MOV AL,54H OUT DX,AL2.8255的初始化字由此,本设计中的8255的初始化为:MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,AL三、 电子表软件流程图1.主程序流程图开 始程 序 初 始 化判断小键盘是否有键按下 N Y若按键值为8、9、0A、0B、0C、0D、0E、0F,则要转至时间设置处理程

3、序若按键值为1,则要转至STOPKEYTAG处理程序若按键值为2,则要转至CLEARKEYTAG处理程序若按键值为3,则要转至STARTISRUNING处理程序 PC机上面是不是有键按下调 用 子 程 序 N Y返回DOS结 束2.电子表处理程序开 始SEC秒加1SEC秒是否到10? N YSEC秒清零,TENSEC十秒加1TENSEC十秒是否到6? N YTENSEC十秒清零,MINT个位分加1MINT个位分是否到10? N YMINT个位分清零,TENMINT十位分加1TENMINT十位分到6? N YTENMINT十位秒分清零调用LED动态显示程序结 束四、 电子表硬件接线图ABCDE

4、键 盘F 及 数G 码 管DP 显 示 单 元X1X2X3X4Y1Y2Y3Y4D7 PB0D6 PB1D5 PB2D4 PB3D3 PB4D2 PB5D1 PB6D0 8255 PB7 单 元A1 PA0A0 PA1 PA2WR PA3RDCS PC0 PC1PC2PC3 XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0系 XA3 XA2 XIOW XIOR IOY0 IOY1 INTR CLK统 D7D6D5D4D3D2 8254D1 单 元D0A1A2WRRDCSOUT0CLK0 总 线 五电子表软件代码;*根据CHECK配置信息修改下列符号值*IOY0 EQU 0e000H

5、 ;片选IOY0对应的端口始地址IOY1 EQU 0e040H;*MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址MY8254_COUNT0 EQU IOY1+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY1+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY1+02H*4 ;8254计数器2端口地

6、址MY8254_MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H,77H,7CH,39H,5EH,79H,71H ;键值表,0F对应的7段数码管的段位值TIMETABLE DB 0,0,0,0STARTKEY DB 3 ;启动键STOPKEY DB 1 ;停止键CLEARKEY DB 2 ;清0键SETTMADDKEY DB 8 ;设置十位分钟加SETMADDKEY

7、 DB 9 ;设置个位分钟加SETTSADDKEY DB 0AH ;设置十位秒加SETSADDKEY DB 0BH ;设置个位秒加SETTMSUBKEY DB 0CH ;设置十位分钟减SETMSUBKEY DB 0DH ;设置个位分钟减SETTSSUBKEY DB 0EH ;设置十位秒减SETSSUBKEY DB 0FH ;设置个位秒减STATUS DB 0 ;8254out端口状态键ISRUNING DB 0 WTHOUSAND DB 0WSEC DB 0WMSEC DB 0TENSEC DB 0SEC DB 0MINT DB 0TENMINT DB 0DATA ENDS CODE SEGM

8、ENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;计数器0,方式3 OUT DX,AL MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,00H ;18432分频 OUT DX,AL MOV AL,54H OUT DX,AL MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,ALBEGIN: CALL DIS ;显示

9、刷新 CALL CLEAR ;清屏 CALL CCSCAN ;扫描按键 JZ NOKEYDOWN ;有键按下则跳置GETKEY1 JMP GETKEY1 NOKEYDOWN: MOV AH,1 ;判断PC键盘是否有按键按下 INT 16H JZ KEYSCANEND ;无按键则跳回继续循环,有则退出 JMP QUIT KEYSCANEND: CMP ISRUNING,1 JNE BEGIN TIMESTART:MOV AL,11100010B ;设置回读命令MOV DX,MY8254_MODEOUT DX,AL MOV DX,MY8254_COUNT0 ;读0端口状态控制字IN AL,DXCM

10、P STATUS,1JNE NOTSTATUSTEST AL,80HJZ CHANGEWMSECJMP BEGINNOTSTATUS:TEST AL,80HJNZ CHANGEWMSECJMP BEGINCHANGEWMSEC:TEST AL,80HJZ CHANGESTATUSMOV STATUS,1JMP HASCHANGECHANGESTATUS:MOV STATUS,0HASCHANGE:INC WMSECCMP WMSEC,0AH ;百分秒到10,十分秒加1 JNE CHANGESECMOV WMSEC,0INC WSECCMP WSEC,0AH ;十分秒秒到10,个位秒加1JNE

11、CHANGESECMOV WSEC,0INC SECCMP SEC,0AH ;个位秒秒到10,十位秒加1JNE CHANGESECMOV SEC,0INC TENSECCMP TENSEC,06H ;十位秒到6,清零JNE CHANGESECMOV TENSEC,0INC MINTCMP MINT,0AH ;分钟个位到10,十位加1JNZ CHANGESECMOV MINT,0INC TENMINTCMP TENMINT,06H ;十位分到6,清零JNE CHANGESECMOV TENMINT,0CHANGESEC:MOV SI,0;存储时间MOV AL,TENMINT;十位分MOV TIM

12、ETABLESI,ALINC SIMOV AL,MINT;个位分MOV TIMETABLESI,ALINC SIMOV AL,TENSEC;十位秒MOV TIMETABLESI,ALINC SIMOV AL,SEC;个位秒MOV TIMETABLESI,ALINC SIMOV TIMETABLESI,0INC SIJMP BEGIN QUIT: MOV AX,4C00H ;返回到DOS INT 21HGETKEY1:CALL DIS ;显示刷新 CALL DALLY CALL DALLY CALL CLEAR ;清屏 CALL CCSCAN ;再次扫描按键 JNZ GETKEY2 ;有键按下则

13、跳置GETKEY2 JMP BEGIN ;否则跳回开始继续循环GETKEY2:MOV CH,0FEH MOV CL,00H ;设置当前检测的是第几列COLUM: MOV AL,CH ;选取一列,将X1X4中一个置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;读Y1Y4,用于判断是哪一行按键闭合 IN AL,DXL1: TEST AL,01H ;是否为第1行 JNZ L2 ;不是则继续判断 MOV AL,00H ;设置第1行第1列的对应的键值 JMP KCODEL2: TEST AL,02H ;是否为第2行 JNZ L3 ;不是则继续判断 MOV AL

14、,04H ;设置第2行第1列的对应的键值 JMP KCODEL3: TEST AL,04H ;是否为第3行 JNZ L4 ;不是则继续判断 MOV AL,08H ;设置第3行第1列的对应的键值 JMP KCODEL4: TEST AL,08H ;是否为第4行 JNZ kk ;不是则继续判断 MOV AL,0CH ;设置第4行第1列的对应的键值MYNEXT: PUSH AXKON: CALL DIS ;显示刷新 CALL CLEAR ;清屏 CALL CCSCAN ;扫描按键,判断按键是否弹起 JNZ KON ;未弹起则继续循环等待弹起 POP AXKCODE: ADD AL,CL ;将第1列的

15、值加上当前列数,确定按键值 CMP AL,STARTKEY ; 判断是否为开始键 JNE STOPKEYTAG CMP ISRUNING,0 JNE STARTISRUNING MOV ISRUNING,1 STARTISRUNING: JMP TIMESTART STOPKEYTAG: ; 判断是否为停止键 CMP AL,STOPKEY JNE CLEARKEYTAG MOV ISRUNING,0 JMP STARTISRUNINGCLEARKEYTAG: ; 判断是否为清零键 CMP AL,CLEARKEY JNZ SETTMADDTAG CALL CLEARCLOCK JMP KERRK

16、K:JMP NEXTSETTMADDTAG: ; 判断是否为十位分钟加设置键 CMP AL,SETTMADDKEY JNZ SETMADDTAG CALL SETTMADD JMP KERRSETMADDTAG: ; 判断是否为个位分钟加设置键 CMP AL,SETMADDKEY JNZ SETTSADDTAG CALL SETMADD JMP KERRSETTSADDTAG: ; 判断是否为十位秒加设置键 CMP AL,SETTSADDKEY JNZ SETSADDTAG CALL SETTSADD JMP KERRSETSADDTAG: ; 判断是否为个位秒加设置键 CMP AL,SETS

17、ADDKEY JNZ SETTMSUBTAG CALL SETSADD JMP KERRSETTMSUBTAG: ; 判断是否为十位分钟减设置键 CMP AL,SETTMSUBKEY JNZ SETMSUBTAG CALL SETTMSUB JMP KERRSETMSUBTAG: ; 判断是否为个位分钟减设置键 CMP AL,SETMSUBKEY JNZ SETTSSUBTAG CALL SETMSUB JMP KERRSETTSSUBTAG: ; 判断是否为十位秒减设置键 CMP AL,SETSSUBKEY JNZ SETSSUBTAG CALL SETTSSUB JMP KERRSETSS

18、UBTAG: ; 判断是否为个位秒减设置键 CMP AL,SETSSUBKEY JNZ KERR CALL SETSSUB NEXT: INC CL ;当前检测的列数递增 MOV AL,CH TEST AL,08H ;检测是否扫描到第4列 JZ KERR ;是则跳回到开始处 ROL AL,1 ;没检测到第4列则准备检测下一列 MOV CH,AL JMP COLUMKERR: JMP BEGINCCSCAN PROC NEAR ;扫描是否有按键闭合子程序 MOV AL,1H MOV DX,MY8255_A ;将4列全选通,X1X4置0 OUT DX,AL MOV DX,MY8255_C IN A

19、L,DX ;读Y1Y4 NOT AL AND AL,0FH ;取出Y1Y4的反值 RETCCSCAN ENDPCLEAR PROC NEAR ;清除数码管显示子程序 MOV DX,MY8255_B ;段位置0即可清除数码管显示 MOV AL,00H OUT DX,AL RETCLEAR ENDPDIS PROC NEAR ;显示键值子程序 PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显示 MOV SI,OFFSET TIMETABLE MOV CX,SI ADD CX,1 ADD SI,5 MOV DL,0DFH MOV AL,DLAGAIN: PUSH DX MOV DX,MY

20、8255_A OUT DX,AL ;设置X1X4,选通一个数码管 MOV AL,SI ;取出缓冲区中存放键值 MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV BL,BX CMP SI,CX JNE COMER OR BL,80H COMER: MOV AL,BL ;将键值作为偏移和键值基地址相加得到相应的键值 MOV DX,MY8255_B OUT DX,AL ;写入数码管ADp CALL DALLY DEC SI ;取下一个键值 POP DX MOV AL,DL TEST AL,01H ;判断是否显示完? JZ OUT1 ;显示完,返回 ROR

21、 AL,1 MOV DL,AL JMP AGAIN ;未显示完,跳回继续OUT1: POP AX RETDIS ENDPDALLY PROC NEAR ;软件延时子程序 PUSH CX MOV CX,00FFHD1: MOV AX,00FFHD2: DEC AX JNZ D2 LOOP D1 POP CX RETDALLY ENDP;设置十位分钟加子程序SETTMADD PROC NEARADD TENMINT,1MOV AL,TENMINTMOV SI,0MOV TIMETABLESI,ALRETSETTMADD ENDP;设置个位分钟加子程序SETMADD PROC NEARADD MIN

22、T,1MOV AL,MINTMOV SI,1MOV TIMETABLESI,ALRETSETMADD ENDP;设置十位秒加子程序SETTSADD PROC NEARADD TENSEC,1MOV AL,TENSECMOV SI,2MOV TIMETABLESI,ALRETSETTSADD ENDP;设置个位秒加子程序SETSADD PROC NEARADD SEC,1MOV AL,SECMOV SI,3MOV TIMETABLESI,ALRETSETSADD ENDP;设置十位分钟减子程序SETTMSUB PROC NEARSUB TENMINT,1MOV AL,TENMINTMOV SI,

23、0MOV TIMETABLESI,ALRETSETTMSUB ENDP;设置个位分钟减子程序SETMSUB PROC NEARSUB MINT,1MOV AL,MINTMOV SI,1MOV TIMETABLESI,ALRETSETMSUB ENDP;设置十位秒减子程序SETTSSUB PROC NEARSUB TENSEC,1MOV AL,TENSECMOV SI,2MOV TIMETABLESI,ALRETSETTSSUB ENDP;设置个位秒减子程序SETSSUB PROC NEARSUB SEC,1MOV AL,SECMOV SI,3MOV TIMETABLESI,ALRETSETSS

24、UB ENDP;电子表复位子程序CLEARCLOCK PROC NEARMOV TENMINT, 0MOV MINT, 0MOV TENSEC, 0MOV SEC, 0MOV SI,0MOV TIMETABLESI,0INC SIMOV TIMETABLESI,0INC SIMOV TIMETABLESI,0INC SIMOV TIMETABLESI,0RETCLEARCLOCK ENDPCODE ENDSEND START五、 心得体会在设计刚开始时,我们只是知道要用8254完成计数,用8255与数码管单元完成显示功能,但是具体怎么实现的还不是很清楚。在接下来的一小段时间里,我们觉得无从下手

25、,但通过自己耐心搜集资料,向老师和同学请教,慢慢理出了头绪,也有了自己的设计思想和设计框架,并有了一定的实现方法。对于设计题目来说,并非那么得复杂,但要设计者将所学转换成相应的实际应用却并非一件容易的事情。本设计题目的设计思想是简单的,只需要使用8254完成计数,用8255与数码管单元完成显示功能,并通过自己的理解附加一些功能片段来完成电子表的人性化功能设计,如电子表的校准、电子表的开始、停止、清零等功能。在课程设计过程中,我深刻地体会到:微机原理与接口技术这门课程对于我们的要求不仅限于对书本知识的理解,更重要的是对书本知识的运用。除此之外,我们应该在学习过程中充分发挥自己的想象力和创新意识,将对书本知识的理解与我们的创新意识相结合,设计出实用且功能良好的实物。通过本次课程设计,也提高了我们的编程能力、协作能力和创新能力,为以后的学习打下了良好的基础。参考文献1郭兰英 赵祥模 ,微机原理与接口技术 清华大学出版社2张荣祥,微型计算机原理,中国电力出版社3范会敏 李晋惠,微型计算机原理及接口技术应用,科学出版社评 语 评 语

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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