main.c
#include "main.h"
unsigned char tab[24]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XC0&0X7F,0XF9&0X7F,0XA4&0X7F,0XB0&0X7F,0X99&0X7F,0X92&0X7F,0X82&0X7F,0XF8&0X7F,0X80&0X7F,0X90&0X7F,0XBF,0XFF,0X89,0X8E};
unsigned char dsbuff[8]={21,21,21,21,21,21,21,21};
unsigned char com;
unsigned int temperature;//温度
unsigned int rb3;//rb3 adc
unsigned int time_para_value,temp_para_value,led_para_value;
unsigned int time_para = 17,temp_para = 25,led_para = 4;//时间温度led参数//临时
unsigned char light;//亮暗等级
bit key4 = 0;//0-数据显示 1-参数设置
unsigned char key5 = 0;//0-时间 1-温度 2-亮暗
bit flag;
int count = 0;
int liang_count = 0,mie_count = 0;
bit liang_flag = 0,mie_flag = 0;
bit led1 = 0,led2 = 0,led3 = 0,led4 = 0,led5 = 0,led6 = 0,led7 = 0,led8 = 0;
void main(void)
{
EA = 1;
all_init();
ds1302_init();
Timer0Init();
Timer1Init();
while(1)
{
Key_Scans();
if(flag == 1)
{
flag = 0;
ds1302_get();
temperature = temp1_get();
rb3 = pcf8951_adc(0X01)*1.961;
if(rb3 < 300)//暗
{
light = 1;
}else if(rb3 > 300)//亮
{
light = 0;
}
if(!key4)
{
data_display();
time_para_value = time_para;
temp_para_value = temp_para;
led_para_value = led_para;
}else if(key4)
{
para_display();
}
}
}
}
void led_one(unsigned char dat)//单个LED操作
{
P0 = dat;
P2 = ((P2&0X1F)|0X80);
P2 &= 0X1F;
}
void led_2(unsigned char dat)//LED1-LED3
{
if(led1&&led2&&led3)//111
{
led_one(0XF8&dat);
}else if(led1&&led2&&!led3)//110
{
led_one(0XFC&dat);
}else if(led1&&!led2&&led3)//101//1010
{
led_one(0XFA&dat);
}else if(led1&&!led2&&!led3)//100 1110
{
led_one(0XFE&dat);
}else if(!led1&&led2&&led3)//011 1001
{
led_one(0XF9&dat);
}else if(!led1&&led2&&!led3)//010 1101
{
led_one(0XFD&dat);
}else if(!led1&&!led2&&led3)//001 1011
{
led_one(0XFB&dat);
}else if(!led1&&!led2&&!led3)///000
{
led_one(0XFF&dat);
}
}
void led(void)
{
switch(led_para)
{
case 4:led4 = 1;led5 = 0;led6 = 0;led7 = 0;led8 = 0;
break;
case 5:led4 = 0;led5 = 1;led6 = 0;led7 = 0;led8 = 0;
break;
case 6:led4 = 0;led5 = 0;led6 = 1;led7 = 0;led8 = 0;
break;
case 7:led4 = 0;led5 = 0;led6 = 0;led7 = 1;led8 = 0;
break;
case 8:led4 = 0;led5 = 0;led6 = 0;led7 = 0;led8 = 1;
break;
}
if(time_para_value >= 8)
{
if((shijian[2] < 8)||(shijian[2] >= time_para_value))
{
led1 = 1;
}else
{
led1 = 0;
}
}else if(time_para_value < 8)
{
if((shijian[2] >= time_para_value)&&(shijian[2] < 8))
{
led1 = 1;
}else
{
led1 = 0;
}
}
if(temperature < temp_para_value*10)//LED2亮
{
led2 = 1;
}else if(temperature > temp_para_value*10)
{
led2 = 0;
}
if(liang_flag == 1)
{
led3 = 1;
}else if(mie_flag == 1)
{
led3 = 0;
}
if(light == 1)//暗
{
if(led4 == 1)
{
led_2(0XF7);
}else if(led5 == 1)
{
led_2(0XEF);
}else if(led6 == 1)
{
led_2(0XDF);
}else if(led7 == 1)
{
led_2(0XBF);
}else if(led8 == 1)
{
led_2(0X7F);
}
}else if(light == 0)//亮
{
led_2(0XFF);
}
}
void smg_display(int s1,int s2,int s3,int s4,int s5,int s6,int s7,int s8)
{
dsbuff[0] = s1;dsbuff[1] = s2;dsbuff[2] = s3;dsbuff[3] = s4;
dsbuff[4] = s5;dsbuff[5] = s6;