程序运行图:
部分程序:
#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 //串口接收中断函数
{
unsigned x;
if(RI)
{
ch=SBUF;
if(ch!='S')//开始
{
RX_BUF[RX_CNT++]=ch;
}
else //结束
{
for(x=0;x<RX_CNT;x++)
{
RX_DAT[x]=RX_BUF[x];
}
RX_CNT=0;
RX_OVER=1;
}
RI=0;//清标志位
}
}
void Uart_Init(void) //串口初始化函数
{
TMOD |=0x20;
TH1=0xfd;
TL1=0xfd; //9600
TR1=1;
REN=1; //允许串口接收
SM0=0;SM1=1; //串口工作方式为方式1
EA=1; // 打开中断总开关
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();
}
}