资源描述:
《51单片机电子时钟课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、摘要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。本次设计中以单片机的发展过程和发展方向为背景,介绍了单片机的输入输出的工作原理和操作方法,中断的工作原理和操作方法,74HC573驱动器的工作原理和与数码管连接的方法。本次做的数字钟是以单
2、片机(STC89C52)为核心,结合相关的元器件(共阴极LED数码管、驱动器74HC573等),再配以相应的软件,是它具有时,分,秒显示的功能,并且时,分,秒还可以调整。此次设计电子数字钟是为了了解电子数字钟的原理,从而学会制作电子数字钟。而且通过电子数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。通过它可以进一步学习与掌握单片机原理与使用方法。关键词:单片机STC89C52共阴极LED数码显示器74HC573驱动器一.设计目的1、实现时钟的基本功能2、能够手动对时间的调整3、实现跑秒功能二.数字钟基本原理它是利用单片机的内部的定时/计数
3、器工作与定时方式,对机器周期计数形成基准时间(如10ms)然后用另外一个计数器或软件计数的形式对基准时间进行计数形成秒(如对10ms计数100次),“秒”计数60次形成“分”,“分”计数60次形成“时”,“时”计数24次形成“天”并清零,然后通过译码器,数码管把他们的内容在相应的位置显示出来。在具体的设计时定时器采用中断方式工作,对时钟的形成在终中断序中实现,在主程序只是对定时/计数器的定义初始化,调用显示程序和控制程序的初始化。另外为了使用的方便,也设计了按键,可以通过按键对时分秒进行调整,这样程序就加了按键程序。三.单片机数字时钟的程序设计3.1主程序主程序是先
4、开始,系统初始化、定时器初始化,脉冲基时开始跑秒后进行按键检测。若没有按键设置,显示当前时间;若有按钮按下,按键调时,检测完后,就可以显示更新后的时间。主程序流程:3.2定时中断(走时)子程序流程定时器中断时,先检测50ms脉冲是否计数20次,计数到20次,秒就加1;如果没计满60,就返回显示时间,如果秒计满60秒,就清零秒,给分加1;检测分钟,如果没计满60,继续计时,返回显示时间,如果满60,就清零分钟,给小时加1;检测小时,如果没计满24,就继续计时,返回显示时间,如果计满24,就清零,给秒加1,显示时间。脉冲溢满20?秒+1=60?分+1=60?分清零,时加
5、1时+1=24?时清零中断返回图2定时中断(走时)子程序流程图秒清零,分加1秒加1定时中断口3.3按键扫描子程序:按键调试程序,是检测是否有按键按下:(1)如果小时增加键/减小键按下,就给小时加1/减1(2)如果分钟增加键/减小键按下,就给分钟加1/减1(3)如果秒增加键/减小键按下,就给秒加1/减1(4)如果显示键(key7)按下,则显示当前时间秒加1分加1时加1图3按键调时子程序流程图启动脉冲跑秒是否有按键按下?显示当前时间秒按键按下?分按键按下?时按键按下?显示更新后时间3.4程序代码#include#defineuintunsignedin
6、t#defineucharunsignedcharsbitdula=P2^0;//段选sbitwela=P2^1;//位选sbitkey1=P1^0;sbitkey2=P1^1;sbitkey3=P1^2;sbitkey4=P1^3;sbitkey5=P1^4;sbitkey6=P1^5;sbitkey7=P1^6;sbitkey8=P1^7;charflag=0;intnum1=0,num2,shi,shih,shil,fen,fenh,fenl,miao,miaoh,miaol,p,ph,pl;voiddelayms(uintz){uintx,y;for(x=z
7、;x>0;x--)for(y=110;y>0;y--);}ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴voiddiaplay(intshih,intshil,intfenh,intfenl,intmiaoh,intmiaol,intph,intpl)//动态显示{dula=1;P0=table[ph];dula=0;P0=0xff;wela=1;P0=0xbf;//10111111wela=0;dela