久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
1602液晶屏仿真 電子時鐘日歷設計
[打印本頁]
作者:
heicc
時間:
2016-5-29 15:49
標題:
1602液晶屏仿真 電子時鐘日歷設計
1602lcd液晶屏仿真 51單片機的電子時鐘日歷設計原理圖如下:
0.png
(34.52 KB, 下載次數: 88)
下載附件
2016-5-29 15:48 上傳
0.png
(82.11 KB, 下載次數: 81)
下載附件
2016-5-29 15:47 上傳
仿真文件及完整的程序代碼下載:
http://m.zg4o1577.cn/bbs/dpj-50777-1.html
#include <reg51.h>
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
/*定義年月日參數變量*/
unsigned char YEAR1 = 2;
unsigned char YEAR2 = 0;
unsigned char YEAR3 = 1;
unsigned char YEAR4 = 6;
unsigned char MONTH1 = 0;
unsigned char MONTH2 = 1;
unsigned char DAY1 = 2;
unsigned char DAY2 = 6;
unsigned char HOUR1 = 0;
unsigned char HOUR2 = 0;
unsigned char MINUTE1 = 0;
unsigned char MINUTE2 = 0;
unsigned char SECOND1 = 0;
unsigned char SECOND2 = 0;
unsigned char time[10];
unsigned char Y_M[10];
unsigned char count = 0;
/*LCD1602寫入8位數據子函數*/
void LcdWriteCom(unsigned char com);
void LcdWriteData(uchar dat);
/*LCD1602初始化子程序*/
void LcdInit();
void add1day(unsigned char month_day); //按按鍵后天數本月減一
void sub1month(void); //按按鍵后月數減一
unsigned char returnDays(unsigned char months); //獲取本月有多少天
void Lcd1602_Delay1ms(unsigned char c) //延時1ms函數
{
unsigned char a,b;
for (; c>0; c--)
for (b=199;b>0;b--)
for(a=1;a>0;a--)
;
}
void add1Sec(void) //調用此函數LCD1602顯示屏上秒數加1
{
SECOND2++;
if (SECOND2 > 9) //>'9'
{
SECOND2 = 0;
SECOND1++;
}
}
void time1() interrupt 1 //定時器中斷
{
unsigned char i, j;
TH0=(65536-50000)/256; //16位定時器0x60B0 高八位TH0 60低八位 B0 定時50000微秒觸發定時器
TL0=(65536-50000)%256;
count++;
if (count % 16 == 0)
{
add1Sec();
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80+0x40);
for (j = 0; j < 8; j++)
LcdWriteData(time[j]);
LcdWriteCom(0x80);
for (i = 0; i < 10; i++)
LcdWriteData(Y_M[i]);
if(count == 240)
count = 0;
}
if (SECOND1 >= 6) //=='6'
{
SECOND1 = 0;
MINUTE2++;
}
if (MINUTE2 > 9)
{
MINUTE2 = 0;
MINUTE1++;
if (MINUTE1 >= 6) //'6'
{
MINUTE1 = 0;
HOUR2++;
for(i = 0; i < 19; i++)
add1Sec();
}
}
if (HOUR2 > 9)
{
HOUR2 = 0;
HOUR1++;
}
if (HOUR1 >= 2) //'2' ,'4'
{
if(HOUR2 >= 4)
{
HOUR1 = 0;
HOUR2 = 0;
MINUTE1 = 0;
MINUTE2 = 0;
SECOND1 = 0;
SECOND2 = 0;
add1day(returnDays(MONTH1*10+MONTH2));
}
}
Y_M[0] = (char)(YEAR1+48);
Y_M[1] = (char)(YEAR2+48);
Y_M[2] = (char)(YEAR3+48);
Y_M[3] = (char)(YEAR4+48);
Y_M[4] = '-';
Y_M[5] = (char)(MONTH1+48);
Y_M[6] = (char)(MONTH2+48);
Y_M[7] = '-';
Y_M[8] = (char)(DAY1+48);
Y_M[9] = (char)(DAY2+48);
time[0] = (char)(HOUR1+48);
time[1] = (char)(HOUR2+48);
time[2] = ':';
time[3] = (char)(MINUTE1+48);
time[4] = (char)(MINUTE2+48);
time[5] = ':';
time[6] = (char)(SECOND1+48);
time[7] = (char)(SECOND2+48);
}
unsigned char returnDays(unsigned char months)
{
if (MONTH2 < 10 && MONTH1 == 0)
switch(MONTH2)
{
case 1: return 31; break;
case 2:
if (((YEAR3*10+YEAR4)%4 == 0 && (YEAR3*10+YEAR4) != 0 )
||((YEAR3 * 10 + YEAR4) == 0 && (YEAR1+YEAR2)%4 == 0))
return 29;
else
return 28;
break;
case 3: return 31; break;
case 4: return 30; break;
case 5: return 31; break;
case 6: return 30; break;
case 7: return 31; break;
case 8: return 31; break;
case 9: return 30; break;
}
else if(MONTH1 == 1 && MONTH2 <= 2)
{
if (MONTH1 == 1 && MONTH2 == 0)
return 31;
if (MONTH1 == 1 && MONTH2 == 1)
return 30;
if (MONTH1 == 1 && MONTH2 == 2)
return 31;
}
}
void sub1day(void)
{
if(DAY1 == 0)
{
if(DAY2 != 1)
DAY2--;
else
{
sub1month();
DAY1 = (unsigned char) returnDays(MONTH1*10+MONTH2)/10;
DAY2 = returnDays(MONTH1*10+MONTH2)%10+1; //...
}
}
if(DAY1 != 0)
{
if(DAY2 != 0)
DAY2--;
else
{
DAY1--;
DAY2 = 9;
}
}
}
void add1month(void)
{
if (MONTH2 == 9)
{
MONTH1 = 1;
MONTH2 = 0;
}
else if (MONTH1 == 0 ||(MONTH1 == 1 && MONTH2 < 2))
MONTH2++;
else if (MONTH1*10+MONTH2 == 12)
{
MONTH1 = 0;
MONTH2 = 1;
YEAR4++;
}
}
void add1day(unsigned char month_day) //獲取本月有多少天后,天數減1
{
if (DAY1*10+DAY2 == month_day)
{
DAY2 = 1;
DAY1 = 0;
add1month();
}
else
{
if(DAY2 != 9)
DAY2++;
else
{
DAY2 = 0;
DAY1++;
}
}
}
void sub1month(void) //減一個月
{
if(MONTH1 == 0)
{
if(MONTH2 != 1)
MONTH2--;
else
{
MONTH1 = 1;
MONTH2 = 2;
if(YEAR4 != 0)
YEAR4--;
else
{
if(YEAR3 != 0)
{
YEAR3--;
YEAR4 = 9;
}
else
{
if(YEAR2 != 0)
{
YEAR2--;
YEAR3 = 9;
YEAR4 = 9;
}
else
{
if(YEAR1 != 0)
{
YEAR1--;
YEAR2 = 9;
YEAR3 = 9;
YEAR4 = 9;
}
else
;
}
}
}
}
}
else
{
if(MONTH2 == 0)
{
MONTH1 = 0;
MONTH2 = 9;
}
else
MONTH2--;
}
}
void main(void)
{
TMOD=0x01;//設置定時器0為工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//打開中斷總開關
ET0=1;//開定時器0中斷
TR0=1;//啟動定時器0
P3 = 0XFF;
LcdInit();
while(1)
{
if (P3 != 0XFF)
switch(P3)
{
case 0xFE: //按 按鍵后加一小時
Lcd1602_Delay1ms(20);
while(P3 == 0xFE);
Lcd1602_Delay1ms(5);
HOUR2++;
break;
case 0xFD: //按 按鍵后減一小時
Lcd1602_Delay1ms(20);
while(P3 == 0xFD);
Lcd1602_Delay1ms(5);
if (HOUR1 != 0 && HOUR2 == 0)
{
HOUR1--;
HOUR2 = 9;
break;
}
else if(HOUR1 == 0 && HOUR2 == 0)
{
HOUR1 = 2;
HOUR2 = 3;
MINUTE1 = 0;
MINUTE2 = 0;
sub1day();
}
else if (HOUR2 != 0)
HOUR2--;
break;
case 0xFB: //按 按鍵后加一分鐘
Lcd1602_Delay1ms(20);
while(P3 == 0xFB);
Lcd1602_Delay1ms(5);
MINUTE2++;
break;
case 0XF7:
Lcd1602_Delay1ms(20);
while(P3 == 0xF7);
Lcd1602_Delay1ms(5);
if (MINUTE2 == 0) //分鐘減到0時處理
{
if(MINUTE1 == 0)
{
MINUTE1 = 5;
MINUTE2 = 9;
if (HOUR2 != 0)
HOUR2--;
else
{
if(HOUR1 != 0)
{
HOUR1--;
HOUR2 = 9;
}
else
{
HOUR1 = 2;
HOUR2 = 3;
MINUTE1 = 5;
MINUTE2 = 9;
sub1day();
}
}
}
else
{
MINUTE2 = 9;
MINUTE1--;
}
break;
}
else
MINUTE2--;
break;
case 0XDF:
Lcd1602_Delay1ms(20);
while(P3 == 0xDF);
Lcd1602_Delay1ms(5);
sub1month();
break;
case 0XEF:
Lcd1602_Delay1ms(20);
while(P3 == 0xEF);
Lcd1602_Delay1ms(5);
add1month();
break;
case 0XBF:
Lcd1602_Delay1ms(20);
while(P3 == 0xBF);
Lcd1602_Delay1ms(5);
add1day(returnDays(MONTH1*10+MONTH2));
break;
case 0X7F:
Lcd1602_Delay1ms(20);
while(P3 == 0x7F);
Lcd1602_Delay1ms(5);
sub1day();
break;
default:
break;
}
}
}
復制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久综合99
|
激情丁香
|
97视频免费在线观看
|
九九精品九九
|
黄片毛片
|
久久久久久久综合
|
黄色免费网站
|
天天干夜夜
|
日韩999
|
日韩一区二区精品
|
www.国产.com
|
成人在线播放视频
|
黄色免费在线视频
|
精品亚洲一区二区三区
|
国产福利视频在线观看
|
男人添女人囗交图
|
加勒比综合
|
午夜网站在线观看
|
日韩欧美在线视频观看
|
日韩在线视频播放
|
大尺度做爰床戏呻吟舒畅
|
国产综合自拍
|
四虎影视在线
|
欧美视频区
|
伊人网综合
|
国产日韩欧美一区二区
|
av在线播放不卡
|
亚洲精品在线免费
|
国产裸体永久免费视频网站
|
欧美成视频
|
久久夜色精品国产欧美乱极品
|
www亚洲天堂
|
手机福利视频
|
国产成人精品一区二区三区视频
|
国产精品美女久久久久久久久
|
日韩一区在线视频
|
99精品久久久久久
|
97精品超碰一区二区三区
|
日韩黄色一级片
|
成年人黄色网址
|
伊人av综合
|