基於微控制器的帶有日曆功能的數字時鐘

2021-07-10 19:26:05 字數 2711 閱讀 9291

基於微控制器的帶有日曆功能的數字時鐘
功能:

1.年、月、日,以及24小時制時間顯示,均可調

2.自動判斷是否閏年以及閏月,理論上至2023年

//去年寫的,感覺以後要經常打理自己的部落格,與眾多coder分享交流,所以現在才拿出來,多多包含

#include#define uint unsigned int 

#define uchar unsigned char

#define lcd1602_datapins p0

uchar code table=" 2016-01-01 sun";

uchar code table1=" 23:59:54";

uchar count=0;

uchar shi=23,fen=59,miao=54,nian=16,yue=1,ri=1;

uchar k1_num=0;//k1/k2/k3按下的次數

//按鍵

sbit k1=p1^1;//功能鍵

sbit k2=p1^2;//加

sbit k3=p1^3;//減

void delay1us(uint a);

void lcd1602_writecom(uchar com);/*lcd1602寫入8位命令子函式*/

void lcd1602_writedata(uchar dat); /*lcd1602寫入8位資料子函式*/

void lcd1602_init();/*lcd1602初始化子程式*/

void delay1us(uint a)

void lcd1602_writecom(uchar com) //寫入命令

void lcd1602_writedata(uchar dat) //寫入資料

void lcd1602_init() //lcd初始化子程式

lcd1602_writecom(0x80+0x40);

for (num=0;num<11;num++)

tmod=0x01;

th0=(65536-50000)/256;

tl0=(65536-50000)%256;

ea=1;//總中斷

et0=1;

tr0=1;

}void lcd1602_writesfm(uchar add,uchar dat)

void lcd1602_writenyr(uchar add,uchar dat)

void keyscan()

}if(k1_num==2)

if(k1_num==3)

if(k1_num==4)//跳轉到日

if(k1_num==5)//跳轉到月

if(k1_num==6)//跳轉到年

if(k1_num==7)

else if (yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)

else if (yue==2)

else

lcd1602_writenyr(9,ri);

}tr0=1;

}} if(k1_num!=0)

if(k1_num==2) //分

if(k1_num==3)//時

if(k1_num==4)//日

else if (yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)

else if (yue==2)

else

}lcd1602_writenyr(9,ri);

lcd1602_writecom(0x80+10); //游標前移一位

}if(k1_num==5)//月

if(k1_num==6)//年}}

//k3鍵指令

if(k3==0)

if(k1_num==2)

if(k1_num==3)

if(k1_num==4)//日

if(k1_num==5)//月

if(k1_num==6)//年}}

}}void main()

lcd1602_writenyr(6,yue);

}

}else if (yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)

lcd1602_writenyr(6,yue);

}

}else if (yue==2)

lcd1602_writenyr(6,yue); }}

else

lcd1602_writenyr(6,yue);

}

}

}lcd1602_writenyr(9,ri);

}lcd1602_writesfm(4,shi);

}lcd1602_writesfm(7,fen);

}lcd1602_writesfm(10,miao);

} }}

void timer0() interrupt 1

ps:這編輯視窗有問題啊,提交好幾次都轉成html,嘖嘖嘖···

基於微控制器的數字電壓表

此款電壓表主要是利用adc0832作為ad轉換晶元,可測範圍為0 5v lcd16025作為顯示晶元。源程式如下 include include define uint unsigned int define uchar unsigned char sbit rs p3 0 sbit rw p3 1...

基於微控制器的數字溫度計設計

基於微控制器的數字溫度計 摘要 本文介紹一種基於at89c2051微控制器的一種溫度測量及報警電路,該電路採用ds18b20作為溫度監測元件,測量範圍 55 125 使用4位led模組顯示,能通過鍵盤設定溫度報警上下限。正文著重給出了軟硬體系統的各部分電路,介紹了整合溫度感測器ds18b20的原理,...

微控制器課程設計數字心率計 基於微控制器的脈搏儀心率計

引言 祖國醫學診脈是指醫生用手指切按患者的脈象 探查了解病情。診脈對分析病理有積極意義。但是診脈受人的主觀因素影響大。脈搏心率測量儀採用光電感測器測量脈搏。測量原理是 心臟跳動引起血壓變化,血壓變化又引起血液濃度變化 光電感測器能夠探測到血液濃度的變化,這種變化觸發光電感應一即紅外線訊號強弱的變化。...