|
|
|
|
#include<reg51.h>
|
|
|
|
|
#include"lcd.h"
|
|
|
|
|
#include"ds1302.h"
|
|
|
|
|
#include"i2c.h"
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
sbit LED0=P0^2;
|
|
|
|
|
sbit LED1=P0^1;
|
|
|
|
|
sbit LED2=P0^0;
|
|
|
|
|
sbit LED3=P0^4;
|
|
|
|
|
|
|
|
|
|
sbit LED4=P0^3;
|
|
|
|
|
|
|
|
|
|
sbit key1 = P1^2;
|
|
|
|
|
sbit key2 = P1^3;
|
|
|
|
|
|
|
|
|
|
sbit IN = P3^7;
|
|
|
|
|
sbit OUT = P3^6;
|
|
|
|
|
|
|
|
|
|
struct UserInfo{
|
|
|
|
|
int num;
|
|
|
|
|
int model;
|
|
|
|
|
int start;
|
|
|
|
|
int Light;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct UserInfo userInfo;
|
|
|
|
|
|
|
|
|
|
void LcdDisplay();
|
|
|
|
|
void LcdDisplay1();
|
|
|
|
|
void Delay10ms(void);
|
|
|
|
|
|
|
|
|
|
void Uart_Init()
|
|
|
|
|
{
|
|
|
|
|
TMOD = 0x20 | 0x01;
|
|
|
|
|
SCON = 0x50;
|
|
|
|
|
TH1 = 0xFD;
|
|
|
|
|
TL1 = TH1;
|
|
|
|
|
PCON = 0x00;
|
|
|
|
|
EA = 1;
|
|
|
|
|
ES = 1;
|
|
|
|
|
TR1 = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void us_delay(uchar t)
|
|
|
|
|
{
|
|
|
|
|
while(t--);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Send_Uart(uchar value)
|
|
|
|
|
{
|
|
|
|
|
ES=0;
|
|
|
|
|
TI=0;
|
|
|
|
|
SBUF=value;
|
|
|
|
|
while(TI==0);
|
|
|
|
|
TI=0;
|
|
|
|
|
ES=1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Bluetooth_Set(uchar *puf)
|
|
|
|
|
{
|
|
|
|
|
while(*puf!='\0')
|
|
|
|
|
{
|
|
|
|
|
Send_Uart(*puf);
|
|
|
|
|
us_delay(5);
|
|
|
|
|
puf++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Detection()
|
|
|
|
|
{
|
|
|
|
|
int i = 0;
|
|
|
|
|
if(key1==0) //<EFBFBD><EFBFBD>ⰴ<EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(key1==0){
|
|
|
|
|
if(userInfo.model == 0) userInfo.model = 1;
|
|
|
|
|
else userInfo.model = 0;
|
|
|
|
|
}
|
|
|
|
|
while((i<50)&&(key1==0)){
|
|
|
|
|
Delay10ms();
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
i=0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(key2==0) //<EFBFBD><EFBFBD>ⰴ<EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(key2==0){
|
|
|
|
|
if(userInfo.start == 0) userInfo.start = 1;
|
|
|
|
|
else userInfo.start = 0;
|
|
|
|
|
}
|
|
|
|
|
while((i<50)&&(key2==0)){
|
|
|
|
|
Delay10ms();
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
i=0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(IN==0) //<EFBFBD><EFBFBD>ⰴ<EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(IN==0){
|
|
|
|
|
userInfo.num++;
|
|
|
|
|
if(userInfo.num > 99) userInfo.num = 99;
|
|
|
|
|
}
|
|
|
|
|
while((i<50)&&(IN==0)){
|
|
|
|
|
Delay10ms();
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
i=0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(OUT==0) //<EFBFBD><EFBFBD>ⰴ<EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(OUT==0){
|
|
|
|
|
userInfo.num--;
|
|
|
|
|
if(userInfo.num < 0) userInfo.num = 0;
|
|
|
|
|
}
|
|
|
|
|
while((i<50)&&(OUT==0)){
|
|
|
|
|
Delay10ms();
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
i=0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Dispose()
|
|
|
|
|
{
|
|
|
|
|
if(userInfo.start && userInfo.model){
|
|
|
|
|
LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 0;
|
|
|
|
|
}else{
|
|
|
|
|
if(userInfo.Light < 50 && userInfo.model == 0){
|
|
|
|
|
if(userInfo.num < 10 && userInfo.num > 0) LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 1;
|
|
|
|
|
else if(userInfo.num >= 10 && userInfo.num < 20) LED0 = 0, LED1 = 0, LED2 = 1 ,LED3 = 1;
|
|
|
|
|
else if(userInfo.num >= 20 && userInfo.num < 30) LED0 = 0, LED1 = 1, LED2 = 1 ,LED3 = 1;
|
|
|
|
|
else if(userInfo.num >= 30) LED0 = 1, LED1 = 1, LED2 = 1 ,LED3 = 1;
|
|
|
|
|
else LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LED4 = userInfo.model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void main()
|
|
|
|
|
{
|
|
|
|
|
int i = 0;
|
|
|
|
|
uchar str[30];
|
|
|
|
|
LcdInit();
|
|
|
|
|
Ds1302Init();
|
|
|
|
|
Uart_Init();
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
Ds1302ReadTime();
|
|
|
|
|
LcdDisplay();
|
|
|
|
|
Detection();
|
|
|
|
|
sprintf(str, "%d\r\n", userInfo.model);
|
|
|
|
|
Bluetooth_Set(str);
|
|
|
|
|
Dispose();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void LcdDisplay()
|
|
|
|
|
{
|
|
|
|
|
// TODO 显示时间
|
|
|
|
|
LcdWriteCom(0x80);
|
|
|
|
|
LcdWriteData('m');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Delay10ms(void) //<EFBFBD><EFBFBD><EFBFBD> 0us
|
|
|
|
|
{
|
|
|
|
|
unsigned char a,b,c;
|
|
|
|
|
for(c=1;c>0;c--)
|
|
|
|
|
for(b=38;b>0;b--)
|
|
|
|
|
for(a=130;a>0;a--);
|
|
|
|
|
}
|