1、单片机课程设计最终版本单片机课程设计报告题目:数字时钟 专 业: 生产过程自动化 班 级: 10自动化4班 姓 名: * 学 号:10* 指导教师: * 时 间: 2012年06月07日 目 录一、课程设计说明 21-1设计题目 21-2设计目的 21-3设计目标 21-4设计要求 21-4-1基本要求 21-4-2扩展部分 2二、系统概述 22-1概述 22-2原理框图 3三、原理概述 33-1硬件 33-1-1电源模块 33-1-2主控模块STC89C52 43-1-3键盘电路设计 43-1-4数码管显示模块及其驱动 53-1-5 LED结构原理图 63-1-6蜂鸣器驱动模块 63-2软件
2、 73-2-1程序流程图 73-2-2按键读取流程 83-2-3日历进位判断 93-2-5 P0口对应段码及数值 11四、附件 124-1原理图 124-2器件清单 134-3使用说明书 134-3-1功能说明 134-3-2按键说明 134-3-3时间设置说明 144-3-4闹钟设置说明 144-3-5整点报时开关说明 14五、实验总结及感想 15一、课程设计说明1-1设计题目:数字时钟1-2设计目的:应用单片机控制技术,以STC89C52单片机为核心的电子时钟。1-3设计目标:在数码管上显示相应的时间,并通过一个控制键来实现时间的调整。1-4设计要求1-4-1基本要求1. 在8位数码管上显
3、示当前时间。显示格式“时时-分分-秒秒”。 2. 利用按键可对时间及闹玲进行设置。1-4-2扩展部分1. 日历功能(能对年月日与星期进行显示,能自动进行分辨平,闰年以及确定各月天数,并自动调整当前的日期)。2. 闹铃(定时响铃)。3. 整点报时(在622点具有整点提示功能,响铃时间为5秒)。4. 贪睡功能(闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调)。5. 按键发音。二、系统概述2-1概述该电子时钟由STC89C52,八段数码管等构成,采用晶振电路作为驱动电路,中断产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天,然后根据平年与
4、闰年的不同确定日期,再根据当日的日期,计算出本日为星期几。从而达到计时的功能,是人民日常生活补课缺少的工具。现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。2-2原理框图三、原理概述3-1硬件3-1-1电源模块 从外部引入4.5V的直流电,为单片机、复位电路提供电源。3-1-2主控模块STC89C52 STC89C52
5、是一个8位单片机,片内ROM全部采用FLASH ROM技术,晶振时钟为12MHz。STC89C52是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。第31引脚需要接高电位使单片机选用内部程序存储器;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS。3-1-3键盘电路设计该设计只用了四个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现日期、时间和闹钟的调节以及控制是否闹钟模式。3-1-4数码管显示模块及其驱动本电路的输出信号为8段数码管的位选和段选信号。本实验的数码管是共阳的,为了防止段选信号不能驱动数码管,
6、故在P1口连接上拉电阻后,再送段选信号,以提高驱动,位选信号直接从P2口接入,如下图:数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在
7、一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。3-1-5 LED结构原理图LED为发光二极管的简称,起体积小,耗电低,常被用为微型计算机与数字电路的输出装置,以显示信号。本次试验LED的是以底电平驱动,共阳极的电路连接而成的。3-1-6蜂鸣器驱
8、动模块蜂鸣器是一种一体化结构的电子讯响器,蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。3-2软件3-2-1程序流程图3-2-2按键读取流程3-2-3日历进位判断流程图如下:首先,要考虑年份是不是闰年,闰年的判断方法是:将年份除以10
9、0,若能整除,则将年份除以400,若还能整除,则为闰年,若不能,则为平年;若不能被100整除,则判断是否能被4整除,若能,则为闰年,若不能则为平年。只有2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月为每月30天。3-2-4计算某一天是星期几的公式:星期制度是一种有古老传统的制度。据说因为圣经创世纪中规定上帝用了六天时间创世纪,第七天休息,所以人们也就以七天为一个周期来安排自己的工作和生活,而星期日是休息日。从实际的角度来讲,以七天为一个周期,长短也比
10、较合适。所以尽管中国的传统工作周期是十天(比如王勃滕王阁序中说的“十旬休暇”,即是指官员的工作每十日为一个周期,第十日休假),但后来也采取了西方的星期制度。 在日常生活中,我们常常遇到要知道某一天是星期几的问题。有时候,我们还想知道历史上某一天是星期几。通常,解决这个方法的有效办法是看日历,但是我们总不会随时随身带着日历,更不可能随时随身带着几千年的万年历。假如是想在计算机编程中计算某一天是星期几,预先把一本万年历存进去就更不现实了。这时候是不是有办法通过什么公式,从年月日推出这一天是星期几呢?W = (Y-1)*365 + (Y-1)/4 - (Y-1)/100 + (Y-1)/400 +
11、D (1)其中D是这个日子在这一年中的累积天数。算出来的W就是公元前1年(或公元0年)12月31日到这一天之间的间隔日数。把W用7除,余数是几,这一天就是星期几。比如我们来算2004年5月1日:W = (2004-1)*365 + (2004-1)/4 - (2004-1)/100 + (2004-1)/400 +31+29+31+30+1)= 731702,731702 / 7 = 1045286,余数为六,说明这一天是星期六。这和事实是符合的。上面的公式(1)虽然很准确,但是计算出来的数字太大了,使用起来很不方便。仔细想想,其实这个间隔天数W的用处仅仅是为了得到它除以7之后的余数。这启发我
12、们是不是可以简化这个W值,只要找一个和它余数相同的较小的数来代替,用数论上的术语来说,就是找一个和它同余的较小的正整数,照样可以计算出准确的星期数。显然,W这么大的原因是因为公式中的第一项(Y-1)*365太大了。其实,(Y-1)*365 = (Y-1) * (364+1)= (Y-1) * (7*52+1)= 52 * (Y-1) * 7 + (Y-1)这个结果的第一项是一个7的倍数,除以7余数为0,因此(Y-1)*365除以7的余数其实就等于Y-1除以7的余数。这个关系可以表示为:(Y-1)*365 Y-1 (mod 7)其中,是数论中表示同余的符号,mod 7的意思是指在用7作模数(也就
13、是除数)的情况下号两边的数是同余的。因此,完全可以用(Y-1)代替(Y-1)*365,这样我们就得到了那个著名的、也是最常见到的计算星期几的公式:W = (Y-1) + (Y-1)/4 - (Y-1)/100 + (Y-1)/400 + D (2)这个公式虽然好用多了。3-2-5 P0口对应段码及数值P0口对应段码及数值显示数字P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.016进制代码dpgfedcba0110000000xc01111110010xf92101001000xa43101100000xb04100110010x995100100100x926100000100
14、x827111110000xf88100000000x809100100000x90-101111110xbf空111111110xffP100011000x8c四、附件4-1原理图4-2器件清单 元件名称规格型号单位数量单片机芯片STC89C52片1晶振12MHz只1八段数码管7SEG-4IN1只2瓷片电容104只1瓷片电容22只2电阻4.7k只8电阻470只8电阻220只1电阻1K只2电阻10K只4电阻10k只4三极管9012个9二极管1N4148只9按键Tack Switch只5开关Pwr Switch个1电源座5.5DC个1电源线USB转DC5.5条1电源WWY-0510个1排阻9A1
15、03G排1蜂鸣器脉冲型个14-3使用说明书4-3-1功能说明1. 利用单片机内部的定时器,在两个4位数码管上显示日期,如20120510;时间08-45-20;星期-4(其中日期/时间/星期幻灯播放显示,间隔4秒)。2. 年月日、时间可设置,所有正在设置的项目间隔0.5秒闪烁显示3. 星期自动对应,闰年、大、小月份自动调整。4. 有四个按键:“设置/确定”、“+/整点报时开关”、“-”、“取消/闹铃”;按键具有优先级:“取消/闹铃”“设置/确定”“ +”、“”。即在设置时间时+、- 键有效;在任何状态“取消/闹铃”键都可以退出人为操作。5. 具有闹铃功能,闹铃每次响一分钟,也可手动关闭,闹钟时
16、间可设置。6. 具有贪睡的功能。7. 具有整点报时功能(622时).4-3-2按键说明1. 选择按键,选择对年、月、日、时、分等的选中操作,当其中一个被选中的时候,该项产生间隔0.5秒的闪烁,并可以进行时间的调整。2. 增加按键,对年、月、日、时、分的增加操作。3. 减少按键,对年、月、日、时、分的减少操作。4. 取消按键,对当前设置的内容不保存,并退出设置。4-3-3时间设置说明1. 第一次按下“设置/确定”键,“年”位开始闪烁,此时按“+”“-”键可调节年;2. 第二次按下“设置/确定”键,“月”位开始闪烁,此时按“+”“-”键可调节月;3. 第三次按下“设置/确定”键,“日”位开始闪烁,
17、此时按“+”“-”键可调节日;4. 第四次按下“设置/确定”键,“时”位开始闪烁,此时按“+”“-”键可调节时;5. 第五次按下“设置/确定”键,“分”位开始闪烁,此时按“+”“-”键可调节分;6. 第六次按下“设置/确定”键,设置完毕,时钟开始正常走动。在设置过程的任何时刻,“取消/闹铃”键都可以取消当前的设置操作并退出本次设置操作。4-3-4闹钟设置说明1. 闹钟设置:在日期/时间/星期幻灯播放显示的状态下: 第一次按下“取消/闹铃”键,进入闹钟设置模式,“闹钟时”开始闪烁,此时按“+”“-”键可调节闹钟时; 第二次按下“取消/闹铃”键,“闹钟分”位开始闪烁,此时按“+”“-”键可调节闹钟
18、分; 第三次按下“取消/闹铃”键,“闹钟开关”位开始闪烁,此时按“+”“-” 键切换P0/P1;P0为闹钟开,P1为闹钟关。 第四次按下“取消/闹铃”键,设置完毕,时钟开始正常走动。在此过程中,“设置/确定”键都可以保存本次的闹铃设定并退出设置。2. 关闭闹铃,当时间走到闹钟设置时间时,闹铃响起,持续一分钟后自动关闭,在此过程中,可按下“取消/闹铃”键来手动退出当前闹铃。闹铃会在下一次闹钟时间再次响起。3. 贪睡功能,在闹铃响的过程中,可按下“设置/确定”键。闹铃立即关闭并在五分钟后响起。4-3-5整点报时开关说明在非时间设置与非闹铃设置过程的时刻,“+/整点报时开关”键可以取消与打开整点报时
19、的功能。当开启整点报时功能是,P07端口的所接LED灯会亮起来;关闭整点报时功能P07端口的所接LED灯会不会亮起来。五、实验总结及感想一分耕耘,一分收获。通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗了过多的内存资源。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。 我知道,今后我的路还是很长,我要学的东西也有很多。通过这次实习,我深刻的认识到计算机专业的路的不平坦,但 我会以一种良好的态度去迎接每一个挫折和挑战。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1