基于单片机控制电铃设计_第1页
基于单片机控制电铃设计_第2页
基于单片机控制电铃设计_第3页
基于单片机控制电铃设计_第4页
基于单片机控制电铃设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.z---..--总结资料单片机原理与应用综合实验报告基于单片机控制的电铃控制器专业班级:电子信息工程姓名:胡俊_学号:时间:指导教师:左敬龙2014年10月30日电铃控制器设计任务书1.设计目的与要求设计出一个用于电铃控制器。准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:〔1〕根本功能1〕显示:可以显示星期、时、分和秒。2〕打铃:每天可设置20次,打铃持续时间每次1-90秒可调,每次打铃的间隔时间1-99分钟可调。3〕铃声:内置蜂鸣器可以发出监控声音。〔2〕性能:时间日误差<1.5秒。〔3〕扩展功能1〕可设定单/双休息日不打铃。2〕随季节变化,每天自动调整开与关的时间。2.设计内容写出实现该功能的C语言编程,并在KILE软件上仿真,并产生he*文件,通过软件把该程序写入单片机开发板,验证是否实现该功能3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。4.辩论在规定时间内,完成表达并答复下列问题。目录1引言………………….…12总体设计方案……………………….…12.1设计思路………….…12.2设计方案……………………….…23程序流程图框……………………….…23.1总体程序流程图框…………….……23.2时钟打铃程序流程图框…………………….……34设计原理分析…………………….……44.1时钟电路的设计……………….……44.2控制电路的原理………………….……44.3显示电路的原理……………5总结与体会………….…………….….5参考文献…………….……6附录1效果图……………………….……7附录2C语言程序…………8-.z电铃控制器摘要:该设计介绍了一种以AT89S51单片机为核心,以七段数码管显示星期;时;分钟和秒,发光二极管作为指示灯标志及按键校时定时的自动打铃控制器。关键词:单片机;数码管;电铃;定时;74LS2451引言当今时代是一个新技术层出不穷的时代,在电子领域有尤其是自动化自动控制了领域,传统的分立元件或数学逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。单片机具有体积小,功能强,本钱低,应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂,学校及企业单位大规模的兴起。学习单片机的最有效的方法就是理论与实践并重。打铃器由AT89S51及其它器件组成,采用按键控制调时和定时等功能,用7个数码管来分别显示星期、时、分和秒.用5V直流电源,可以设定20多个打铃时间点。以AT89S51为核心的单片机控制.主要作用:解除作息管理麻烦、改变人工打铃、人工控制电器落后现象,实行电铃周期性工作的自动化控制.同时设有数字显示器及控制系统体积小,重量轻等优点。充分发挥单片机体积小,价格廉价,功耗低,可靠性好等特点,充分发挥了单片机的控制优势。单片机控制电路信号输入电路单片机控制电路信号输入电路辅助功能电路驱动显示电路2.1设计思路图1设计思路框图电铃控制器设计要求具有显示星期、时、分和秒以及设定时间和调整时间等功能,这些根本要求都可以通过软件编程实现。要实现打铃提示,就需要设置打铃提示电路,信号输入电路采用按钮开关。设计思路框图如图1所示。2.2方案论证根据设计任务的根本要求,设计了由单片机〔AT89S51〕作为主控器件,七段数码管作为显示路,七个按键组成的按键操作电路,以及三极管、蜂鸣器组成的报警提示电路构成的自动打铃器。时钟电路的构成由单片机及其定时器完成,时间显示电路则由单片机串口输出,最后由七段数码管显示出来。控制电路主要控制着复位电路、校时以及设置打铃点等操作。显示电路采用串行静态显示,这种软件编程比拟简单。采用单片机内部时钟,这种方法产生的时钟还可以,但是本钱低,而且编写时钟程序简单。打铃电路电路可以采用蜂鸣器代替电铃,当时间到达打铃时间点时,使单片机发出控制信号,可以直接驱动三极管组成的根本放大电路,使蜂鸣器发出声音。设计方框图如图2所示显示驱动电路AT89S51单片机按键开关信号输入电路显示驱动电路AT89S51单片机按键开关信号输入电路打铃电路复位电路打铃电路复位电路图2设计方框图3程序流程图框3.1总体程序流程图根据硬件设计结果,为满足要求,程序应有主程序、按键处理程序、中断效劳程序和显示程序等局部构成。主程序中主要是程序各局部的初始化;按键处理程序处理六个按键的操作,包括各个按键的响应程序以及按键指示、报警输出等;显示程序显示星期、时、分、秒,主要是时钟显示。总程序流程图如图3所示初始化初始化主程序主程序显示程序按键处理程序中断效劳程序显示程序按键处理程序中断效劳程序图3总程序流程图3.2时钟打铃程序流程图时钟打铃程序使用单片机T0、T1两个定时器中断,两个定时器均为方式一,当定时器T0溢出时响应中断,使毫秒单元加1,当毫秒单元满20时分单元加1,依此类推。当定时器T1溢出时响应中断,依次比拟存储的打铃点,条件符合就输出打铃信号。中断均需保护现场,返回时恢复现场。时钟打铃程序流程图如图4所示T0中断T0中断保护现场保护现场1秒到.1秒到.N20毫秒加1秒Y20毫秒加1秒=60s.=60s.NY秒清0,分加1秒清0,分加1=60m?=60m?N分清0,小时加1Y分清0,小时加1=24h?=24h?NY小时清0,天加1小时清0,天加1=7d?=7d?NY天清0天清0调用显示程序调用显示程序恢复现场,中断返回恢复现场,中断返回图4时钟打铃程序流程图4设计原理分析4.1时钟电路的原理采用定时器/计数器T0的方式1,由于晶振是11.0592,令TH0=(65536-46080)/256;TL0=(65536-46080)%256,故所记次数应为46080,计时器每隔50000微秒发起一次中断。为了方便设计每20毫秒使得时钟加一秒,每60秒加一分钟,每60分加一个小时,每24个小时加一天。4.2控制电路的原理控制电路采用矩阵式键盘,当无按键动作时,行线处于高电平而列线处于低电平,当有按键按下时,则对应的行线和列线短接,行线电平变为低电平,以此知道有那个按键被按下了。为了能够通过按键控制电路的运行,通过C语言编程使得S0-S9为数据输入键,S12为定时键〔当按下是可以通过S0-S9设定响铃时间〕,S13为确定键,S11为返回键,通过上述的按键设定响铃时间,设定的数据暂时保存在锁存器中,当设定的时间与时钟电路的时间一致时,蜂鸣器响。矩阵式电路如下列图4.3显示电路的原理为了能显示星期、时、分、秒,需要7个数码显示管,其中6个显示管可以通过按键改变显示以显示定时时间。5完毕语在这课程设计中,我学到了很多课堂上学不到的东西,也深刻的体验到了实践的重要性。只学习理论而不实践,那理论就是一具空壳。只有实践才能检验自己所学的理论知识。实践的好处就在于能帮助你去更好地理解理论知识,平时课堂上不理解的东西,在实践的过程中就能很好的理解。虽然这次课程设计上机调试没有成功,但是我自己毕竟努力做了。参考文献[1]阎石.数字电子技术根底〔第三版〕[M].:高等教育,1989[2]蔡振江.单片机原理及应用.:电子工业,2007年2月,第1版[3]童诗白,华成英.模拟电子技术根底.:高等教育,2001年,第3版[4]李朝青.单片机原理及接口技术[M].:航空大学,2005年,第3版[5]万光毅.单片机实验与实践教程.:航空航天大学,2006年,第2版[6]周航慈.单片机应用程序设计根底[M].:电子工业,1997年7月[7]朱承高.电工及电子技术手册[M].:高等教育,1990[8]廖常初.现场总线概述[J].电工技术,1999.6附录效果图C语言程序*include<reg51.h>*defineucharunsignedcharsbitdula=P2^6;sbitwela=P2^7;sbitbeep=P2^3;unsignedcharj,k,a1,a0,b1,b0,c1,c0,ho=1,s,f,m,key=10,temp,qq;ucharshi20,shi10,fen20,fen10,miao20,miao10,miao30,ok=1,wei,dingshi,change,yidingshi;ucharbaoshi,baoshijieshu;unsignedintpp;unsignedcharcodetable[]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f,0*77,0*7c,0*39,0*5e,0*79,0*71};voiddelay(unsignedchari){for(j=i;j>0;j--)for(k=125;k>0;k--);}voiddisplay(ucharshi2,ucharshi1,ucharfen2,ucharfen1,ucharmiao2,ucharmiao1,ucharmiao3){dula=0;P0=table[miao3];dula=1;dula=0;wela=0;P0=0*7f;wela=1;wela=0;delay(5);dula=0;P0=table[shi2];dula=1;dula=0;wela=0;P0=0*fe;wela=1;wela=0;delay(5);P0=table[shi1]|0*80;dula=1;dula=0;P0=0*fd;wela=1;wela=0;delay(5);P0=table[fen2];dula=1;dula=0;P0=0*fb;wela=1;wela=0;delay(5);P0=table[fen1]|0*80;dula=1;dula=0;P0=0*f7;wela=1;wela=0;delay(5);P0=table[miao2];dula=1;dula=0;P0=0*ef;wela=1;wela=0;delay(5);P0=table[miao1];dula=1;dula=0;P0=0*df;wela=1;wela=0;delay(5);}voidkeyscan0(){P3=0*fb;temp=P3;temp=temp&0*f0;if(temp!=0*f0){delay(10);if(temp!=0*f0){temp=P3;switch(temp){case0*bb:ok=0; change=1;break;case0*7b:ok=1; change=0; dingshi=0;break;} }} P3=0*f7;temp=P3;temp=temp&0*f0;if(temp!=0*f0){delay(10);if(temp!=0*f0){temp=P3;switch(temp){case0*e7:ok=0; dingshi=1;break; case0*d7:yidingshi=0; //取消定时break;} } } }voidkeyscan(){{ P3=0*fe;temp=P3;temp=temp&0*f0;if(temp!=0*f0){delay(10);if(temp!=0*f0){ temp=P3;switch(temp){case0*ee:key=0; wei++;break;case0*de:key=1; wei++;break;case0*be:key=2; wei++;break;case0*7e:key=3; wei++;break;}while(temp!=0*f0){temp=P3;temp=temp&0*f0;beep=0;}beep=1;}}P3=0*fd;temp=P3;temp=temp&0*f0;if(temp!=0*f0){delay(10);if(temp!=0*f0){temp=P3;switch(temp){case0*ed:key=4; wei++;break;case0*dd:key=5; wei++;break;case0*bd:key=6; wei++;break;case0*7d:key=7; wei++;break;}while(temp!=0*f0){temp=P3;temp=temp&0*f0;beep=0;}beep=1;}}P3=0*fb;temp=P3;temp=temp&0*f0;if(temp!=0*f0){delay(10);if(temp!=0*f0){temp=P3;switch(temp){case0*eb:key=8; wei++;break;case0*db:key=9; wei++;break;}while(temp!=0*f0){temp=P3;temp=temp&0*f0;beep=0;}beep=1;}}}}voidmain(){ TMOD=0*01; TH0=(65536-46080)/256;//由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。 TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12 ET0=1; EA=1; while(1) { keyscan0(); if(ok==1) { TR0=1; wei=0; if(pp==20) { pp=0; m++; if(m==60) { m=0; f++; if(f==60) { f=0; s++; if(s==24)//为24h一个循环,假设要12h,只需在此改为12即可。 { s=0; ho++; if(ho==7)//为7天一个循环 { ho=1; } } } } } a0=s%10; a1=s/10; b0=f%10; b1=f/10; c0=m%10; c1=m/10; display(a1,a0,b1,b0,c1,c0,ho); } else { if(change==1) { TR0=0; keyscan(); if(key!=10) { switch(wei) { case1:if(key<3) //小时最高位为2 a1=key; else wei--; break; case2:if(a1==1|a1==0) a0=key; else if(key<5) a0=key; //当小时最高位为2时,低位最高为4 break; case3:if(key<6) //分钟最高位为5 b1=key; else wei--; break; case4:b0=key;break; case5:if(key<6) //秒最高位为5 c1=key; else wei--; break; case6:c0=key;break; } key=10; } m=c1*10+c0; f=b1*10+b0; s=a1*10+a0; display(a1,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论