?? timer00.c
字號:
/*說明:此程序只能讓液晶從00:00:00開始計時,只能網液晶中讀入數據*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P3^5;
sbit lcden=P3^4;
sbit s1=P2^0;
sbit s2=P2^1;
sbit s3=P2^2;
uchar code table[]={"2009-2-7 STA"};
uchar code table1[]={" 00:00:00"};
char shi,fen,miao;
uint count;
void delay(uint z)
{ uint x,y;
for(x=z;x--;x>0)
for(y=110;y--;y>0);
}
void write_com(uchar com) //寫指令rs=L,RW=L,lcden=高脈沖
{
rs=0;
lcden=0;
P0=com;
delay(5); //控制寫入指令的速率,可以省略
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)//寫數據rs=H
{
rs=1;
lcden=0;
P0=date;
delay(5); //控制寫入數據的速率 ,可以省略
lcden=1;
delay(5);
lcden=0;
}
/*初始化液晶,定時器*/
void init()
{
write_com(0x38);
write_com(0x0c);//開顯示,無光標
write_com(0x06);
write_com(0x01);//清屏
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=65536-50000/256;
TL0=65536-50000%256;
}
void write_sfm(uchar add,uchar date)
{ uchar ten,ge;
ten=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+ten);
write_date(0x30+ge);
}
/*主函數*/
void main()
{
uint i;
init();
for (i=0;i<=12;i++)
write_date(table[i]);
write_com(0x80+0x40);
for(i=0;i<12;i++)
write_date(table1[i]);
while(1);
}
void timer0() interrupt 1
{
TH0=65536-50000/256;
TL0=65536-50000%256; //50ms
count++;
if(count==20)
{
count=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
write_sfm(4,shi);
}
write_sfm(7,fen);
}
write_sfm(10,miao);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -