51單片機+1602液晶萬年歷程序
詳細的制作教程下載:http://www.51hei.com/bbs/dpj-20625-1.html
/*
制作人:伍浩榮
報時:7:00-24:00(加燈光) 之后的只有燈光提醒
兩個led燈在左右兩邊(紫,黃)
加入節(jié)日提醒功能和溫度提醒功能
按鍵在后面 ,背光控制鍵在側(cè)面
同時按下加減鍵初始化時間(先加后減)。
農(nóng)歷顯示(其他:Have a good day?。?br />晚安:中午 早上 提示
百度空間:http://hi.baidu.com/haorongwu/home
*/
#include
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
uchar a,miao,shi,fen,ri,yue,nian,week,keynum,temp,flagtime,ledcount,count,alarmflag,flagT/*時間分段標(biāo)志*/,year1,month1,day1,lednum;
uintflag;//取溫度
bitc_moon;
data uchar year_moon,month_moon,day_moon;
#define h1 0x80 //LCD第一行的初始化位置
#define h2 0x80+0x40 //LCD第二行初始化位置
sbit Gled=P1^6;//定義粉色led燈的管腳
sbit Yled=P3^7;//定義黃色led燈的管腳
//定義1602相關(guān)管腳
sbit rs=P2^7;
sbit en=P2^5;
sbit rw=P2^6;
//sbit led=P2^3;/*控制背光:15腳(串聯(lián)10歐電阻)背光源正極*/
//sbit busy=P0^7;//測忙線
//DS1302芯片的管腳定義
sbit IO=P2^2;
sbit SCLK=P2^1;
sbit RST=P2^3;
sbit DQ=P2^0;/*定義DS18b20管腳*/
sbit ACC0=ACC^0;//設(shè)置累加器
sbit ACC7=ACC^7;
//按鍵
sbit key1=P3^0;//設(shè)置按鍵
sbit key2=P3^4;
sbit key3=P3^6;
sbit beep=P1^7;//蜂鳴器,用于報時
sbit lcdbusy=P0^7;
void delay(uint z)//延時函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void testbusy()//測忙函數(shù)
{
P0=0xff;//注意是P0組
rs=0;
rw=1;
en=1;
while(lcdbusy);//等待不忙
en=0;
}
void writecom(uchar com)//寫入指令函數(shù)
{
testbusy();
P0=com;
rs=0;
rw=0;
en=1;
en=0;
}
void writedata(uchar dat)//寫入數(shù)據(jù)函數(shù)
{
testbusy();//先測忙
P0=dat;
rs=1;
rw=0;
en=1;
en=0;
}
void print(uchar a3,uchar *str)//寫字符串函數(shù)(沒有延時)
{
writecom(a3|0x80);
while(*str!=