单片机工艺实训总结(精选6篇)
专业:应用电子技术 班级:学号: 姓名:实 训 室: 日期: 至止 指导教师:
2011年12月日05
说明
1. 实训结束之前,每个学生都必须认真撰写《实训总结报告》。通过撰写实训总结报告,系统地回顾和总结实训的全过程,将实践性教学的感性认识升华到一定的理论高度,从而提高实训教学效果。
实训总结报告要求条理清晰,内容详尽,数据准确。字数不少于2000字。
实训总结报告的质量反映了实训的质量,它是实训成绩评定的主要依据之一。应在实训结束后两周内将此报告上交学院教学办公室。不交实训报告者不得参加实训成绩评定。
封面中的“实训室”必须写全名,必须写上指导教师姓名。
“前言”部分: “实训背景”可简介实训目的、通过何种方式到此单位实训等内容;“实训环境”可包括实训室全称(中英文)、地址、规模、简介等内容。
“实训内容”部分:属报告的主要部分。“实训过程”概述实训各阶段所从事的主要工作等;“实训内容”包括项目介绍、本人从事的工作、软硬件平台和技术等;“实训成果”应具体列出自己所完成的主要成果及实际应用情况等。
“总结”部分:其中“其它意见”可对学院课程设置、教学内容、实训安排等方面提出自己的意见或建议,也可对实训单位的各个方面提出自己的意见。2. 3. 4. 5. 6. 7.
目 录
1.1
1.2 前言..............4实训背景.......................4实训环境.......................4 2
2.1
2.2
2.3 实训内容..........5实训过程.......................5实训内容.......................5主要成果.......................5 3
3.1
3.2 总结..............6实训体会.......................6其它意见.......................6前言
1.1实训背景
通过实训,掌握单片机内部硬件结构、工作原理,掌握程序的设计基本方法;掌握单片机的接口技术,熟悉常用的外围接口芯片及典型电路。熟悉设计、调试单片机的应用系统的一般方法,具有初步的软、硬件设计能力。
1.2实训环境
利用keil uVision软件写程序,并用stc-isp下载软件中下载到铁牛单片机中,上电运行和检查。实训内容
2.1实训过程
1)先将单片机上电,用USB接口的数据线将这块单片机板与PC机连接;
2)装单片机驱动,对“我的电脑”右键,选择“属性”,在“设备管理器”里的“端口”处识别该单片机的接口,如:(COM5);
3)识别完后运行spc-isp,选择端口类型(COM5),然后将流水灯、蜂鸣器、继电
器、数码管静态显示、矩阵键盘等程序下载到单片机里,下载一个检测一个,看这块单片机是否有哪里故障;
4)逐个检测无故障后,在运行keil uVision2编写程序,便写完后检测看有没有
错误,确认无误后将这个程序下载到单片机上,得出最后的结果,即在数码显示管上显示从0-9这些数字。
2.2实训内容
1)将流水灯、蜂鸣器、继电器、数码管静态显示、矩阵键盘的程序下载到单片机并观察单
片机的显示方式;
2)利用proteus画图,利用Reli编写C语言程序,使用单片机的25个IO口,连接
发光管,组成5X5的矩阵显示屏,在屏幕上显示0到7这八个数字.2.3主要成果
完成对矩阵键盘电路、串口通信电路、数码管显示电路、蜂鸣器电路、继电器电路等程序在单片机的运行。总结
3.1实训体会
通过这一周的实训,对单片机加深了了解。对编写程序有一定进步,在理解单片机端口功能的前提下,才能写出正确的程序。在实训的期间是很有趣的,当出现一个很难攻破的程序时,就觉得很想去挑战它。当找到一点突破口时,自己从心底感觉到喜悦,当成果出来时,很有成就感。
对于这为期一周的实训,是很快乐的。对单片机的兴趣越发的浓厚,希望下次还有机会参加这样的实训,实训的时间能更长点。
3.2其它意见
1)合理的安排时间。
学院:科信学院专业班级:计算机科学与技术1221班姓名:李艳芳学号:120212127
我自从四月二十一日来到电子工艺实训基地进行为期两周的实训后,无论是在思想上还是学习上,或者说在生活上的收获都是颇多的,这次实践真的让自己受益匪浅呢。
刚开始时,老师给我们举例阐述了工艺的重要性和应用的广泛性,让我们了解了实训的本质在于“工艺”;继而强调实训的安全性,以“安全第一”为前提完成全部实训内容。在开始的一周里,我们都是在练习怎样去使用电烙铁去焊接各种元器件并熟练的掌握其焊接技巧,我们应该尽量减少虚焊,避免漏焊等情况的发生,是为了更好的做第二周的的充电器和收音机等产品奠定了一定的焊接基础。电烙铁这东西相对于自己来说并不是第一次接触,曾在打暑假工时,在电子厂里接触过用电烙铁来焊接电路板,真的是件很神奇的事呢。所以说这次实训能再次接触到电烙铁,我真的很珍惜并认真对待这次实训。从已焊接完成的导线板的拆卸到重新焊接导线板的过程中我体会到了要想完美的完成一件事,必须要有耐心且不惧怕失败的毅力,就像是剥导线一样需要耐心与细节,你才能真正完成了“工艺”的一部分;从练习立方体的焊接和多元物件的焊接中,我明白了给有些元器件镀锌的重要性,这能让元器件更好的焊接牢固;从电阻板的焊接中,我学到了电阻元器件是要立在焊接板上进行焊接的„„所有的焊接都需要注意在焊接时把焊盘铺满,在焊接完成后,仔细检查焊点是否都已真正焊住并在焊接面把元器件过长的边线裁至焊点边缘,/ 3
以免引起可能性短路而使元器件不能正常性工作。
在第二周开始前,我们认真阅读充电器原理说明书为接下来的工作做了提前预习,在课上认真看老师播放的视频和老师详细的注意事项讲解。在发下来的电路板和元件中,先按说明书上对照材料附录检查自己所需的材料是否齐全,在按照老师所说的,自己看书开始把元器件插装到电路板上进行焊接,最后要注意要进行测试后再组装。在做充电器的过程中,我们学会了怎样利用色环来计算电阻值的大小和学会了一些辨认元器件的正负极的方法,例如:利用万用表来测试或观察元器件引线的长短来判断。
在收音机的制作过程中有一部分元器件的焊接是采用贴焊的工艺这是与充电器的制作过程中的焊接是不一样的,其他部分的焊接,安装的注意事项都和充电器的制作大同小异,按照原理说明书来进行,最后都是先进行测试在组装。在这个过程中,我懂得了在贴焊时要静下心来去把每一个元器件对相应的照图纸准确无误的放到电路板上它该放的位子,这个真的很重要,会直接影响到自己的收音机最后会不会响的情况。所以说,我们要注重每一个细节,把握好各个过程的准确率,这将是我们提高工作效率的不错方法。
在实训的过程中,老师幽默又不失严谨的讲课方式和做事坚持自己的原则的性格都让我留下了深刻的影响,特别是那句“打死你”真的很有幽默感和震慑力;在期间,由于党课与实训的冲击,有一次迟到了,和有时导员找我们班干有事给老师您造成了困扰,真的很抱歉!与此同时谢谢老师您的谅解和包容。
报告人:
学 号:
专 业:
班 级:_________ 时 间:
一、实训内容
1、电机拆装实训
2、定子嵌线实训
二、异步电动机的结构特点
1、定子部分
定子部分主要由定子铁心、定子绕组、机座三部分组成。
(1)异步电动机定子铁心是电动机磁路的一部分,由0.35mm~0.5mm厚表面涂有绝缘漆的薄硅钢片叠压而成,由于硅钢片较薄而且片与片之间是绝缘的,所以减少了由于交变磁通通过而引起的铁心涡流损耗。铁心内圆有均匀分布的槽口,用来嵌放定子绕圈。
(2)定子绕组是三相电动机的电路部分,三相电动机有三相绕组,通入三相对称电流时,就会产生旋转磁场。三相绕组由三个彼此独立的绕组组成,且每个绕组又由若干线圈连接而成。每个绕组即为一相,每个绕组在空间相差120°电角度。线圈由绝缘铜导线或绝缘铝导线绕制。中、小型三相电动机多采用圆漆包线,大、中型三相电动机的定子线圈则用较大截面的绝缘扁铜线或扁铝线绕制后,再按一定规律嵌入定子铁心槽内。定子三相绕组的六个出线端都引至接线盒上,首端分别标为U1, V1, W1,末端分别标为U2, V2, W2。
2、转子部分
(1)转子铁心 主磁路的一部分,在转子铁心的外圆上开有槽,以放置或浇注转子绕组,由硅钢片叠装而成。
(2)转子绕组
鼠笼式转子绕组:在转子铁心的每一个槽中各插有一根裸铜导条,在转子铁心两端用两个端环将全部导条短接起来。中小型异步电动机还常用铸铝型转子。
绕线式转子绕组:转子铁芯槽中,嵌放着三相对称绕组,其极数和定子绕组相同。一般采用星形接法。绕组的三个出线端分别接到固定在转轴上的三个滑环上,再通过电刷引出。
三、拆装工艺过程
电机拆装实训先后进行B3和B5两种安装形式电机的拆解和装配。B3安装形式电机有两个端盖式轴承,有底脚和轴伸,借底脚安装在基础构件上。B5安装形式电机也有两个端盖式轴承,无底脚,传动端端盖上凸缘,有轴伸,借凸缘安装在基础构建上。B3和B5两种安装形式电机虽然外观有一定的差别,但其内部构造基本相同,拆解和装配方法和顺序在这次拆装实训中是相同的。
检查风扇外罩是否有损伤,然后拧下外罩螺丝,将外罩放置好,在以下的拆装中应注意保护风扇,防止风扇受损破坏。拆卸端盖前应先检查紧固件是否齐全,端盖是否有损伤,并在端盖与机座接合处作好对正记号,接着拧下前、后轴承盖螺丝,取下前、后轴承外盖。再卸下前、后端盖紧固螺丝。用螺丝刀在周围接缝中均匀加力,先将前端盖撬出止口。因受电机拆装工具的限制和实验室环境的影响,风扇并未拆解。因此后端盖和风扇、转子是连在一起的。用螺丝刀在周围接缝中均匀加力,先将后端盖撬出止口,连同转子一起从定子内腔中抽出。
按拆卸所作的标记,将后端盖、转子放入定子内腔中。按对角交替的顺序拧紧后端盖紧固螺钉。注意边拧螺钉,边用木榔头在端盖靠近中央部分均匀敲打,直至到位。参照后端盖的装配方法将前端盖装
配到位。装配时先用螺丝刀清除机座和端盖止口上的杂物,然后装入端盖,按对角顺序上紧螺栓。
四、绕组嵌线方式及特点
交流电机绕组嵌线分为单层链式绕组、单层交叉式绕组、单层同心式绕组、双层叠绕组、单双层混合绕组。
小型三相异步电机(11kw以下)当每极每相槽数q=2时,定子绕组采用单层链式绕组。起把线圈数等于q,嵌完一个槽后,空一个槽再嵌另一相的下层边,同相线圈的连线是上层边与上层边相连,下层边与下层边相连。小型三相异步电机(11kw以下)当q-3时,定子绕组采用单层交叉式绕组,起把线圈数为q=3,一、二、三相轮流嵌,先嵌双圈,空一个槽嵌单圈,空两个槽嵌双圈,再空两个槽嵌双圈……一直嵌完,最后落把。同相线圈之间的连线是上层边与上层边相连,下层边与下层边相连。小型三相异步电机(11kw以下)当每极每相槽数q=4时,定子绕组采用单层同心式绕组。起把线圈是q=3,在同一组线圈中嵌线顺序是先嵌小圈再嵌大圈,嵌线时的顺序是嵌两个槽空两个槽,同相线圈间的连线是上层边与上层边相连,下层边与下层边相连。容量在11kw及以上的中小型异步电动机定子绕组采用双层叠绕组,其嵌线工艺比较简单。单双层混合绕组是双层短距绕组变换过来的,它具有短距绕组能改善电气性能的优点,同时他又有一部分单层绕组,这一部分具有不要层间绝缘、嵌线较快的优点。
五、本次绕组嵌线步骤及特点
在这次嵌线实习中采用的使用过的绕组,按照以前的方法嵌线较
困难,因此在嵌线时有所改进。电机为四极,二十四槽,每极每相槽数为2,采用单层链式绕组嵌线方法。先嵌U相线圈,一号上层线圈嵌入1号槽,下层边嵌入6;二号线圈为7、12;三号线圈为13、18;四号线圈为19、24。然后再嵌V相线圈,一号上层线圈嵌入3号槽,下层边嵌入8:二号线圈嵌入9、14;三号线圈为15、20:四号线圈为21、2。最后在嵌W相线圈,一号上层线圈嵌入5号槽,下层边嵌入10;二号线圈为11、16;三号线圈为17、22;四号线圈为23、4。单层绕组的优点是线圈少,结构简单,嵌线较方便,不存在层间绝缘的问题。但在电磁性能上,单层绕组为等效整距绕组,不能利用短距来改善电动势和磁动势的波形,故电机铁损耗和噪声较大,起动性能较差。因此单层绕组一般用于11kw以下的小容量异步电动机的定子绕组。
六、嵌线注意事项
嵌线是电机装配中的主要环节,必须按特定的工艺要求进行。
1、嵌线前,应先把绕好线圈的引线理直,将引槽纸放入槽内,绝缘纸要高于槽口25~30mm,在槽外部分张开。嵌线时要细心。嵌好一个线圈后要检查一下,看其位置是否正确,然后,再嵌下一个线圈。导线要放在绝缘纸内,若把导线放在绝缘纸与定子槽的中问,将会造成线圈接地或短路。注意,不能过于用力把线圈的两端向下按,以免定子槽的端口将导线绝缘层划破。
2、嵌完线圈,如槽内导线太满,可用压线板沿定子槽来回地压几次,将导线压紧,以便能将竹楔顺利打入槽口,但一定注意不可猛撬。
3、嵌完后,用剪子将高于槽口5mm以上的绝缘纸剪去。用划线板将留下的5mm绝缘纸分别向左或向右划入槽内。将竹楔一端插入槽口,压入绝缘纸,用小锤轻轻敲入。
4、线圈端部、每个极相端之间必须加垫绝缘物。根据绕组端部的形状,可将相问绝缘纸剪裁成三角形等形状,高出端部导线约5~8mm,插入相邻的两个绕组之间,下端与槽绝缘接触,把两相绕组完全隔开。
七、实训心得
新的学期,新的气象,我们光电专业的教学计划中的单片机实训也在本学年开设了。这次单片机实训课程是我们进入第三学年的第一次实训,也是我们的开学第一课。
之前我们光电091班级在暑假的顶岗实习中,也认识到单片机在工业生产与现实生活中的实际应用,深感单片机在以后工作中的重要性,也是我们专业必须掌握的技能运用!认识到单片机的重要性后,也使得我砸这次实训中更加的认真。
在单片机实训课程之前,班长对我们进行了分组实训,这样有利于我们团体智慧的集中体现,也符合企业精英智囊团的生产概念,也考验我们个人的突出能力,以及培养我们团体相互协调,增加友谊互信,充实大学生活!
通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。
单片机实训心得体会2近两周的单片机实训结束了,最大的感受是,这是进入大学以来所学的最贴近实际的一门课,原来书本知识与实际操作之间竟然存在这样大的差距,让我不得为今后的工作捏了一把汗,决心更加深入的学习,让自己成为实用型的人。
在做喇叭自检时,我们认为的把程序复杂化了,在做键盘自检时我们和大多数同学一样,都没有把采样保持做好,虽然是第一个接受检查的,但我们还是按老师的要求重新完善了程序。
在做最后的任务时,我们组的任务是“乒乓球游戏机”,开始觉得很有趣,就是双方互打,但是经过和老师的商量和自己站在一个“消费者”的角度考虑后,发现我们的设想太简单了,于是,我们又给它加了“计算比分”、“接住球后加速”以及用不同的显示和声音来表示是否接住球,最后我们又发现这个游戏机没有复位功能,这能玩一次,但是我们用了几段程序都没有实现预想的效果,设计进入了瓶颈阶段,最后,我们在图书馆查找资料,并按我们的要求修改,终于实现了这个功能。
由于我们测试的次数太多,我也“练就”了很好的打游戏的技术,呵呵,真希望有机会把我们的设计变成产品,和更多人分享我们的乐趣。不过,我们现在的水平离这一目标还差的很远,我们要继续努力。
通过最后的测试,我发现我对知识的掌握有些不透彻,比如“硬件编程框图”,平时看过很多次但都没有用心记过,头脑中对他的记忆很模糊,因此,这就成了我们知识结构中的一个盲点,实训就是让我们在实际操作中发现自己对知识掌握不足的地方并把它补足,我会继续把这些模棱两可的这是都用心学透彻。
在整个实训过程中,同组三个人配合的十分默契,虽然我们对知识的掌握不尽相同,但是我们却各具所长,我想这就是“团队”的作用,在完成任务过程中,我们不断相互帮助、互相学习,是任务顺利进展,每个人都有所提高,感谢老师的帮助,感谢这次实训的机会。
单片机实训心得体会3通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。
LED显示器:LED显示器是由发光二管组成显示字段的器件。通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。有段选码和和位选码。当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA电流;位线的电流应选择40-80MA。LED显示器的显示方式有动态和静态两种。7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。7289A的控制指令分为两类:8位宽度的单字节指令和16位宽度双字节指令;还有闪烁指令和消隐指令。7289A采用串行方式SPI总线与微处理器通信;7289A与AT89C52接口电路,在实际电路中无论接不接键盘,电路中连接到其各段上的8个 100千欧的下拉电阻均不可以省去,如果不接键盘而只接显示器可以省去8个10千欧电阻,若仅接键盘而不接显示器,可省去串入DP及SA-SG连线的8个220欧电阻,7289A还需要外接晶体振荡电路。液晶显示器简称LCD,其显示原理是用经过处后的液晶具有能改变光线传输方向的特性,达到显示字符和图形的目的。最简单的笔段式液晶显示器类似于LCD显示器,可以显示简单的字符和数字,而目前大量使用的是点阵式LCD显示器,既可以显示字符和数字也可以显示汉字和图形。如果把LCD显示屏、背光可变电源、接口控制逻辑、驱动集成芯片等部件构成一个整体,是的与CPU接口十分方便。
键盘:键盘是最常见的计算机输入设备,它广泛应用于微型计算机和各种终端设备上。计算机操作者通过键盘向计算机输入各种指令、数据,指挥计算机的工作。按照键盘的工作原理和按键方式的不同,可以划分为四种:机械式键盘采用类似金属接触式开关,工作原理是使触点导通或断开,具有工艺简单、噪音大、易维护的特点。塑料薄膜式键盘键盘内部共分四层,实现了无机械磨损。其特点是低价格、低噪音和低成本,已占领市场绝大部分份额。导电橡胶式键盘触点的结构是通过导电橡胶相连。键盘内部有一层凸起带电的导电橡胶,每个按键都对应一个凸起,按下时把下面的触点接通。这种类型键盘是市场由机械键盘向薄膜键盘的过渡产品。无接点静电电容式键盘使用类似电容式开关的原理,通过按键时改变电极间的距离引起电容容量改变从而驱动编码器。特点是无磨损且密封性较好。
按照按键方式的不同键盘可分为接触式和无触点式两类。接触式键盘就是我们通常所说的机械式键盘,它又分为普通触点式和干簧式。普通触点式的两个触点直接接触,从而使电路闭合,产生信号;而干簧式键盘则是在触点间加装磁铁,当键按下时,依靠磁力使触点接触,电路闭合。与普通触点式键盘相比,干簧式键盘具有响应速度快、使用寿命长、触点不易氧化等优点。无触点式键盘又分为电容式、霍尔式和触摸式三种。其中电容式是我们最常用到的键盘类型,它的触点之间并非直接接触,而是当按键按下时,在触点之间形成两个串联的平板电容,从而使脉冲信号通过,其效果与接触式是等同的。电容式键盘击键时无噪声,响应速度快,但是价格很高一些。
显示器:按照显示器的显示管分类CRT、LCD。按显示色彩分类单色显示器、彩色显示器。按大小分类通常有14寸、15寸、17寸和19寸,或者更大。显示管的屏幕上涂有一层荧光粉,电子枪发射出的电子击打在屏幕上,使被击打位置的荧光粉发光,从而产生了图像,每一个发光点又由“红”“绿”“蓝”三个小的发光点组成,这个发光点也就是一个象素。由于电子束是分为三条的,它们分别射向屏幕上的这三种不同的发光小点,从而在屏幕上出现绚丽多彩的画面。显示器显示画面是由显示卡来控制的。若仔细观察显示器上的文本或图像是由点组成的,屏幕上点越多越密,则分辨率越高。
屏幕上相邻两个同色点的距离称为点距,常见点距规格有0.31mm、0.28mm、0.25mm等。显示器点距越小,在高分辨率下越容易取得清晰的显示效果。电子束采用光栅扫描方式,从屏幕左上角一点开始,向右逐点进行扫描,形成一条水平线;到达最右端后,又回到下一条水平线的左端,重复上面的过程;当电子束完成右下角一点的扫描后,形成一帧。此后,电子束又回到左上方起点,开始下一帧的扫描。这种方法也就是常说的逐行扫描显示。而隔行扫描指电子束在扫描时每隔一行扫一线,完成一屏后再返回来扫描剩下的线,这与电视机的原理一样。隔行扫描的显示器比逐行扫描闪烁得更厉害,也会让使用者的眼睛更疲劳。完成一帧所花时间的倒数叫垂直扫描频率,也叫刷新频率,比如60Hz、75Hz等。
通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。通过实训,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,并且可以在今后的日常生活中灵活运用。
单片机实训心得体会4通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不足。相信这对我们以后的学习和工作都会有很大的帮助。我们一定要在最短的时间里对这些不足加以改正!
首先,在这次试训中我被单片机强大的功能所震撼,以前在课堂上完全没有能理解可编程单片机的优越性。这次通过实体仿真软件等辅助软件的共同效果,是这次试训有了鲜明的活力。换是我们认识
到这次试训不仅仅是一个软件的应用,更多的是使我们认识到学习到很多在课堂上无法得到的东西。特别是protues软件的功能是我们了解了当今开发系统的新方向,简直太不可思议啦!
单片机作为一种最简单的软件,与我们的日常生活息息相关,了解一些单片机程序的简单录入是费城必要的。如:LED显示器、键盘和显示器的应用和原理。
在被刺实训中我们每个人通过一个八位流水灯的`制作,使我们深深地体会到了单片机在现实生活中的小小应用,既增强了我们的好奇心,又巩固了我们的理论知识。更让我们体会到了单片机手动的开
始平台的完善与成熟。只要你有想法,单片机就有可能让他成为现实。这里我学习完protues软件后的第一感觉是,虽然这软件工作不稳定,但是会有相当不错的效果出来。这对我以后的工作一定会有帮助的。在这次试训中不仅只对单片机编程有了新的认识,还对整个单片机的开发平台都有了一厅的了解,这是一笔不错的收获。
通过这几天的试训,使我的感触很深,真实“条条大路通罗马”,要达到目的,不同的人就有不同的方法。只要你的方法不错!五花八门都可以,而且是各有特色。走出来的结果都有各自的独到之处。在编程中“简”字贯穿于整个程序设计中,越简单越好,毕竟单片机留给用户的资源是有限的,所以我们要充分利用这些资源,达到更好的效果,这些是我们在以后的学习生活中应值得注意的地方。
在试训中有苦有甜,当我们为一个很难攻破的程序找出路时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小的安慰,看着自己的成果。感觉很欣慰,有一丝丝的甜意,几天的实训使自己的思维逻辑也有了小小的进步。
2.结束了两周的电视机实训,我们又迎来了单片机课程设计实训,真是让我们受益匪浅啊?学到了很多东西,不管怎么样,先感谢学校给我的这么多机会.真正的学到了东西.为期一周的单片机课程设计让我们受益匪浅.此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力.对于我们应用电子技术的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍,先开始的显示时钟还算顺利,下面的报警部分就花费了相当长的时间,还有加上报警时的音乐也是我们到图书馆里查阅资料由汇编转化成C语言得来的.本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提.单片机是我们上学期开设的课程,所以很多专业知识也都忘记了.不过经过我们一步步的努力,花费的时间与精力终于没有白费,效果渐渐地出现了.其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了.我们将各个部分的程序编好后怎么都连不起来,出不了预期的效果.对于硬件在编程过程中PCB板的接触又是一个头疼的问题,在进行编译的时候,数码显示管上什么都没有,按一下旁边与之相连的元器件时就有显示了,所以也花费了好多时间在PCB板的重新焊接上.对于软件我们在时钟完成后就对其加入了报警系统,可加了之后发现程序乱了,以前的时钟也不可以控制了.经过反复研究,发现接地接错了位置,导致了用来报警的红灯跟绿灯根本不亮,然后就将 接地线重新焊接了一下,功夫不负有心人,红灯亮了,配合编好的程序,用纸板挡住了发射管与接收管之间的信号传输,数码显示管出现闪烁的效果,并且没信号的时候绿灯亮,有信号的时候红灯就亮了,这个现象让我们喜出望外.经过修改时钟程序和报警系统都被使用上了,可更大的难题就是如何让它报警?这困扰了我们,数码显示管上终于有了闪烁的效果,可报警声还没加的上去.老师的要求是除了蜂鸣器上的报警声再加一段音乐.翻阅了图书馆里的书籍,查出来的音乐程序都是用汇编编的,要将此程序放到主程序中就必须将汇编程序改编成C语言程序.这再次困扰了我们,虽然以前也学过汇编跟C之间的互换,可都是简单的,从没涉及到这么复杂的程序过,改编很是有压力,经过研究,我们将汇编程序舍弃了,到网上下载了一段音乐程序,是C语言编的.要让音乐在我们的红外报警系统中唱出来可不是什么简单的事情,虽然找到了音乐程序,但要让音乐程序跟我们的主程序融合在一起得花费点心思了.最后在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识.,也让我们对单片机有了更深一步的了解.虽然最后结果是出来了,可这与老师的精心指导是分不开的,她引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以说老师是功不可抹的.
单片机实训心得体会5最近自己对单片机特别的感兴趣,因为看到它能控制电机的转动,自己觉得很神奇。就想弄清楚它到底是怎么做到的?
我看到书上讲:单片机可以用两种语言编写,一种是c语言,另外一种是汇编语言。汇编语言是一种机器语言,且代码繁琐,不易记忆。需要掌握单片机的内部结构和逻辑结构,通过看了几本书让我了解认识到汇编确实太繁琐,不过我学习过c语言,也参加了全国计算机二级考试,觉得自己在一方面具有优势,能很快学好它。
不过在学习中,我才发现学习单片机不仅仅需要软件的知识,还需要硬件的知识。我买了一个单片机在实践中就是一个活生生的例子,没有相应的硬件知识,我连单片机怎么和电脑相连都不知道,我为我当初的想法感到羞愧。单片机是一门很好的学问,需要我去钻研它。
时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机综合课程设计也在一周内完成了。
俗话说“好的开始是成功的一半”。说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
虽然这次的课程设计算起来在实验室的时间只有三天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
单片机实训心得体会6为期几天的单片机实训暴露出来很多学习上的问题,这些问题的发现将为我们以后的学习和工作找明道路,查漏补缺为进一步学习作好准备!
本次实验我们组做的课题是《交通灯控制》,这是一个实用性质非常强的题目。
首先,它非常联系我们日常生活,每当我们在马路上走的时候对我们的人身安全关系最密切的莫过于红绿灯,因此设计一款好的性能优异功能强大的交通灯控制系统是对所有车辆行人的一个最大的福音,是对社会的巨大贡献!
其次,交通灯控制系统是涉及到单片机、电路、信号、数学数字运算等多学科的一门综合性应用非常强的课题,这个课题的成功实践必将在一定程度上极大地激发我们在这些相关学科的学习兴趣,也会促使我们去向多学科综合应用的方面发展,这也是当今科学科技领域一个显著的特点。从这一点上来说这个课题的选取对所有参加这个课题研究的同学们来说都是一个非常好的锻炼。
再次,任何一个任务的完成,都体现了一个小组一个组织的配合,单纯一个人的力量是完不成很大很多的工作的,这就要求整个组里的成员共同配合积极协作,为了一个共同的目标努力。从这一点上来说,这个课题的意义就在于培养了我们大家团结协作的作风同时也培养了我们每个人在对待科学问题上孜孜不倦、严谨求实的科学作风,这对我们每个人来说都是相当有益的!
当然,通过做这个课题,也暴露出来了很多问题值得我们去探讨解决和克服:
第一,时间利用问题。由于课题难度较大,因此很多组员都以不会为理由而无所事事,在实验室上网玩游戏,耽误了宝贵的时间也造成了整个组课题研究效率的低下。再一个有关时间的问题就是时间利用率太低。
第二,组员之间配合不甚默契。也许是由于课题的原因,小组内成员之间总是各自干各自的缺少那种配合上的默契,结果到最后很多人都重复去做同一件事情造成了时间浪费、效率下降。
第三,课题研究不够深刻。课题研究总是浮于表面文章,对程序对最后结果研究不够造成虽然某一块地方做的比较好但是在大脑中没有一个总体的印象,无法理论联系实际,研究成果的应用严重背离实际现实,影响使用。
基本上,这次实训暴露出来的问题就这些,我且先总结到这里。这些问题的发现,有助于提高我们在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。团结协作、积极配合、严谨求实、踏实务实,是对这次实训的深刻总结。
另外,这次实训对我让我感受非常深的一点就是,作为同学的代表,作为一个小小的领导者,在做任何一件事情上都要细心严谨,杜绝差错;还要事事做在同学前边,事事做到点子上。错误传递领导的命令和迟到都是对工作的极度不负责,都是工作上的极大失职,以后要严格要求自己,坚决杜绝此类事情的再次发生,否则这一次次的“小错”必将带来人生中的“大后悔”!万老师这次的惩罚是对我的一次深刻的教训,要牢牢记住这次失职带来的教训,确保不再犯同样的错误!
最后,衷心感谢万老师给我们提供了这次难得的实训机会,给了我这么深刻的人生体会,这一切一切对我我来说是有益而无害!
单片机实训心得体会7一周的实训,让我们从另一个角度去发现单片机。期间我学会了很多宝贵的知识和经验,在这次单片机实训中我们巩固了我们平时所学的内容;加深了对各种调试和仿真软件的使用技能;掌握了单片机应用电路的设计和调试方法。
首先,我们要从所给定的元器件中设计出6个不同的电路,并编写程序实现相关任务要求。我们小组设计出的电路主有:
(1)数码管轮流显示百十个位的数。要求:数据来源于拨码开关;个位显示完毕停留的时间稍微长些。
(2)定时计数器实现对外部脉冲计数5次后,流水灯的状态由亮点左流动转化成闪烁5次,然后回到初始状态。
(3)单键改变流水灯状态。按键一旦按下,流水灯状态由暗点右流动转化成闪烁8次,然后回到初始状态。
(4)双键改变流水灯状态。按键K0(连接INT0)按下,流水灯状态由亮点左流动,转化成闪烁5次,然后回到初始状态;按键K1(连接INT1)按下,流水灯状态由亮点左流动,转化成暗点右流动至最右端,然后回到初始状态;并且按键K1级别高于K0。
(5)串口输出数据,实现在2个数码管上显示60秒计数器。
(6)在集成的8位数码管上动态显示出:1——8的效果。
其次,我们要对我们所设计的电路进行电路布局、连线,检查电路是否出现错误或者遗漏。
然后,学会用KEIL软件调试程序,并用该软件菜单的各项调试工具和窗口。再结合硬件和软件,进行整体调试。
最后,当我们根据相关要求从所给定的元器件中设计出6个不同的电路、编写程序、线路布局,调试成功,我们的设计就完成了。
在这实训期间我深刻的认识到了理论知识和实践操作必须是相结合的,也许在实训时会有很多各种软、硬件等故障。
在编程时我们就出现了很大的障碍, 本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手, 最后不得不求出其他小组,原来本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱。
我们在做双键改变流水灯状态的电路时又发现了一个头痛的问题,发光二极管不亮、开关不管用,刚开始的时候,我们检查了好几遍就是没有发现问题,快要失去耐心是发现少两连接了两根线,这是个好现象让我们有了继续往下的勇气,终于在反复的检查研究中,我们发现发光二极管不亮的正负方向反了,开关接错了位臵,这才导致连接线路期间的错误不断。结果是可喜的,在我们小组竭尽全力,同学老师的帮忙下,我们的电路很成功。
系
部:电气自动化系
班
级:13电信2班
姓
名:周祝福
指导老师:黄丽英、侯聪玲
实训时间:2015年1月19日~23日
用AT89C51与LCD1602设计 的可调式电子日历时钟
一、总体设计
1.1、设计目的
为巩固所学的单片机知识,把所学理论运用到实践中,用LCD1602与AT89C51 设计可调式电子日历时钟。
1.2、设计要求
(1)显示:年、月、日、时、分、秒和星期;
(2)设置年、月、日、时、分、秒和星期的初始状态;
(3)能够用4个按键调整日历时钟的年、月、日、时、分、秒和星期 ;
完成可调式电子日历时钟的硬件和软件的设计,包括单片机的相关内容;日历时钟模块的设计,液晶显示模块的设计,按键模块的设计。控制程序的编写等。
1.3、系统基本方案选择和论证
1.3.1、单片机芯片的选择方案
方案一:
采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容。方案二:
采用STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。但造价较高。1.3.2、显示模块选择方案和论证:
方案一:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用显示数字显得太浪费,且价格也相对较高。所以不用此种作为显示。方案二:
采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,显示出来的只是拼音,而不是汉字。所以也不用此种作为显示。方案三:
采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字符,且视觉效果较好,外形美观。LCD1602可实现显示2行十六个字符。1.3.4、电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:采用80C51作为主控制系统; LCD1602液晶带汉字库显示屏作为显示部分。
二、硬件设计
2.1、电路设计模块图如图
AT89C51 块按键控制模LCD162
2.3、用proteus仿真软件仿真并抓图。
三、软件设计
3.1、画出各个函数流程图。
3.1.1、LCD1602液晶显示控制流程图如图
入口 对1602初始化写入显示设置命令 延时一段时间 检查忙标志 BF= 7>? 设置字符显示位置 延时一段时间 向1602中写入数据 LCD显示内容 返回主程序
是 3.1.2、调时函数控制流程如图
开始 控制键有效,调整年 控制键有效,调整月 等待按键程序 等待按键程序 加有效 减有效 加有效 减有效 年加 1 年减 1 月加 1 月减 1 控制键有效,调整日 控制键有效,调整星期 等待按键程序 等待按键程序 加有效 减有效 加有效 减有效 日加 1 日减 1 星期加 1 星期减 1 控制键有效,调整时 等待按键程序 加有效 时加 1 减有效 时减 1 控制键有效,调整分 等待按键程序 加有效 分加 1 减有效 分减 1 按键有效跳出调时程序,进入主循环
实训心得:通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不足。相信这对我们以后的学习和工作都会有很大的帮助。我们一定要在最短的时间里对这些不足加以改正!在试训中有苦有甜,当我们为一个很难攻破的程序找出路时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小的安慰,看着自己的成果。感觉很欣慰。总而言之,单片机课程设计对于我们有很大的帮助,我们从中受益匪浅。
程序代码。
#include
uchar a,count,S1num,xqnum;uchar yue,ri,shi,fen,miao;uint nian;
sbit lcdrs=P2^5;sbit lcdrw=P2^4;sbit lcden=P2^3;
sbit S1=P3^0;
//定义键--进入设置 sbit S2=P3^1;
//定义键--增大 sbit S3=P3^2;
//定义键--减小 sbit S4=P3^3;
//定义键--退出设置
uchar code table0[]=“2015-01-11 SUN”;uchar code table1[]=“00:00:00”;uchar code xingqi[][3]={“MON”,“TUE”,“WED”,“THU”,“FRI”,“SAT”,“SUN”};
void delay(uint z){ uint x,y;for(x=z;x>0;x--)
for(y=110;y>0;y--);}
/************************************************** 1602液晶显示器模块
*************************************************/ void write_com(uchar com)
//液晶写指令 { lcdrw=0;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}
void write_data(uchar dat)
//液晶写数据 { lcdrw=0;lcdrs=1;P0=dat;delay(5);lcden=1;delay(5);lcden=0;}
/******************************************** 年月日写入1602函数
********************************************/ void write_sfm(uchar add,uchar dat)
//写时分秒函数 { uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);} void write_yr(uchar add,uchar dat)
//写月日函数 { uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);} void write_nian(uchar add,uint dat)
//写年函数 { uint qian,bai,shi,ge;qian=dat/1000;bai=dat%1000/100;shi=dat%100/10;ge=dat%10;write_com(0x80+add);write_data(0x30+qian);write_data(0x30+bai);write_data(0x30+shi);write_data(0x30+ge);} /*************************************************** 1602初始化
***************************************************/ void init_lcd()
//液晶初始化 { lcden=0;
nian=2015;yue=1;ri=11;shi=0;
//初始shi、fen、miao fen=0;miao=0;
write_com(0x38);
//设置16x2显示,5x7点阵,8位数据口
write_com(0x0c);
//设置开显示,不显示光标
write_com(0x06);
//写一个字符后地址指针加1 write_com(0x01);
//显示清0,数据指针清0 }
void init()
//初始化函数 { init_lcd();
//液晶初始化
write_com(0x80);
//设置显示初始坐标
for(a=0;a<14;a++)
//显示年月日初始值
{
write_data(table0[a]);
delay(5);} write_com(0x80+0x40);
//设置显示初始坐标
for(a=0;a<8;a++)
//显示时分秒初始值
{
write_data(table1[a]);
delay(5);}
write_nian(0,nian);write_sfm(6,miao);
//分别将shi、fen、miao送去液晶显示
write_sfm(3,fen);write_sfm(0,shi);
count=0;xqnum=0;S1num=0;
//初始化全局变量count
TMOD=0x01;
//设置定时器0工作模式1 TH0=(65535-50000)/256;
//定时器装初始值
TL0=(65535-50000)%256;EA=1;
//开总中断
ET0=1;
//开定时器0中断
TR0=1;
//启动定时器0 }
/************************************************** 独立键盘
*************************************************/ void keyscan(){ if(S1==0){
delay(5);
//确认定义键被按下
if(S1==0)
{
S1num++;
//定义键S1按下次数记录
while(!S1);
//释放按键确认
if(S1num==1)//S1按下一次时
{
TR0=0;
//关闭定时器
write_com(0xc0+7);//光标定位到秒位置
write_com(0x0f);//光标闪烁
}
if(S1num==2)
//S1按下两次时
{
write_com(0xc0+4);//光标定位到分位置
}
if(S1num==3)
//S1按下三次时
{
write_com(0xc0+1);
//光标定位到时位置
}
if(S1num==4)
//S1按下四次时
{
write_com(0x80+13);
//光标定位到星期位置
}
if(S1num==5)
//S1按下五次时
{
write_com(0x80+9);
//光标定位到日位置
}
if(S1num==6)
//S1按下六次时
{
write_com(0x80+6);
//光标定位到月位置
}
if(S1num==7)
//S1按下七次时
{
write_com(0x80+3);
//光标定位到年位置
}
if(S1num==8)
//S1按下八次时
{
S1num=0;
//S1记录按键次数清零
TR0=1;
//开启定时器
write_com(0x0c);
//取消光标闪烁
} } } if(S1num!=0)
//只有定义键按下后S2、S3、S4才有效 { if(S2==0){
delay(5);
//防抖
if(S2==0)
//确认按键被按下
{
while(!S2);
//释放按键确认
if(S1num==1)//S1按下一次时
{
miao++;
//调整秒加1
if(miao==60)//满60清零
miao=0;
write_sfm(6,miao);
//每调节一次送液晶显示一次
write_com(0x80+0x40+6);
//显示位置重新回到调节处
}
if(S1num==2)
//S1按下两次时
{
fen++;
//调整分加1 if(fen==60)
fen=0;write_sfm(3,fen);write_com(0x80+0x40+3);} if(S1num==3)
//S1按下三次时 { shi++;
//调整时加1 if(shi==24)
shi=0;write_com(0x80+0x40);write_sfm(0,shi);} if(S1num==4)
{ xqnum++;if(xqnum==7)
xqnum=0;write_com(0x80+0x0b);for(a=0;a<3;a++){
write_data(xingqi[xqnum][a]);
delay(5);} } if(S1num==5)
{ ri++;if(yue==2){
if(nian%400==0)
{
if(ri==30)
{
ri=1;
}
}
if(nian%400!=0)
{
if(ri==29)
{
ri=1;
}
//星期加调整
//日加调整
} } else if(yue<=7){
if(yue%2==0&yue!=2)
{
if(ri==31)
{
ri=1;
}
}
else if(yue%2!=0&yue!=2)
{
if(ri==32)
{
ri=1;
}
} } else if(yue>=8){
if(yue%2==0)
{
if(ri==32)
{
ri=1;
}
}
else if(yue%2!=0)
{
if(ri==31)
{
ri=1;
}
} } write_yr(8,ri);} if(S1num==6)
{ yue++;if(yue==13)
yue=1;write_yr(5,yue);
//月加调整
}
if(S1num==7)
//年加调整
{
nian++;
if(nian==2019)
nian=2014;
write_nian(0,nian);
} } } if(S3==0){ delay(5);if(S3==0)
//确认按键被按下
{
while(!S3);
if(S1num==1)
{
miao--;
//调整秒减1
if(miao==-1)
//减到00后再减重新设置为59
miao=59;
write_sfm(6,miao);
write_com(0x80+0x40+6);
}
if(S1num==2)
{
fen--;
//调整分减1
if(fen==-1)
fen=59;
write_sfm(3,fen);
write_com(0x80+0x40+3);
}
if(S1num==3)
{
shi--;
//调整时减1
if(shi==-1)
shi=23;
write_sfm(0,shi);
write_com(0x80+0x40);
}
if(S1num==4)
{
xqnum--;
//调整星期减一
if(xqnum==-1)
xqnum=6;write_com(0x80+0x0b);for(a=0;a<3;a++){
write_data(xingqi[xqnum][a]);
delay(5);} } if(S1num==5)
//调整日 { ri--;
if(yue==2){
if(nian%400==0)
{
if(ri==0)
{
ri=29;
}
}
if(nian%400!=0)
{
if(ri==0)
{
ri=28;
}
} } else if(yue<=7)
{
if(yue%2==0&yue!=2)
{
if(ri==0)
{
ri=30;
}
}
else if(yue%2!=0&yue!=2)
{
if(ri==0)
{
ri=31;
}
}
}
else if(yue>=8)
{
if(yue%2==0)
{
if(ri==0)
{
ri=31;
}
}
else if(yue%2!=0)
{
if(ri==0)
{
ri=30;
}
}
}
write_yr(8,ri);
}
if(S1num==6)
{
yue--;
if(yue==0)
yue=12;
write_yr(5,yue);
}
if(S1num==7)
{
nian--;
if(nian==2013)
nian=2018;
write_nian(0,nian);
} } } if(S4==0)
{ delay(5);if(S4==0){
S1num=0;
TR0=1;
write_com(0x0c);
//调整月
//调整年
//退出设置、开启中断
}
} } }
/************************************************** 定时器0 *************************************************/ void timer0()interrupt 1
//定时器0中断服务程序 { TH0=(65535-50000)/256;
//重装定时器初始值
TL0=(65535-50000)%256;count++;
//中断次数累加
if(count==20)
//20次50毫秒即一秒
{
count=0;
miao++;
if(miao==60)
//秒加到60时分进位
{
miao=0;
fen++;
if(fen==60)
//分加到60时时进位
{
fen=0;
shi++;
if(shi==24)
//时加到24时清0
{
shi=0;
xqnum++;
ri++;
if(yue==2)
//如果是二月
{
if(nian%400==0)
//闰年判断
{
if(ri==30)
{
ri=1;
yue++;
write_yr(5,yue);
}
}
if(nian%400!=0)
//平年判断
{
if(ri==29)
{
ri=1;
yue++;
write_yr(5,yue);
}
}
}
else if(yue<=7&yue!=2)
//一月到七月
{
if(yue%2==0)//偶数月(除二月)
{
if(ri==31)
{
ri=1;
yue++;
}
}
else if(yue%2!=0)
//奇数月
{
if(ri==32)
{
ri=1;
yue++;
}
}
write_yr(5,yue);
}
else if(yue>=8)
//八月到12月
{
if(yue%2==0)//偶数月(除二月)
{
if(ri==32)
{
ri=1;
yue++;
if(yue==13)
//如果判断月份为12月,则加一后重新定义月份为1
{
yue=1;
nian++;
write_nian(0,nian);
}
write_yr(5,yue);
}
}
else if(yue%2!=0)
//奇数月
{
if(ri==31)
{
ri=1;
yue++;
write_yr(5,yue);
}
}
}
write_yr(8,ri);
if(xqnum==7)
//星期写入
xqnum=0;
write_com(0x80+0x0b);
for(a=0;a<3;a++)
{
write_data(xingqi[xqnum][a]);
delay(5);
}
}
write_sfm(0,shi);
//重新写入数据
}
write_sfm(3,fen);
//重新写入数据
}
write_sfm(6,miao);
//重新写入数据
} } /************************************************* 主函数
*************************************************/ void main(){ init();while(1){
keyscan();
//不停的检测按键是否被按下