51单片机控制基于1602液晶显示 电子时钟【带闹铃和整点报时】

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TL0=(65536-49970)%256;
EA=1;
ET0=1; //
TR0=1;
}
void write_sfm(uchar add,uchar date)//秒分时写入子程序
{
uchar sh,ge;
sh=date/10;
ge=date%10;
write_com(0x80+0x44+add);
write_date(0x30+sh);
{
write_date(week5[num]);
delay1();
}
};
break;
case 6:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
{
write_date(week1[num]);
delay1();
}
};
break;
case 2:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
void time_keyscan();
void keyscan_1(); //按键程序
void time_keyscan_1();
void delay(uint z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay1(void)
{ ;;}
void buzz_pro(uchar be)//蜂鸣器发声函数
{
switch(be)
{//uint i;
/*用于整点响铃*/case 0:{
buzz=~buzz;
//delay1();
}break;
/*用于闹铃报时*/case 1:{
buzz=~buzz;
//delay(10);
}break;
}
}
}
void write_week(uchar add) //周几显示
{
switch(add)
{
case 0:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
{
write_date(week0[num]);
delay1();
}
};
break;
case 1:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
{
write_date(百度文库eek4[num]);
delay1();
}
};
break;
case 5:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
for(num=0;num<14;num++)
{
write_date(table[num]);
delay1();
}
write_com(0x80+0x44);
for(num=0;num<8;num++)
{
write_date(table1[num]);
delay1();
}
TMOD=0x01;
TH0=(65536-49970)/256;
void write_com(uchar com)//命令写入函数
{
rs=0;
delay(3);
P0=com;
delay(3);
lcden=1;
delay(3);
lcden=0;
}
void write_date(uchar date)//数据写入函数
{
rs=1;
delay(3);
P0=date;
delay(3);
sbit buzz=P1^5; //蜂鸣器控制端
uchar code week0[]="Sun";
uchar code week1[]="Mon";
uchar code week2[]="Tue";
uchar code week3[]="Wed";
uchar code week4[]="Thu";
uchar code week5[]="Fri";
sbit rs=P2^6;//数据/指令选择端
sbit rw=P2^5;//读写选择端
sbit set=P1^0;//时间设置按键
sbit set1=P2^0;//闹钟设置按键
sbit k1=P1^1; //递增按键
sbit k2=P1^2; //递减按键
sbit reset=P1^3;//从设置中跳出来
lcden=1;
delay(3);//这里至少为3
lcden=0;
}
void init()//初始化时钟函数
{
rw=0;
write_com(0x38);//设置显示模式
write_com(0x0c);//设置显示开关及光标
write_com(0x06);//
write_com(0x01);//清屏
write_com(0x80+1);//设置数据起始地址
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="2010/01/01 Sun";
uchar code table1[]="00:00:00";
sbit lcden=P2^7;//使能控制
uchar code week6[]="Sat";
uchar num,num1,aa,bb1,bb2,cc,year,months,day,week,shi,fen,miao,knum;
uchar year1,months1,day1,week_1,shi1,fen1,miao1;//闹钟变量定义
void keyscan(); //按键程序
{
write_date(week2[num]);
delay1();
}
};
break;
case 3:{
write_com(0x80+12);//设置数据起始地址
for(num=0;num<3;num++)
{
write_date(week3[num]);
delay1();
}
};
break;
case 4:{
write_date(0x30+ge);
}
void write_ymd(uchar add,uchar date)//年月日写入子程序
{
uchar sh,ge;
sh=date/10;
ge=date%10;
write_com(0x80+add);
write_date(0x30+sh);
write_date(0x30+ge);
相关文档
最新文档