单片机lcd1602液晶屏电子时钟C程序.docx

上传人:b****7 文档编号:10070229 上传时间:2023-02-08 格式:DOCX 页数:11 大小:15.41KB
下载 相关 举报
单片机lcd1602液晶屏电子时钟C程序.docx_第1页
第1页 / 共11页
单片机lcd1602液晶屏电子时钟C程序.docx_第2页
第2页 / 共11页
单片机lcd1602液晶屏电子时钟C程序.docx_第3页
第3页 / 共11页
单片机lcd1602液晶屏电子时钟C程序.docx_第4页
第4页 / 共11页
单片机lcd1602液晶屏电子时钟C程序.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

单片机lcd1602液晶屏电子时钟C程序.docx

《单片机lcd1602液晶屏电子时钟C程序.docx》由会员分享,可在线阅读,更多相关《单片机lcd1602液晶屏电子时钟C程序.docx(11页珍藏版)》请在冰豆网上搜索。

单片机lcd1602液晶屏电子时钟C程序.docx

单片机lcd1602液晶屏电子时钟C程序

单片机lcd1602液晶屏电子时钟C程序

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

*文件名:

液晶1602显示.c

*描述:

该程序实现了对液晶1602的控制。

*创建人:

东流,2009年4月10日

*版本号:

2.0

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

#include

#defineucharunsignedchar

#defineuintunsignedint

uintcount,t;

intshi=1,fen=11,miao=22,nian=12,yue=7,ri=1;

ucharshijian[16]={"time00-00-00t"},shijian1[16]={"date00-00-00"};

//这三个引脚参考资料

sbitE=P2^7;//1602使能引脚

sbitRW=P2^6;//1602读写引脚

sbitRS=P2^5;//1602数据/命令选择引脚

sbitLE=P3^7;

sbitkey1=P3^2;//小时修改建

sbitkey2=P3^3;//分钟修改键

sbitkey3=P3^4;//显示选择键

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

*名称:

delay()

*功能:

延时,延时时间大概为5US。

*输入:

*输出:

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

voiddelay()

{

uintn=250;

while(n--);

}

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

*名称:

bitBusy(void)

*功能:

这个是一个读状态函数,读出函数是否处在忙状态

*输入:

输入的命令值

*输出:

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

bitBusy(void)

{

bitbusy_flag=0;

RS=0;

RW=1;

E=1;

delay();

busy_flag=(bit)(P0&0x80);

E=0;

returnbusy_flag;

}

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

*名称:

wcmd(uchardel)

*功能:

1602命令函数

*输入:

输入的命令值

*输出:

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

voidwcmd(uchardel)

{

while(Busy());

RS=0;

RW=0;

E=0;

delay();

P0=del;

delay();

E=1;

delay();

E=0;

}

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

*名称:

wdata(uchardel)

*功能:

1602写数据函数

*输入:

需要写入1602的数据

*输出:

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

voidwdata(uchardel)

{

while(Busy());

RS=1;

RW=0;

E=0;

delay();

P0=del;

delay();

E=1;

delay();

E=0;

}

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

*名称:

L1602_init()

*功能:

1602初始化,请参考1602的资料

*输入:

*输出:

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

voidL1602_init(void)

{

wcmd(0x38);

wcmd(0x0c);

wcmd(0x06);

wcmd(0x01);

}

 

voidtimeInit()

{

TMOD=0X01;//定义定时器1工作方式16位定时c/t选为定时器GATE选TR1控制

TL0=(65536-10000)%256;

TH0=(65536-10000)/256;

TR0=1;

EA=1;

ET0=1;

}

voidtimeint()interrupt1

{

TL0=(65536-10000)%256;

TH0=(65536-10000)/256;

count++;

}

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

***时间日期设定

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

voidshijianxian()

{

if(count>=100)

{

miao++;

count=0;

}

if(miao>=60)

{

fen++;

miao=0;

}

if(fen>=60)

{

shi++;

fen=0;

}

if(shi>=24)

{

ri++;

shi=0;

}

if(ri>30)

{

yue++;

ri=1;

}

if(yue>12)

{

nian++;;

yue=1;

}

if(nian==99)

{

nian=0;

}

if((key1==0)&((t%6)==0))

{

delay();

if((key1==0)&((t%6)==0))

{

shi++;

if(shi>23)shi=0;

}

delay();

}

if((key3==0)&((t%6)==0))

{

delay();

if((key3==0)&((t%6)==0))

{

shi--;

if(shi<0)shi=23;

}

}

if((key1==0)&((t%6)==1))

{

delay();

if((key1==0)&((t%6)==1))

{

fen++;

if(fen>59)fen=0;

}

delay();

}

if((key3==0)&((t%6)==1))

{

delay();

if((key3==0)&((t%6)==1))

{

fen--;

if(fen<0)fen=59;

}

delay();

}

if((key1==0)&((t%6)==2))

{

delay();

if((key1==0)&((t%6)==2))yue++;

delay();

}

if((key1==0)&((t%6)==3))

{

delay();

if((key1==0)&((t%6)==3))ri++;

delay();

}

}

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

****时间显示

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

voidshijianxian1()

{

shijian[6]=shi/10+48;

shijian[7]=shi%10+48;

shijian[9]=fen/10+48;

shijian[10]=fen%10+48;

shijian[12]=miao/10+48;

shijian[13]=miao%10+48;

shijian[8]=45;

shijian[11]=45;

shijian[15]=t+48;

}

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

****日期显示

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

voidriqi()

{

shijian1[6]=nian/10+48;

shijian1[7]=nian%10+48;

shijian1[9]=yue/10+48;

shijian1[10]=yue%10+48;

shijian1[12]=ri/10+48;

shijian1[13]=ri%10+48;

shijian1[8]=45;

shijian1[11]=45;

}

 

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

*名称:

Main()

*功能:

主函数

*输入:

*输出:

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

voidMain()

{

uinti;

L1602_init();

timeInit();

while

(1)

{

shijianxian();

shijianxian1();

if(key2==0)

{

delay();

if((key2==0))

t++;

if(t>=6)t=0;

delay();

}

riqi();

for(i=0;i<16;i++)

{

wcmd(0xc0+i);

wdata(shijian[i]);

wcmd(0x80+i);

wdata(shijian1[i]);

}

}

}

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

当前位置:首页 > 经管营销 > 生产经营管理

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

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