新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 12864液晶電子時鐘+溫度顯示

12864液晶電子時鐘+溫度顯示

作者: 時間:2012-08-06 來源:網(wǎng)絡(luò) 收藏

void delay(uint t)
{
uint i,j;
for(i=120;i>0;i--);
for(j=t;j>0;j--);
}
/**********************************************************
void delay_us(uchar t) //延時計算公式:5+2*t
{
while(--t);
}
***********************************************************/
void read_busy()
{
EN=0;
RW=1;
RS=0;
EN=1;
while(P00x80);
EN=0;
}
void write_com(uchar com) //寫命令
{
read_busy();
EN=1;
RS=0;
RW=0;
P0=com;
delay(1);
EN=0;

}
void write_dat(uchar dat) //寫數(shù)據(jù)
{
read_busy();
EN=1;
RS=1;
RW=0;
P0=dat;
delay(1);
EN=0;
}

控制閃爍的函數(shù)如下:

void shan(void)
{
uchar i;
write_com(0x94); //將數(shù)據(jù)寫在0x94地址上
if(f==1) //按鍵按一下年開份始閃爍
{
{
tab2[8]=' '; //向要閃爍的位置寫空格
tab2[9]=' ';
}
for (i=8;i=15;i++)
{
write_dat(tab2[i]); //寫數(shù)據(jù)
}
goto return1;
}
if(f==2) //按鍵按兩下月份開始閃爍
{
{
tab2[11]=' ';
tab3[12]=' ';

}

for (i=8;i=15;i++)
{
write_dat(tab2[i]);
}
goto return1;
}
if(f==3) //按鍵按三下,日期開始閃爍
{
{
tab2[14]=' ';
tab2[15]=' ';
}
for (i=8;i=15;i++)
{
write_dat(tab2[i]);
}

goto return1;
}
write_com(0x8b);
if(f==4) //按鍵按四下,小時開始閃爍
{
{
tab3[6]=' ';
tab3[7]=' ';
}
for (i=6;i=13;i++)
{
write_dat(tab3[i]);
}

goto return1;
}
if(f==5) //按鍵按五下,分鐘開始閃爍
{
{
tab3[9]=' ';
tab3[10]=' ';
}
for (i=6;i=13;i++)
{
write_dat(tab3[i]);
}

goto return1;
}
if(f==6) //按鍵按六下,秒開始閃爍
{
{
tab3[12]=' ';
tab3[13]=' ';
}
for (i=6;i=13;i++)
{
write_dat(tab3[i]);
}

goto return1;
}
if(f==7) //按鍵按七下,調(diào)時完畢,停止閃爍,開始走時
{
{
for (i=6;i=13;i++)
{
write_dat(tab3[i]);
TR0=1; //時間設(shè)定完畢,打開定時器
}
}
}

return1:_nop_();

}

顯示數(shù)組:

uchar code tab1[]="時鐘 + ";
uchar tab2[16]="日期:20";
uchar tab3[14]="時間:";
uchar tab4[12]="當前溫度:" ;

定時器初始化,ASCii碼轉(zhuǎn)換

/**********************************************************
程序功能:液晶顯示電子時鐘(包括年月日時分秒),具有閃爍,移位,調(diào)時功能
并顯示當前溫度
程序編譯環(huán)境:keil4
程序運行環(huán)境:HJM-1
整理人:張家越 QQ:435835181
整理時間:2011-04-17

*********************************************************/
#include reg52.h>
#include"lcd.h"
#include intrins.h>
#include "flash.h"
#include"scan.h"
#include "18B20.h"
uchar tempreture[2];
#define uchar unsigned char
#define uint unsigned int
uchar utime; //定時20ms,每20ms,utime++
void shan(); //控制閃爍函數(shù)
void tkey(void); //按鍵處理函數(shù)

void init_clock() //定時器初始化函數(shù)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1 ;
EA=1;
TR0=1;
}
void iscii_change() //將需要顯示的時間轉(zhuǎn)換成ISCii碼
{
tab3[6]=clock[3]/10+0x30;
tab3[7]=clock[3]%10+0x30;

tab3[8]=0x3a;
tab3[9]=clock[4]/10+0x30;
tab3[10]=clock[4]%10+0x30;

tab3[11]=0x3a;
tab3[12]=clock[5]/10+0x30;
tab3[13]=clock[5]%10+0x30;

tab2[8]=clock[0]/10+0x30;
tab2[9]=clock[0]%10+0x30;
tab2[10]=0x2d;
tab2[11]=clock[1]/10+0x30;
tab2[12]=clock[1]%10+0x30;
tab2[13]=0x2d;
tab2[14]=clock[2]/10+0x30;
tab2[15]=clock[2]%10+0x30;

tab4[10]=temp/10+0x30;
tab4[11]=temp%10+0x30;
}
void display() //顯示函數(shù)
{
uchar i;
write_com(0x80);
for(i=0;i16;i++)
{
write_dat(tab1[i]);
}
write_com(0x90);
for(i=0;i16;i++)
{
write_dat(tab2[i]);
}
write_com(0x88);
for(i=0;i14;i++)
{
write_dat(tab3[i]);
delay(1);
}
write_com(0x98);
for(i=0;i12;i++)
{
write_dat(tab4[i]);
}
}
void main()
{
init_clock();
init_12864();

while(1)
{
Read_temp();
iscii_change();
display();
tkey();
shan();


}

}



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉