ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:379.01KB ,
资源ID:19928979      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19928979.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北交大单片机课设电子时钟分解Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北交大单片机课设电子时钟分解Word文档下载推荐.docx

1、闹铃声由交流蜂鸣器产生,电路图如下。当P2.4输出不同频率的方波,.蜂鸣器便会发出不同的声音。3.整体硬件电路图四、软件设计1计时模块利用单片机定时器0完成计时功能。定时器0计时中断程序每隔1ms中断一次并当作一个计数,每中断一次计数加1,当计数1000次时,则表示1s到了,秒变量加1。当秒变量达到60时,秒变量清零同时分变量加1。分变量达到60时,分变量清零同时时变量加1。当时变量达到24时,时变量清零。由于实验要求由LED闪动做秒显示,因此每隔0.5s即计数500次时,P11(驱动LED灯)取反一次,从而实现LED灯闪动一次为1s,秒变量加1。该模块流程图如下:程序如下:void Dela

2、y(int m) /延时函数 int y=m/10; while(-m);void Init_Timer0() /计时器初始化函数 TMOD=0x11; TH0=0xEE; TL0=0x00; ET0=1; TR0=1; EA=1;void Init_Timer1() /计时器初始化函数 ET1=1; TR1=0;void time0(void) interrupt 1 /计时函数 TH0=0xee; i+; if (i=199) P1=_cror_(P1,1); /循环位移 second+; if(second=60) second=0; minute+; if(minute=60) min

3、ute=0; hour+; if(hour=24) hour=0; i=0; 2.显示模块为在各位LED上分别显示不同的字符,需要采用循环扫描显示的方法,即在某一时刻只选通一条位选线,并输出该位的字段码,其余位则处于关闭状态。可见,各位LED显示的字符并不是同时出现的,但由于人眼的视觉暂留及LED的余辉,可以达到同时显示的效果。程序流程图如下:采用动态显示时,需要确定LED各位显示的保持时间。由于LED从导通到发光有延时,时间太短会造成发光微弱,显示不清晰;如果显示时间太长,则会占用较多的CPU时间。void display( uint x,uint y) /数码管显示函数 qian = x/

4、10; bai = x%10; shi = y/10; ge =y%10; s1=0 ; if(j=1)/设置模式下调整位闪烁函数 s_flag+; if(s_flag=20) P0=0xff; else P0 = digsegqian; if(s_flag=40) s_flag=0; else P0 = digsegqian; Delay(500); s1=1; s2 = 0; if(j=1) P0=0xff; P0 = digsegbai; else P0 = digsegbai; s2 = 1; s3 = 0; if(j=2) P0 = digsegshi; else P0 = digs

5、egshi; s3 = 1; s4 = 0; P0 = digsegge; else P0 = digsegge; s4 = 1;3按键判断及处理程序按键的闭合与否,反映在电压上就是呈现出高电平或低电平。由于机械触点的弹性作用,在闭合及断开的瞬间,电压信号伴随有一定时间的抖动,抖动时间与按键的机械特性有关,一般是510ms。为了保证CPU确认一次按键动作,既不重复也不遗漏,必须消除抖动的影响。通过软件消除抖动的方法为:在程序执行过程中检测到有按键按下时,调用一段延时(约10ms)子程序,然后判断该按键的电平是否仍然保持在闭合状态,如果是,则确认有键按下。按键判断流程图如下:按键处理流程图如下:

6、char check_K1(void) /按键检测函数 if(KEY1=0) Delay(2000); /防抖动 if(KEY1=0) while(KEY1=0) ; return 1; return 0;char check_K2(void) if(KEY2=0) if(KEY2=0) while(KEY2=0) ;char check_K3(void) if(KEY3=0) if(KEY3=0) while(KEY3=0) ;char check_K4(void) if(KEY4=0) if(KEY4=0) while(KEY4=0) ;4.音乐响铃模块音乐闹铃程序:单片机演奏一个音符,是

7、通过引脚,周期性的输出一个特定频率的方波。这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。众所周知,周期为频率的倒数,可以通过音符的频率计算出周期;演奏时,要根据音符的不同,把对应的半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。另外,音乐的节拍是由延时实现的。在单片机音乐演奏程序中,包括了两个数据表,其中存放了事先算好的各种音符频率所对应的半周期的定时时间初始值。有了这些数据,单片机就可以演奏低音、中音、高音,三个八度共21个音符。演奏乐曲时,就根据音符的不同数值,从表中找到定时时间初始值,送入定时器即可控制音调。通过调用延迟来实现节拍数。乐曲的数

8、据,也要写个数据表:表中每三个数字,说明了一个音符,它们分别代表:第一个数字是音符的数值;第二个数字是123之一,代表低音、中音、高音;第三个数字是时间长度,以半拍为单位。乐曲数据表的结尾是三个0。音节与频率的关系如下表所示音调X低音1F921中音1FC8F高音1FE47低音2F9E1中音2FCEE高音2FE77低音3FA8C中音3FD44高音3FEA2低音4FAD8中音4FD6B高音4FEB6低音5FB68中音5FDB4高音5FEDA低音6FBE9中音6FDF4高音6FEFA低音7FC5B中音7FE2D高音7FF16code unsigned char yinyue=1,1,5,5,6,6,

9、5,0,4,4,3,3,2,2,1,0,5,5,4,4,3,3,2,0,5,5,4,4,3,3,2,0;/蜂鸣器音乐音符表uint music1=0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,0xfc;/不同频率对应计数器处初值(高八位)uint music2=0x21,0xe1,0x8c,0xd8,0x68,0xe9,0x5b,0x8f; /不同频率对应计数器初值(低八位)for(y=0;y=32;y+) /音乐播放 display(hour,minute); if(check_K2() TR1=0; beep=1; break; if(y=32) y=0; if(y

10、inyuey=0) Delay(60000); else TH1=music1yinyuey-1; TL1=music2yinyuey-1; beep=0; TR1=1; Delay(20000); Delay(40000); 5.主函数流程图void main() uint flag=0; P1=0x7f; Init_Timer0(); Init_Timer1(); display(hour,minute); while(1) if(check_K3() /显示模式切换 flag+; if(flag=3) flag=0; if(setflag=0) if (flag=0) display(h

11、our,minute); if (flag=1) display(minute,second); if(flag=2) if(alarmflag=1) s1=0;s2=0;s3=0;s4=0; P0=0xbf; Delay(500); s2=1;s2=1;s3=1;s4=1; if(alarmflag=-1) display(a_hour,a_minute); if(check_K4() alarmflag= -alarmflag; if(check_K1() setflag+; j=1; if(setflag=1|setflag=2) Set_timer(); if(a_hour=hour&

12、minute=a_minute&second2&alarmflag=-1) /闹钟时间判定 for(y=0; 五、软件实现功能1.设置当前时间2.设置时间时,显示屏闪烁3.采用“时时分分”或“分分秒秒”的形式显示当前时间4.以1s为间隔进行流水灯操作5.开启或关闭闹钟6.设置闹钟时间7.到达闹钟时间后,蜂鸣器响起,显示屏闪烁闹钟时间,按下指定键后,蜂鸣器关闭8.蜂鸣器发出指定音乐的声音六、实验感想经过为期两周的单片机课设,通进对两个软件学习和完成一个时钟秒表设计并进行简单调试,我学到了很多东西! 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学

13、生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 在我的课设时也遇到过这样或那样的问题,感谢同学们和助教的帮助,在他们的指导下,在自己的的努力下,我最终顺利的完成了实验。在整个的课设的过程中我学习了很多的东西,使我眼界打开,感受颇深。简单的软件与硬件学习使我了解到了人生学习的真谛,课设虽然结束了,但学习还没结束,电子的世界将为我打开,只有继续以从中获得感受作为指导思想走下去,在不断前进中去提升自己,才能真正提升自己的能力。七、参考文献1戴胜华,蒋大明,杨世武等.单片机原理与应用M.北京:北京交通大学出版社,20082 程一风.基于单片机的电子时钟的仿真J.无线互联科技 ,2013,(8):88-88.3 万定勇.基于AVR单片机的异步电子时钟的制作J.城市建设理论研究(电子版) ,2013,(19).4 胡恩.电子时钟设计J.安徽科技,2012,(2):43-46.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1