程序運(yùn)行圖:
部分程序:
#include <REGX52.H>
#include "lcd_1602.h"
#include "key.h"
#include "ds18b20.h"
#include "time.h"
#include "uart.h"
u8 time_init[];
u8 wendu=25;
extern u16 i;
extern u8 flag;
unsigned char ch;
unsigned char RX_BUF[35],RX_DAT[35],RX_CNT=0,RX_OVER=0;
void Delay10ms(unsigned int c)?? //誤差 0us
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void Uart_IRQ() interrupt 4??? ?? //串口接收中斷函數(shù)
{
unsigned x;
if(RI)
{
ch=SBUF;
if(ch!='S')//開始
{
RX_BUF[RX_CNT++]=ch;
}
else ??????? //結(jié)束
{
for(x=0;x<RX_CNT;x++)
{
RX_DAT[x]=RX_BUF[x];
}
RX_CNT=0;
RX_OVER=1;
}
RI=0;//清標(biāo)志位
}
}
void Uart_Init(void)????????????????????????? ?? //串口初始化函數(shù)
{
TMOD |=0x20;
TH1=0xfd;
TL1=0xfd;? //9600
TR1=1;
REN=1;?? //允許串口接收
SM0=0;SM1=1; //串口工作方式為方式1
EA=1;? // 打開中斷總開關(guān)
ES=1;? //打開串口中斷
}
void main()
{
Timer0Init();
LcdInit();
int_init();
Uart_Init();
while(1)
{
wendu=DS18B20_GET();
Time_panduan();
if(RX_OVER==1)
{
wifi_time();
Delay10ms(300);
RX_OVER=0;
}
if(flag==1)
{
key1();//加
key2();//減
}
display();
}
}