久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

LCD1602液晶顯示屏顯示時鐘且能修改時間

作者:玉另符   來源:本站原創   點擊數:  更新時間:2013年12月03日   【字體:

CODE:
/***************************************
程序功能:
LCD液晶顯示屏顯示時鐘并且可以修改時間
***************************************/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit K1=P1^0;//設置三個獨立鍵盤
sbit K2=P1^3;
sbit K3=P1^5;
sbit lcdwrite=P2^5;
sbit lcddatecommand=P2^6;
sbit lcde=P2^7;
uchar code firstline[]="2013-06-03";
uchar code secondline[]="00-00-00";
uchar i;
uchar hour,minutes,seconds;
uchar count,num;
uchar cnt;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<=112;y++)
{
}
}
}
void write_command(uchar command)
{
lcddatecommand=0;
lcdwrite=0;
P0=command;
delay(1);
lcde=1;
delay(1);
lcde=0;
}
void write_date(uchar date)
{
lcddatecommand=1;
lcdwrite=0;
P0=date;
delay(1);
lcde=1;
delay(1);
lcde=0;
}
void LCDinit()
{
lcde=0;
write_command(0x38);//設置16*2顯示,5*7點陣,8位數據接口
write_command(0x0f);//設置開顯示,不顯示光標
write_command(0x06);// 寫一個字符后地址指針加1
write_command(0x80);
for(i=0;i<10;i++)
{
write_date(firstline[i]);
delay(1);
}
write_command(0x80+0x40);
for(i=0;i<8;i++)
{
write_date(secondline[i]);
delay(1);
}
}
void Time0init()
{
TMOD=0x01;//開啟定時器1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void Clockinit()
{
hour=0;
minutes=0;
seconds=0;
count=0;
num=0;
}
void display(uchar hour,uchar minutes,uchar seconds)//接收并發送數據到液晶屏幕
{
uchar hourge,hourshi,minutesshi,minutesge,secondsshi,secondsge;
hourshi=hour/10;
hourge=hour%10;
write_command(0x80+0x40);
write_date(hourshi+48);
delay(1);
write_date(hourge+48);
delay(1);

minutesshi=minutes/10;
minutesge=minutes%10;
write_command(0x80+0x43);
write_date(minutesshi+48);
delay(1);
write_date(minutesge+48);
delay(1);

secondsshi=seconds/10;
secondsge=seconds%10;
write_command(0x80+0x46);
write_date(secondsshi+48);
delay(1);
write_date(secondsge+48);
delay(1);
}
void revise()
{
if(K1==0)
{
delay(5);
if(K1==0)
{
cnt++;//計數第幾次按下
TR0=0;
}
while(!K1);
delay(5);
while(!K1);
}
if(cnt==1)//第一次按下,調整秒鐘,調整時秒鐘有光標閃爍
{
write_command(0x80+0x46);
write_command(0x0f);
if(K2==0)
{
delay(5);
if(K2==0)
{
seconds++;
if(seconds==60)
{
seconds=0;
}
}
while(!K2);
delay(5);
while(!K2);
}
if(K3==0)
{
delay(5);
if(K3==0)
{
seconds--;
if(seconds==-1)//here is a bug
{
seconds=59;
}
}
while(!K3);
delay(5);
while(!K3); 
}
}

if(cnt==2)//第二次按下,調整分鐘,調整時秒鐘有光標閃爍
{
write_command(0x80+0x43);
write_command(0x0f);
if(K2==0)
{
delay(5);
if(K2==0)
{
minutes++;
if(minutes==60)
{
minutes=0;
}
}
while(!K2);
delay(5);
while(!K2);
}
if(K3==0)
{
delay(5);
if(K3==0)
{
minutes--;
if(minutes==-1)//here is a bug
{
minutes=59;
}
}
while(!K3);
delay(5);
while(!K3); 
}
}
if(cnt==3)//第三次按下,調整時鐘,調整時秒鐘有光標閃爍
{
write_command(0x80+0x40);
write_command(0x0f);
if(K2==0)
{
delay(5);
if(K2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
}
while(!K2);
delay(5);
while(!K2);
}
if(K3==0)
{
delay(5);
if(K3==0)
{
hour--;
if(hour==-1)//here is a bug
{
hour=23;
}
}
while(!K3);
delay(5);
while(!K3); 
}
}
if(cnt==4)
{
TR0=1;
cnt=0;
}
}
void main()
{
LCDinit();
Time0init();
Clockinit();
while(1)
{
revise();
display(hour,minutes,seconds);

}
void Time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
seconds++;
if(seconds==60)
{
seconds=0;
minutes++;
if(minutes==60)
{
minutes=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}

}

關閉窗口

相關文章

主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 亚洲视频免费在线播放 | 人人九九精 | 色欧美片视频在线观看 | 午夜成人在线视频 | 国产高清自拍视频在线观看 | av网站在线播放 | 一区二区国产精品 | 国产黄色av网站 | 亚洲久草| 亚洲第一区国产精品 | 国产在线精品一区二区三区 | 成人不卡视频 | 天天干天天草 | 精品一区二区三区四区五区 | 国产精品美女久久久久久免费 | 在线观看电影av | 日韩精品一区二区三区四区视频 | 精品视频成人 | 国内精品99 | 黄色a级一级片 | 国产精品视频导航 | 中文字幕国产日韩 | 亚洲第一色站 | 欧洲一级黄 | 一区二区三区欧美 | 深夜爽视频 | 国产高清精品一区二区三区 | 日本免费黄色一级片 | 久久草在线视频 | 亚洲精品一区二区三区 | 99热精品在线观看 | 中文字幕国产精品 | 一区二区不卡高清 | 中文字幕一区二区三区乱码在线 | 日韩一区二区av | 九九久久免费视频 | 欧美另类视频 | 亚洲国产成人精品女人久久久 | 成人深夜福利网站 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 |