《广东工业大学微机课设报告》由会员分享,可在线阅读,更多相关《广东工业大学微机课设报告(15页珍藏版)》请在金锄头文库上搜索。
1、丿4y4课程名称 微机课程设计 题目名称 计时器 学生学院 自动化学院 专业班级14级自动化班 学 号学生姓名指导教师林丽纯2016 年 12 月 21 日目录一、课程设计目的 1二、课程设计内容 1三、系统设计说明 2四、系统原理图 3五、程序设计部分 3六、参考文献 13、课程设计目的1、巩固和加深对微机原理及应用课程内容的认识和理解,提高应用水平2、掌握汇编语言程序的编程方法3、熟悉键盘控制和七段数码管的使用、课程设计内容课程设计内容上机编程:1、编程将储存器的数据 8、A、9、F 共 4 个数经 XLAT 查表后,在四位七段数 码管 LED 上显示出来;2、编程在显示器上显示对应键值,
2、要求显示值能左移;0Y19BCF0Y2EA013、编程实现:a) 定义键盘按键,7 个为数字键 0、1、2、3、4、5、6,1 个功能键:设置 SET;b) 显示器上的四位显示为时(两位)、分(两位)、秒(利用一个发光二极 管显示);c)通过键盘的按键SET,可以设置、修改时间。三、系统设计说明本次课程设计目的是利用可编程并行输入/输出接口芯片 8255A 和七段数码 管实现一个计时器的设计。8255A 连接键盘,对键盘扫描按键就可以对计时器的时间进行设置,依照任 务安排定义键盘按键中 7 个为数字键 0、1、2、3、4、5、6,1 个功能键:设置 SET。设计思路:根据系统系统原理图接线。(
3、1)计时器利用延时程序的调用进行计时,每次查询 TABLE 表中的下一个数字, 显示到数码管,进过一个延时程序后查询下一个数字,即完成计时功能。(2)计时状态下,只有当扫描到键盘按下 SET 键时才进入数字键盘的扫描,即 时间的设置。按下SET功能键后,扫描键盘数字键,然后进行显示,当SET键被 再次按下后,进入判断:此时数码管前两位是否小于24?后两位是否小于 59? 如果都小于,开始计时,否则继续扫描键盘数字键,当 SET 键再次按下时进行新 一次的判断。四、系统原理图XD0XD7 系 统 总 线XA1XA2IOW#IOR#IOY1D0PC0+D7PC78255A0PA5A1PA6WRPB
4、0PB1RDPB2PB3CS一4.7KX 2+5V4.7KX 2五、程序设计部分1. 程序一1.1 题目:编程 将储存器的数据8、A、9、F共4个数经XLAT查表后,在四位七段数 码管LED上显示出来;1.2流程图:1.3源程序:STACKSEGMENT STACKDW 32 DUP(?)STACKENDSDATASEGMENTTABLEDB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEHDB 0F6H,0EEH,3EH,9CH,7AH,9EH,8EHVA1DB 0FEH,0FDH,0FBH,0F7H;对应亮的数码管VA2DB 0FH,0DH,0BH,09
5、H;将要显示的98AF的七段码建成一张表DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,0646HMOV AL,80HOUT DX,AL; 8255 初始化A1:MOV SI,OFFSET VA1MOV DI,OFFSET VA2MOV BX,OFFSET TABLEMOV CX,0004H;显示 4 位,CX 赋予 0004HA2:MOV DX,0642HMOV AL,SIOUT DX,AL ;控制亮的数码管MOV DX,0644HMOV AL,DIXLAT; 查表 TABLE 得到要显示的数
6、据OUT DX,ALINC SIINC DICALLY DALLYLOOP A2JMP A1DALLY: PUSH CX;延时子程序MOV CX,0001HA3:MOV AX,0FFFHA4:DEC AXJNZ A4LOOP A3POP CXRETCODE ENDSEND START2. 程序三2.1 题目:编程实现:实现:a)定义键盘按键,7个为数字键0、1、2、3、5、8、9,1个功能键:设置 SET;b)显示器上的四位显示为时(两位)、分(两位)c)通过键盘的按键SET,可以设置、修改时间。2.2流程图:幵始是巨压铠丫N星杏SET?是否压谑?Y是否SET?Y结朿2S: 59?籠盘勤二律打
7、描,诜 蛊嗣间开始计时初始化82552.3源程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTVA1 DB 0F7H,0EFH,0DFH,0BFH ;对应选中一个数码管VA2 DB 00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,0646H ;8255 初始化
8、MOV AL,90HOUT DX,AL ;选择 PA, PB, PC 的工作方式MOV BX,0000H; BX 清零STT: MOV AL,00H ;键盘测试MOVDX,0640HOUTDX,ALMOVDX,0644HINAL,DXANDAL,60HCMPAL,60HJNZKEYABCCALL DISP ; 调用显示程序JMPSTTKEYABC:CALL TIME ; 延时,去抖动MOVDX,0640HINAL,DXANDAL,60HCMPAL,60HJNZ KEY_3JMPSTTSTT3:MOVDX,0642HOUTDX,ALMOVDX,0640HINAL,DXANDAL,20HCMPAL
9、,20H ;JNZSTT3_4L0: MOVDI, OFFSET VA2 ; 判断计时器时间是否合理MOVAL,DICMPAL,02HJBCONT_1JZL7JMPSTTL7: MOVAL,DI+1CMPAL,03HJASTTCONT_1:MOVAL,DI+2CMPAL,06HJBCONT_2JMPSTTCONT_2:JMPCONTSET: MOVDX,0642H; 判断 SET 键是否按下MOVAL,0F7HOUTDX,ALMOVDX,0644HINAL,DXTESTAL,08HJNZSTTJMPSTTKSTT2: CALLTIME;键盘测试MOVAL,00HMOVDX,0642HOUTDX
10、,ALMOVDX,0644HINAL,DXANDAL,18HCMPAL,18HJNZKEYABC2CALLDISPJMPSTT2KEYABC2:MOVDX,0642H; 延时,去抖动INAL,DXANDAL,60HCMPAL,60HJNZSET_0JMPSTT2SET_0: MOVDX,0642H; SET 键放键测试,进入时间设置MOVAL,0F7HOUTDX,ALMOVDX,0644HINAL,DXTESTAL,08HJNZKEY_0JMPSTT3_4KEY_7:TESTAL,10H; 键盘数字键的按键扫描JNZKEY_2CALLKEY7JMPSTTKKEY_2:MOVDX,0642HMO
11、VAL,0EFHOUTDX,ALMOVDX,0644HINAL,DXTESTAL,10HJNZKEY_6CALLKEY2JMPSTTKKEY_6: TESTAL,08HKEY_5JNZCALLKEY4JMPSTTKKEY_1: MOVDX,0642HMOVAL,0DFHOUTDX,ALMOVDX,0644HIN AL,DXTESTAL,08HJNZKEY_5CALLKEY1JMPSTTKKEY_5: TESTAL,40HJNZKEY_0CALLKEY5JMPSTTKKEY_0:MOVDX,0642HMOVAL,0BFHOUTDX,ALMOVDX,0640HIN AL,DXTESTAL,20HJ
12、NZKEY_4CALLKEY0JMPSTTKKEY_4:TESTAL,10HJNZKEY_C1CALLKEY4KEY_C1:JMPSTTKKEY0: CALLLP1MOVAL,00H ;数字键 0 处理程序MOVDI,ALCALLDISP; 显示RET;返回KEY1: CALLLP1MOVAL,01H ;数字键 1 处理程序MOVDI,ALCALLDISPRETKEY2: CALLLP1MOVAL,02H ;数字键 2 处理程序MOVDI,ALCALL DISPRETKEY3:CALLLP1MOVAL,03H ;数字键 3 处理程序MOVDI,ALCALLDISPRETKEY4:CALLLP1MOVAL,04H ;数字键 4 处理程序MOVDI,ALCALLDISPRETKEY5:CALLLP1MOVAL,05H ;数字键 5 处理程序MOVDI,ALCALLDISPRETKEY6:CALLLP1MOVAL,06H ;数字键 6 处理程序MOVDI,ALCALLDISPRETLP1:MOVDI, OFFSET VA2;