版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、郑州科技学院单片机课程设计题 目 电子时钟 学生姓名 XXXX 专业班级 电气工程及其自动化X班 学 号 20XXXXX 院 (系) 电气工程学院 指导教师 XXX 完成时间 20X5年 XX 月 XX 日 27目 录1电子时钟相关介绍12设计方案和论证22.1设计任务22.2设计要求23硬件电路设计33.1电源电路33.2按键电路33.3时钟电路43.4LED显示电路54 软件设计54.1 Proteus软件简介54.2 主程序64.3 定时中断程序设计75 电路的仿真与调试96 总结10参考文献12附录一: 总体原理图13附录二:实物图14附录三:元器件清单15附录四:参考源程序161电子
2、时钟相关介绍单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,51单片机是各单片机中最为典型和最有代表性的一种。这次设计通过对它的学习、应用,以STC89C52芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。随着科技的不断进步,电子技术获得了飞速的发展,在其推动下现代电子产品已经渗透到社会的各个领域,有力地推动了社会生产
3、力的发展和社会信息化程度的提高。现代生活的人们非常注重时间观念,对时间计量精度的要求也越来越高,电子时钟也被人们广泛的应用。数字电子时钟的设计方法很多种,其中,利用单片机实现的电子时钟编程灵活,精确度高,使用方便,功能多,除了具有显示时间的基本功能外,还能通过按键实现对时间的调整。本文主要介绍用单片机内部的定时计数器、中断系统、以及独立按键和数码管显示器等部件,辅以必要的电路,设计的一个电子时钟。与传统的机械式表相比,以数码管为显示器的电子时钟时间显示直观,走时精准。在这次的设计中,我们采用数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行时间显示,用12MHz的晶振产生振
4、荡脉冲,定时器计数。数字电子时钟因其具有价格低廉,走时精准,功能多,便于集成等优点而受到广大消费者的喜爱。现如今数字电子时钟已成为人们日常生活中的必需品,广泛应用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们带来了极大的方便。在现代化的进程中,也离不开电子钟的相关功能和原理,比如家务的自动化、定时自动报警、按时自动打铃、定时广播、定时开关烘箱、通断动力设备等,所有这些都是以钟表数字化为基础的,而且是控制的核心部分。本次设计根据STC89C52单片机系统扩展的基本原理和方法、常用总线标准和典型接口电路的应用,结合本次设计的题目要求进行系统扩展,通过单片机驱动时分秒显示,最后通过74LS
5、04驱动的方式完成设计任务,设计论文中附有电路图、程序清单、各数据存储单元的所在地址和输入输出口对应表。2设计方案和论证2.1设计任务利用STC89C52单片机设计的一个简单的数字电子时钟,能进行时分秒的调整,能够较准确的显示时间。单片机控制8个数码管显示时、分、秒;并且具有24小时循环计时功能,走时精准;能够用按键开关实现时分秒的调整、时间设置和复位控制。2.2设计要求此次课程设计是利用STC89C52单片机内部的定时计数器、中断系统、以及独立按键和数码管显示器等部件,设计的一个单片机电子时钟。设计的电子时钟通过数码管显示时间,并能通过按键实现时间的设置和暂停、启动控制等。用定时计数器T0,
6、工作定时,采用方式1,对12MHz的系统时钟进行定时计数,设置初值,形成定时时间为50ms。用片内RAM的78H单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60,则分计数器79H单元加1,分计数器加到60,则时计数器7AH单元加1,时计数器加到24,则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。(1)显示格式为:XX:XX:XX,即:时:分:秒。(2)时间可采用12小时制显示或24小时制显示。(3)设置一个按键用于时间显示方式的切换。(4)系统上电后从上电时初始化显示:12-00-00开始计时。(5)能进行时间的调整
7、,可暂停时间的变动。系统整体框图如下图2-1所示单片机模块驱动模块按键模块LED显示模块时钟模块电源模块图2-1 系统整体框图3硬件电路设计3.1电源电路本次设计的单片机电子时钟系统所需电源电压为5V的直流电压源 。因此可以用两节电压值大小为2.5V干电池与电路电压源引脚相连接即可达到硬件设计要求。即本数字电子钟设计用两节电压值大小2.5V干电池做硬件电路电压源。3.2按键电路此次设计所需按键用于进行显示时间的调整与设置扩展的小键盘。单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求
8、。设计中校对时间和设定闹钟,是用四个按键来实现。按hour来调节小时的时间,按 min来调节分针的时间,按 sec来调节秒的时间。当用手按下一个键时,如图所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况,这就是抖动。这是使用按键控制不可避免的问题。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可以解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入按键码。图3-1 按键开关原理3.3时钟电路单片机芯片可使用内部时钟电路和外部时钟电路两种方式产生电
9、路所需的时钟脉冲,内部时钟电路实现可用石英晶体和微调电容外接即可达到,外部时钟电路实现需要一个外部脉冲源引入脉冲信号以保证个单片机之间时钟信号的同步。从硬件实现难易角度考虑,内部时钟电路的实现比外部时钟电路的实现更简易。既本数字电子钟设计所需的时钟源采用内部时钟电路实现。所用定时方式为工作方式1,石英晶振为12M,即最小定时时间为1us,最大定时时间约为65.5ms,其电路图如下图所示。图3-2 时钟电路图3.4LED显示电路数字电子钟设计的显示模块可以使用8个一位数码管实现,也可以用两个四位一体数码管实现。两种数码管的引脚虽然不同但实现效果相同。从实物制作的难易程度出发,本数字电子钟设计采用
10、两个四位一体数码管实现。即数码管引脚与单片机芯片和74LS245对应引脚相连接。4 软件设计4.1 Proteus软件简介Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的
11、单片机实验室。整个程序总体分为两大模块:主程序模块和中断服务程序模块。主程序模块又可分为多个模块:初始化模块、扫描模块、显示模块、时间调节模块。时间调节模块又可细分为对小时的调节、对分的调节和对秒的调节,使用对应的按键,按下触发后,被触发的秒,分,时显示加一或减一从而实现时间的调节。整个程序的设计思路是以显示为主体,其它程序的功能最终都反映在时间的显示上,显示程序贯穿于整个程序中,所有程序都是围绕以显示程序为中心来实现整体功能的。4.2 主程序时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位计算显示,再就是时个位计算显示,最后是时十位计算显示。定时器中断时是
12、先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到就显示时间。初始化时,选用定时器0,设置初值,打开中断总开关,打开定时器0和中断允许开关,启动定时器0,再进行时间初值显示,并判断按键。图3-5 主程序流程图4.3 定时中断程序设计在单片机中,定时功能是通过计数器的计数来实现的。计数的脉冲来自单片机的内部的电路门,在每个机器周期中产生一个计数脉冲,也就是每经过一个机器周期的时间,计数器加一。如果MCS-52采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1
13、。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。MCS-52单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/计数器两种工作模式和4种工作方式。定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX.当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,
14、每个机器周期产生一个脉冲使计数器增1。进入中断后,判定进入中断次数是否等于20,当等于20次时,表明已达到延时1秒,此时将显示的时间秒位上加1,同时判定秒位上是否达到60,如果达到60,则分位上加1,再判定分位上是否达到60,如达到60,则时位上加1,定时器仍赋初值,继续进行延时。图3-6 中断服务程序流程图5 电路的仿真与调试图 4-1 仿真原理图将电路焊接完成后,从电脑中将一些好的程序加载到C51芯片当中,接通电源就可以进行硬件调试了。如果显示结果不符合要求,应先检查电路各连接点是否正确连接,再次进行硬件电路的调试工作,或是检查代码程序是否符合硬件电路的设计,若有错即进行相应的修改,编译后
15、,再进行硬件电路的调试工作。如此反复操作,直到调试出正确结果。在电路的软件调试中我们需要用到proteus和keil软件来进行模拟和编写(1)在调试时需要先在计算机上运行程序调试软件Keil,进行程序调试,在没有警告和错误才能进行程序的输入。(2)在Proteus模拟软件中搭载模拟电路原理图,然后加载程序代码到单片机芯片中,进行模拟仿真。若出现的结果与设计不符,则需要查看错误后进行相应修改再进行调试与模拟仿真,直到调试出正确结果。6 总结不知不觉一周已经过去,这次的单片机课程设计也告一段落了。回顾一周我感慨颇多,在这一周的课程设计中中,颇有种争分夺秒的感觉,在我们选完课题之后,紧接着便开始搜索
16、有关电子时钟的资料,查找原理图,进行电路仿真设计,然后便是根据仿真后设计的原理图,购买所需要的元器件,进行焊接组装电路。不浪费一点时间,争分夺秒最终完美地完成任务。从程序的设计到程序的调试,从系统电路的仿真到系统电路的调试,经过我和同班的多次努力终于完成了这次具有实际使用价值的课程设计。通过这次课程设计,我才知道从理论学习到实践运用有多么的艰难。在这次设计中,遇到的首要难题是对元器件的控制,功能看似很简单,但一旦要用程序语言表现出来,那将是有一定的难度。在程序的逻辑性上有很大的要求,经过多方的查找资料以及请教同学才能勉强写出程序。在程序的最后阶段,遇到了从未有过的问题,程序的语句超过了取址范围
17、.,对于这样的问题,在思想上就打垮了我。但是我最终还是没有放弃,硬着头皮去再把程序从头至尾分析一遍,看有能不能精简的地方,出于无奈我只能把有些语句删除掉,但整体上并不影响程序的功能。同时我认识到了自己对单片机这门课程的理解程度以及熟练和掌握程度,也看到了自己的不足。这次的课程设计将有助于我们更好地去学好单片机基础知识,并且为我们今后的学习打下了坚实的基础。与此同时,在这次的课程设计中,我知道了理论和实际的距离,也知道了理论和实际相结合的重要性,也从中学到了很多书本上无法学到的东西,对单片机这门课程有了更深的了解,锻炼了我们的动手操作能力,同时也培养我们思维能力,明白了电路的基本原理,让我受益匪
18、浅。我也感受到我所学的知识并不是空的理论,而是能运用到生活和工作中的。通过这次的课程设计,我加深了对汇编语言的理解,也熟练掌握了汇编语言的编辑、调试软件。在以后的学习生活中还要继续保持严谨认真的科学态度,保持不断尝试和探索的耐心,保持勇于解决问题的决心。不断的向老师、同学学习、交流,分享吸取他们的经验,更好的提高自己。我所收获到的不仅是知识学习方面,更多的是生活方面,在生活中,我们应该学会与别人共享,分享知识,分享成果,这样才有助于彼此之间的交流,有利于共同进步,共同发展,同时也有利于我们对学习产生浓厚的兴趣。虽然我们这次的产品设计有点问题,导致部分功能未实现,但我们会吸取教训,好好反思,找出
19、问题的关键,力求在以后的设计中能做得更好,同时对于这次的教训,我们时刻牢记在心中,就当作是一种鞭策,不断的激励我们前进。我相信,只要我们对自己有信心,不拍困难,勇往直前,成功最终是属于我们的。参考文献1 沈精虎.Protel 99SE基础教程J. 2 李广弟,朱月秀,冷祖祁. 单片机的硬件结构J . 页码148。 3 张一斌,余建坤.单片机原理课程序设计.长沙:中南大学出版社.2009.4 张迎新.单片机初级教程-单片机基础M.北京:北京航空航天出版社.2006.5 郭天祥.新概念51单片机C语言教程M.北京:电子工业出版社.2009.6 胡汉才.单片机原理及其接口技术(第2版)M.北京:清华
20、大学出版社.2004.附录一: 总体原理图附录二:实物图附录三:元器件清单序号名称规格数量01单片机51102芯片座DIP-40103数码管0.36204电阻10K205电容22P206晶振12M107三极管8550108蜂鸣器有源109按键410电源座3.5mm111排阻560R112电路板113usb线1附录四:参考源程序#include <reg51.h>#include <intrins.h>unsigned char data dis_digit;unsigned char key_s, key_v;unsigned char code dis_code11=
21、0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00;/0,1,2,3 4, 5, 6, 7, 8, 9, off /共阴数码管unsigned char data dis_buf8;unsigned char data dis_index;unsigned char hour,min,sec;unsigned char sec100; unsigned char flag,flag1,flag2; /falg用于时间停止和启动标志,falg1为12小时和24小时的切换标志,falg2为12小时的上午和下午的切换标志sbit K1 =
22、P10;/用于时的调整sbit K2 = P11;/用于分的调整sbit K3 = P12;/用于秒的调整sbit K4 = P13;/用于时间调整的开关,按下一次暂停时间,再按一次时则开始计时sbit K5 = P14;/用于24小时制和12小时制的切换bit scan_key();void proc_key();void inc_sec();void inc_min();void inc_hour();void inc_hour1();void delayms(unsigned char ms);void main(void) P0 = 0xff; P2 = 0xff; TMOD = 0x
23、11; / 定时器0, 1工作模式1, 16位定时方式 TH1 = 0xd8;/使用12MHz的晶振,定时时间为:10ms TL1 = 0xf0; TH0 = 0xf8; /定时时间为2ms,用于数码管的动态扫描 TL0 = 0x30; hour = 12; min = 00; sec = 00; sec100 = 0; flag = 0; flag1 = 0; dis_buf0 = dis_codehour / 10; / 时十位 dis_buf1 = dis_codehour % 10; / 时个位 dis_buf2 = dis_codemin / 10; / 分十位 dis_buf3 =
24、 dis_codemin % 10; / 分个位 dis_buf4 = dis_codesec / 10; / 秒十位 dis_buf5 = dis_codesec % 10; / 秒个位 dis_buf6 = 0x00; / 关闭该位数码管 dis_buf7 = 0x7f; / 显示 B 表示下午 dis_digit = 0xfe; dis_index = 0; TCON = 0x01;/T1:TF1 TR1 T0:TF0 TR0 定时中断:IE1 IT1 IE0 IT0 /外部中断0的触发方式为下降沿触发 IE = 0x8a; / 使能timer0,1 中断,控制IE寄存器的格式:EA -
25、 - ES ET1 EX1 ET0 EX0 / 1 0 0 0 1 0 10 TR0 = 1; /开定时器0 TR1 = 1; /开定时器1 key_v = 0x1f;/定义为K1,K2,K3,K4,K5相应的按键,当没有按下时则为,K1,K2,K3,K4,K5,都为高电平,0x1f while(1) if(scan_key()/先扫描一次是否有按键按下 delayms(10); /延时 if(scan_key() /再次扫描一次是否有按键 按下 key_v = key_s;/将key_s的值传给key_v proc_key(); bit scan_key() key_s = 0x00; /设
26、置key_s先为0 key_s |=K5; key_s <<= 1; key_s |= K4; key_s <<= 1; key_s |= K3; key_s <<= 1; key_s |= K2; /K2 -> P1.1,若K2按下则为0,当K2按下时key_s与K2或的结果会使得key_s为0x00,未按下时K2则为1,key_s与K2或的结果会使得key_s为0x01 key_s <<= 1; /将key_s左移一位, key_s |= K1;/K1 -> P1.0,若K1按下则为0,当K1按下时key_s与K1或的结果会使得k
27、ey_s为0x00或是0x02,没有按下时则得到的结果为0x01或是0x03 return(key_s key_v); /进行逻辑异或运算,相同为0,不同为1. 已经定义了变量:key_v = 0x1f; 如果两个按键都没有按下则是得到0x03,异或的结果是为0void proc_key() if(K4=0) /K4是否按下 flag+; /关闭定时器 TR1=0; /关闭定时器1 dis_buf6 = 0x76; / 显示 H,用于表示设定时间的标志 if(K5=0) flag1+; /flag1的初始值是0,falg1为12小时和24小时的切换标志 if(flag1=1) /24小时制 i
28、f(dis_buf7=0x7f) /判断是不是下午 hour=hour+12;dis_buf7=0x00; dis_buf7 = 0x00; / 关闭显示 if(hour >23) hour = 0; if(hour > 9) dis_buf0 = dis_codehour / 10; / 时十位 else dis_buf0 = 0x00; / 当小时的十位为0时不显示 dis_buf1 = dis_codehour % 10; / 时个位if(flag1=2) /12小时制flag1=0;if(hour>12|hour=0) /判断是不是下午,并用于处理24小时制的大于13
29、和等于0的处理 if(hour>12) hour=hour-12;if(hour=0)hour=12;dis_buf7=0x7f; /显示下午 B elsedis_buf7 = 0x77; / 显示 A 表示上午if(hour > 9) dis_buf0 = dis_codehour / 10; / 时十位 else dis_buf0 = 0x00; / 当小时的十位为0时不显示 dis_buf1 = dis_codehour % 10; / 时个位 if(key_v & 0x01) = 0) / K1,当只有K1按下时,则key_s为0x02,没有按下时key_s则为0x
30、03 if(flag1=0) inc_hour(); if(flag1=1) inc_hour1(); else if(key_v & 0x02) = 0) / K2, 当只有K2按下时,则key_s为0x01,没有按下时key_s则为0x03 min+; if(min > 59) min = 0; dis_buf2 = dis_codemin / 10; / 分十位 dis_buf3 = dis_codemin % 10; / 分个位 else if(key_v & 0x04) = 0) / K3是否按下 sec+; if(sec > 59) sec = 0; d
31、is_buf4 = dis_codesec / 10; / 秒十位 dis_buf5 = dis_codesec % 10; / 秒个位 if(flag=2) flag=0;TR1=1;dis_buf6 = 0x00;if(flag1=0)if(flag2) dis_buf7 = 0x77; / 显示 A 表示上午 else dis_buf7 = 0x7f; / 显示 B 表示下午 void timer0() interrupt 1/ 定时器0中断服务程序, 用于数码管的动态扫描/ dis_index - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量/ dis_digit - 位选通值, 传送到P0口用于选通当前数码管的数值, 如等于0xfe时,/ 选通P2.0口数码管/ dis_buf - 显于缓冲区基地址 TH0 = 0xf8; /定时时间为2ms TL0 = 0x30; P2 = 0xff; / 先关闭所有数码管 P0 = dis_bufdis_index; / 显示代码传送到P0口 P2 = dis_digit; / dis_digit = _crol_(dis_digit,1); / 位选通值左移, 下次中断时选通下一位数码管 dis_index+; / dis_index &= 0x0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年厦门东海职业技术学院单招职业技能考试题库及答案详细解析
- 2026年江西交通职业技术学院单招职业适应性测试题库附答案详细解析
- 中船集团武昌造船2026届春季校园招聘考试参考试题及答案解析
- 2026年陕西省西安市高职单招职业技能考试题库有答案详细解析
- 2026年重庆建筑工程职业学院单招职业技能考试题库附答案详细解析
- 2026年西藏自治区高职单招综合素质考试题库附答案详细解析
- 管网输水管道施工与铺设方案
- 2026福建三明市清流县新任教师招聘5人备考题库【考试直接用】附答案详解
- 2026山东青岛城市轨道交通科技有限公司招聘7人备考题库及答案详解(历年真题)
- 2026河北兴冀人才资源开发有限公司招聘2人备考题库附答案详解(培优)
- 2026时事政治必考试题库含答案
- 2026届高考政治一轮复习:统编版必修1~4+选择性必修1~3全7册必背考点提纲汇编
- 2024年工业厂房水电工程及消防施工协议模板版
- 经济学系《经济学原理》课程教学大纲 (一)
- 紫菜养殖常见病虫害防治方法
- 2024年浙江丽水松阳县事业单位招聘工作人员23人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 防爆安全知识培训
- 诺瓦星云在线测评题库
- 超轻粘土备课
- 机器人控制技术与实践 课程标准-教学大纲
- 桑树坪煤矿12 Mta新井设计
评论
0/150
提交评论