1、河北科技大学单片机原理及接口技术课程设计汇报学生姓名: 肖轶超 学 号: 专业班级: 物联网工程131 课程名称: 单片机原理和接口技术 年学期: 2 015 2 0 16 年第一学期 指导老师: 武卫东 2 0 1 6 年 1月目录一、设计题目:3二、设计目标:3三、设计原理及方案:3四、实现方法(包含试验电路测试、软件调试等)7五、实施结果:12六、设计体会:12一、设计题目:数字秒表计时器二、设计目标:经过单片机控制数码管模拟数字秒表计时功效。1必做要求能够经过按键对秒表进行“开始”、“暂停”、“继续”、“停止”、“统计”等操作。2扩展要求(1)经过按键可翻查所统计各分项值。(2)其它功
2、效三、设计原理及方案:现在方案中采取了三个中止,外部中止INT0,INT1和定时中止T0。CPU在响应中止时,先处理高级中止,在处理低级中止,若有多个同级中止时,则按自然优先次序处理。比如当CPU正在处理一个中止申请时,有出现了另一个优先级比它高中止请求,这是,CPU就暂停终止对目前优先级较低中止源服务,转去响应优先级比它高中止请求,并为其服务。待服务结束,再继续实施原来较低级中止服务程序。而当CPU为等级高终端服务程序服务时,假如等级低中止发出中止请求,此时CPU是不会响应,所以为了避免开始和暂停两个按键中一个出现没有响应情况,在进行程序编辑时要注意对中止使用,避免出现中止嵌套。,合理分配中
3、止对本设计实现是至关关键。另外因为数字式电子秒表最小精度位1ms,属于高精度电子秒表。定时器T0定时周期也为1ms,为了使电子秒表暂停键按下后CPU能立即去响应中止程序,必需将暂停外部中止等级高于定时计数器中止等级。避免出现CPU实施完定时溢出中止程序后再响应外部中止程序,影响计时精度。8051自然优先级次序排列以下:中止源 最高外部中止0定时/计数器0溢出中止外部中止1定时/计数器1溢出中止串行口中止 最低数字式秒表中两个按键采取了中止实现功效。开始采取外部中止INT0,暂停采取外部中止INT1。另外程序中还用到了定时/计数器0溢出中止进行计时。依据设计要求,暂停外部中止INT1中止等级最高
4、,计时定时/计数器0溢出中止次之,开始外部中止INT0等级最低。(1)外部中止0服务程序:外部中止0服务程序结合外部P3.2停止键实现数字电子秒表停止功效,具体步骤图图2.2。当按下P3.2停止键按下向CPU发出外部中止请求,CPU转向外部中止0服务程序实施,停止定时器。另外将目前显示时间进行一次存放,存进中间寄存区。最终中止返回。图2.2 外部中止0服务程序步骤图(2)外部中止1服务程序外部中止1服务程序结合外部P3.3停止键实现数字电子秒表开启功效,具体步骤图图2.2。当按下P3.3开启键按下向CPU发出外部中止请求,CPU转向外部中止1服务程序实施,开启定时器。另外进行二次存放,将之前进
5、行一次存放数码管显示数据存入最终缓存区,避免下次计时暂停时一次存放将数据掩盖,从而起到保护数据作用。二次存放后就中止返回。图2.3 外部中止1服务程序步骤图(3)定时中止服务程序当定时/计数器T0器溢出后,向CPU发出中止请求信号。CPU跳转到定时中止程序实施,具体步骤图2.4。定时中止程序是一个进位程序,关键负责对1ms加一。1ms位没有满十就跳出中止程序,返回显示程序。当1ms位满十后就对1ms位清零,向10ms位加一,同时检测10ms位是否满十,没有满十就跳出中止程序,返回显示程序。假如满十就向100ms位加一,依次类推,最终达成99.99秒后归零,从零开始再次计时。定时/计数器T0工作
6、在方法0下,TH0和TL0组成一个13位二进制数计数器。单片机开机或复位时,它值为00H,当T0开启后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从0开始计数到1,再计数一个脉冲时TH0和TL0组成13位计数器将会从13个1变成13个0,并产生溢出,溢出位将被送到TF0标志位,经过溢出标志产生溢出中止请求。显然,T0定时器在方法0下引发一次中止所许可计数最多脉冲个数为213 个。但假如定时计数器假如每次全部固定从0开始计数,到计满后,再向CPU发出溢出中止请求信号那是毫无意义。为了使定时计数器在要求计数脉冲个数字以后(此时应小于213 个脉冲),向CPU发出溢出中止请求,可采取预先向T
7、H0和TL0中放入一个初值X方法,使计数器以X值为起始值开始计数,即X+1,X+2,直至计数器计满,从1全变为0。设需要计数脉冲个数为Y,则有:X+Y=213 在定时方法下:定时时间间隔位t=(213X)*振荡周期*12现在本设计要求1ms实现一次中止,选择定时器T0工作在方法0。所以需要依据以上条件计算出T0初值。设T0初值为X,则 (213X)*12/12*106 =1*10-3 转换位十六进制数X=7192=0B即TH0=0E0H(取X高8位)TL0=18H(取X低5位)因为定时1ms只是一个理想化时间,其中并没有考虑到中止后单片机实施语句所花时间。即使实施语句所花时间很短只有即微秒,但
8、积少成多,数字秒表一秒中要溢出中止1000次,积累起来误差就能达成毫秒级,这对于精度抵达毫秒级数字电子秒表来说是很大误差。所以要在后期编程时还要将单片机读程序时间考虑进去,在对定时器赋初值时将单片机需要实施语句所花时间加上,这么就能使数字电子秒表误差达成最小。四、实现方法(包含试验电路测试、软件调试等)51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 1MACRO ASSEMBLER A51 V8.02OBJECT MODULE PLACED IN main.OBJASSEMBLER INVOKED BY: D:StudySoftwareKeilC51B
9、INA51.EXE main.ASM SET(SMALL) DEBUG EPLOC OBJ LINE SOURCE0000 1 ORG 0000H0000 00 2 LJMP MAIN000B 3 ORG 000BH000B 05 4 LJMP IT0P 5 0100 6 ORG 0100H0100 758160 7 MAIN: MOV SP,#60H0103 758CEC 8 MOV TH0,#0ECH0106 758A78 9 MOV TL0,#78H0109 758800 10 MOV 88H,#00H010C 758901 11 MOV TMOD,#01H010F D2A9 12 SE
10、TB ET00111 D2AF 13 SETB EA ;中止初始化0113 12 14 LCALL FUNCINIT ;初始化事牍?0116 7C00 15 MOV R4,#00H ;存放统计 个?0118 753031 16 MOV 30H,#31H ;存放统计示? 17 011B 128120 18 LOOP: LCALL KBS ;主程序:不停扫描键 盘和动态更新事牍?011E B41005 19 CJNE A,#10H,NEXT0121 1280E0 20 LCALL DISP0124 80F5 21 SJMP LOOP 22 0126 128120 23 NEXT: LCALL KB
11、S0129 B41002 24 CJNE A,#10H,LOOP1012C 80ED 25 SJMP LOOP 26 012E 128120 27 LOOP1: LCALL KBS0131 B40A04 28 KBA: CJNE A,#0AH,KBB ;按键A处理是开始暂停0134 B28C 29 CPL TR00136 801D 30 SJMP WAIT0138 B40B0F 31 KBB: CJNE A,#0BH,KBC ;按键B处理是统计示?013B A930 32 MOV R1,30H 013D A78C 33 MOV R1,TH0013F 0530 34 INC 30H0141 A9
12、30 35 MOV R1,30H0143 A78A 36 MOV R1,TL00145 0530 37 INC 30H0147 0C 38 INC R40148 800B 39 SJMP WAIT014A B40CCE 40 KBC: CJNE A,#0CH,LOOP ;按键C处理是重新开始014D C28C 41 CLR TR0014F 12 42 LCALL FUNCINIT0152 753031 43 MOV 30H,#31H0155 1280E0 44 WAIT: LCALL DISP0158 128120 45 LCALL KBS015B B410F7 46 CJNE A,#10H,
13、WAIT015E 80BB 47 SJMP LOOP0160 80FE 48 SJMP $ 49 0162 757000 50 FUNCINIT:MOV 70H,#00H0165 757100 51 MOV 71H,#00H0168 757200 52 MOV 72H,#00H016B 757300 53 MOV 73H,#00H016E 757400 54 MOV 74H,#00H0171 757500 55 MOV 75H,#00H0174 22 56 RETA51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 2 57 58 0175 C0E0 59
14、 IT0P: PUSH Acc ;中止程序0177 7870 60 MOV R0,#70H ;目标:? 卸?0H75H是否为9,若为9,则进位、清零0179 7E06 61 MOV R6,#06H ; R0为70H75H , R6 为循环次?017B DE02 62 LOOPI: DJNZ R6,NEXTI 017D 8008 63 SJMP ENDI017F B60905 64 NEXTI: CJNE R0,#09H,ENDI0182 7600 65 MOV R0,#00H0184 08 66 INC R00185 80F4 67 SJMP LOOPI0187 758CEC 68 ENDI:
15、 MOV TH0,#0ECH ;使用是方法1,板子上是6MHz晶? 瘢刈霸夭?0ms018A 758A81 69 MOV TL0,#81H018D 06 70 INC R0018E D0E0 71 POP Acc0190 32 72 RETI 73 74 80E0 75 ORG 80E0H ;动态扫描子程序80E0 7975 76 DISP: MOV R1,#75H80E2 7A20 77 MOV R2,#20H80E4 EA 78 MOV A,R280E5 90E400 79 DISP1: MOV DPTR,#0E400H80E8 F0 80 MOVX DPTR,A80E9 E7 81 MO
16、V A,R180EA 2411 82 ADD A,#11H80EC 83 83 MOVC A,A+PC80ED 90E000 84 DISP2: MOV DPTR,#0E000H80F0 F0 85 MOVX DPTR,A80F1 7B00 86 MOV R3,#00H80F3 DBFE 87 DJNZ R3,$80F5 E4 88 CLR A80F6 F0 89 MOVX DPTR,A80F7 19 90 DEC R180F8 EA 91 MOV A,R280F9 13 92 RRC A80FA FA 93 MOV R2,A80FB 50E8 94 JNC DISP180FD 22 95 R
17、ET80FE 3F065B4F 96 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;8102 666D7D07 8106 7F6F7C39 97 DB 7FH,6FH,7CH,39H,5EH,79H,71H;810A 5E7971 810D 00764073 98 DB 00H,76H,40H,73H,3EH,3DH,5CH,38H,50H;8111 3E3D5C38 8115 50 99 100 8120 101 ORG 8120H ;矩阵键盘扫描子程? ?8120 7ADF 102 KBS: MOV R2,#0DFH8122 7B06 103 MOV R3,#06H
18、8124 90E400 104 KB1: MOV DPTR,#0E400H8127 EA 105 MOV A,R28128 F0 106 MOVX DPTR,A8129 90E800 107 MOV DPTR,#0E800H812C E0 108 MOVX A,DPTR812D F4 109 CPL A812E 541F 110 ANL A,#1FH8130 7006 111 JNZ KB28132 EA 112 MOV A,R28133 03 113 RR A8134 FA 114 MOV R2,AA51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 3
19、8135 DBED 115 DJNZ R3,KB18137 E4 116 CLR A8138 23 117 KB2: RL A8139 23 118 RL A813A 23 119 RL A813B 4B 120 ORL A,R3813C FA 121 MOV R2,A813D 90814D 122 MOV DPTR,#TAB8140 7B1C 123 MOV R3,#1CH8142 EB 124 KB3: MOV A,R38143 93 125 MOVC A,A+DPTR8144 B50202 126 CJNE A,02H,KB48147 EB 127 MOV A,R38148 22 128
20、 RET8149 DBF7 129 KB4: DJNZ R3,KB3814B EB 130 MOV A,R3814C 22 131 RET814D 81824222 132 TAB: DB 81H,82H,42H,22H,83H,43H,23H,84H;8151 83432384 8155 44241413 133 DB 44H,24H,14H,13H,12H,11H,21H,41H;8159 12112141 815D 00854525 134 DB 00H,85H,45H,25H,15H,86H,46H,26H;8161 15864626 8165 160C0B0A 135 DB 16H,
21、0CH,0BH,0AH,09H; 8169 09 136 ENDA51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 4SYMBOL TABLE LISTING- - -N A M E T Y P E V A L U E ATTRIBUTESACC. . . . . . . . D ADDR 00E0H A DISP . . . . . . . C ADDR 80E0H A DISP1. . . . . . . C ADDR 80E5H A DISP2. . . . . . . C ADDR 80EDH A EA . . . . . . . . B ADD
22、R 00A8H.7 A ENDI . . . . . . . C ADDR 0187H A ET0. . . . . . . . B ADDR 00A8H.1 A FUNCINIT . . . . . C ADDR 0162H A IT0P . . . . . . . C ADDR 0175H A KB1. . . . . . . . C ADDR 8124H A KB2. . . . . . . . C ADDR 8138H A KB3. . . . . . . . C ADDR 8142H A KB4. . . . . . . . C ADDR 8149H A KBA. . . . . .
23、 . . C ADDR 0131H A KBB. . . . . . . . C ADDR 0138H A KBC. . . . . . . . C ADDR 014AH A KBS. . . . . . . . C ADDR 8120H A LOOP . . . . . . . C ADDR 011BH A LOOP1. . . . . . . C ADDR 012EH A LOOPI. . . . . . . C ADDR 017BH A MAIN . . . . . . . C ADDR 0100H A NEXT . . . . . . . C ADDR 0126H A NEXTI. .
24、 . . . . . C ADDR 017FH A SP . . . . . . . . D ADDR 0081H A TAB. . . . . . . . C ADDR 814DH A TH0. . . . . . . . D ADDR 008CH A TL0. . . . . . . . D ADDR 008AH A TMOD . . . . . . . D ADDR 0089H A TR0. . . . . . . . B ADDR 0088H.4 A WAIT . . . . . . . C ADDR 0155H A REGISTER BANK(S) USED: 0 ASSEMBLY
25、COMPLETE. 0 WARNING(S), 0 ERROR(S)五、实施结果:按下矩阵键盘A键,开始计时。每次按下矩阵键盘B键,统计一次当下时间,按下矩阵键盘C键,数字秒表清零。六、设计体会:做了一周课程设计,让人感受颇深,有相关单片机知识,但更多是团体和合作。我们小组一共3个人,人多,分工就显得很关键,在我们集体讨论之下,我得到了设计硬件电路和总体调试任务,当初让我感到很有压力。因为我们平时接触全部是纯粹理论东西,做试验也是雾里看花,对硬件认识是很缺乏。经过7天努力,我们小组最终完成了单片机课程设计。我认为作为一名物联网专业学生,单片机课程设计是很有意义。更关键是怎样把自己平时所学东西应
26、用到实际中。即使自己对于这门课懂并不多,很多基础东西全部还没有很好掌握,认为极难,也没有很有效措施经过本身去了解,不过靠着这一个多礼拜“学习”,在小组同学帮助和讲解下,逐步对这门课逐步产生了些许爱好,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大。我认为课程设计反应是一个从理论到实际应用过程,不过更远一点能够联络到以后毕业以后从学校转到踏上社会一个过程。小组人员配合相处,和本身动脑和努力,全部是以后工作中需要。所以我认为这次课程设计意义很深,和其它3位同学共同学习配合努力过程也很愉快,另外还要感谢老师耐心教导。 很感谢学校和老师给我们安排了这次课程设计,让我真正感受到是合作关键,很多时候全部是组员讨论,老师指导中一句半句启发了我,就出现让人欣喜结果;理论知识一样很关键,有些问题全部是因为基础知识掌握不好才出现。课程设计成绩评定表学生姓名肖轶超学 号成绩专业班级物联网工程131起止时间11月23日-11-27设计题目数字秒表计时器验收内容课程设计小组验收结果:硬件设计:优异良好中等及格需努力程序设计:优异良好中等及格需努力试验结果:优异良好中等及格需努力课程设计个人验收结果:操作能力:优异良好中等及格需努力软件能力:优异良好中等及格需努力硬件能力:优异良好中等及格需努力指导老师: 年 月 日