基于c51功能最全的电子钟程序lcd1602.docx

上传人:b****2 文档编号:1179826 上传时间:2022-10-18 格式:DOCX 页数:39 大小:152.37KB
下载 相关 举报
基于c51功能最全的电子钟程序lcd1602.docx_第1页
第1页 / 共39页
基于c51功能最全的电子钟程序lcd1602.docx_第2页
第2页 / 共39页
基于c51功能最全的电子钟程序lcd1602.docx_第3页
第3页 / 共39页
基于c51功能最全的电子钟程序lcd1602.docx_第4页
第4页 / 共39页
基于c51功能最全的电子钟程序lcd1602.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

基于c51功能最全的电子钟程序lcd1602.docx

《基于c51功能最全的电子钟程序lcd1602.docx》由会员分享,可在线阅读,更多相关《基于c51功能最全的电子钟程序lcd1602.docx(39页珍藏版)》请在冰豆网上搜索。

基于c51功能最全的电子钟程序lcd1602.docx

基于c51功能最全的电子钟程序lcd1602

功能最全的电子钟

【单片机】c51数字时钟(带年月日显示)

摘要:

本设计以单片机为核心,lcd1602显示。

采用独立键盘输入能任意修改当前时间日期和设定闹钟时间。

具有显示年月日(区分闰年和二月),闹钟报警和整点报时功能

主程序:

/**************************************************************************************************

***************************************************************************************************

**********************lcd1602电子钟***************************************************

***************************************************************************************************

***************************************************************************************************/

#include

#include"lcd16024.h"

sbitkey1=P2^0;//调整

sbitkey2=P2^1;//加1

sbitkey3=P2^2;//减1

sbitspeaker=P2^3;//蜂鸣器

sbitkey4=P2^4;//闹钟设计

bitcal_year=1;//进入判断闰年标志位

bitleap_year;//闰年标志位

bitcalculate=0;//日加一标记

bitrun=0;//闹钟标志

bitbeep=0;//整点报时标志

//uint8num=0;//调整是给的脉冲

uint8codestr1[]="D:

";

uint8codestr2[]="T:

";

uint8codestr3[]="Wek";

uint8daystr[]="2013-07-29";//年月日格式

uint8timestr[]="21:

30:

59N";//时分秒格式

uint8daystr1[]="2013-07-29";//闹钟年月日格式

uint8timestr1[]="21:

30:

59N";//闹钟时分秒格式

uint8numweek=0;//星期加1标记

charweek=1;//星期

charsec=53;//秒

charmin=50;//分

charhour=23;//时

uint8day=30;//日

uint8month=9;//月

uint16year=2013;//年

charweek1=1;//闹钟星期

charsec1=58;//闹钟秒

charmin1=50;//闹钟分

charhour1=23;//闹钟时

uint8day1=30;//闹钟日

uint8month1=9;//闹钟月

uint16year1=2013;//闹钟年

uint8WeekData1;//闹钟星期标记

uint8number=0;//定时

uint8WeekData;//星期标记

uint8speaker_num;//整点报时次数

uint8scan_key(void);//函数声名

/*************************************************************************************

**********************更新LCD时间分离读取************************************

**************************************************************************************/

voidTimeChange()

{

//时分秒

timestr[7]=sec%10+'0';

timestr[6]=sec/10+'0';

timestr[4]=min%10+'0';

timestr[3]=min/10+'0';

timestr[1]=hour%10+'0';

timestr[0]=hour/10+'0';

//年月日

daystr[9]=day%10+'0';

daystr[8]=day/10+'0';

daystr[6]=month%10+'0';

daystr[5]=month/10+'0';

daystr[3]=year%10+'0';

daystr[2]=year/10%10+'0';

daystr[1]=year/100%10+'0';

daystr[0]=year/1000+'0';

//星期

WeekData=week+'0';

}

/*************************************************************************************

**********************闹钟更新LCD时间分离读取************************************

**************************************************************************************/

voidTimeChange1()

{

//时分秒

timestr1[7]=sec1%10+'0';

timestr1[6]=sec1/10+'0';

timestr1[4]=min1%10+'0';

timestr1[3]=min1/10+'0';

timestr1[1]=hour1%10+'0';

timestr1[0]=hour1/10+'0';

//年月日

daystr1[9]=day1%10+'0';

daystr1[8]=day1/10+'0';

daystr1[6]=month1%10+'0';

daystr1[5]=month1/10+'0';

daystr1[3]=year1%10+'0';

daystr1[2]=year1/10%10+'0';

daystr1[1]=year1/100%10+'0';

daystr1[0]=year1/1000+'0';

//星期

WeekData1=week1+'0';

}

/*************************************************************************************

**********************初始化系统定时器0************************************

**************************************************************************************/

voidsystimer0_init(void)

{

TMOD|=0x01;//设置为1时用或(|)

TMOD&=0xfd;//设置为0时用与(&)

TH0=0xDC;//定时10ms

TL0=0x00;

EA=1;

ET0=1;

TR0=1;

EX0=1;

}

/*************************************************************************************

**********************闹钟时间设置********************************

**************************************************************************************/

voidnaozhong()

{

uint8number=1;

uint8a=0;

uint8b=0;

if(0==key4)

{

Delay1Ms(5);

if(0==key4)

{

a=1;

LCD_write_command(0xc0+9);

LCD_write_command(0x0f);

}

while(!

key4);

}

while(a)

{

if(0==key4)

{

Delay1Ms(5);

if(0==key4)

{

a=0;

run=~run;

while(!

key4);

}

}

if(run)

{

timestr[9]='Y';

}

else

{

timestr[9]='N';

}

if(0==key1)

{

Delay1Ms(5);

if(0==key1)

{

b=1;

}

while(!

key1);

}

while(b)

{

if(0==key1)

{

Delay1Ms(5);

if(0==key1)

{

number++;

if(4==number)

{

b=0;

}

while(!

key1);

if(number==1)

{

LCD_write_command(0xc0+9);

LCD_write_command(0x0f);

}

if(number==2)

{

LCD_write_command(0xc0+6);

LCD_write_command(0x0f);

}

if(number==3)

{

LCD_write_command(0xc0+3);

LCD_write_command(0x0f);

}

}

}

swi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1