单片机电子钟实训报告
XXXXXXXX⼤学XXXXX学院《单⽚机》实训报告专业班级学号姓名组号实验室成绩评定⽼师签名
20XX年XX⽉XX⽇实训⽬的:
掌握汇编语⾔程序设计和调试⽅法,熟悉键盘操作。掌握RAM中的数据操作。掌握程序设计⽅法。掌握简单的数值转换算法。了解单⽚机的结构,能利⽤单⽚机的内部硬件资源和外围常⽤器件进⾏⼩型实验,体会利⽤单⽚机汇编语⾔开发系统的⼯作过程,达到与毕业后实际⼯作情况⼀致的效果,彻底完成与毕业后实际⼯作环境“接轨”的⽬的实训任务:
1、选定题⽬:设计⼀个电⼦时钟,格式为:XX XX XX由左向右分别为时、
分、秒,利⽤单⽚机的定时器和外围的数码显⽰电路,以便可以进⼀步掌握定时器的使⽤和编程⽅法,进⼀步掌握中断服务程序的编程⽅法,进⼀步掌握数码显⽰电路的编程⽅法;
2、理清思路,定时器每100uS中断⼀次,对中断次数进⾏计数,100uS计数
10000次就是1S,然后对秒计数得到分和⼩时值,画出主程序框图,画出定时中断服务程序的框图,从⽽领会中断服务程序的原理,并着⼿编写该⼦程序;
3、学会⽤伟福软件调试程序,并⽤该软件菜单的各项调试⼯具和窗⼝;结合硬件和软件,进⾏整体调试;数据转化为BCD码并显⽰程序流程图4、流程图:(⾃⼰弄)实训要求:1、实训要求
①通过系统设计和调试实训等,要求获得单⽚机熟练的操作维护技能,领会单⽚机开发的整个过程;
②实训结束后,每⼈写出实训报告,通过⽂字⽅式总结出本门课程全部的所学、所得,以此达⾄加深巩固、提⾼的⽬的;
③实训中处理各种软、硬件故障,特别要求学⽣具有良好的⼼理素质和吃苦耐劳精神,因此,本实训对培养学⽣正确的劳动观念、组织纪律性、团队合作精神和严谨的科学作风起到了⾄关重要的作⽤。2、实训报告
在实训过程中完成各实训任务的同时,写1份实训报告,即实训⼼得体会(要求⼿写)。⼀、硬件部分
AT89C51芯⽚ 7SEG-MPX8-CC-BLUE共阴极数码管
试验⼀1、设计要求:
①⽤AT89C51芯⽚、7SEG-MPX8-CC-BLUE共阴极数码管完成动态扫描②7SEG-MPX8-CC-BLUE共阴极数码管中显⽰的数字依次为76543210
2、硬件连接:确定连接⽅式,AT89C51的P1接7SEG-MPX8-CC-BLUE共阴极数码管的显⽰数据,P2接⽚选3、硬件电路:
4、汇编语⾔:
5、调试过程:
在调试过程中出现⼀些问题,⽐如数码管⽆法正常显⽰数字,有的显⽰正确了,有的⽆法显⽰。这就要查看编写的汇编语⾔了。汇编语⾔要注意:①关闭所有数码管;②送显⽰数据;③送⽚选;④调⽤延时。在调试过程中要注意查表指令的准确应⽤不然就造成数码管跳乱码的情况、没⽤关闭数码管指令⽽出现阴影。6、显⽰结果
实验⼆1、要求
7SEG-MPX8-CC-BLUE数码管中显⽰的数字依次为76-43-10 2、显⽰结果
3、调试过程:将程序⾥的
改为
因为是要让数码管g亮,g的⼆进制时01000000B转换成16进制就是40H,其他的程序不变。实验三1、要求
7SEG-MPX8-CC-BLUE共阴极数码管中显⽰的数字依次为43-59-212、显⽰结果
3、调试过程
在程序⾥先装⼊初值,再关闭所有数码管,送显⽰数据,送⽚选,调⽤延时。在送显⽰数据的时候要注意与装⼊的初值要⼀⼀对应。数码管不能正常的显⽰43-59-21就是因为在送显⽰数据的时候发⽣了错误。
实验四1、要求
①7SEG-MPX8-CC-BLUE数码管中显⽰的数字依次为72-81-67②除法指令分离数字的显⽰2、显⽰结果
3、汇编语⾔
4、调试过程
在原来的程序前⾯加⼀段程序:
ORG 0000H MOV R0,#67 MOV R1,#81 MOV R2,#72 MOV A,R0 MOV B,#10 DIV ABMOV 40H,B MOV 41H,AMOV A,R1 MOV B,#10 DIV ABMOV 42H,B MOV 43H,AMOV A,R2MOV B,#10DIV ABMOV 44H,BMOV 45H,A
但是在调试过程中还是出现了错误,数码管中的“6”不能显⽰,检查之后才知道是程序⾥的送显⽰数据的地⽅出现了错误,我写成40H,应该时41H.改过之后就正常显⽰了。试验五1、要求
①⽤中断⽅式实现电⼦时钟电路,23-59-50⽅式,由左向右分别为时、分、秒
②当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,⼩时计数器按“23翻0”规律计数。时、分、秒的计数结果经过数据处理可直接送显⽰器显⽰。2、硬件电路
3、汇编语⾔:
4、调试过程:在仿真的时候,数码管不显⽰数字,在检查汇编程序的时候才发现是在⾃动清零处出现了错误,只对秒清零⽽没有对分和时清零。改过之后数码管还是显⽰数字但是不跳动,⼀直保持23-59-50。检查程序觉得主程序、开启中断、设置TMOD、装⼊初值、启动T0都没有错,到后来才知道是和延时⼦程序⾥的R0、R1重复了,就把R0改为51H,R1改为51H,改了之后数码管就正常显⽰并且跳转了。T0: MOV TH0,#0B1HMOV TL0,#0E0HDJNZ R4,KKMOV R4,#50INC R0
CJNE R0,#60,KKMOV R0,#0INC R1
CJNE R1,#60,KKMOV R1,#0INC R2
CJNE R2,#24,KKMOV R2,#0KK: RETI⼆、⼼得体会
⼀周的实训到今天就结束了,经过⼀周的实训让我对以前不懂的知识,不能运⽤的知识都得到了很⼤的提⾼。
在这⼀周中,彭⽼师耐⼼的给我讲解,由浅⼊深,让我们⾃⼰动⼿,⾃⼰编写程序,⽽不是像以前上课⼀样照本宣科,对程序⼀点都不了解,也不知道它这程序是怎样来的,有什么作⽤,根本就是⼀窍不通。
⽽现在我们学会了编写⼀些简单的程序。在实训过程中我们的仿真经常出现不能正常显⽰我们所想的数字,我们就得检查时哪⼀个程序出现了问题,是主程序,还是延时⼦程序,还是在汇编过程中有的符号出现了错误……
现在知道P0⼝⼀般很少⽤,如果要⽤就要接上拉电阻。通过这次实训知道我们不管在什么情况下都有耐⼼,⽐如在做电⼦时钟的时候出现显⽰不跳转,就要耐⼼的检查,越⼼急越不能解决问题,不是说⼼急吃不了热⾖腐吗?我像就是这个理⼉了。同时也要细⼼,在汇编的时候我把“#”给忘了,最后数码管什么都不显⽰。汇编是⼀个要很细⼼和耐⼼的过程,⼀个符号就能让你的程序出错。在这次实训中我学会了对中断程序的运⽤,在上课的时候杨⽼师讲中断的时候,脑⼦⾥就是模糊的,不知道怎么运⽤,在单⽚机⾥中断程序经常都会⽤到。
通过这次使我对汇编语⾔有了更进⼀步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不⾜之处。对汇编语⾔的⼀些标准库函数不太了解,还有对函数调⽤的正确使⽤不够熟悉,还有对
汇编语⾔中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习汇编语⾔,还是其它的语⾔,以及其它的计算机⽅⾯的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使⾃⼰便好地学好计算机。
按键部分虽然没有做出来,但是我还是明⽩了⼀些,⾸先要判断有没有按键按下通过“JB P1.X标号”或者“JNB P1.X 标号”来判断。然后判断由⼏个按键
按下,如果只有⼀个按键被按下,判断是哪⼀个按键被按下并产⽣键盘码。
这次实训让我对单⽚机产⽣了很厚的兴趣,看着⾃⼰的程序由出现错误,慢慢调试,再出错误,再改,最后到成功。体会到汇编⼀个完整程序的乐趣,也体会⼤51单⽚机的功能有多⼤,其实⽣活中的很多东西也没有这么神奇的。
最后谢谢彭⽼师这样耐⼼的给我们每⼀位同学指导。给我们讲解这么多的知识,让我们对单⽚机重新燃烧起浓厚的兴趣。每天给我们讲得嗓⼦都受不了了,⾟苦您了,彭⽼师,谢谢您!
因篇幅问题不能全部显示,请点此查看更多更全内容