欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    STC51单片机课程设计电子时钟.docx

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

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

    STC51单片机课程设计电子时钟.docx

    1、STC51单片机课程设计电子时钟课程设计课程名称 : 单片机课程设计 题目名称 : 单片机电子时钟 学 院 : 河 南 工 院 专 业 : 计算机控制 姓 名 : 王 过 学 号 : 123456789 指导教师 : X X X 2012年6月21日 硬件描述及系统设计构思一单片机电子时钟功能二系统硬件描述1 控制器用AT89S51 , 12M晶振2 数码管动态扫描驱动P2口3 数码管段码驱动P0口4 闹铃驱动P0.45 调整键K1P3.3(外部中断0, 正常、调时、调分)6 定时/正常切换键K2P3.27 时间参数低位加1键K3P3.48 时间参数高位加1键K4P3.5三系统设计构思1主流程

    2、是取时间参数,显示时间参数。2利用T0中断来完成计时、比较定时时间、驱动闹铃。3利用T1中断完成动态显示中,调整时间闪烁效果的定时。4利用外部中断0来完成调整选择功能。5利用外部中断1完成定时显示,当前时间显示的切换6K3、K4键完成时间参数的循环加1操作。1、课程设计名称:51单片机电子时钟2、设计方案: 1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在

    3、对时钟精度要求较高的场合。三、设计内容:这里采用应用广泛的AT89C52作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。此外还要实现对时间的调整功能,89C52的P1.0、P1.1、P1.2外接三个独立按键,当按下P1.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P1.1按键时,对显示的数码管进行加一的功能;当按下P1

    4、.2按键时,对显示的数码管进行减一的功能,达到调整时间的目的。 四、系统软件程序设计1.主程序 先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。2、数码管显示模块 本实验有1个四段数码管,从右到左为分、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。 3、定时器/计数器T0中断服务程序 T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到

    5、则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。流程图如下: 4、按键处理模块 按键设置为:如果没有按键吗,则时钟正常走时。当按下K0键时,进入调分状态,时钟停止走动;按K1和K2按键可以进行加一和减一操作;继续按K0键可以分别进行分和小时的调整;最后按K0键启动计时。5、C语言程序#include reg51.h#define uchar unsigned char#d

    6、efine uint unsigned int#define SMGdata P2sbit SMGHH=P03;/小时位sbit SMGHL=P02;/小时位sbit SMGMH=P01;/分钟位sbit SMGML=P00;/分钟位sbit Slemp1=P12;sbit Slemp2=P15;sbit SPKlemp=P10;sbit keysub=P35;/定时减1sbit keyadd=P34;/定时加1sbit SPK=P04;uchar hhdata,hldata,mhdata,mldata;uchar dhhdata,dhldata,dmhdata,dmldata;uchar S

    7、ecdata,T0num1,T0num2;uchar code SMGtab=0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0xfd;bit flagxs=0;uchar flagxz=0;uchar loopss=0;bit flagss=0;bit flagspk=0;bit flagspkout=1;void delayxs(uint i);void main() keysub=keyadd=1; Secdata=0; hhdata=1; hldata=7; mhdata=5; mld

    8、ata=8; dhhdata=1; dhldata=8; dmhdata=0; dmldata=5; SPK=SPKlemp=1; Slemp1=Slemp2=0; EA=ET0=ET1=EX0=IT0=EX1=IT1=1; TMOD=0x61;/T0,定时方式1,T1计数方式2 TH0=0x3c; TL0=0xb0; T0num1=10;/10 T0num2=2; TH1=TL1=255; TR0=TR1=1; while(1) while(!flagxs) if(flagxz) loopss+; if(loopss=8) loopss=0; flagss=!flagss; else loo

    9、pss=0; if(flagspk)&(!flagspkout) SPK=!SPK; delayxs(20); SMGdata=SMGtabhhdata; SMGHL=SMGMH=SMGML=1; if(flagxz=1) SMGHH=flagss; else SMGHH=0; delayxs(20); SMGdata=SMGtabhldata; SMGHH=SMGMH=SMGML=1; if(flagxz=1) SMGHL=flagss; else SMGHL=0; delayxs(20); SMGdata=SMGtabmhdata; SMGHL=SMGHH=SMGML=1; if(flag

    10、xz=2) SMGMH=flagss; else SMGMH=0; delayxs(20); SMGdata=SMGtabmldata; SMGHL=SMGHH=SMGMH=1; if(flagxz=2) SMGML=flagss; else SMGML=0; while(flagxs) if(flagxz) loopss+; if(loopss=8) loopss=0; flagss=!flagss; else loopss=0; if(flagxz!=0) if(keyadd=0) delayxs(120); if(flagxz=1) dhldata+; if(dhhdata=2)&(dh

    11、ldata=4) dhhdata=dhldata=0; else if(dhhdata!=2)&(dhldata=10) dhldata=0; dhhdata+; if(dhhdata=3) dhhdata=0; if(flagxz=2) dmldata+; if(dmldata=10) dmldata=0; dmhdata+; if(dmhdata=6) dmhdata=0; if(keysub=0) delayxs(120); if(flagxz=1) if(dhhdata=0)&(dhldata=0) dhhdata=2; dhldata=3; else if(dhldata=0) dh

    12、ldata=9; dhhdata-; else dhldata-; if(flagxz=2) if(dmhdata=0)&(dmldata=0) dmhdata=5; dmldata=9; else if(dmldata=0) dmldata=9; dmhdata-; else dmldata-; if(flagspk)&(!flagspkout) SPK=!SPK; delayxs(20); SMGdata=SMGtabdhhdata; SMGHL=SMGMH=SMGML=1; if(flagxz=1) SMGHH=flagss; else SMGHH=0; delayxs(20); SMG

    13、data=SMGtabdhldata; SMGHH=SMGMH=SMGML=1; if(flagxz=1) SMGHL=flagss; else SMGHL=0; delayxs(20); SMGdata=SMGtabdmhdata; SMGHL=SMGHH=SMGML=1; if(flagxz=2) SMGMH=flagss; else SMGMH=0; delayxs(20); SMGdata=SMGtabdmldata; SMGHL=SMGHH=SMGMH=1; if(flagxz=2) SMGML=flagss; else SMGML=0; void delayxs(uint i) u

    14、char j; while(i-) for(j=0;j50;j+); void wbzd0() interrupt 0 flagxz=0; TMOD=0x61; TR0=1; flagxs=!flagxs; void wbzd1() interrupt 2 flagxz+; flagxz%=3; if(!flagxs) if(flagxz!=0) TR0=Slemp1=Slemp2=0; Secdata=0; TR1=1; TMOD=0x66; TH0=TL0=255; TR0=1; else TMOD=0x61; TH0=0x3c; TL0=0xb0; T0num1=10;/10 T0num

    15、2=2; TR0=1; TF1=0; void t1zd() interrupt 3 if(!flagxs) if(flagxz=1) if(hhdata=0)&(hldata=0) hhdata=2; hldata=3; else if(hldata=0) hldata=9; hhdata-; else hldata-; else if(flagxz=2) if(mhdata=0)&(mldata=0) mhdata=5; mldata=9; else if(mldata=0) mldata=9; mhdata-; else mldata-; if(!flagxs)&(flagxz=0)fl

    16、agspk=!flagspk; SPKlemp=!flagspk;void t0zd() interrupt 1 if(!flagxs)&(flagxz=0)|(flagxs) TH0=0x3c; TL0=0xb0; T0num1-; if(T0num1=0) T0num1=10;/10 if(!flagxs) Slemp1=!Slemp1; Slemp2=!Slemp2; else Slemp1=1; Slemp2=1; T0num2-; if(T0num2=0) T0num2=2; Secdata+; if(Secdata=60) Secdata=0; mldata+; if(mldata

    17、=10) mldata=0; mhdata+; if(mhdata=6) mhdata=0; hldata+; if(hhdata=2)&(hldata=4) hhdata=hldata=0; else if(hhdata!=2)&(hldata=10) hldata=0; hhdata+; if(hhdata=3) hhdata=0; if(flagspk=1)&(hhdata=dhhdata)&(hldata=dhldata)&(mhdata=dmhdata)&(mldata=dmldata) flagspkout=0; else SPK=flagspkout=1; if(flagxz=1

    18、)&(!flagxs) hldata+; if(hhdata=2)&(hldata=4) hhdata=hldata=0; else if(hhdata!=2)&(hldata=10) hldata=0; hhdata+; if(hhdata=3) hhdata=0; if(flagxz=2)&(!flagxs) mldata+; if(mldata=10) mldata=0; mhdata+; if(mhdata=6) mhdata=0; 6、软件编译环境:Keil uVision2 确保生成 . Hex文件5、系统硬件电路的设计系统的硬件主要包括单片机芯片,数码管显示,按键开关电路,它的硬

    19、件电路如下图所示,单片机采用广泛使用的AT89C52,系统时钟采用12MHz的晶振,八个数码管显示,小时与分钟与秒钟间用短横线,采用共阳极七段式数码管,P0口为段选码输出端,P2口为位选码输出端。STC-ISP如图所示:6、课程设计总结经过一周的时间以及对整本教材的知识总结,把课程设计分成了硬件和软件两大模块。 总的来说,硬件部分很好入手,电路也教简单,主要涉及的是简单的按键、电容、电阻、晶振和数码管。在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。在整个设计过程中学到了团体精神和独立解决问题的重要性。为以后的求职之路打下了基础。7、参考资料 1单片机原理与应用 谢维成 杨加国 编著 2 单片机应用与仿真调试 严天峰 编著3模拟电子技术(第三版) 胡宴如 耿苏燕 编著4数字电子技术(第三版) 杨志忠 卫桦林 编著


    注意事项

    本文(STC51单片机课程设计电子时钟.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开