LCD1602 时钟

单片机C语言,时钟1602

/***********************************************/
//可调时钟
/***********************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^1;
sbit lcdrs=P2^0;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
uchar num,count,a,b;
char fen ,shi , miao;
/************************************************/
//延时函数
/************************************************/
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<124;j++)
{;}

}
/************************************************/
//写指令
/************************************************/
void write_com(uchar com)
{
lcdrs=0;
P1=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************************************/
//写数据
/************************************************/
void write_date(uchar date)
{
lcdrs=1;
P1=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************************************/
//写时分秒函数
/************************************************/
void write_sfm(uchar add,uchar date)
{
uchar shi,ge;
shi=date/10;//分解一个2位数的十位和个位
ge=date%10;
write_com(0x80+add);//设置显示位置
write_date(0x30+shi);//送去液晶显示十位
write_date(0x30+ge); //送去液晶显示个位
}

void init()
{
lcden=0;
write_com(0x38);//显示模式设定
write_com(0x0c);//开关显示、光标有无设置、光标闪烁设置
write_com(0x06);//写一个字符后指针加一
write_com(0x01);//清屏
write_com(0x80);//设置显示初始坐标
fen=0;
shi=12;
miao=0;
count=0;

write_com(0x80+6);//写出时间显示部分的两个冒号
write_date(':');
delay(5);
write_com(0x80+9);
write_date(':');
delay(5);
write_sfm(10,miao);//分别送去液晶显示
write_sfm(7,fen);
write_sfm(4,shi);

}
void keyscan()
{
if(k1==0)
{
delay(10);
if(k1==0)
{


TR0=0;
while(!k1);
a++;
switch(a)
{
case 1:
write_com(0x80+11);
write_com(0x0f);
break;
case 2:
write_com(0x80+8);
break;
case 3:
write_com(0x80+5);
break;
case 4:
TR0=1;
a=0;
write_com(0x80+11);
write_com(0x0c);
break;
}


}


}
if(k2==0)
{
delay(10);
if(k2==0)
{
while(!k2);

switch(a)
{
case 1:
miao++;
if(miao==60) miao=0;
write_sfm(10,miao);
write_com(0x80+11);
write_com(0x0f);
break;


case 2:
fen++;
if(fen==60) fen=0;
write_sfm(7,fen);
write_com(0x80+8);
write_com(0x0f);
break;


case 3:
shi++;
if(shi==24) shi=0;
write_sfm(4,shi);
write_com(0x80+5);
write_com(0x0f);

你可能喜欢

  • LCD1602中文资料
  • 液晶1602
  • LCD12864
  • L298N电机驱动
  • lcd1602
  • LCD1602程序
  • 单片机数字时钟设计

LCD1602 时钟相关文档

最新文档

返回顶部