# include & ltintrins.h & gt
#定義uchar無符號字符
void time init();計時器啟動
void lcdreset(void);液晶初始化
void delay 3 ms(void);耽擱
void lcdwc(無符號char c);液晶寫命令
void lcdwd(無符號字符d);液晶寫入數據
無效設定點(uchar位置);指定LCD字符位置
void LCD waitidle(void);相等液晶空閑
sbit RS pin = p2^0;液晶RS引腳
sbit rw pin = p2^1;液晶RW引腳
sbit epin = p2^2;液晶使能引腳
uchar ms=0,buf = 60
無效總管(無效)
{
uchar ten,sec
time init();
lcdreset();
setpos(0x 06);
LCD wd(' t ');在液晶屏上寫下字符“t”。
LCD wd(' I ');
LCD wd(' m ');
LCD wd(' e ');
setpos(0x 47);
LCD wd(' 6 ');
LCD wd(“0”);
LCD wd(' s ');
while(1)
{
setpos(0x 47);
ten = buf/10;
sec = buf % 10;
LCD wd(0x 30+ten);
LCD wd(0x 30+秒);
delay 3 ms();
}
}
void timeinit()
{
TH0 = 0x3c定時器高值
TL0 = 0xB0定時器低值,這兩個值和妳用的晶振有關。
TMOD = 0x 01;定時器0設置為13位定時模式。
EA = 1;啟用中斷
ET0 = 1;啟用定時器0中斷
}
Void lcdreset(void) LCD復位初始化,清除屏幕。
{
delay 3 ms();
LCD WC(0x 38);
delay 3 ms();
LCD WC(0x 38);
delay 3 ms();
LCD WC(0x 38);
delay 3 ms();
LCD WC(0x 08);
LCD WC(0x 01);
LCD WC(0x 06);
delay 3 ms();
LCD WC(0x0c);
}
Void delay3ms(void)延遲功能與妳使用的晶振大小有關。
{
uchar i,j,k;
for(I = 0;我& lt3;i++)
for(j = 0;j & lt64;j++)
for(k = 0;k & lt51;k++);
}
Void lcdwc(unsigned char c)內容與您使用的LCD有關,取決於應用程序文檔的時間順序。
{
LCD waitidle();
RS pin = 0;
rw pin = 0;
P0 = c;
EPIN = 1;
_ nop _();
EPIN = 0;
}
Void LCD WD (unsigned char)內容與您使用的LCD有關,取決於應用文檔的時間順序。
{
LCD waitidle();
RS pin = 1;
rw pin = 0;
P0 = d;
EPIN = 1;
_ nop _();
EPIN = 0;
}
void lcdwaitidle(void)
{
烏恰爾壹世;
P0 = 0xff
RS pin = 0;
rw pin = 1;
EPIN = 1;
for(I = 0;我& lt20;i++)
如果((P0 & amp0X80)==0)
EPIN = 0;
}
無效設定點(uchar位置)
{
lcdwc(位置+0x 80);
}
Voidtime r0 (void)中斷1使用1定時器中斷入口函數,時間到了就會執行它的內容。
{
TH0 = 0x3c
TL0 = 0xb0
ms++;
如果(毫秒& gt=20)
{
ms = 0;
buf-;
if(buf & lt;=0)
buf = 60
}
}