|
#include<reg51.h>
#include <stdlib.h>
#include "lcd.h"
#define uint unsigned int
#define uchar unsigned char
sbit Key_1 = P3^3;
sbit Key_2 = P3^4;
sbit Key_3 = P3^6;
sbit Key_4 = P3^7;
uchar Num_Temp,Num_Ture,Num_False;//temp???????
uchar Total;//????
uchar Num_Dat=0;
uint Time_Coont;//???????????
bit Change_Flag=0;
void Delay10ms(uchar delaytime); //@11.0592MHz
void Key_Scan();
void Timer0Init(void);
void main()
{
Timer0Init();//??????????
LcdInit(); //LCD??????????
LcdWriteCom(0x0f); //?????? LcdWriteCom ??lcdд????????????? ????com ?????
LcdWriteStr(1,1,"N:00 T:0");//д??λ??//
LcdWriteStr(2,1,"T:0 F:0 C:0");
LcdWriteCom(0x80+3);//?????λ??N??00????0λ??
while(1)
{
Key_Scan();
}
}
void Key_Scan()
{
if(Key_1 == 0)
{
Delay10ms(1);
if(Key_1 == 0)
{
while(Key_1 == 0);
if(Change_Flag == 1)
{
if(Num_Dat /10 < 9)
Num_Dat = Num_Dat+10;
LcdWriteNum(1,3,Num_Dat/10);
LcdWriteCom(0x80+2);
}
else
{
if(Num_Dat %10 < 9)
Num_Dat++;;
LcdWriteNum(1,4,Num_Dat%10);
LcdWriteCom(0x80+3);
}
}
}
if(Key_2 == 0)
{
Delay10ms(1);
if(Key_2 == 0)
{
while(Key_2 == 0);
if(Change_Flag == 1)
{
if(Num_Dat /10 > 1)
Num_Dat = Num_Dat-10;
LcdWriteNum(1,3,Num_Dat/10);
LcdWriteCom(0x80+2);
}
else
{
if(Num_Dat %10 > 0)
Num_Dat--;
LcdWriteNum(1,4,Num_Dat%10);
LcdWriteCom(0x80+3);
}
}
}
if(Key_3 == 0) //?л?????????
{
Delay10ms(10);
if(Key_3 == 0)
{
while(Key_3 == 0);
Change_Flag = ~Change_Flag;
if( Change_Flag == 1)
LcdWriteCom(0x80+2);
else
LcdWriteCom(0x80+3);
}
}
if(Key_4 == 0)
{
Delay10ms(10);
if(Key_4 == 0)
{
while(Key_4 == 0);
LcdWriteCom(0x0c); //?????????????
TR0 = 1; //???????
}
}
}
void Timer0Init(void)
{
TMOD &= 0xF0;
TMOD |= 0x01;
TL0 = 0x00;
TH0 = 0xDC;
TF0 = 0;
TMOD &= 0x0f;
TMOD |= 0x20;
TR1 = 1;
ET0 = 1;
EA = 1;
}
void Delay10ms(uchar delaytime) //@11.0592MHz
{
unsigned char i, j,k;
for(k=0; k<delaytime; k++)
{
i = 18;
j = 235;
do
{
while (--j);
} while (--i);
}
}
void Timer_0() interrupt 1
{
TL0 = 0x00;
TH0 = 0xDC;
Time_Coont++;
if(Time_Coont > 100)
{
Time_Coont = 0;
Total++;
if(Total > 59)
TR0 = 0;
srand(TL1);
Num_Temp = rand()%(91)+10;
if(Num_Temp == Num_Dat)
Num_Ture++;
else
Num_False++;
LcdWriteNum(2,13,Num_Temp);
LcdWriteNum(2,3,Num_Ture);
LcdWriteNum(2,8,Num_False);
LcdWriteNum(1,11,Total);
}
}
|
|