main.c
#include <stc15f2k60s2.h>
#include <juzhen.h>
#include "ds1302.h"
#include "onewire.h"
#include "iic.h"
unsigned char display[]={
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char smg[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int wendu;//温度的值
unsigned int guang;//光敏的值
unsigned char shi=17,wen=25,deng=4;//参数变量
unsigned char led[]={
0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED亮的位置
unsigned char l1=0xff,l2=0xff,l3=0xff,l4=0xff,l5=0xff,l6=0xff,l7=0xff,l8=0xff;
bit an;//亮暗状态
void panduan();//判断时间跟温度
void liang_led();//亮LED
void Timer0Init();
void Delay750ms();
void xianshi();
void main()
{
DS_init();
Timer0Init();EA=1;ET0=1;
P2=P2&0X1F|0XA0;P0=0X00;P2&=0X1f;
P2=P2&0X1F|0X80;P0=0XFF;P2&=0X1F;
wendu=readtemp();Delay750ms();
while(1)
{
DS_get();
wendu=readtemp();
guang=AD_read(0x41);
if(guang>0x32)//亮状态
{
an=0;
}
else
{
an=1;
}
panduan();
liang_led();
anjian();
P2=P2&0X1F|0X80;P0=0xff&l8&l7&l6&l5&l4&l3&l1&l2;P2&=0X1F;
xianshi();
if(shi>23)shi=0;
if(wen>99)wen=0;if(wen<=0)wen=0;
if(deng>8)deng=4;if(deng<=4)deng=4;
}
}
void panduan()
{
if(((TIME[2]/16>=shi/10)&(TIME[2]%16>=shi%10)&(TIME[3]==0X01))|(((TIME[2]%16)<=0x08)&(TIME[3]==0X02)))
{
//时间在今天设定值以后,或第二天八点之前
l1=0xfe;
}
else
{
l1=0xff;
}
if(wendu<wen*100)
{
l2=0xfd;
}
else
{
l2=0xff;
}
}
void liang_led()
{
if(an==1)//光敏变暗时
{
if(deng==4){
l4=0xf7;l5=l6=l7=l8=0xff;}
if(deng==5){
l5=0xef;l4=l6=l7=l8=0xff;}
if(deng==6){
l6=0xdf;l5=l4=l7=l8=0xff;}
if(deng==7){
l7=0xbf;l5=l6=l4=l8=0xff;}
if(deng==8){
l8=0x7f;l5=l6=l7=l4=0xff;}
}
if(an==0)
{
l8=l4=l5=l6=l7=0xff;
}
}
void xianshi()
{
if(shu==0)//数据界面
{
qie_c=0;
if(qie_s==0)//时钟数据
{
display[0]=smg