资源描述
河北科技大学
《单片机原理及接口技术》
课程设计汇报
学生姓名: 肖轶超 学 号:
专业班级: 物联网工程131
课程名称: 单片机原理和接口技术
年学期: 2 015 —2 0 16 年第一学期
指导老师: 武卫东
2 0 1 6 年 1月
目录
一、设计题目: 3
二、设计目标: 3
三、设计原理及方案: 3
四、实现方法(包含试验电路测试、软件调试等) 7
五、实施结果: 12
六、设计体会: 12
一、设计题目:
数字秒表计时器
二、设计目标:
经过单片机控制数码管模拟数字秒表计时功效。
1.必做要求
能够经过按键对秒表进行“开始”、“暂停”、“继续”、“停止”、“统计”等操作。
2.扩展要求
(1)经过按键可翻查所统计各分项值。
(2)其它功效
三、设计原理及方案:
现在方案中采取了三个中止,外部中止INT0,INT1和定时中止T0。CPU在响应中止时,先处理高级中止,在处理低级中止,若有多个同级中止时,则按自然优先次序处理。比如当CPU正在处理一个中止申请时,有出现了另一个优先级比它高中止请求,这是,CPU就暂停终止对目前优先级较低中止源服务,转去响应优先级比它高中止请求,并为其服务。待服务结束,再继续实施原来较低级中止服务程序。而当CPU为等级高终端服务程序服务时,假如等级低中止发出中止请求,此时CPU是不会响应,所以为了避免开始和暂停两个按键中一个出现没有响应情况,在进行程序编辑时要注意对中止使用,避免出现中止嵌套。,合理分配中止对本设计实现是至关关键。
另外因为数字式电子秒表最小精度位1ms,属于高精度电子秒表。定时器T0定时周期也为1ms,为了使电子秒表暂停键按下后CPU能立即去响应中止程序,必需将暂停外部中止等级高于定时计数器中止等级。避免出现CPU实施完定时溢出中止程序后再响应外部中止程序,影响计时精度。
8051自然优先级次序排列以下:
中止源 最高
外部中止0
定时/计数器0溢出中止
外部中止1
定时/计数器1溢出中止
串行口中止 最低
数字式秒表中两个按键采取了中止实现功效。开始采取外部中止INT0,暂停采取外部中止INT1。另外程序中还用到了定时/计数器0溢出中止进行计时。依据设计要求,暂停外部中止INT1中止等级最高,计时定时/计数器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服务程序实施,开启定时器。另外进行二次存放,将之前进行一次存放数码管显示数据存入最终缓存区,避免下次计时暂停时一次存放将数据掩盖,从而起到保护数据作用。二次存放后就中止返回。
图2.3 外部中止1服务程序步骤图
(3)定时中止服务程序
当定时/计数器T0器溢出后,向CPU发出中止请求信号。CPU跳转到定时中止程序实施,具体步骤图2.4。定时中止程序是一个进位程序,关键负责对1ms加一。1ms位没有满十就跳出中止程序,返回显示程序。当1ms位满十后就对1ms位清零,向10ms位加一,同时检测10ms位是否满十,没有满十就跳出中止程序,返回显示程序。假如满十就向100ms位加一,依次类推,最终达成99.99秒后归零,从零开始再次计时。
定时/计数器T0工作在方法0下,TH0和TL0组成一个13位二进制数计数器。单片机开机或复位时,它值为00H,当T0开启后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从0开始计数到1,再计数一个脉冲时TH0和TL0组成13位计数器将会从13个1变成13个0,并产生溢出,溢出位将被送到TF0标志位,经过溢出标志产生溢出中止请求。显然,T0定时器在方法0下引发一次中止所许可计数最多脉冲个数为213 个。
但假如定时计数器假如每次全部固定从0开始计数,到计满后,再向CPU发出溢出中止请求信号那是毫无意义。为了使定时计数器在要求计数脉冲个数字以后(此时应小于213 个脉冲),向CPU发出溢出中止请求,可采取预先向TH0和TL0中放入一个初值X方法,使计数器以X值为起始值开始计数,即X+1,X+2,……直至计数器计满,从1全变为0。设需要计数脉冲个数为Y,则有:
X+Y=213
在定时方法下:定时时间间隔位t=(213—X)*振荡周期*12
现在本设计要求1ms实现一次中止,选择定时器T0工作在方法0。所以需要依据以上条件计算出T0初值。
设T0初值为X,则
(213—X)*12/12*106 =1*10-3
转换位十六进制数X=7192=0B
即TH0=0E0H(取X高8位)
TL0=18H(取X低5位)
因为定时1ms只是一个理想化时间,其中并没有考虑到中止后单片机实施语句所花时间。即使实施语句所花时间很短只有即微秒,但积少成多,数字秒表一秒中要溢出中止1000次,积累起来误差就能达成毫秒级,这对于精度抵达毫秒级数字电子秒表来说是很大误差。所以要在后期编程时还要将单片机读程序时间考虑进去,
在对定时器赋初值时将单片机需要实施语句所花时间加上,这么就能使数字电子秒表误差达成最小。
四、实现方法(包含试验电路测试、软件调试等)
51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 1
MACRO ASSEMBLER A51 V8.02
OBJECT MODULE PLACED IN main.OBJ
ASSEMBLER INVOKED BY: D:\StudySoftware\Keil\C51\BIN\A51.EXE main.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 ORG 0000H
0000 00 2 LJMP MAIN
000B 3 ORG 000BH
000B 05 4 LJMP IT0P
5
0100 6 ORG 0100H
0100 758160 7 MAIN: MOV SP,#60H
0103 758CEC 8 MOV TH0,#0ECH
0106 758A78 9 MOV TL0,#78H
0109 758800 10 MOV 88H,#00H
010C 758901 11 MOV TMOD,#01H
010F D2A9 12 SETB ET0
0111 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,NEXT
0121 1280E0 20 LCALL DISP
0124 80F5 21 SJMP LOOP
22
0126 128120 23 NEXT: LCALL KBS
0129 B41002 24 CJNE A,#10H,LOOP1
012C 80ED 25 SJMP LOOP
26
012E 128120 27 LOOP1: LCALL KBS
0131 B40A04 28 KBA: CJNE A,#0AH,KBB ;按键A处理是开始暂停
0134 B28C 29 CPL TR0
0136 801D 30 SJMP WAIT
0138 B40B0F 31 KBB: CJNE A,#0BH,KBC ;按键B处理是统计示?
013B A930 32 MOV R1,30H
013D A78C 33 MOV @R1,TH0
013F 0530 34 INC 30H
0141 A930 35 MOV R1,30H
0143 A78A 36 MOV @R1,TL0
0145 0530 37 INC 30H
0147 0C 38 INC R4
0148 800B 39 SJMP WAIT
014A B40CCE 40 KBC: CJNE A,#0CH,LOOP ;按键C处理是重新开始
014D C28C 41 CLR TR0
014F 12 42 LCALL FUNCINIT
0152 753031 43 MOV 30H,#31H
0155 1280E0 44 WAIT: LCALL DISP
0158 128120 45 LCALL KBS
015B B410F7 46 CJNE A,#10H,WAIT
015E 80BB 47 SJMP LOOP
0160 80FE 48 SJMP $
49
0162 757000 50 FUNCINIT:MOV 70H,#00H
0165 757100 51 MOV 71H,#00H
0168 757200 52 MOV 72H,#00H
016B 757300 53 MOV 73H,#00H
016E 757400 54 MOV 74H,#00H
0171 757500 55 MOV 75H,#00H
0174 22 56 RET
A51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 2
57
58
0175 C0E0 59 IT0P: PUSH Acc ;中止程序
0177 7870 60 MOV R0,#70H ;目标:?
卸?0H~75H是否为9,若为9,则进位、清零
0179 7E06 61 MOV R6,#06H ; R0为70H~75H ,
R6 为循环次?
017B DE02 62 LOOPI: DJNZ R6,NEXTI
017D 8008 63 SJMP ENDI
017F B60905 64 NEXTI: CJNE @R0,#09H,ENDI
0182 7600 65 MOV @R0,#00H
0184 08 66 INC R0
0185 80F4 67 SJMP LOOPI
0187 758CEC 68 ENDI: MOV TH0,#0ECH ;使用是方法1,板子上是6MHz晶?
瘢刈霸夭?0ms
018A 758A81 69 MOV TL0,#81H
018D 06 70 INC @R0
018E D0E0 71 POP Acc
0190 32 72 RETI
73
74
80E0 75 ORG 80E0H ;动态扫描子程序
80E0 7975 76 DISP: MOV R1,#75H
80E2 7A20 77 MOV R2,#20H
80E4 EA 78 MOV A,R2
80E5 90E400 79 DISP1: MOV DPTR,#0E400H
80E8 F0 80 MOVX @DPTR,A
80E9 E7 81 MOV A,@R1
80EA 2411 82 ADD A,#11H
80EC 83 83 MOVC A,@A+PC
80ED 90E000 84 DISP2: MOV DPTR,#0E000H
80F0 F0 85 MOVX @DPTR,A
80F1 7B00 86 MOV R3,#00H
80F3 DBFE 87 DJNZ R3,$
80F5 E4 88 CLR A
80F6 F0 89 MOVX @DPTR,A
80F7 19 90 DEC R1
80F8 EA 91 MOV A,R2
80F9 13 92 RRC A
80FA FA 93 MOV R2,A
80FB 50E8 94 JNC DISP1
80FD 22 95 RET
80FE 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,#0DFH
8122 7B06 103 MOV R3,#06H
8124 90E400 104 KB1: MOV DPTR,#0E400H
8127 EA 105 MOV A,R2
8128 F0 106 MOVX @DPTR,A
8129 90E800 107 MOV DPTR,#0E800H
812C E0 108 MOVX A,@DPTR
812D F4 109 CPL A
812E 541F 110 ANL A,#1FH
8130 7006 111 JNZ KB2
8132 EA 112 MOV A,R2
8133 03 113 RR A
8134 FA 114 MOV R2,A
A51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 3
8135 DBED 115 DJNZ R3,KB1
8137 E4 116 CLR A
8138 23 117 KB2: RL A
8139 23 118 RL A
813A 23 119 RL A
813B 4B 120 ORL A,R3
813C FA 121 MOV R2,A
813D 90814D 122 MOV DPTR,#TAB
8140 7B1C 123 MOV R3,#1CH
8142 EB 124 KB3: MOV A,R3
8143 93 125 MOVC A,@A+DPTR
8144 B50202 126 CJNE A,02H,KB4
8147 EB 127 MOV A,R3
8148 22 128 RET
8149 DBF7 129 KB4: DJNZ R3,KB3
814B EB 130 MOV A,R3
814C 22 131 RET
814D 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,0CH,0BH,0AH,09H;
8169 09
136 END
A51 MACRO ASSEMBLER MAIN 01/05/ 10:17:09 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
DISP . . . . . . . C ADDR 80E0H A
DISP1. . . . . . . C ADDR 80E5H A
DISP2. . . . . . . C ADDR 80EDH A
EA . . . . . . . . B ADDR 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. . . . . . . . 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. . . . . . . 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 COMPLETE. 0 WARNING(S), 0 ERROR(S)
五、实施结果:
按下矩阵键盘A键,开始计时。每次按下矩阵键盘B键,统计一次当下时间,按下矩阵键盘C键,数字秒表清零。
六、设计体会:
做了一周课程设计,让人感受颇深,有相关单片机知识,但更多是团体和合作。
我们小组一共3个人,人多,分工就显得很关键,在我们集体讨论之下,我得到了设计硬件电路和总体调试任务,当初让我感到很有压力。因为我们平时接触全部是纯粹理论东西,做试验也是雾里看花,对硬件认识是很缺乏。
经过7天努力,我们小组最终完成了单片机课程设计。我认为作为一名物联网专业学生,单片机课程设计是很有意义。更关键是怎样把自己平时所学东西应用到实际中。即使自己对于这门课懂并不多,很多基础东西全部还没有很好掌握,认为极难,也没有很有效措施经过本身去了解,不过靠着这一个多礼拜“学习”,在小组同学帮助和讲解下,逐步对这门课逐步产生了些许爱好,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大。
我认为课程设计反应是一个从理论到实际应用过程,不过更远一点能够联络到以后毕业以后从学校转到踏上社会一个过程。小组人员配合﹑相处,和本身动脑和努力,全部是以后工作中需要。
所以我认为这次课程设计意义很深,和其它3位同学共同学习﹑配合﹑努力过程也很愉快,另外还要感谢老师耐心教导。
很感谢学校和老师给我们安排了这次课程设计,让我真正感受到是合作关键,很多时候全部是组员讨论,老师指导中一句半句启发了我,就出现让人欣喜结果;理论知识一样很关键,有些问题全部是因为基础知识掌握不好才出现。
课程设计成绩评定表
学生姓名
肖轶超
学 号
成绩
专业班级
物联网工程131
起止时间
11月23日——-11-27
设计题目
数字秒表计时器
验
收
内
容
课程设计小组验收结果:
硬件设计:优异□ 良好□ 中等□ 及格□ 需努力□
程序设计:优异□ 良好□ 中等□ 及格□ 需努力□
试验结果:优异□ 良好□ 中等□ 及格□ 需努力□
课程设计个人验收结果:
操作能力:优异□ 良好□ 中等□ 及格□ 需努力□
软件能力:优异□ 良好□ 中等□ 及格□ 需努力□
硬件能力:优异□ 良好□ 中等□ 及格□ 需努力□
指导老师:
年 月 日
展开阅读全文