单片机课程设计报告 数字电子钟设计_第1页
单片机课程设计报告 数字电子钟设计_第2页
单片机课程设计报告 数字电子钟设计_第3页
单片机课程设计报告 数字电子钟设计_第4页
单片机课程设计报告 数字电子钟设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

单片机C语言入门课程设计(报告)I《单片机C语言入门》课程设计(报告)题目:数字电子钟设计第1章概述1.1意义选题电子钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。相对于其他时钟类型,它的特点可归结为“两强一弱”:比机械钟强在观时显著,比石英钟强在走时准确,但是它的弱点为显时较为单调。电子钟更为方便快捷实用。1.2电子钟的功能描述电子钟的时钟功能:具有可选的24h(小时)或12h(小时)的计时方式,显示时、分、秒;具有快速校准时、分、秒的功能;能设置起闹时刻、响闹时间为1min(分钟),超过1min(分钟)自动停止;具有人工止闹功能,止闹后不再重新操作,将不再发生起闹;具有整点报时功能。随着科技的进步与发达,部分电子钟还带投影功能,同时衍生为许多其他产品的辅助功能。1.3电子钟的工作原理电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,具有校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。1.4电子钟的优缺点目前,在国内,电子钟因LCD数字显示效用直接有效,所以大多运用在城市的主要营业场所,以及车站、码头等公共场所。在对公共场所的电子钟设定的时候,使用者还可根据周边的气候、温度等对LCD屏进行设置。同时,因为LCD的显示耗电量很省,所以能够保持持续的工作效果。夜间在睡觉的时候,床头如果放个带投影功能的电子钟,可以不用起床,直接让时间显示在天花板上,非常直观与有效。现在生产的大部分汽车中,车内前方仪表盘旁边一般也都自带电子钟功能,采取蓝色背景光板成像效果,非常清晰。优点:与传统的机械钟相比,电子钟具有更突出的优点。由于电子钟采用数字集成电路的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,电子钟用于定时自动报警、按时自动打铃、时间程序自动控制、定时广播及自动控制等各个领域。缺点:因为电子钟毕竟是电子产品,电子产品都有辐射,不过电子钟危害极低,对人体够不成任何危害,不像手机的辐射那么大。第2章总体设计方案2.1数字电子钟的设计(1)设计内容(2)总体方案设计(3)各模块功能说明(4)硬盘系统设计(5)程序总体流程图 (6)设计总结2.2数字电子钟的各模块功能说明晶振电路的功能:每个单⽚机系统⾥都有晶振,全程是叫晶体震荡器,在单⽚机系统⾥晶振的作⽤⾮常⼤,他结合单⽚机内部的电路,产⽣单⽚机所必须的时钟频率,单⽚机的⼀切指令的执⾏都是建⽴在这个基础上的,晶振的提供的时钟频率越⾼,那单⽚机的运⾏速度也就越快。晶振⽤⼀种能把电能和机械能相互转化的晶体在共振的状态下⼯作,以提供稳定,精确的单频振荡。复位电路的功能:把电路初始化到⼀个确定的状态,⼀般来说,单⽚机复位电路作⽤是把⼀个例如状态机初始化到空状态,⽽在单⽚机内部,复位的时候单⽚机是把⼀些寄存器以及存储设备装⼊⼚商预设的⼀个值。键盘电路:根据4×4矩阵键盘,它是⽤四条I/O线作为⾏线,四条I/O线作为列线组成的键盘。在⾏线和列线的每个交叉点上设置⼀个按键。这样键盘上按键的个数就为4×4个。这种⾏列式键盘结构能有效地提⾼单⽚机系统中I/O⼝的利⽤率。实现按键控制闹钟,设置时间的功能。显⽰电路的功能:采⽤4位共阴极数码管驱动⽅式P2⼝相应的位置0即选择要显⽰的数码管位,P0⼝相应的位置1即可显⽰相应的数码管段。负责显⽰时钟的时和分。图1数字电子钟的构架框图2.3系统总体方案及硬件设计a.主控电路:AT89C51图1b.蜂鸣器(BUZZER)连接图图2c.常用液晶(LM016L)连接图图32.3.1按键控制模块展示硬件设计部分,此处采用proteus仿真演示。其中液晶屏上面一行显示的是实际时间,下面一行显示的是设定闹钟时间。通过调节单刀双掷开关来改变正在调整的时间是实际时间还是闹钟时间。下面的三个按键依次用来调节模式(模式即正在调节的量是时、分或秒,通过最上面的三个LED灯来表达出来),下面的两个按键分别用来进行加减一的操作。按键控制模块见图4。 图4按键控制模块2.3.2源代码#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharuchardataSet[4]={'S','e','t',':'};//初始显示uchardataRel[4]={'R','e','l',':'};//初始显示uchardatarel_time[8]={'0','0','-','0','0','-','0','0'};//初始显示uchardataset_time[8]={'0','3','-','0','5','-','0','0'};//初始显示/*液晶的使能、读写端定义*/sbitlcden=P2^2;sbitlcdrs=P2^1;sbitlcdrw=P2^0;/*按键定义*/sbitkeymode=P2^7;sbitkeyadd=P2^6;sbitkeysub=P2^5;sbitcho=P2^3;//开关定义/*LED定义*/sbitledsec=P3^7;sbitledmin=P3^6;sbitledhour=P3^5;sbitbee=P2^4;//蜂鸣器定义uchari=20;ucharj;ucharmode;ucharchoose;ucharrel_sec=0,rel_min=0,rel_hour=0;ucharset_sec=0,set_min=5,set_hour=3;/*函数清单*/voiddelay(uintx);//该延时大约100usvoidbaoshi();//报时函数voidcomp();//闹钟函数,对实际值和设定闹钟值进行比较voiddis();//显示函数voidKey();//按键函数/*液晶显示有关函数*/voidLCDdelay(uintx);//LCD延时函数voidwrite_com(ucharlcdcom);//写命令voidwrite_data(ucharlcddate);//写数据voidInit1602();//voidLCDdelay(uintx)//该延时大约100us(不精确,液晶操作的延时不要求很精确){ucharj;while(x--)for(j=0;j<120;j++);}//写命令voidwrite_com(ucharlcdcom){lcdrs=0;lcdrw=0;P1=lcdcom;LCDdelay(5);lcden=1;LCDdelay(5);lcden=0;}//写数据voidwrite_data(ucharlcddate){lcdrs=1;lcdrw=0;P1=lcddate;LCDdelay(5);lcden=1;LCDdelay(5);lcden=0;}//1602初始化voidInit1602(){lcden=0;write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示无光标无光标闪烁write_com(0x06);//当读或写一个字符是指针后一一位write_com(0x01);//清屏write_com(0x80+2);for(j=0;j<4;j++){write_data(Rel[j]);LCDdelay(5);}write_com(0x80+0x40+2);for(j=0;j<4;j++){write_data(Set[j]);LCDdelay(5);}write_com(0x80+6);for(j=0;j<8;j++){write_data(rel_time[j]);LCDdelay(5);}write_com(0x80+0x40+6);for(j=0;j<8;j++){write_data(set_time[j]);LCDdelay(5);}}/*定时1s*/voidtimer0()interrupt1{TH0=15536/256;TL0=15536%256;i--;if(i==0){i=20;rel_sec++;if(rel_sec==60){rel_sec=0;rel_min++;if(rel_min==60){rel_min=0;rel_hour++;if(rel_hour==24){rel_hour=0;}}}Key();comp();baoshi();dis();}}voiddis(){rel_time[0]=rel_hour/10;rel_time[1]=rel_hour%10;rel_time[2]='-'-0x30;rel_time[3]=rel_min/10;rel_time[4]=rel_min%10;rel_time[5]='-'-0x30;rel_time[6]=rel_sec/10;rel_time[7]=rel_sec%10;set_time[0]=set_hour/10;set_time[1]=set_hour%10;set_time[2]='-'-0x30;set_time[3]=set_min/10;set_time[4]=set_min%10;set_time[5]='-'-0x30;set_time[6]=set_sec/10;set_time[7]=set_sec%10;write_com(0x80+6);for(j=0;j<8;j++){write_data(rel_time[j]+0x30);LCDdelay(5);}write_com(0x80+0x40+6);for(j=0;j<8;j++){write_data(set_time[j]+0x30);LCDdelay(5);}}voidKey(){if(keymode==0){mode++;if(mode==4)mode=1;}if(mode==1){ledsec=1;ledmin=0;ledhour=0;}if(mode==2){ledsec=0;ledmin=1;ledhour=0;}if(mode==3){ledsec=0;ledmin=0;ledhour=1;}if(cho==0){choose=0;}else{choose=1;}if(keyadd==0){if(mode==1){if(choose==0){rel_sec++;if(rel_sec==60){rel_sec=0;}}else{set_sec++;if(set_sec==60){set_sec=0;}}}elseif(mode==2){if(choose==0){rel_min++;if(rel_min==60){rel_min=0;}}else{set_min++;if(set_min==60){set_min=0;}}}if(mode==3){if(choose==0){rel_hour++;if(rel_hour==24){rel_hour=0;}}else{set_hour++;if(set_hour==24){set_hour=0;}}}}if(keysub==0){if(mode==1){if(choose==0){if(rel_sec==0){rel_sec=59;}elserel_sec--;}else{if(set_sec==0){set_sec=59;}elseset_sec--;}}elseif(mode==2){if(choose==0){if(rel_min==0){rel_min=59;}elserel_min--;}else{if(set_min==0){set_min=59;}elseset_min--;}}if(mode==3){if(choose==0){if(rel_hour==0){rel_hour=23;}elserel_hour--;}else{if(set_hour==0){set_hour=23;}elseset_hour--;}}}}voiddelay(uintx)//该延时大约100us{ucharj;while(x--)for(j=0;j<120;j++);}voidbaoshi(){if(rel_min==0&&rel_sec==1){bee=1;delay(500);bee=0;}}voidcomp(){if(rel_hour==set_hour&&rel_min==set_min&&rel_sec==set_sec+1){bee=1;delay(1000);bee=0;}}#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharuchardataSet[4]={'S','e','t',':'};//初始显示uchardataRel[4]={'R','e','l',':'};//初始显示uchardatarel_time[8]={'0','0','-','0','0','-','0','0'};//初始显示uchardataset_time[8]={'0','3','-','0','5','-','0','0'};//初始显示/*液晶的使能、读写端定义*/sbitlcden=P2^2;sbitlcdrs=P2^1;sbitlcdrw=P2^0;/*按键定义*/sbitkeymode=P2^7;sbitkeyadd=P2^6;sbitkeysub=P2^5;sbitcho=P2^3;//开关定义/*LED定义*/sbitledsec=P3^7;sbitledmin=P3^6;sbitledhour=P3^5;sbitbee=P2^4;//蜂鸣器定义uchari=20;ucharj;ucharmode;ucharchoose;ucharrel_sec=0,rel_min=0,rel_hour=0;ucharset_sec=0,set_min=5,set_hour=3;/*函数清单*/voiddelay(uintx);//该延时大约100usvoidbaoshi();//报时函数voidcomp();//闹钟函数,对实际值和设定闹钟值进行比较voiddis();//显示函数voidKey();//按键函数/*液晶显示有关函数*/voidLCDdelay(uintx);//LCD延时函数voidwrite_com(ucharlcdcom);//写命令voidwrite_data(ucharlcddate);//写数据voidInit1602();//voidLCDdelay(uintx)//该延时大约100us(不精确,液晶操作的延时不要求很精确){ucharj;while(x--)for(j=0;j<120;j++);}//写命令voidwrite_com(ucharlcdcom){lcdrs=0;lcdrw=0;P1=lcdcom;LCDdelay(5);lcden=1;LCDdelay(5);lcden=0;}//写数据voidwrite_data(ucharlcddate){lcdrs=1;lcdrw=0;P1=lcddate;LCDdelay(5);lcden=1;LCDdelay(5);lcden=0;}//1602初始化voidInit1602(){lcden=0;write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示无光标无光标闪烁write_com(0x06);//当读或写一个字符是指针后一一位write_com(0x01);//清屏write_com(0x80+2);for(j=0;j<4;j++){write_data(Rel[j]);LCDdelay(5);}write_com(0x80+0x40+2);for(j=0;j<4;j++){write_data(Set[j]);LCDdelay(5);}write_com(0x80+6);for(j=0;j<8;j++){write_data(rel_time[j]);LCDdelay(5);}write_com(0x80+0x40+6);for(j=0;j<8;j++){write_data(set_time[j]);LCDdelay(5);}}/*定时1s*/voidtimer0()interrupt1{TH0=15536/256;TL0=15536%256;i--;if(i==0){i=20;rel_sec++;if(rel_sec==60){rel_sec=0;rel_min++;if(rel_min==60){rel_min=0;rel_hour++;if(rel_hour==24){rel_hour=0;}}}Key();comp();baoshi();dis();}}voiddis(){rel_time[0]=rel_hour/10;rel_time[1]=rel_hour%10;rel_time[2]='-'-0x30;rel_time[3]=rel_min/10;rel_time[4]=rel_min%10;rel_time[5]='-'-0x30;rel_time[6]=rel_sec/10;rel_time[7]=rel_sec%10;set_time[0]=set_hour/10;set_time[1]=set_hour%10;set_time[2]='-'-0x30;set_time[3]=set_min/10;set_time[4]=set_min%10;set_time[5]='-'-0x30;set_time[6]=set_sec/10;set_time[7]=set_sec%10;write_com(0x80+6);for(j=0;j<8;j++){write_data(rel_time[j]+0x30);LCDdelay(5);}write_com(0x80+0x40+6);for(j=0;j<8;j++){write_data(set_time[j]+0x30);LCDdelay(5);}}voidKey(){if(keymode==0){mode++;if(mode==4)mode=1;}if(mode==1){ledsec=1;ledmin=0;ledhour=0;}if(mode==2){ledsec=0;ledmin=1;ledhour=0;}if(mode==3){ledsec=0;ledmin=0;ledhour=1;}if(cho==0){choose=0;}else{choose=1;}if(keyadd==0){if(mode==1){if(choose==0){rel_sec++;if(rel_sec==60){rel_sec=0;}}else{set_sec++;if(set_sec==60){set_sec=0;}}}elseif(mode==2){if(choose==0){rel_min++;if(rel_min==60){rel_min=0;}}else{set_min++;if(set_min==60){set_min=0;}}}if(mode==3){if(choose==0){rel_hour++;if(rel_hour==24){rel_hour=0;}}else{set_hour++;if(set_hour==24){set_hour=0;}}}}if(keysub==0){if(mode==1){if(choose==0){if(rel_sec==0){rel_sec=59;}elserel_sec--;}else{if(set_sec==0){set_sec=59;}elseset_sec--;}}elseif(mode==2){if(choose==0){if(rel_min==0){rel_min=59;}elserel_min--;}else{if(set_min==0){set_min=59;}elseset_min--;}}if(mode==3){if(choose==0){i

温馨提示

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

评论

0/150

提交评论