第一篇:单片机数字钟设计总结
单片机数字钟设计总结
经过一周的课程设计,我收获颇多,有深刻的心得体会。实训让我们受益匪浅。首先是关于单片机方面的。我们学到了许多关于单片机系统开发的知识,从最开始选题到最后的结题,更使我们得到了充分的锻炼。其次,它让我体会到了什么才是teamwork spirit。一如:团队管理的经验、团队意识的提升和协调能力等等,这些都会让我们终身受益。
通过此次课程设计,使我更加扎实的掌握了有关电子线路单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查我终于找出了问题所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践才能出真知,实践才是检验真理的唯一标准,唯有通过亲自动手制作,才能令我们掌握的知识不再是一些纸上谈兵的东西。
在这次的课程设计中,我们遇到了很多困难,过程很艰难,但是我们都克服了,这是对我们自己的肯定。我们不断发现错误,不断改正,不断领悟,不断获取。我们也曾灰心,也曾茫然,也曾不知所措,从一开始的自信满满,到最后的紧张繁杂,所有的这些都令我们回味无穷,这已经成为了我们人生的一个宝藏。我想今后的学习和工作也是这样的,汗水见证着成功,我想十年过后,但我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,最先映入脑海里的就是这门课程吧,就是这些为了一个共同的目标,相互合作,共同奋斗的日子
吧。
不可否认,单片机是一门比较难的专业学科。但是经过这一学期的学习,我们觉得单片机这门课很好,让我们在设计中掌握课程,具有很强的实用性。在社会上,单片机也应用极其广泛。通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用仪器、仪表;了解了电路的连线方法;以及如何提高电路的性能等等。我相信在接下来的日子里,我会更深刻地去研究它,发掘它。
在这次的实训里,我觉得过得很充实。实训,不仅培养了我们独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。汗水,是我们努力的过程,更是成功的使者。它是希望的凝聚。
回首此次实训,我们真的学到了很多很多。巩固了以前所学过的知识,将理论与实际结合起来,不断提高自己的实际动手能力和独立思考的能力,并学会去使用知识。当然不仅仅是这些课本上的知识,更重要的是一些课本上没有但是也很重要的知识,像是团队合作精神等。当我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,回忆起这些泛着
汗水的时光的时候,定然会被我们的团队感动。
成功后会很喜悦,但过程一样令我们回味无穷。此次设计也让我明白了思路即出路,学问学问,有学必问。只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。亲历亲为,亲手实践才是硬道理。希望这样的实训能够继续下去,并不断地前进,帮助更多的学生更好地学习单片机,并能够在使用中发现它的无穷魅力!
内容简介:
单片机课程设计总结报告:电子万年历的设计与制作
一、设计目的及意义
(1)在学习了《数字电子技术》和《单片机原理及接口技术》课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,培养动手能力和解决实际问题的经验让学生接触专用时钟芯片DS1302,并会用DS1302芯片开发时钟模块,应用到其他系统中去。熟悉WAVE软件调试程序和仿真.(2)通过实验提高对单片机的认识;
(3)通过实验提高焊接、布局、电路检查能力;
(4)通过实验提高软件调试能力;
(5)进一步熟悉和掌握单片机的结构及工作原理。
(6)通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。
(7)通过实际程序设计和调试,逐步掌握模块化程序设计方
法和调试技术。
(8)通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
二、设计内容要求
电子万年历能显示阳历年、月、日、星期、[小]时、分、秒和阴历月、日,在显示阴历时间时能标明是否为闰年。
内容预览:
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇
到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在这一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在刘训非老师的辛勤指导下,终于游逆而解。同时,在刘训非老师那里我也学得到很多实用的知识,在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢。希望大家能更上一层楼。
第二篇:单片机数字钟设计心得体会
单片机数字钟设计心得体会
经过一周的课程设计,我收获颇多,有深刻的心得体会。实训让我们受益匪浅。首先是关于单片机方面的。我们学到了许多关于单片机系统开发的知识,从最开始选题到最后的结题,更使我们得到了充分的锻炼。其次,它让我体会到了什么才是teamwork spirit。一如:团队管理的经验、团队意识的提升和协调能力等等,这些都会让我们终身受益。
通过此次课程设计,使我更加扎实的掌握了有关电子线路单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查我终于找出了问题所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践才能出真知,实践才是检验真理的唯一标准,唯有通过亲自动手制作,才能令我们掌握的知识不再是一些纸上谈兵的东西。
在这次的课程设计中,我们遇到了很多困难,过程很艰难,但是我们都克服了,这是对我们自己的肯定。我们不断发现错误,不断改正,不断领悟,不断获取。我们也曾灰心,也曾茫然,也曾不知所措,从一开始的自信满满,到最后的紧张繁杂,所有的这些都令我们回味无穷,这已经成为了我们人生的一个宝藏。我想今后的学习和工作也是这样的,汗水见证着成功,我想十年过后,但我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,最先映入脑海里的就是这门课程吧,就是这些为了一个共同的目标,相互合作,共同奋斗的日子。
不可否认,单片机是一门比较难的专业学科。但是经过这一学期的学习,我们觉得单片机这门课很好,让我们在设计中掌握课程,具有很强的实用性。在社会上,单片机也应用极其广泛。通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用仪器、仪表;了解了电路的连线方法;以及如何提高电路的性能等等。我相信在接下来的日子里,我会更深刻地去研究它,发掘它。在这次的实训里,我觉得过得很充实。实训,不仅培养了我们独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。汗水,是我们努力的过程,更是成功的使者。它是希望的凝聚。
回首此次实训,我们真的学到了很多很多。巩固了以前所学过的知识,将理论与实际结合起来,不断提高自己的实际动手能力和独立思考的能力,并学会去使用知识。当然不仅仅是这些课本 上 的 知 识,更
要 的 是 一 些 课本上没 有但 是也很 重 要 的 知 识。像是团队合作精神等。当我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,回忆起这些泛着汗水的时光的时候,定然会被我们的团队感动。成功后会很喜悦,但过程一样令我们回味无穷。此次设计也让我明白了思路即出路,学问学问,有学必问。只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。亲历亲为,亲手实践才是硬道理。希望这样的实训能够继续下去,并不断地前进,帮助更多的学生更好地学习单片机,并能够在使用中发现它的无穷魅力!
2014年1月13日
第三篇:简单的51单片机数字钟设计
成都大学电子信息工程学院
07级单片机课程设计
题目:简单51单片机数字时钟设计
院 系: 电子信息工程 专 业:电信专业 班 级:08级电信本科三班 姓 名: 刘 涛 学 号:200810312340 老 师:杨加国
2010-6
成都大学电子信息工程学院
摘要
班级学号 ···········1 设计内容 ···········3 进度安排 ···········3 MCS-51单片机系统简介·····3 课程设计背景 ·········4 课程设计目的 ·········4 MCS-51单片机内部定时器/计数器中
断系统简介 ···········4 课程设计原理 ·········5 课程设计代码 ·········6 设计相关说明·········10
345 成都大学电子信息工程学院
MOV 20H,#0;秒个位寄存器清零 MOV 21H,#0;秒十位寄存器清零 MOV 22H,#0;分个位寄存器清零 MOV 23H,#0;分十位寄存器清零 MOV 24H,#0;时个位寄存器清零
MOV 25H,#0;时十位寄存器清零 LJMP DISPLAY TIMER_0: CLR EA INC R6 INC R5
MOV TH0,#03CH MOV TL0,#0B0H;重新赋初值,定时50ms SETB EA RETI ADD_TIME: CJNE R6,#20,EXIT;定时器中断20次,1秒到 MOV R6,#0 INC 20H
MOV A,20H
CJNE A,#10,EXIT;如果秒个位等于10,清零 MOV 20H,#00H INC 21H
MOV A,21H
CJNE A,#6,EXIT;如果秒十位等于6,清零 MOV 21H,#00H
INC 22H
MIN: MOV A,22H
CJNE A,#10,EXIT;如果分个位等于10,清零 MOV 22H,#00H
INC 23H
MOV A,23H
CJNE A,#6,EXIT;如果分十位等于6,清零 MOV 23H,#00H INC 24H
HOUR: MOV A,25H CJNE A,#2,LOOP;如果时十位等于2,检查时个位 MOV A,24H CJNE A,#4,EXIT;如果时个位等于4,清零 MOV 24H,#00H;清零时个位 MOV 25H,#00H;清零时十位
成都大学电子信息工程学院
CLR P2.2 LCALL DELAY SETB P2.2;显示“-” MOV A,24H MOVC A,@A+DPTR MOV P0,A CLR P2.1 LCALL DELAY SETB P2.1;显示时个位
MOV DPTR,#TABLE1;该位使用TABLE1以消除前置0 MOV A,25H MOVC A,@A+DPTR MOV P0,A CLR P2.0 LCALL DELAY SETB P2.0;显示时十位
CJNE R5,#4,EXIT0;当R5到4时,扫描按键 MOV R5,#0 KEY_SCAN: JNB K1,ADD_HOUR JNB K2,ADD_MIN LJMP ADD_TIME;无键按下,跳至走时 ADD_HOUR: INC 24H;小时加1 LJMP HOUR;更新 ADD_MIN: INC 22H;分钟加1 LJMP MIN;更新 EXIT0: LJMP ADD_TIME DELAY: MOV R7,#150;扫描延时
DJNZ R7,$ RET
TABLE:;数码管字形显示编码表
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;字形显示编码
TABLE1: DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;小时位的十位数编码,该位如果为0则不显示
END;程序结束
第四篇:单片机数字钟电路图
数字钟设计
一、设计目的
1.熟悉集成电路的引脚安排。
2.掌握各芯片的逻辑功能及使用方法。
3.了解面包板结构及其接线方法。
4.了解数字钟的组成及工作原理。
5.熟悉数字钟的设计与制作。
二、设计要求
1.设计指标
时间以24小时为一个周期;
显示时、分、秒;
有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;
计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时;
为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。2.设计要求
画出电路原理图(或仿真电路图);
元器件及参数选择;
电路仿真与调试;
PCB文件生成与打印输出。
3.制作要求 自行装配和调试,并能发现问题和解决问题。
4.编写设计报告 写出设计与制作的全过程,附上有关资料和图纸,有心得体会。
三、设计原理及其框图
1.数字钟的构成
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。图 3-1所示为数字钟的一般构成框图。
图3-1 数字钟的组成框图 2
⑴晶体振荡器电路
晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。
⑵分频器电路
分频器电路将32768Hz的高频方波信号经32768()次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。
⑶时间计数器电路
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器。
⑷译码驱动电路
译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。
⑸数码管
数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。
2.数字钟的工作原理
1)晶体振荡器电路
晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。
图3-2所示电路通过CMOS非门构成的输出为方波的数字式晶体振荡电路,这个电路中,CMOS非门U1与晶体、电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波。输出反馈电 阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器。电容C1、C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能。由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。
晶体XTAL的频率选为32768HZ。该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数。
从有关手册中,可查得C1、C2均为30pF。当要求频率准确度和稳定度更高时,还可接入校正电容并采取温度补偿措施。
由于CMOS电路的输入阻抗极高,因此反馈电阻R1可选为10MΩ。较高的反馈电阻有利于提高振荡频率的稳定性。
非门电路可选74HC00。
图3-2 COMS晶体振荡器
2)分频器电路
通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频。
通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现。例如,将32768Hz的振荡信号分频为1HZ的分频倍数为32768(215),即实现该分频功能的计数器相当于15极2进制计数器。常用的2进制计数器有 5 74HC393等。
本实验中采用CD4060来构成分频电路。CD4060在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便。
CD4060计数为14级2进制计数器,可以将32768HZ的信号分频为2HZ,其内部框图如图3-3所示,从图中可以看出,CD4060的时钟输入端两个串接的非门,因此可以直接实现振荡和分频的功能。
图3-3 CD4046内部框图
3)时间计数单元
时间计数单元有时计数、分计数和秒计数等几个部分。
时计数单元一般为12进制计数器计数器,其输出为两位8421BCD码形式;分计数和秒计数单元为60进制计数器,其输出也为8421BCD码。
一般采用10进制计数器74HC390来实现时间计数单元的计数功能。为减少器件使用数量,可选74HC390,其内部逻辑框图如图 2.3所示。该器件为双2—5-10异步计数器,并且每一计数器均提供一个异步清零端(高电平有效)。
图3-4 74HC390(1/2)内部逻辑框图
秒个位计数单元为10进制计数器,无需进制转换,只需将QA与CPB(下降沿有效)相连即可。CPA(下降没效)与1HZ秒输入信号相连,Q3可作为向上的进位信号与十位计数单元的CPA相连。
秒十位计数单元为6进制计数器,需要进制转换。将10进制计数器转换为6进制计数器的电路连接方法如图3-5所示,其中Q2可作为向上的进位信号与分个位的计数单元的CPA相连。
图3-5 10进制——6进制计数器转换电路
分个位和分十位计数单元电路结构分别与秒个位和秒十位计数单元完全相同,只不过分个位计数单元的Q3作为向上的进位信号应与分十位计数单元的CPA相连,分十位计数单元的Q2作为向上的进位信号应与时个位计数单元的CPA 相连。
时个位计数单元电路结构仍与秒或个位计数单元相同,但是要求,整个时计数单元应为12进制计数器,不是10的整数倍,因此需将个位和十位计数单元合并为一个整体才能进行12进制转换。利用1片74HC390实现12进制计数功能的电路如图3-6所示。
另外,图3-6所示电路中,尚余-2进制计数单元,正好可作为分频器2HZ输出信号转化为1HZ信号之用。
图3-6 12进制计数器电路
4)译码驱动及显示单元
计数器实现了对时间的累计以8421BCD码形式输出,选用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,选用CD4511作为显示译码电路,选用LED数码管作为显示单元电路。
5)校时电源电路 当重新接通电源或走时出现误差时都需要对时间进行校正。通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可。
根据要求,数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。图3-7所示即为带有基本RS触发器的校时电路,图3-7 带有消抖动电路的校正电路
6)整点报时电路
一般时钟都应具备整点报时电路功能,即在时间出现整点前数秒内,数字钟会自动报时,以示提醒。其作用方式是发出连续的或有节奏的音频声波,较复杂的也可以是实时语音提示。
根据要求,电路应在整点前10秒钟内开始整点报时,即当时间在59分50秒到59分59秒期间时,报时电路报时控制信号。报时电路选74HC30,选蜂鸣器为电声器件。
四、元器件
1.实验中所需的器材
5V电源。
面包板1块。
示波器。
万用表。
镊子1把。
剪刀1把。
网络线2米/人。
共阴八段数码管6个。
CD4511集成块6块。
CD4060集成块1块。
74HC390集成块3块。
74HC51集成块1块。
74HC00集成块5块。
74HC30集成块1块。
10MΩ电阻5个。
500Ω电阻14个。
30p电容2个。
32.768k时钟晶体1个。
蜂鸣器。
2.芯片内部结构图及引脚图
图4-1 7400 四2输入与非门 图4-2 CD4511BCD七段译码/驱动器
图4-3 CD4060BD 图4-4 74HC390D
图4-5 74HC51D 图4-6 74HC30
3.面包板内部结构图
面包板右边一列上五组竖的相通,下五组竖的相通,面包板的左边上下分四组,每组中X、Y列(0-15相通,16-40相通,41-55相通,ABCDE相通,FGHIJ相通,E和F之间不相通。
五、个功能块电路图
1. 一个CD4511和一个LED数码管连接成一个CD4511驱动电路,数码管可从0---9显示,以次来检查数码管的好坏,见附图5-1。
图5-1 4511驱动电路
2. 利用一个LED数码管,一块CD4511,一块74HC390,一块74HC00连接成一个十进制计数器,电路在晶振的作用下数码管从0—9显示,见附图5-2。
图5-2 74390十进制计数器
3. 利用一个LED数码管,一块CD4511,一块74HC390,一块74HC00和一个晶振连接成一个六进制计数器,数码管从0—6显示,见附图5-3。
图5-3 74390六进制计数器
4. 利用一个六进制电路和一个十进制连接成一个六十进制电路,电路可从0—59显示,见附图5-4。
图5-4 六十进制电路
5. 利用两个六十进制的电路合成一个双六十进制电路,两个六十进制之间有进位,见附图5-5。
图5-5 双六十进制电路
6. 利用CD4060、电阻及晶振连接成一个分频——晶振电路,见附图5-6。
图5-6 分频—晶振电路
7. 利用74HC51D和74HC00及电阻连接成一个校时电路,见附图5-7。
图5-7 校时电路
8. 利用74HC30和蜂鸣器连接成整点报时电路。见附图5-8。
图5-8 整点报时电路
9. 利用两个六十进制和一个十二进制连接成一个时、分、秒都会进位的电路总图,见附图5-9。
第五篇:单片机课程设计-简易数字钟的设计
单片机课程设计报告
课程设计题目:简易数字时钟
学生姓名:** 学号:********** 学院:****** 专业班级:**********
指导老师:**
2014年5月13日
摘要:
本设计采用了STC公司生产的STC89C52RC型单片机(80C51内核)设计了一个单片机最小系统,加上maxim232和usb转RS232线组成的下载电路,以及共阴极4位一体数码管和按键等外围电路构成了一个简易的数字钟,具有显示年、月、日、时、分、秒的功能,且年、月、日、时、分、秒每一个参数都可以自行设置,以实现时间的校正,总体来说实现了一个数字时钟的应有功能。
关键词:80C51系列单片机、单片机最小系统、时钟定时、下载电路、4位一体数码管显示
一、设计任务 简易数字时钟:自制一个单片机最小系统,包括串口下载、复位电路,采用内部定时器计时,或者采用外部时钟芯片DS1302,设计一个具有秒、分、日、月、年的数字时钟,采用四位一体数码管显示相关信息,秒、分显示一页,日、月显示一页,年显示一页。
二、方案选择
2.1、采用uln2003驱动数码管
由于单片机的I/O口的拉电流只有大约1mA左右,不足以提供4-5mA的电流以驱动数码管上的led,故需要为数码管提供一个驱动电路,如果采用三极管的话由于数码管有7段(实际是8段,但本设计只需要使用7段),需要7个三极管来驱动,给焊接部分增加了工作量,故可考虑采用ULN2003以给数码管提供驱动电流。
Uln2003的内部原理图
ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。
该电路的特点如下:[3]
ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路
直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还
可以在高负载电流并行运行。
ULN2003 采用DIP—16 或SOP—16 塑料封装。
内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。
ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。
比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/5V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
2.2、直接用单片机加上拉电阻的P0口驱动数码管
对于51单片机的4个IO口来说有一个IO口与其他三个有点不同,那就是P0口,由于P0口(在作为输出IO口时)是OC门在最小系统中需要加一个上拉电阻,由此,可以用P0口作为数码管的驱动(可以通过合理配置上拉电阻的大小以提供足够的驱动电流)
51单片机的P0口内部电路图
由于相对来说接一个排阻便宜可靠,且方便,且也足以提供驱动数码管的电流,故采用方案2:直接用单片机加上拉电阻的I/O口驱动数码管
三、电路原理图
简易数字钟原理图
3.1最小系统
本设计最小系统与一般的51最小系统设计保持一致性,晶振电路为12M的晶体振荡器搭配两个30pF的电容组成,复位电路由5v接一个开关与电容并联再与电阻串联后接地构成,下载电路采用的是串口下载,为电脑上连一根usb转串口线,然后串口练到电路上,再通过max232芯片进行电平转换将RS232串口的电平转换为单片机的5v以进行电平匹配。3.2共阴极4位一体数码管
四位一体数码管
数码管的显示由段选和位选控制,段选为图片中的每一位“8”型上的a、b、c、d、e、f、g、h共8段构成。位选有4个引脚,分别对应于数码管的4个位。
四、程序代码 如下:
#include
//延时10ms {
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);} void main(){ IE=0x8F;//开总中断,开定时T0,开定时T1,开外部中断0,开外部中断1 IP=0x00;//设置中断优先级均为低优先级,默认优先级为:调整时间》定时》设置显示页 IT0=1;IT1=1;TMOD=0x11;//定时器0工作于工作方式1,定时工作方式,由运行控制位TR1启动定时器;定时器1工作于工作方式1,定时工作方式,由运行控制位TR1启动定时器 P2=0Xfd;
TH0 = 0x3C;
TL0 = 0xB0;
{ switch(play){ case 1 :
{
if(anjian1==0)
{
{ delay();delay();if(anjian1==0)anjian11=anjian1;if(anjian1 &!anjian11)hour++;
} TH1=0xD8;TL1=0xF0;TR0=1;TR1=1;
//定时器T0用于20分之一秒的定时,定时器T1用于数码管的动态显示,外部中断0为调整时间,外部中断1为设置显示页
for(;;)else if(anjian2==0)
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
hour--;
else if(anjian3==0)
{
delay();
if(anjian3==0)
anjian33=anjian3;
if(anjian3 &!anjian33)
min++;
else if(anjian4==0)
{
delay();
if(anjian4==0)
anjian44=anjian4;
if(anjian4 &!anjian44)
min--;
}
break;case 2 : {
if(anjian1==0)
{
delay();
if(anjian1==0)
anjian11=anjian1;
if(anjian1 &!anjian11)
mon++;
else if(anjian2==0)
{
delay();
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
mon--;
else if(anjian3==0)
{
delay();if(anjian3==0)}
}
}
}
}
anjian33=anjian3;
if(anjian3 &!anjian33)
day++;
else if(anjian4==0)
{
delay();
if(anjian4==0)
anjian44=anjian4;
if(anjian4 &!anjian44)
day--;
}
break;case 3 : {
if(anjian1==0)
{
delay();
if(anjian1==0)
anjian11=anjian1;
if(anjian1 &!anjian11)
year++;
else if(anjian2==0)
{
delay();
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
year--;
else if(anjian3==0)
{
delay();
if(anjian3==0)
anjian33=anjian3;
if(anjian3 &!anjian33)
year++;
else if(anjian4==0)
{
delay();
if(anjian4==0)anjian44=anjian4;}
}
}
}
}
if(anjian4 &!anjian44)
year--;
}
break;case 0 : {
if(anjian1==0)
{
delay();
if(anjian1==0)
anjian11=anjian1;
if(anjian1 &!anjian11)
sec++;
else if(anjian2==0)
{
delay();
if(anjian2==0)
anjian22=anjian2;
if(anjian2 &!anjian22)
sec--;
else if(anjian3==0)
{
delay();
if(anjian3==0)
anjian33=anjian3;
if(anjian3 &!anjian33)
sec++;
else if(anjian4==0)
{
delay();
if(anjian4==0)
anjian44=anjian4;
if(anjian4 &!anjian44)
sec--;
} break;}
switch(play){
}
}
}
}
} case 1 : { led[0]=hour/10;
};}}
void service_int1()interrupt 2 using 1 { if(play==3)play=0;else play++;} void service_t0()interrupt 1 using 1
//实现1s的延时以及sec到min,min到hour,hour到day,day到month,month到year,year到next_year的转换 {
TH0 = 0x3C;if(j==20){
j=0;sec++;if(sec>=60)
TL0 = 0xB0;
led[1]=hour%10;led[2]=min/10;led[3]=min%10;
} break;
led[1]=mon%10;led[2]=day/10;led[3]=day%10;
} case 2 : { led[0]=mon/10;break;
led[0]=year/1000;led[1]=((year%1000)/100);led[2]=((year%100)/10);led[3]=(year%10);
} case 3 : {
break;
led[1]=16;led[2]=sec/10;led[3]=sec%10;
} case 0 : { led[0]=16;break;
}
else { { sec=0;min++;if(min>=60){ min=0;hour++;if(hour>=24){hour=0;day++;if(day>=31){ day=1;mon++;if(mon>=13){ mon=1;year++;} } } } } } j++;} void service_t1()interrupt 3 using 1 //定时器1实现了数码管的动态显示 {
TH1=0xFC;TL1=0x18;if(P2==0xfd){P2=0xfb;P0=table[led[2]];} else if(P2==0xfb){ P2=0xf7;P0=table[led[3]];} else if(P2==0xf7){P2=0xfe;P0=table[led[0]];
} else if(P2==0xfe){P2=0xfd;P0=table[led[1]];} }
五、制作实物图
六、心得收获
经过本次课程设计,我将课本上的知识转化为了实际的实物,更加深入的理解了单片机这,加强了自己的编程能力,与软硬件调试能力,总体来说,还是收获很大的。