语音芯片时钟电路(整点报时名闹铃设置)程序
整点报时电路
整点报时电路
有不少场合,如车站候车室、浴室、写字楼、医院等公共场合,一般设置的数字钟都无声光报时功能,这给旅客、顾客或病员等会带来不便。
本整点报时电路在整点时能准确地进行声、光报时,能奏出一首世界名曲,且每次整点按序换一首乐曲。
整点报时电路包括数字钟定时控制电路、单稳态定时电路和名曲演奏电路等,电路如图所示。
定时控制电路是以LCD数字钟芯片KS5195(或KS5194)为核心组成的,它外接专用石英晶体32768Hz,可变电容器C0用以微调其准确的时间基准。
从AL钟控端引出整点的定时信号,每到整点时刻便输出一高电平信号(Vp-p=1.3v,t=50ms)。
IC2采用时基电路555,它与R3、C3等组成一个单稳态定时电路。
在整点时刻,钟控定时脉冲使VT1饱和导通,555的2脚呈低电位,将555翻转置位,3脚转呈高电位。
高电位保持的时间,即单稳态的暂稳时间为td=1.1R3C3,根据后级KD-4821演奏一首乐曲的时间,暂稳时间设计为52秒。
调节充电时间常数RC,可改变其演奏时间。
在IC2的输出转呈高电位后,发光二极管LED发光,同时,IC3得电并触发,迅即奏放乐曲一首。
IC3采用16首乐曲集成电路KD-482I,它内存有16首世界名曲。
单片机电子闹钟程序亲自编写-可用
单片机电子闹钟程序(亲自编写-可用)————————————————————————————————作者:————————————————————————————————日期:学校电子钟,有闹钟功能,按键可调时间,可调打铃时间,打铃时间长短显示,每个模块有功能注释。
其中正常时间显示和闹钟时间显示可用一个开关来调整。
芯片选择STC89C52程序:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//定义显示段码uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};uchar codebbtime[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar clock[]={0,0,0,0};uchar clock1[]={12,30,0};uchar weikong[6];uchar bbduration=4;uchar lingtime=9;//学校打铃时间组uchar shangwu1[]={8,30};uchar shangwu2[]={10,0};uchar shangwu3[]={10,20};uchar shangwu4[]={11,50};uchar xiawu1[]={13,30};uchar xiawu2[]={15,00};uchar xiawu3[]={15,15};uchar xiawu4[]={16,45};//按键定义sbit mode=P1^7;sbit sec_clr=P1^0;sbit min_set_add=P1^3;sbit min_set_sub=P1^4;sbit hour_set_add=P1^1;sbit hour_set_sub=P1^2;sbit bb_set_add=P1^5;sbit bb_set_sub=P1^6;sbit speaker=P2^6;//延时函数void delay(unsigned int t){while(t--);//时钟进位函数void clockjinwei(){clock[0]++;if(clock[0]==20){clock[1]++;clock[0]=0;if(clock[1]==60){clock[2]++;clock[1]=0;if(clock[2]==60){clock[3]++;clock[2]=0;if(clock[3]==24)clock[3]=0;}}}}//定时器0中断服务函数void timer0(void) interrupt 1 using 1 {TMOD=0x01;TH0=0x3c;TL0=0xb0;clockjinwei();}//时钟分位显示函数void fenwei(){weikong[0]=clock[3]/10;weikong[1]=clock[3]%10;weikong[2]=clock[2]/10;weikong[3]=clock[2]%10;weikong[4]=clock[1]/10;weikong[5]=clock[1]%10;}//闹钟分位显示函数void naofen(){weikong[0]=clock1[0]/10;weikong[1]=clock1[0]%10;weikong[2]=clock1[1]/10;weikong[3]=clock1[1]%10;weikong[4]=clock1[2]/10;weikong[5]=clock1[2]%10; }//闹钟定时显示函数void naozhongdisplay(){uchar z,s;uchar x=0x01;naofen();for(z=0;z<6;z++){P2=0;P0=table[weikong[z]];P2=x;x=_crol_(x,1);for(s=0;s<255;s++);}}//时钟显示函数void display(){uchar i,j;uchar x=0x01;fenwei();for(i=0;i<6;i++){P2=0;P0=table[weikong[i]];P2=x;x=_crol_(x,1);for(j=0;j<255;j++);}}//总显示函数void zhongxian(){if(mode==1)delay(100);if(mode==1)display();if(mode==0)delay(100);if(mode==0)naozhongdisplay();}//按键处理程序void key_set(){zhongxian();P1=0xff;if(min_set_add==0){delay(100);if(min_set_add==0){if(mode==1){clock[2]++;if(clock[2]==60){clock[2]=0;}while(min_set_add==0)zhongxian();}}if(mode==0){clock1[1]++;if(clock1[1]==60){clock1[1]=0;}while(min_set_add==0)zhongxian();}}//if(min_set_sub==0){delay(100);if(min_set_sub==0){if(mode==1){clock[2]--;if(clock[2]==0)clock[2]=59;}while(min_set_sub==0)zhongxian();if(mode==0){clock1[1]--;if(clock1[1]==0)clock1[1]=59;}while(min_set_sub==0)zhongxian();}}//if(hour_set_add==0){delay(100);if(hour_set_add==0){if(mode==1){clock[3]++;if(clock[3]==24){clock[3]=0;}while(hour_set_add==0)zhongxian();}if(mode==0){clock1[0]++;if(clock1[0]==24){clock1[0]=0;}while(hour_set_add==0)zhongxian();}}}//if(hour_set_sub==0){delay(100);if(hour_set_sub==0){if(mode==1){clock[3]--;if(clock[3]==0)clock[3]=23;}while(hour_set_sub==0)zhongxian();if(mode==0){clock1[0]--;if(clock1[0]==0)clock1[0]=23;}while(hour_set_sub==0)zhongxian();}}//if(sec_clr==0){delay(100);if(sec_clr==0){clock[1]=0;}while(sec_clr==0)zhongxian();}}//闹钟响铃函数void bb(){if(clock[1]<=bbduration){speaker=1;delay(100);speaker=0;}else speaker=0;}//打铃函数void daling(){if(clock[1]<=lingtime){speaker=1;delay(100);speaker=0;}else speaker=0;}//时间比较函数void bijiao(){if(clock[3]==shangwu1[0]){if(clock[2]==shangwu1[1])daling();}if(clock[3]==shangwu2[0]){if(clock[2]==shangwu2[1])daling();}if(clock[3]==shangwu3[0]){if(clock[2]==shangwu3[1])daling();}if(clock[3]==shangwu4[0]){if(clock[2]==shangwu4[1])daling();}if(clock[3]==xiawu1[0]){if(clock[2]==xiawu1[1])daling();}if(clock[3]==xiawu2[0]){if(clock[2]==xiawu2[1])daling();}if(clock[3]==xiawu3[0]){if(clock[2]==xiawu3[1])daling();}if(clock[3]==xiawu4[0]){if(clock[2]==xiawu4[1])daling();}}//闹钟比较void naobijiao(){if(clock[3]==clock1[0]){if(clock[2]==clock1[1]||clock[2]==clock1[1]+1||clock[2]==clock1[1]+2) bb();}}//响铃时长显示函数void bbtimeshow(){P3=bbtime[bbduration];if(bbduration>15)bbduration=0;}//响铃按键处理函数void bbtime_set(){bbtimeshow();if(bb_set_add==0){delay(100);if(bb_set_add==0)bbduration++;while(bb_set_add==0)bbtimeshow();}if(bb_set_sub==0){delay(100);if(bb_set_sub==0)bbduration--;while(bb_set_sub==0)bbtimeshow();}}//主程序void main(){EA=1;ET0=1;TR0=1;while(1){key_set();bijiao();bbtime_set();naobijiao();}}电路图:分四部分显示:如果在学习这个程序过程中有什么问题,可以发邮件到询问。
多功能语音报时数字钟的设计 (2)
目录多功能语音报时数字钟的设计 (1)一、绪论 (4)(一)课题研究背景 (5)二、研究或设计的国内外现状和发展趋势 (5)(一)课题研究意义 (6)(二)本设计的主要内容 (6)(三)时钟芯片的选择 (7)(四)显示模块的选择 (8)(五)语音芯片的选择 (8)三、系统的硬件电路设计 (8)(一)总体设计 (8)1.时钟电路 (9)2.复位电路 (9)3.DS1302时钟模块设计 (11)4.LCD显示电路 (11)5.LCD显示电路 (12)四、系统软件的设计 (14)(一)主程序流程图 (14)(二)时钟电路流程图 (14)(三)语音电路子程序 (15)多功能语音报时数字钟的设计摘要:自进入21世纪以来,电子产业飞速发展,各种新兴的电子产品布满了电子专柜,电子产品几乎走进了家家户户,走进了社会的各个行业,有力的推动了社会生产力的发展和电子信息化、电子智能化的提高。
数字钟也在发生着各种各样的变化,由体积较大、功能少、运行不精确的机械钟变为在液晶显示屏上显示数字的数字钟,再到多种功能于一钟的语音报时数字钟等等。
本设计是实现一款可正常显示当前时间,测量当前温度,带有语音报时的多功能数字钟。
本设计是采用AT89C51单片机控制的多功能语音报时数钟,可以显示年、月、日、时、分、秒、星期、温度。
具有年、月、日、时、分校准功能,自动提取温度并显示功能,语音报时功能,调整时间按下相应键会发出嘟嘟提示声功能。
采用DS1302时钟芯片进行时钟控制,DS18B20传感器实现温度采集功能,LCD12864作为液晶显示模块,ISD1420语音芯片实现语音播报时间功能。
钟表的多功能化给我们生活带来了很大的改善,比如定时报警、备忘提醒、电气设备的自动断电、自动开启关闭等功能。
数字时钟对世界有着重要的影响,对工业、电子业、商业有着重要的推进作用,使用简单方便,成本低,显示直观,在广阔的市场具有非常很好的前景市场。
数字时钟之所以这么受广大的欢迎,它使用简单直观,数字时钟在显示方面能清楚的在LED显示屏上显示出年、月、日、周日、时、分、秒,还有调准时间的准确度的功能,并且能够显示当日的温度情况。
51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)
51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)效果图:程序如下://51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)#include<reg51.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int/*七段共阴管显示定义*///此表为LED 的字模,共阴数码管0-9 -uchar code dispcode[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制/*定义并初始化变量*/uchar seconde=0;//秒uchar minite=0;//分uchar hour=12; //时uchar shi=0;//闹铃功能uchar fen=0;uchar bjcs;//报警次数sbit P1_0=P1^0; //second 调整定义sbit P1_1=P1^1; //minite调整定义sbit P1_2=P1^2; //hour调整定义sbit P1_5=P1^5; //整点报时sbit P1_3=P1^3; //闹铃功能,调整时间sbit P1_6=P1^6; //调整时sbit P1_7=P1^7; //调整分sbit P1_4=P1^4; //关闭闹铃/*函数声明*/void delay(uint k ); //延时子程序void time_pro( ); //时间处理子程序void display( ); //显示子程序void keyscan( ); //键盘扫描子程序/*xx子程序*/void delay (uint k){uchar j;while((k--)!=0){for(j=0;j<125;j++){;}}}/*时间处理子程序*/void time_pro(void){if(seconde==60){seconde=0;minite++;if(minite==60){minite=0;hour++;if(hour==24){hour=0;}}}}/*显示子程序*/void display(void){if(P1_3==1){P2=0XFE; P0=dispcode[seconde%10];//秒个位delay(1);P2=0XFD;P0=dispcode[seconde/10];//秒十位delay(1);P2=0XFB;P0=dispcode[10];//间隔符-delay(1);P2=0XF7;P0=dispcode[minite%10];//分个位delay(1);P2=0XEF;P0=dispcode[minite/10];//分十位delay(1);P2=0XDF;P0=dispcode[10];//间隔符-delay(1);P2=0XBF;P0=dispcode[hour%10];//时个位delay(1);P2=0X7F;P0=dispcode[hour/10];//时十位delay(1);}}/*键盘扫描子程序*/void keyscan(void){if(P1_0==0)//秒位的调整{delay (30);if(P1_0==0){seconde++;if(seconde==60){seconde=0;}}delay(250);}if(P1_1==0)//分位的调整{delay(30);if(P1_1==0){minite++;if(minite==60){minite=0;}}delay(250);}if(P1_2==0)//时位的调整{delay(30);if(P1_2==0){hour++;if(hour==24){hour=0;}}delay(250);}}/*整点报警*/void zhengdian (void){if((seconde==0)&(minite==0))//整点报时{P1_5=0;delay(1000);P1_5=1;}}/*定时闹钟*/void dingshi(void){if(P1_3==0)//按住P1_3BU不松,显示闹铃设置界面,分别按P1_6、P1_7设置闹铃时间。
rtc alarm原理
rtc alarm原理RTC闹钟是一种基于实时时钟芯片的闹钟,它通过准确的时间计时功能,能够在指定时间点触发闹钟功能,提醒人们进行相应的活动或任务。
本文将介绍RTC闹钟的原理及其应用。
一、RTC闹钟的工作原理RTC(Real-Time Clock)闹钟由实时时钟芯片和控制电路组成。
实时时钟芯片通过内置的晶体振荡器产生稳定的时钟信号,实现时间的计时功能。
控制电路通过设置和控制实时时钟芯片的寄存器,实现对闹钟时间的设定和闹钟功能的触发。
RTC闹钟的原理可以概括为以下几个步骤:1. 时钟信号的生成:实时时钟芯片通过晶体振荡器产生稳定的时钟信号,通常采用32.768kHz的振荡频率。
这个频率的选择是为了方便计算,因为它可以被2的幂整除,从而节省电路设计的复杂度。
2. 时间计数器的运行:实时时钟芯片内部有一个时间计数器,它通过时钟信号的输入进行计数。
时间计数器通常是一个32位的二进制计数器,它可以记录从设定时间点开始的经过时间。
3. 闹钟时间的设定:通过控制电路向实时时钟芯片的寄存器中写入闹钟时间,可以设置闹钟触发的时间点。
闹钟时间可以设定为具体的年月日时分秒,也可以设定为相对时间,如从当前时间开始的若干分钟后。
4. 闹钟功能的触发:当时间计数器的值与设定的闹钟时间相等时,实时时钟芯片会触发闹钟功能。
触发闹钟功能后,可以通过控制电路控制蜂鸣器、LED等外部设备,发出闹钟信号。
二、RTC闹钟的应用RTC闹钟广泛应用于各种计时和提醒场景,具有以下几个主要应用领域:1. 个人闹钟:RTC闹钟作为个人闹钟的核心部件,可以用于叫醒人们的日常生活。
通过设定闹钟时间,个人闹钟可以在指定时间点发出声音或震动,提醒人们起床或进行其他活动。
2. 会议提醒:在会议或重要活动中,RTC闹钟可以用作提醒工具。
通过设定闹钟时间,可以在会议开始前一段时间触发闹钟功能,提醒参会人员做好准备。
3. 医疗设备:在医疗设备中,RTC闹钟可以用于提醒患者按时服药或进行其他治疗活动。
基于51单片机,电子显示时钟带闹钟、整点报时、日期、星期
{ StrTab[1]=second/10; //秒十位
StrTab[0]=second%10; //秒个位
StrTab[2]=10; //间隔符-
StrTab[4]=minute/10; //分十位
StrTab[3]=minute%10; //分个位
StrTab[5]=10; //间隔符-
void display(uchar w[32])
{ unsigned int i,j,c=0;
if(a==0)//正常时间显示
{ for(i=0;i<8;i++) //依次将数组w中八个数取出,并显示
{ P2=weikong_code[i]; //位选
j=w[i]; //取出要显示的数码
P0=tab[j]; //取出段选编码
if(month==13)
{month=1; year++;
if(year==10000)
year=0;}}
week++;//星期走
if(week==8)
week=1;
data1();
week1();
while(second==err);
}
}
/**********************键盘扫描子程序*************************/
{if(dБайду номын сангаасy==30); //闰年29天
{day=1; month++;
if(month==13)
{month=1; year++;
if(year==10000)
year=0;}}}
51单片机c语言电子钟已加入调时闹铃整点报时功能
51 单片机 c 语言电子钟(已加入调时、闹铃、整点报时功能)效果图:程序如下://51 单片机c 语言电子钟(已加入调时、闹铃、整点报时功能)#include<reg51.h>#include<absacc.h>#define uchar unsigned char #define uint unsigned int /* 七段共阴管显示定义*/ // 此表为LED 的字模,共阴数码管0-9 - uchar code dispcode[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; // 段码控制/* 定义并初始化变量*/ uchar seconde=0;// 秒uchar minite=0;// 分uchar hour=12; // 时uchar shi=0;// 闹铃功能uchar fen=0;uchar bjcs;// 报警次数sbit P1_0=P1A0; //second 调整定义sbit P1_仁P1A1;//minite 调整定义sbit P1_2二PM2; //hour 调整定义sbitP1_5=P1A5; //整点报时sbit P1_3=P1A3; //闹铃功能,调整时间sbit P1_6=P1A6; //调整时sbit P1_7=P1A7; //调整分sbit P1_4=P1A4; //关闭闹铃/* 函数声明*/void delay(uint k ); // 延时子程序void time_pro( ); // 时间处理子程序void display( ); // 显示子程序void keyscan( ); // 键盘扫描子程序/*xx 子程序*/void delay (uint k){uchar j;while((k--)!=0){for(j=0;j<125;j++){;}}}/* 时间处理子程序*/void time_pro(void){if(seconde==60){seconde=0; minite++;if(minite==60){minite=0;hour++;if(hour==24){hour=0;}}}}/* 显示子程序*/void display(void){if(P1_3==1){P2=0XFE;PO=dispcode[seco nde%10];/秒个位delay(1);P2=0XFD;P0=dispcode[seco nde/10];〃秒十位delay(1);P2=0XFB;P0=dispcode[10];// 间隔符-delay(1);P2=0XF7;P0=dispcode[mi nite%10];〃分个位delay(1);P2=0XEF;P0=dispcode[minite/10];// 分十位delay(1);P2=0XDF;P0二dispcode[10];〃间隔符-delay(1);P2=0XBF;P0=dispcode[hour%10];〃时个位delay(1);P2=0X7F;P0=dispcode[hour/10];// 时十位delay(1);}}/* 键盘扫描子程序*/void keyscan(void){if(P1_0==0)//秒位的调整{delay (30);if(P1_0==0){seconde++;if(seconde==60){seconde=0;}}delay(250);}if(P1_仁=0)//分位的调整{delay(30);if(P1_1==0){minite++;if(minite==60){minite=0;}}delay(250);}if(P1_2==0)// 时位的调整{delay(30);if(P1_2==0){hour++;if(hour==24){hour=0;}}delay(250);}}/* 整点报警*/void zhengdian (void){if((seconde==0)&(minite==0))〃整点报时{P1_5=0;delay(1000);P1_5=1;}}/* 定时闹钟*/void dingshi(void){if(P1_3==0)〃按住P1_3BU不松,显示闹铃设置界面,分别按P1_6、P1_7设置闹铃时间。
基于STC89C52单片机的二十四小时语音数字闹钟设计
电子设计综合实验“基于STC89C52单片机的二十四小时语音数字闹钟设计”项目设计报告11设计任务与要求语音数字闹钟功能包括:计时功能、显示时间功能、校准时间功能、整点报时功能、闹钟功能。
2 设计思路2.1芯片选取1.单片机的选择采用STC89C52主芯片。
STC89C52是STC公司生产的一种低功耗、高性能微控制器,可用软件编程实现各种逻辑功能。
本身自带定时器和计时器,工作电压3.3-5.5v和电路其他器件相适应,具有断电保护功能,和时钟保持时间不间断相匹配。
并且其功耗低,体积小,成本低,可直接用串口下载,较为便利。
2.显示方案的选择采用LCD1602液晶显示屏。
液晶显示屏的显示功能强大,可显示大量文字,显示多样,功能扩展能力强,可不局限于单一时间显示,例如可以扩展年月显示。
稳定抗干扰能力强,清晰可见,且价格适中,对于本设计一个LCD显示屏足够实现所需功能。
3.时钟模块的选择采用DS1302时钟芯片实现时钟。
DS1302芯片是一种高性能、低功耗的实时时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,功能满足本设计要求,而且精度高,工作电压2.5V~5.5V范围内,与实验整体电路相适应。
4.语音模块采用NV020C语音芯片。
性能稳定,抗干扰能力强,无需外围电路外接电阻,电路简单,控制方便,价格便宜。
工作电压与电路整体电压范围一致,满足整点语音报时的功能需求。
且可进一步功能扩展。
2.2系统设计方案概述该设计包括电源模块、显示模块、按键模块、复位电路模块、时钟模块、语音模块、主控模块、闹铃模块。
整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统,其它的模块围绕着单片机最小系统展开。
其中包括,显示设备使用LCD1602液晶,可以同时显示时、分、秒等基本时间信息;时钟模块采用DS1302芯片,初始化之后,就会开始运行计算时间,单片机只需进行时间信息的读取即可。
51单片机控制基于1602液晶显示 电子时钟【带闹铃和整点报时】
write_date(week6[num]);
delay1();
}
};
break;
}
}
void display() //显示时间子程序
{
write_week(week);
write_ymd(3,year);
write_ymd(6,months);
write_ymd(9,day);
write_sfm(0,shi);
write_sfm(3,fen);
write_sfm(6,miao);
}
void display_1() //显示闹钟子程序
{
write_week(week_1);
write_ymd(3,year1);
write_ymd(6,months1);
write_ymd(9,day1);
write_sfm(0,shi1);
write_com(0x80+add);
write_date(0x30+sh);
write_date(0x30+ge);
}
void write_week(uchar add) //周几显示
{
switch(add)
{
case 0:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
{
write_date(week3[num]);
delay1();
}
};
break;
case 4:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
语音芯片时钟电路(整点报时名闹铃设置)程序
#include<at89x51.h>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char code tab[]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf};unsigned char code ts[]={0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50}; unsigned char wei[]={0,1,2,3,4,5};unsigned char sec,min,hou,rsec,rmin,rhou,tcont;unsigned char a0,a1,a2;unsigned char smh;void delay(void) //延时子程序{ unsigned char i,j;for (i=10;i>0;i--)for(j=248;j>0;j--);}void delay2(void) //1420专用延时子程序{ unsigned char i,j,k;for (i=200;i>0;i--)for(j=248;j>0;j--)for(k=20;k>0;k--);}void play(unsigned char temp) //1420播放子程序{ P1=0;P3_0=1;P3_1=1;P1=temp;P3_1=0;delay2();P1=0;P3_1=1;}void display(void) //显示子程序{ for(a2=0;a2<6;a2++){ wei[0]=hou/10;wei[1]=hou%10;wei[2]=min/10;wei[3]=min%10;wei[4]=sec/10;wei[5]=sec%10;P2=tab[a2];P0=table[wei[a2]];delay();}}void rdisplay(void) //闹钟显示子程序{ for(a2=0;a2<6;a2++){ wei[0]=rhou/10;wei[1]=rhou%10;wei[2]=rmin/10;wei[3]=rmin%10;wei[4]=rsec/10;wei[5]=rsec%10;P2=tab[a2];P0=table[wei[a2]];delay();}}void ring(void) //闹钟控制子程序{ while(P3_5==0)rdisplay();smh=0;a0=0;while(a0==0){ rdisplay();if(P3_3==0){ delay();if(P3_3==0){ switch(smh){ case 0:rsec++;break;case 1:rmin++;break;case 2:rhou++;break;}if(rsec==60){ rsec=0;rmin++;}if(rmin==60){ rmin=0;rhou++;}if(rhou==24)rhou=0;}while(P3_3==0)rdisplay();}if(P3_2==0){ delay();if(P3_2==0){ switch(smh){ case 0:rsec--;break;case 1:rmin--;break;case 2:rhou--;break;}if(rsec==-1){ rsec=59;rmin--;}if(rmin==-1){ rmin=59;rhou--;}if(rhou==-1)rhou=23;}while(P3_2==0)rdisplay();}if(P3_4==0){ delay();if(P3_4==0)smh++;if(smh==3)smh=0;while(P3_4==0)rdisplay();}if(P3_5==0){ delay();if(P3_5==0)a0=1;while(P3_5==0)rdisplay();break;}}smh=0;}void examring(void) //闹钟播放子程序{ unsigned char i,j,k;if(sec==rsec){ if(min==rmin){ if(hou==rhou){ P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;}}}}void zhengdian(void) //整点报时子程序{ unsigned char dian;if(sec==0){ if(min==0){ dian=hou/10;if(dian==0){play(0x60);play(0x68);dian=hou%10;dian=ts[dian];play(dian);play(0x58);}if(dian==1){dian=hou%10;if(dian==0){play(0x60);play(0x68);play(0x50);play(0x58);}if(dian!=0){play(0x60);play(0x68);play(0x50);dian=hou%10;dian=ts[dian];play(dian);play(0x58);}}if(dian==2){dian=hou%10;if(dian==0){play(0x60);play(0x68);play(0x10);play(0x50);play(0x58);}if(dian!=0){play(0x60);play(0x68);play(0x10);play(0x50);dian=hou%10;dian=ts[dian];play(dian);play(0x58);} }}}}void main(void) //主程序{ unsigned char i;TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;tcont=0;sec=0;min=0;hou=0;rsec=0;rmin=0;rhou=0;smh=0;for (i=50;i>0;i--)display();while(1){ display();examring();zhengdian();if(P3_3==0){ delay();if(P3_3==0){ switch(smh){ case 0:sec++;break;case 1:min++;break;case 2:hou++;break;}if(sec==60){ sec=0;min++;}if(min==60){ min=0;hou++;}if(hou==24)hou=0;}while(P3_3==0)display();}if(P3_2==0){ delay();if(P3_2==0){ switch(smh){ case 0:sec--;break;case 1:min--;break;case 2:hou--;break;}if(sec==-1){ sec=59;min--;}if(min==-1){ min=59;hou--;}if(hou==-1)hou=23;}while(P3_2==0)display();}if(P3_4==0){ delay();if(P3_4==0)smh++;if(smh==3)smh=0;while(P3_4==0)display();}if(P3_5==0){ delay();if(P3_5==0)ring();}}}void t0(void) interrupt 1 using 0 //调用中断{ TH0=(65536-10000)/256;TL0=(65536-10000)%256;tcont++;if(tcont==100){ tcont=0;sec++;if(sec==60){ sec=0;min++;if(min==60){ min=0;hou++;if(hou==24)hou=0;}}}}。
多功能语音报时数字钟的设计开题报告
本设计的关键问题是时钟的设计和语音芯片的驱动。
这我们采用89C52单片机的内部定时器来做时钟部分。为了提高走时精度,尽量不在中断函数中处理更多数据,这样可以减少中断的误差,使时钟的走时更加精确。
本系统就是采用ISD4004语音录放芯片,来解决语音录放问题。ISD4004语音录放芯片,工作电压3V,单片录放时间8至16分钟,音质好,适用于移动电话及其他便携式电子产品中。芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送入。芯片采用多电平直接模拟量存储技术,每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和"金属声"。采样频率可为4.0,5.3,6.4,8.0kHz,频率越低,录放时间越长,而音质则有所下降,片内信息存于闪烁存贮器中,可在断电情况下保存100年(典型值),反复录音10万次。
[ 7 ]周凯.EWB虚拟电子实验室—Multisim7电子电路设计应用[M.电子工业出版社,2005(6):
8—11.
[ 8 ]王有绪. PIC系列单片机接口技术及应用系统设计[M].北京:北京航空航天大学出版社,2000:87—98.
[ 9 ]何立民.单片机应用系统设计[M].北京:北京航空航天大学出版社,1990:128—139.
数字钟的实现,更体现了这一点。在不久的将来,数字钟肯定会逐渐被人们接受。很快会走进千家万户,给人们带来方便。
三、主要研究或设计内容,需要解决的关键问题和思路:
(1)本设计的主要内容:
基于单片机的语音电子钟设计
摘要钟是现代人类日常生活必不可少的工具,语音时钟更是现在电子时钟多功能化发展的一个方向。
语音电子钟具有突出的播报时间的功能,它被广泛用在生活中的各种场合。
本设计就是从日常生活中常见的事物入手,通过对语音电子钟的设计,让我认识到单片机已经深入到我们生活的每个领域。
本文从语音电子钟的设计原理、设计方案入手,详细介绍了系统硬件设计、软件设计及调试。
在语音电子钟的设计中,要处理好以下几个关键:D/A(数/模)转换,语音识别,人机接口,程序设计。
D/A(数/模)和语音识别技术关系到时间的正确播报,人机接口是播报时间和调整时间的关键。
利用凌阳SPCE061A单片机在语音识别和处理方面的优点,结合实践,设计出有特色的语音电子钟。
关键字: SPCE061A单片机 SPLC501液晶显示器语音报时AbstractClock is an essential tool for daily life.In morden society develop direction of clock with electronic is having the fuction for broadcasting.It is good to broadcast time. This design dates from common life, from the experience of this design I realize the truth that SCM hasing the depth to each area of our lives.The paper illustrate for the electronic voice clock’s design principles, details of the system hardware, software design and debugging. In this voice design of electronic clock, we must properly handle the following key.Firstly D/A conversion,secondly speech recognition,then human-machine interfaces, lastly program design. D/A conversion and voice recognition technology related to the correct broadcast of time, human-computer interface is the key to broadcast and adjust the time. Therefore, the Sunplus 61A microcontroller has high advantage in speech recognition and processing .Combineing the practice, design a unique voice electronic clock.Keywords: SPCE061A SCM SPLC501 liquid crystal displayTime of broadcast目录第一章绪论 (1)第一节选题的目的和意义 (1)第二节单片机的介绍 (1)一、单片机的发展 (1)二、单片机的组成及特点 (3)三、单片机的应用 (4)四、单片机的现状和未来 (5)第三节本设计的工作 (6)第二章语音电子钟的原理和方案 (7)第一节设计原理 (7)一、时钟功能 (7)二、语音输出功能 (7)第二节设计方案 (8)第三章语音电子钟的硬件设计 (9)第一节系统总体硬件结构 (9)一、系统结构 (9)二、按键的功能描述 (10)第二节 SPCE061A芯片 (11)一、SPCE061A性能简介 (12)二、SPCE061A芯片的引脚 (12)三、SPCE061A特性参数 (14)四、SPCE061A内核结构 (15)五、SPCE061A中断系统 (20)六、SPCE061A最小系统及开发方法 (24)第三节程序下载区 (25)第四节音频模块 (26)第五节语音输出模块 (27)第六节数/模转换模块 (28)第七节电源模块 (28)第八节 SPLC501液晶显示模组 (29)一、SPLC501的组成 (29)二、SPLC501驱动控制器芯片 (31)三、SPLC501的显示RAM 区映射 (31)四、SPLC501行和列地址 (32)五、SPLC501操作时序 (32)第四章语音电子钟的软件设计 (33)第一节 IDE集成开发环境 (33)一、IDE界面的三个窗口 (34)二、IDE工程的操作 (35)三、IDE在线仿真流程 (38)四、IDE软件仿真流程 (38)第二节程序设计 (39)一、软件结构 (41)二、主程序 (41)三、中断服务程序 (43)第五章测试和调试 (46)第一节硬件测试 (46)第二节 SPCE061A板的测试 (48)第三节程序调试 (49)总结 (54)参考文献 (55)外文资料 (56)中文译文 (63)致谢 (68)附录程序代码 (69)第一章绪论第一节选题的目的和意义带有语音功能的电子产品和电子设备近年来广泛地出现在我们的生活中。
可设置八个闹钟的智能时钟(原理图+程序)
可设置8个闹钟时间的智能时钟广东珠海曾向文普通的家用时钟一般只能设置一个闹钟时间,但很多人均需为工作日、周末、早晨、午休等不同时段设置不同的闹钟时间。
如果是使用普通的闹钟,只好每次休息前重新设置,很不方便,有时甚至会出现忘记更改闹钟设置而睡过头的情况。
针对这种情况,本人利用89C51单片机设计了一款有8种闹钟设置的时钟,通过一段时间的使用,情况良好。
1、元件清单共阴极数码管8个4511七段译码芯片1片A TMEL89C51单片机1片24C08EEPROM 1片24M晶振1个9V变压器(3V A)1个LM317输出可调稳压IC 1个整流桥堆1个470uF电容1个100uF电容1个10uF电容1个0.1uF电容1个33pF电容2个蜂鸣器1个9014(或其它NPN管)8个ksp92(或其它PNP管)1个二极管2个1K欧电阻16个470欧电阻1个10K欧可调电阻1个10K欧电阻4个按钮开关4个可装四节电池的电池盒1个万能板(约12CM*17CM)1块所有元件按以下的电路图焊接在一块万能板上。
注意LM317的输出应由低调高,以免烧IC。
2、电路图3、功能简介该时钟以24小时制显示时间,并可显示2000年至2049年之间的任何日期及星期,日期与时间经按键可相互切换,可输入8个闹钟时间设置,每个闹钟设置包括响铃的时间(小时与分钟)、对工作日有效还是对周末有效的标志,以及本项设置是否启用的标志等三部分。
这8个闹钟设置均保存在EEPROM中,即使掉电也不用重新输入。
当然使用者可通过按钮对任何一个设置作修改。
数码管可经按钮关闭显示,避免夜间刺眼、影响睡眠。
调节LM317输出电压,可改变数码管亮度,但电压不能低于后备电池的电压,否则后备电池供电。
用四节1.25V电池串联作后备电源,保证市电停电时时钟继续走时。
时钟的精度取决于晶振频率的精度。
4、程序清单本程序用C语言编写,经Keil C51编译成二进制码后写入89C51内的EPROM内即可。
基于单片机C语言电子时钟完整版(闹钟,整点报时)
《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间:2013-06-07摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词电子钟;AT89S52;硬件设计;软件设计ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.Key words Electronic clock;;AT89S52;Hardware Design;Software Design目录1设计课题任务、功能要求说明及方案介绍 (1)1.1设计课题任务 (1)1.2功能要求说明 (1)1.3设计总体方案介绍及原理说明 (1)2设计课题硬件系统的设计 (2)2.1设计课题硬件系统各模块功能简要介绍 (2)2.2设计课题电路原理图、PCB图、元器件布局图 (2)2.3设计课题元器件清单 (5)3设计课题软件系统的设计 (6)3.1设计课题使用单片机资源的情况 (6)3.2设计课题软件系统各模块功能简要介绍 (6)3.3设计课题软件系统程序流程框图 (6)3.4设计课题软件系统程序清单 (10)4设计结论、仿真结果、误差分析、教学建议 (21)4.1设计课题的设计结论及使用说明 (21)4.2设计课题的仿真结果 (21)4.3设计课题的误差分析 (22)4.4设计体会 (22)4.5教学建议 (22)结束语 (23)参考文献 (24)致谢 (25)附录 (26)1 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。
基于51单片机的语音电子时钟系统
摘要单片计算机既单片微型计算机。
由RAM,ROM,CUP构成,定时,计数和多种接口与一体的微型控制器。
他体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51 系列单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习,应用,从而达到学习,设计的能力。
本文以AT89C51单片机为核心,将时钟集成芯片DS1302产生的时钟信号送入单片机,由六位数码管动态显示;采用不断查询单片机存储的作息时间的方法,利用语音芯片播放音乐,同时采取定义三个按键及软件控制的方式,实现快速校时和整点报时功能;硬件部分介绍时钟集成芯片DS1302以及时钟信号模块、HY-1系列语音芯片以及自动控制打铃模块、直流电源模块、单片机AT89C51及动态显示模块;软件部分主要介绍设计思路及主程序以及各模块程序流程图。
关键词:数字时钟;单片机;时钟集成芯片;语音芯片ABSTRACTA monolithic computer is single chip microcomputer. By RAM, ROM, CUP, timing, counting and multiple interfaces and the integration of the micro controller. He has the advantages of small volume, low cost, strong function, widely used in smart industries, and industrial automation. And 51 Series SCM is the most typical and the most representative one. The graduation design through the study, application, to achieve the study, design ability.The article used the microcontroller AT89C51 as the core, clock signal that was produced by clock integrated chip DS1302 will be bring into the SCM, and are dynamic display by six LED. By the method of continuously query schedule time which was stored in SCM, using voice chip play music, simultaneously, by defining three keys and taking the control of software, the system accomplish the function of rapidly setting time and broadcasting time when the clock reach the whole point. Hardware section describes clock integrated chip DS1302 and clock signal module, HY-1 series of voice chip and automatic control of the ring module, DC power module, microcontroller AT89C51 and dynamic display module. Software section mainly introduces the ways of design and flow chart of the main program and module program.Key words: digital clock; SCM; clock integrated chip; voice chip目录摘要 (I)ABSTRACT (I)目录 (1)绪论 (2)1. 系统的总体设计 (3)1.1 系统设计要求 (3)1.2 系统设计总方案 (3)2. 系统的硬件设计 (6)2.1 时钟电路模块 (6)2.2 校时模块 (10)2.3 整点报时模块 (11)2.4 数码管显示模块 (11)2.5 音乐打铃模块 (15)2.6 AT89C51的外设电路 (17)2.7 直流电源电路 (22)3. 系统软件设计 (24)3.1 软件设计思路 (24)结论 (28)效果展示图: (29)致谢 (30)参考文献 (31)附录1 (32)绪论数字时钟是采用数字电路实现时、分、秒显示的计时装置,广泛用于个人家庭、车站、码头等场所,成为人们日常生活不可缺少的必需品。
am51h学习板程序数字时钟带整点报时
am51h学习板程序数字时钟带整点报时单片机数字电子钟设计(数电课设,含时间显示、校准、整点报时、闹钟功能)
展示硬件设计部分,此处采用proteus仿真演示。
其中液晶屏上面一行显示的是实际时间,下面一行显示的是设定闹钟时间。
通过调节单刀双掷开关来改变正在调整的时间是实际时间还是闹钟时间。
下面的三个按键依次用来调节模式(模式即正在调节的量是时、分或秒,通过最上面的三个LED灯来表达出来),下面的两个按键分别用来进行加减一的操作。
基于51单片机、时钟芯片、语音芯片的数字时钟设计与实现
LOGO
ISD1420的内部结构框图
LOGO
ISD1420固定地址录放音电路
LOGO
3.1.7、主控模块 主控模块的核心组成部分是单片机STC89C52, 承担着所有操作任 务的调控与分派工作。
LOGO
3.2.8、闹铃模块 闹铃模块由蜂鸣器 和蜂鸣器的驱动(三极 管)组成。在有闹铃发 生的时候,蜂鸣器的驱 动电路驱动蜂鸣器发声, 产生闹铃的效果。
LOGO
//加一操作 LOGO uchar INC(uchar time) { uchar data1,data2; time++; data1=time%10; data2=time/10; data1=data2*16+data1; //10进制转16进(逆) return(data1); } //语音芯片地址 void IDS1420_add(uchar a0,uchar a1,uchar a2,uchar a3,uchar a4,uchar a5,uchar a6,uchar a7) { P0_4=a0; P0_5=a1; P0_6=a2; P0_7=a3; P0_1=a4; P0_2=a5; P3_1=a6; P3_7=a7; }
基于51单片机、DS1302和ISD1420数字时钟
设计说明书
09级通信工程 罗强 胡自健 覃咏辉 2012年5月4日
LOGO
目录
一、引言 二、总体设计 三、硬件设计 四、软件设计 五、数字钟制作过程中遇到的问题 六、总结 附录Ⅰ:作品图片展示 附录Ⅱ:DS1302时钟芯片的工作原理和使用方发 附录Ⅲ:参考资料
LOGO
3.2.6语音芯片模块 ISD1420模块单片录放时间20秒,音质好。芯片采用CMOS技术,内含振 荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器 驱动及 EEPROM 阵列。最小的录放系统仅需麦克风、喇叭、两个按钮、电源 及少数电阻和电容。 其性能特点如下: (1)使用方便的单片20秒语音录放 (2)高质量、自然的语音还原技术 (3)边沿/电平触发放音 (4)自动节电,维持电流0.5μA (5)不耗电信息保存100年(典型值) (6)100,000 次录音周期(典型值) (7)多段信息处理,可分1至160 段 (8)片内免调整时钟,也可选用外部时钟 (9)无需开发系统 (10)5V 单电源工作
语音“闹”钟——趣味科技小制作
语音“闹”钟——趣味科技小制作给普通晶体管闹钟加装下面介绍的语音叫闹电路,便可制成既会发出鸟鸣声、又会说话的智能型“闹”钟。
家里有晶体管闹钟的读者不妨动手一试!弄懂工作原理语音“闹”钟的电路如图1所示。
晶体管闹钟(虚线框内所示)构成定时响闹触发电路,语音集成电路A和外围元器件构成响闹电路。
图1 语音“闹”钟电路图清晨,当主人设定的报闹时间到来时,晶体管闹钟的a、b引线之间呈通路状态,语音集成电路A的触发端TG从电池G的正极获得高电平,使A内部电路受触发工作,其输出端OUT反复轮流输出模拟鸟叫声和“懒虫起床”语音声电信号,经晶体三极管VT功率放大后,推动扬声器B不停地发出叫主人起床声;主人醒来后,打开止闹开关SA,则语音集成电路A的触发端TG失去高电平信号,扬声器B即中止响闹声;同时,语音集成电路A的触发端TG受到高电平下降沿的作用,触发A从输出端OUT输出一遍内储的“早上好”语音电信号,经晶体三极管VT功率放大后,推动扬声器B发出亲切友好的问候语,然后自动停止工作。
在响闹的同时,发光二极管VD会跟随声响同步闪光。
电路中,由于a、b接线回路提供给语音集成电路A触发端的触发电流≤40μA,故原晶体管闹钟内的电铃不会发声。
R1是语音集成电路A的外接振荡电阻器,其阻值大小影响叫闹声的速度和音调,典型取值为240kΩ;R2主要用于降低动态时电路的耗电量。
准备好元器件本制作共用了10个元器件,采购清单如表1所示。
表1 元器件清单制作与使用整个语音响闹电路以语音集成电路A为基板,按图1所示进行焊接。
焊接好的电路全部装入欲改造升级的晶体管闹钟内部,并在其外壳适当部位为扬声器B开出释音孔,为发光二极管VD开出发光孔。
为简化制作,发光二极管VD也可省掉不用。
新增电路通过a、b两根引线头与钟内原电铃响闹电路相接,注意止闹开关SA与钟内1.5V电池负极之间的连线应切断,不然的话,电铃也会报闹。
如钟内空闲位置不足以安装下新增语音电路,可将无用的电铃拆除(两接线头直接相连),以开辟空间进行安装。
如何设计简单的电子闹钟电路
如何设计简单的电子闹钟电路电子闹钟是人们日常生活中不可或缺的电子设备之一。
它的作用是在设定的时间点发出声音或光线信号,用来提醒人们起床、上班、上课或者完成其他重要的活动。
设计一个简单的电子闹钟电路并不困难,本文将介绍一种常见的设计方案。
请注意,在实际制作中需要谨慎操作,确保安全。
首先,我们需要准备以下材料和设备:1. 555定时器集成电路芯片2. 电阻、电容、电感等元件3. 蜂鸣器或者发光二极管(LED)4. 电池或直流电源5. 面包板和导线等实验工具接下来,按照以下步骤进行电路设计和组装:1. 将555定时器芯片插入面包板中,确保连接正确。
2. 连接相关元件,如电阻、电容和电感等。
这些元件的数值需要根据具体的设计要求进行选择和计算。
为了简化设计,可以选择一些常用的数值,如10kΩ的电阻和10μF的电容。
3. 连接蜂鸣器或发光二极管。
可以通过调整频率和占空比来控制蜂鸣器的声音或发光二极管的闪烁频率。
在完成电路的设计和组装后,我们需要设置闹钟的具体参数。
这可以通过调整电路中的电阻和电容值来实现。
根据555定时器的工作原理,可以通过改变电阻和电容的数值来调整触发和释放定时器的时间,从而实现不同的闹钟效果。
调试完毕后,我们可以将电路放入一个适当的外壳中,以保护电路和方便使用。
可以使用亚克力板、塑料盒子等材料制作一个简单的外壳,同时确保适当的开孔用于显示时间或触摸按钮进行操作。
需要注意的是,电子闹钟电路中的电压和电流都比较小,但为了安全起见,务必还是要小心操作,避免短路和触电等危险事故的发生。
在接线和调试时,可以使用万用表等工具进行相关测量,确保电路工作正常且稳定。
总之,设计一个简单的电子闹钟电路需要基本的电子知识和一些常见的元件。
通过合理的连线和参数设定,我们可以轻松实现一个简单但实用的电子闹钟。
这个电子闹钟的原理和制作过程可以为电子爱好者提供一个实践和学习的机会。
希望本文能对你有所帮助,祝你成功制作出自己心仪的电子闹钟电路!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<at89x51.h>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char code tab[]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf};unsigned char code ts[]={0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50}; unsigned char wei[]={0,1,2,3,4,5};unsigned char sec,min,hou,rsec,rmin,rhou,tcont;unsigned char a0,a1,a2;unsigned char smh;void delay(void) //延时子程序{ unsigned char i,j;for (i=10;i>0;i--)for(j=248;j>0;j--);}void delay2(void) //1420专用延时子程序{ unsigned char i,j,k;for (i=200;i>0;i--)for(j=248;j>0;j--)for(k=20;k>0;k--);}void play(unsigned char temp) //1420播放子程序{ P1=0;P3_0=1;P3_1=1;P1=temp;P3_1=0;delay2();P1=0;P3_1=1;}void display(void) //显示子程序{ for(a2=0;a2<6;a2++){ wei[0]=hou/10;wei[1]=hou%10;wei[2]=min/10;wei[3]=min%10;wei[4]=sec/10;wei[5]=sec%10;P2=tab[a2];P0=table[wei[a2]];delay();}}void rdisplay(void) //闹钟显示子程序{ for(a2=0;a2<6;a2++){ wei[0]=rhou/10;wei[1]=rhou%10;wei[2]=rmin/10;wei[3]=rmin%10;wei[4]=rsec/10;wei[5]=rsec%10;P2=tab[a2];P0=table[wei[a2]];delay();}}void ring(void) //闹钟控制子程序{ while(P3_5==0)rdisplay();smh=0;a0=0;while(a0==0){ rdisplay();if(P3_3==0){ delay();if(P3_3==0){ switch(smh){ case 0:rsec++;break;case 1:rmin++;break;case 2:rhou++;break;}if(rsec==60){ rsec=0;rmin++;}if(rmin==60){ rmin=0;rhou++;}if(rhou==24)rhou=0;}while(P3_3==0)rdisplay();}if(P3_2==0){ delay();if(P3_2==0){ switch(smh){ case 0:rsec--;break;case 1:rmin--;break;case 2:rhou--;break;}if(rsec==-1){ rsec=59;rmin--;}if(rmin==-1){ rmin=59;rhou--;}if(rhou==-1)rhou=23;}while(P3_2==0)rdisplay();}if(P3_4==0){ delay();if(P3_4==0)smh++;if(smh==3)smh=0;while(P3_4==0)rdisplay();}if(P3_5==0){ delay();if(P3_5==0)a0=1;while(P3_5==0)rdisplay();break;}}smh=0;}void examring(void) //闹钟播放子程序{ unsigned char i,j,k;if(sec==rsec){ if(min==rmin){ if(hou==rhou){ P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;P1=0;P3_0=1;P3_1=1;P1=0x70;P3_1=0;for (i=150;i>0;i--)display();P1=0;P3_1=1;}}}}void zhengdian(void) //整点报时子程序{ unsigned char dian;if(sec==0){ if(min==0){ dian=hou/10;if(dian==0){play(0x60);play(0x68);dian=hou%10;dian=ts[dian];play(dian);play(0x58);}if(dian==1){dian=hou%10;if(dian==0){play(0x60);play(0x68);play(0x50);play(0x58);}if(dian!=0){play(0x60);play(0x68);play(0x50);dian=hou%10;dian=ts[dian];play(dian);play(0x58);}}if(dian==2){dian=hou%10;if(dian==0){play(0x60);play(0x68);play(0x10);play(0x50);play(0x58);}if(dian!=0){play(0x60);play(0x68);play(0x10);play(0x50);dian=hou%10;dian=ts[dian];play(dian);play(0x58);} }}}}void main(void) //主程序{ unsigned char i;TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;tcont=0;sec=0;min=0;hou=0;rsec=0;rmin=0;rhou=0;smh=0;for (i=50;i>0;i--)display();while(1){ display();examring();zhengdian();if(P3_3==0){ delay();if(P3_3==0){ switch(smh){ case 0:sec++;break;case 1:min++;break;case 2:hou++;break;}if(sec==60){ sec=0;min++;}if(min==60){ min=0;hou++;}if(hou==24)hou=0;}while(P3_3==0)display();}if(P3_2==0){ delay();if(P3_2==0){ switch(smh){ case 0:sec--;break;case 1:min--;break;case 2:hou--;break;}if(sec==-1){ sec=59;min--;}if(min==-1){ min=59;hou--;}if(hou==-1)hou=23;}while(P3_2==0)display();}if(P3_4==0){ delay();if(P3_4==0)smh++;if(smh==3)smh=0;while(P3_4==0)display();}if(P3_5==0){ delay();if(P3_5==0)ring();}}}void t0(void) interrupt 1 using 0 //调用中断{ TH0=(65536-10000)/256;TL0=(65536-10000)%256;tcont++;if(tcont==100){ tcont=0;sec++;if(sec==60){ sec=0;min++;if(min==60){ min=0;hou++;if(hou==24)hou=0;}}}}。