📄 main.c
字号:
#include "reg51.h"
#include "main.h"
#include "type.h"
#include "lcd.h"
#include "public.h"
#include "ds1302.h"
#include "ds18b20.h"
#define sizeofA(n) sizeof(n)-1
void DisTime(void);
void ReadTmp(void);
void init1302(void);
extern uchar cur_time[7];
const uchar code Welcome[]={" Welcome !! www.jssvc.edu.cn"};
const uchar code BcdAscii[]={"0123456789ABCDEF"};
const uchar code DS18B20Error[]={"Error"};
const uchar code LcdDateHead[]={"20"};
const uchar code LcdDateBack[]={" "};
const uchar code LcdTempHead[]={" T:"};
const uchar code *Week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
const uchar code InitTime[7]={0x00,0x35,0x11,0x24,0x11,0x06,0x07}; //Init:秒,分,时,日,月,星期,年
uchar ddd[5];
uchar Date[8],Time[8];
uchar DisAll[14];
int temp;
int i,j;
sbit L1 = P1^3;
sbit L2 = P1^4;
sbit Beep = P2^4;
void main(void)
{
//SP=0x5f;
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
LcdReset();
LcdClear();
LcdFillWill(Welcome,sizeofA(Welcome));
L1=0;
L2=0;
//Beep=0;
DelayMs(1000);
L1=1;
L2=1;
//Beep=1;
init1302();
DelayMs(2000);
while(1)
{
ReadTmp();
if (DsErr==1)//DS18B20错误
{
LcdFillXY(DS18B20Error,sizeofA(DS18B20Error),11,1);
}
DisTime();
}
}
void DisTime(void)
{
get_time();
//LcdClearDown();
for (i=0,j=13;i<7;i++,j=j-2)
{
DisAll[j-1]=(cur_time[i]/16)|0x30;
DisAll[j]=(cur_time[i]%16)|0x30;
}
// LcdFillXY(LcdDateHead,sizeofA(LcdDateHead),0,0);
// LcdFillXY(DisAll,sizeof(DisAll),2,0);
DelayMs(10);
//日月年Date[]
Date[0]=DisAll[0];
Date[1]=DisAll[1];
Date[2]='.';
Date[3]=DisAll[4];
Date[4]=DisAll[5];
Date[5]='.';
Date[6]=DisAll[6];
Date[7]=DisAll[7];
LcdFillXY(LcdDateHead,sizeofA(LcdDateHead),0,0);
LcdFillXY(Date,sizeof(Date),2,0);
LcdFillXY(LcdDateBack,sizeofA(LcdDateBack),10,0);
//星期
LcdFillXY(Week[cur_time[5]%16],3,12,0);
//时间
Time[0]=DisAll[8];
Time[1]=DisAll[9];
Time[2]=':';
Time[3]=DisAll[10];
Time[4]=DisAll[11];
Time[5]=':';
Time[6]=DisAll[12];
Time[7]=DisAll[13];
LcdFillXY(Time,sizeof(Time),0,1);
}
void ReadTmp(void)
{
temp=ReadTemperature();
ddd[0]=BcdAscii[(temp & 0xF000)>>12];
if (ddd[0]==0x30) ddd[0]=' ';
ddd[1]=BcdAscii[(temp & 0x0F00)>>8];
ddd[2]=BcdAscii[(temp & 0x00F0)>>4];
ddd[3]='.';
ddd[4]=BcdAscii[(temp & 0x000F)>>0];
LcdFillXY(LcdTempHead,sizeof(LcdTempHead),8,1);
LcdFillXY(ddd,sizeof(ddd),11,1);
}
void init1302(void)
{
set_time(InitTime);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -