历史sshi

# include & ltreg52.h & gt

#定义uchar无符号字符

#定义uint无符号整数

sbit dula=p2^6;

sbit wela=p2^7;

sbit lcden=p3^4;

sbit lcdrs=p3^5;

sbit key1=p3^0;

sbit key2=p3^1;

sbit key3=p3^2;

//sbit key4=p3^3;

sbit key=p3^7;

void显示();

void delay ms(uint z);

void keyscan();

void init();

void write _ com(uchar com);

void write _ data(uchar date);

uchar num,num1,num 2;num3,num4

uchar sshi、sge、fshi、fge、mshi、mge

uint temp = 0;

Void init() //初始化

{

杜拉= 0;

wela = 0;

TMOD = 0x 01;

TH0 =(65536-45872)/256;

th 1 =(65536-45872)% 256;

EA = 1;

ET0 = 1;

TR0 = 1;

LC den = 0;

write _ com(0x 38);

write _ com(0x0c);

write _ com(0x 06);

write _ com(0x 01);

}

void write _ com(uchircom)//写指令

{

LCD RS = 0;

P0 = com

戴莱姆斯(5);

LC den = 1;

戴莱姆斯(5);

LC den = 0;

}

Void write_data(uchar date)//写入数据。

{

LCD RS = 1;

P0 =日期;

戴莱姆斯(5);

LC den = 1;

戴莱姆斯(5);

LC den = 0;

}

Void delayms(uint z)//延迟

{

uint i,j;

for(I = z;我& gt0;我-)

for(j = 110;j & gt0;j-);

}

Void display()// LCD显示

{

write _ com(0x 80);

write _ data(sshi+48);

delay ms(1);

write _ com(0x 80+0x 01);

write _ data(sge+48);

delay ms(1);

write _ com(0x 80+0x 02);

write _ data(':');

delay ms(1);

write _ com(0x 80+0x 03);

write _ data(fshi+48);

delay ms(1);

write _ com(0x 80+0x 04);

write _ data(fge+48);

delay ms(1);

write _ com(0x 80+0x 05);

write _ data(':');

delay ms(1);

write _ com(0x 80+0x 06);

write _ data(mshi+48);

delay ms(1);

write _ com(0x 80+0x 07);

write _ data(mge+48);

delay ms(1);

}

void keysscan()

{

key = 0;

if(key1==0)

{

戴莱姆斯(5);

if(key 1 = = 0);

{

而(!key 1);

temp++;

TR0 = 0;

write _ com(0x0f);

}

}

开关(温度)

{

案例1:

if(key2==0)

{

戴莱姆斯(5);

if(key 2 = = 0);

{

而(!按键2)

num 1++;

if(num 1 = = 60)num 1 = 0;

}

}

if(key3==0)

{

戴莱姆斯(5);

if(key3==0)

{

而(!按键3)

num 1-;

if(num 1 = =-1)num 1 = 0;

}

}

打破;

案例二:

{

if(key2==0)

{

戴莱姆斯(5);

if(key2==0)

{

而(!key 2);

num 2++;

if(num 2 = = 60)num 2 = 0;

}

}

if(key3==0)

{

戴莱姆斯(5);

if(key3==0)

{

而(!key 3);

num 2-;

if(num 2 = =-1)num 2 = 0;

}

}

}

打破;

案例三:

{ if(key2==0)

{

戴莱姆斯(5);

if(key2==0)

{

而(!key 2);

num 3++;

if(num 3 = = 60)num 3 = 0;

}

}

if(key3==0)

{

戴莱姆斯(5);

if(key3==0)

{

而(!key 3);

num 3-;

if(num 3 = =-1)num 3 = 0;

}

}

}

打破;

案例4:

{

temp = 0;

TR0 = 1;

write _ com(0x 08);

}

}

}

Voidt0 _ time()中断1//时钟0中断

{

num++;

TH0 =(65536-45872)/256;

th 1 =(65536-45872)% 256;

如果(数量==20)

{

num = 0;

num 1++;

if(num1==60)

{

num 1 = 0;

num 2++;

}

mshi = num 1/10;

mge = num 1% 10;

if(num2==60)

{

num 2 = 0;

num 3++;

}

fshi = num 2/10;

fge = num 2% 10;

if(num3==24)

{

num 3 = 0;

//num 4++;

}

sshi = num 3/10;

sge = num 3% 10;

//if(num4)

显示();

}

}

void main()

{

init();

while(1)

{

keys scan();

}

}