欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机C语言电子时钟完整版(闹钟,整点报时).docx

    • 资源ID:90958226       资源大小:381.52KB        全文页数:35页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机C语言电子时钟完整版(闹钟,整点报时).docx

    . . .摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要 。本电子钟采用 ATMEL 公司的AT89S52 单片机为核心,使用 12MHz 晶振与单片机 AT89S52 相连接,通过软件编程的方法实现以 24 小时为一个周期,同时 8 位 7 段 LED 数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能 ,当时间到达提前定好的时间进行蜂鸣报时 。该电子钟设有四个按键 KEY1、KEY2、KEY3、KEY4 和KEU5 键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。关键词电子钟;AT89S52;硬件设计;软件设计.专业.专注. . .ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEsLas its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.Key wordsElectronic clock; ; AT89S52; Hardware Design ;Software Design.专业.专注. . .目录1 设计课题任务、功能要求说明及方案介绍11.1 设计课题任务11.2 功能要求说明11.3 设计总体方案介绍及原理说明12 设计课题硬件系统的设计22.1 设计课题硬件系统各模块功能简要介绍22.2 设计课题电路原理图、PCB 图、元器件布局图22.3 设计课题元器件清单53 设计课题软件系统的设计63.1 设计课题使用单片机资源的情况63.2 设计课题软件系统各模块功能简要介绍63.3 设计课题软件系统程序流程框图63.4 设计课题软件系统程序清单104 设计结论、仿真结果、误差分析、教学建议214.1 设计课题的设计结论及使用说明214.2 设计课题的仿真结果214.3 设计课题的误差分析224.4 设计体会224.5 教学建议22结 束 语23参考文献24致谢25附录26.专业.专注. . .1 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整功能。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12 时 0 分 0 秒开始运行,进入时钟运行状态;按电子钟 KEY1 键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按 KEY1 键再次进入时钟运行状态。1.3 设计课题总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图 1 所示:键盘复位电路AT89S52数码管显示晶振电路下载.专业.专注. . .图1-1 总体设计方案图本电子钟的所有的软件、参数均存放在 AT89S52 的 Flash ROM 和内部 RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流 。键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果 , 再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现 ,单片机最小系统模块,输入模块、输出模块、电源模块。( 1 ) 单片机最小系统模块: 包括低功耗、高性能 CMOS8 位微控制器AT89S52;复位电路;晶振电路。本本模块 AT89S52 系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚 XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。这样就构成一个稳定的自激振荡器。(2) 输入模块:本模块共用到了 4 个按键,1 个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。3 个按键独立式键盘,KEY1 键控制电子钟的启动,KEY2 键为加 1 键,KEY3 键为减 1 键,KEY1 键第三次控制电子钟的调整状态。且 KEY1、KEY2、KEY3、任一键都独自连一个 I/O(P1.0、P1.1、P1.2、P1.3) 口线,说明它们可以独立实现相应的电子钟功能。(3) 输出模块:本次设计显示为 8 位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。数码管用 8 个 PNP 三极管驱动。(4) 电源模块:现在市面上销售的编程器有很多都是由 PC 机的 USB 口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的 USB 供电及下载器。.专业.专注. . .2.2 设计课题电路原理图、PCB 图、元器件布局图.专业.专注.“干卢,-q.“,一r ',T, 严儿,E.,u-'J J. . .;,l'! ,1:;, |,I I "I|'|·! !t"' ":-.·"·.":汽.","-:<."."':-.·"·:=,t ::;:i:,: j1 | l, I. i it :I I 1 | ;1节,.,I'lll'IJ三I'll,IN,·,l,门;:.l.,c"lll','I,''1,",:.,-, I,,田 :;i : r'""ll'":口叩i 廿l 仆)II 从1, l;,l|II|,五绮,:-11_L 1从 1I 值1 | W h节l',I, l. ,,., .,l, .,., 暑1 | 仰11, .iff11r- 11 U1令拦",_f, ,:lh'I一I .,t |I' I!行1 | 爪沼, ,mImi.,l··, L'iI山邓,'l. 1,,I,1 1 ”“ 5 "h"·"卜,·"!:,; ·沿,., ,1-11',”1 ,l .,图 2-1 电路原理图总设计原理图见附录 A原理总设计图见附录附录 B.专业.专注. .PCB 图见附录 C2.3设计课题元器件清单. .表 2-1设计所用元器件清单名称数量参数电容2 个33pF数码管2 个4 位一体电阻1 个200下载口1 个WE普通插座1 个40PIN电阻16 个470按键4 个三极管USB 供电线9 个1 根PNP晶振1 个12MHz极性电容1 个22F芯片1 块AT89S52发光二极管9 个LED六角开关1 个SW-PB.专业.专注. . .3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况设计课题使用单片机资源的情况如下:P0 口输出数码管段选信号,P2 口输出数码管位选信号;晶振 12MHz;调整选择键 KEY1:P1.0;通过选择键选择调整位,选中位闪烁;增加键 KEY2:P1.1;按一次使选中位加 1;减少键 KEY3:P1.2;按一次使选中位减 1;此数字钟可实现基本的走时和显示时间时、分、秒;时间的调整;闹钟的设定和调整;闹钟的开启和关闭功能,具体如下:(1) ) 实现基 本的走 时和显示 时间的时 、分、秒, 上电自动显 示初始时间12-00-00,且控制闹钟状态的的蓝色 led 灯为亮的状态。(2) 当第一次按下第一个弹性按键时进入时间的调节状态 ,此时实现对显示时间的小时调节,按下第二个按键时实现小时的加一调节,按下第三个按键时实现小时的减一调节。(3) 当第二次按下第一个弹性按键时进入显示时间的分钟调节状态 ,按下第二个按键时实现分钟的加一调节,按下第三个按键时实现分钟的减一调节。(4) 当第三次按下第一个弹性按键时进入闹钟的小时调节状态 ,按下第二个按.专业.专注. . .键时实现闹钟小时的加一调节,按下第三个按键时实现闹钟小时的减一调节。(5) 当第四次按下第一个弹性按键时进入闹钟的分钟调节状态 ,按下第二个按键时实现闹钟分钟的加一调节,按下第三个按键时实现闹钟分钟的减一调节。(6) 当第五次按下第一个弹性按键时返回正常的显示时间走时状态。(7) 当同时按下第二和第三个弹性按键时,关闭闹钟,且此时蓝色 led 灯为灭, 及定时时间到蜂鸣器并不响 ,若再次同时按下第二和第三个弹性按键 ,则开启闹钟,且此时蓝色 led 灯为亮,定时时间到蜂鸣器发出滴滴的闹铃声,同时按下第二和第三个弹性按键即可关闭闹铃。闹铃状态默认为开启。3.2 设计课题软件系统个模块功能简要介绍本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键盘输入程序模块:主要是用于确定按键并得到特定的键码值。数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。3.3 设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过 Keil 软件开发平台将程序转变成十六进制程序语言,接着使用 Proteous 进行仿真,读出显示数据。主程序流程框图如 3-1 所示;时间处理子程序流程框图 3-2 所示;中断服务程序程序如 3=3 所示;.专业.专注. . .图 3-1主程序流程框图.专业.专注. . .开始秒表个彴 显示计算秒表曰们 显示 计算 I分钟个个'i 显示计算分钟十个'i 显示计算小时个位显示计幛小时十:三结束图 3-2 时间处理子程序流程框图.专业.专注. . .口J I一 女台1 丕少n寸 r红 ?不少力n一分 力 l畸 N口yU寸 力IJ l畸NY尔! 壬l:f 寸 I、厂ll勹断返回图 3-3纣束1中断子程序厂1.专业.专注. . .3.4 设计课题软件系统程序清单;-;项目名称:数字电子钟;项目功能:本电子钟实现 24 小时制,8 位数码管显示时分秒,显示格式:12-59-00 通过 4 只按键来调整时间,调整选择键 KEY1:P1.0;通过选择键选择调整位,选中位闪烁,增加键 KEY2:P1.1;按一次使选中位加 1。减少键 KEY3:P1.2;按一次使选中位减 1,bear:P3.1;到了整点和闹钟就会响,如果长按 KEY1 第一次切换到正常时钟显示,按第二次切换到时的调整,按第三次切换到分的调整,同时 led:P1.2 就会闪烁, 按第四次和第五次分别切换到闹钟的时分的调整 ,可进行调时、调分快进快减,并停止闪烁。如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能。P0 口输出数码管段选信号,P2 口输出数码管位选信号;晶振 12MHz。编程作者: 林炽逸完成时间: 2013 年 06 月 8 日程序请清单如下:#include <reg51.h> #include<absacc.h> #include <intrins.h> #define uint unsigned int#define uchar unsigned char sbit KEY1=P11;/切换键sbit KEY2=P12; /minute ,hour 调整加 1 定义sbit KEY3=P17; /minute ,hour 调整减 1 定义sbit bear=P31; /闹铃sbit led=P12; /闹钟,整时灯闪烁.专业.专注. . .code unsigned char tab=0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xc8,0x8e,0xff,0x21; /段码控制char code weikong_code=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; uchar ms8=2,2,10,4,0,0,1,14;uchar StrTab8;uchar minute=59,hour=12,second=0; / 正常 时钟秒,分,时 定义uchar minute1=00,hour1=00; second1=00; uchar flag=0, flag1=0;/切换标志uchar num=0;/ 闹钟 时钟秒,分,时 定义uint count=0;/定时器计数,定时 50ms,count 满 20,秒加 1/*子函数声明*/ void xianshishuzu(); /显示数组子程序void alarm();/闹钟子程序/*延时子程序*/ void delay(uint z)uint x,y;for(x=0;x<z;x+) for(y=0;y<110;y+);/*时间处理子程序*/ void time_pro(void).专业.专注. . .if(second=60)second=0;minute+; if(minute=60)minute=0;hour+; if(hour=24)hour=0;/*显示时钟子函数*/ void dispaly(uchar w8)unsigned inti,j,aa;aa=0xfe;/ 位 选 初 值 1111 1110 for(i=0;i<8;i+)/依次将数组 w 中八个数取出,并显示P2=aa; j=wi;/位选/取出要显示的数码P0=tab j;/取出段选编码aa=_crol_(aa,1);/位选信号循环右移? delay(1);/显示延时P0=0xff;/消影.专业.专注. . ./*显示时钟数组子程序*/ void xianshishuzu()StrTab1=second/10;/秒个位StrTab0=second%10; StrTab2=10; StrTab4=minute/10; StrTab3=minute%10; StrTab5=10; StrTab7=hour/10; StrTab6=hour%10;/秒十位/间隔符 -/分个位/分十位/间隔符 -/时个位/时十位/*键盘扫描子程序*/ void keycan()if(KEY1=0)/按一次,正常显示,按第二次,时调整,按第三次,分调这整,delay(10);/按键 1 去抖以及动作if(KEY1=0)/确认按键是否按下flag+;/切换标志.专业.专注. . .while(!KEY1);/释放按键if(flag=1) if(KEY2=0)delay(10); if(KEY2=0)hour+;if(hour=24)hour=0;/正常时间 小时 加 1while(!KEY2)dispaly(StrTab);/释放按键if(KEY3=0)delay(10); if(KEY3=0) hour-;if(hour=0)hour=23; dispaly(StrTab); while(!KEY3) dispaly(StrTab);/正常时间小时减 1if(flag=2)if(KEY2=0)/按键去抖以及动作 delay(10); if(KEY2=0) minute+;if(minute=60)minute=0;/分加 1.专业.专注. . .while(!KEY2) dispaly(StrTab); if(flag=3)/ 秒表的加 1 if(KEY3=0) delay(10); if(KEY3=0) second+;if(second=0)second=59;while(!KEY3) dispaly(StrTab);/秒加 1if(flag=3) if(KEY2=0)delay(10); if(KEY2=0) hour1+;if(hour1=24)hour1=0; while(!KEY2) alarm(); if(KEY3=0) delay(10); if(KEY3=0) hour1-;if(hour1=0)hour1=23; .专业.专注/闹钟对时/闹钟时间 小时 加 1/闹钟时间 小时 减. . .while(!KEY3) alarm();if(flag=4)if(KEY2=0) /按键去抖以及动作delay(10); if(KEY2=0)minute1+;if(minute1=60)minute1=0;while(!KEY2)alarm(); if(KEY3=0) /按键去抖以及动作delay(10); if(KEY3=0) minute1-;if(minute1=0)minute1=59;while(!KEY3) alarm();/闹钟分加 1/闹钟分减 1.专业.专注. . ./*蜂鸣器子程序*/ void beng()bear=1;P3=0xfd; delay(100); bear=0; P3=0XFf;delay(100);/*整点报警子程序*/ void zhengdian (void)uchar i=0; if(second=0)&(minute=0)/整点报时for(i=0;i<10;i+)TR0=1; beng();dispaly(ms);.专业.专注. . ./*定时闹钟*/ void alarm()uinti;if(hour=hour1&&second1=minute1&&(second>=second1&&second<second1+5)|(minute=0&&second<1)for(i=0;i<3;i+) beng();StrTab1=second1/10;/闹钟秒个位StrTab0=second1%10; StrTab2=10; StrTab4=minute1/10; StrTab3=minute1%10; StrTab5=10; StrTab7=hour1/10; StrTab6=hour1%10; TR0=0;dispaly(StrTab);/秒十位/间隔符 -/分个位/分十位/间隔符 -/时个位/时十位xianshishuzu();.专业.专注. . ./*中断子程序*/ void time_() interrupt 1/中断程序count+;TH0=(65536-50000)/256; TL0=(65536-50000)%256;/0.5ms 重新送初值if(count=20)/定时器计数,定时 50ms,count 满 20,秒加 1 second+; count=0;if(second=60)/秒值等于 60,秒清零,分加 1 second=0;minute+;if(minute=60)/分值等于 60,分清零,时加 1 minute=0; hour+;if(hour=24)hour=0;/时值等于 24,时清零,返回,全部归零xianshishuzu();/*主函数*/.专业.专注. . .void main()P1=0XFF;TMOD = 0x11;/time0 为定时器,方式 1 TH0=(65536-50000)/256; / 预 置 计 数 初 值 ,50ms TL0=(65536-50000)%256;EA=1;/总中断开ET0=1;/允许定时器 0 中断TR0=1;/开启定时器 0while(1)/主循环if(flag=0)TR0=0; dispaly(ms);if(P1!=0XFF)keycan(); if(flag>0) if(flag=1|flag=2) TR0=1; dispaly(StrTab); zhengdian ();if(flag=3|flag=4) TR0=0;alarm(); if(flag=5)dispaly(StrTab); if(flag=6)TR0=0;flag=0; dispaly(ms); .专业.专注. . .4 设计结论、仿真结果、误差分析、教学建议4.1 设计课题的设计结论及使用说明本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案, 对所用芯片功能进行查找、调试,然后画电路图制 PCB 板、打孔、溶铜、焊接等, 真的经历了许多困难,却积累了很多宝贵的经验,本设计用 2 个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中 KEY1 为启动键,KEY2 为加控制键 KEY3 为减控制键 。4.2 设计课题的仿真结果在 Proteus ISIS 的 Debug 菜单中选择 Execute,运行程序,系统仿真结果如图所示。仿真结果图见附录D实现功能:可调整运行的电子钟具有三种工作状态:“d.1004-22”状态、运行状态、调整状态。(1) 、“d.1004-22”状态,依靠上电或按复位键进入,在此状态下,按 KEY2、KEY3 键均无效,按 KEY1 键有效,进入运行状态;(2) 、运行状态,在此状态下,按 KET2、KEY3 键均无效,只有按 KEY1 键有效,按下 KEY1 键后,退出运行状态,进入调整状态;(3) 、调整状态,按 KEY1 键进入时、分、秒的闪烁,在此状态下,按 KEY2.专业.专注. . .(+1 键)、KEY3(-1 键)键均有效;调整结束后必须按 KEY1 键,即可退出调整状态,进入运行状态。在调整状态时长按 KRY2、KEY3 时可以连加及连减。时间显示格式为:时-分-秒;图 4-2 “d.1004-22”上电初始化运行状态仿真结果.专业.专注. . .图 4-3时钟正常运行状态仿真结果图 4-4闹钟定时调整状态仿真结果图 4-5小时调整状态仿真结果图 4-6分钟调整状态仿真结果4.3 设计课题的误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间 1 秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到.专业.专注. . .11.0592MHz 的晶振,计算是满 20 次为一秒钟,但实际会慢很多。4.4 教学建议1、每一位学生都要发展,但不必求一样的发展;每一位学生都要提高,但不必是同步的提高;每一位学生都要合格,但不必是相同的规格;2、继续以幽默轻松的教学方式让课堂气氛很活跃 ,授课内容条理清晰,运用各种实例,娓娓道来,给人印象深刻。;3、学生不敢说的,怕做的,您鼓励他做;学生说不对的,您引导他;.专业.专注. . .专业.专注. . .专业.专注. . .附录B:原理总设计图.专业.专注. . .:J ' l马住下心.- · .三三厂丘已3已 丁 三I.专业.专注. . .附录C:PCB 物图.专业.专注. . .附录D:仿真调试结果图.专业.专注. .

    注意事项

    本文(基于单片机C语言电子时钟完整版(闹钟,整点报时).docx)为本站会员(暗伤)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开