611 lines
17 KiB
C
611 lines
17 KiB
C
#include "sys.h"
|
||
#include "delay.h"
|
||
#include "usart.h"
|
||
#include "LED.h"
|
||
#include "lcd.h"
|
||
#include "image2lcd.h"
|
||
#include "dht11.h"
|
||
#include "zph01.h"
|
||
#include "time.h"
|
||
//! 屏蔽编译器对LCD显示中文字符串函数的警告
|
||
#pragma diag_suppress 870
|
||
|
||
u8 pm25_lcd[6]={0},hh06_lcd[6]={0},dht11_flag=0;
|
||
//! SWPU图标
|
||
extern const u8 gImage_swpu[];
|
||
//! 公交E图标
|
||
extern const u8 gImage_gongjiaoe[];
|
||
//! 定时器3标志,中断一次加一
|
||
extern u8 time3_flag,usart_time,time_hours,time_minutes,time_seconds;
|
||
//! 串口2数据缓存Buffer和标志,串口1噪音数据,串口2 pm2.5数据,串口3 GSM模块数据
|
||
extern u8 USART1_RX_BUF[7],USART2_RX_BUF[10],USART3_RX_BUF[75];
|
||
extern u16 USART1_RX_STA,USART2_RX_STA,USART3_RX_STA;
|
||
//! 温湿度
|
||
u8 temperature=0,humidity=0;
|
||
//! pm2.5,噪音数据的整数和小数
|
||
u8 pm25_zheng=0,pm25_xiao=0,hh06_zheng=0,hh06_xiao=0;
|
||
//! 图片显示标志
|
||
u8 Image_flag=0;
|
||
|
||
void lcd_display(void);
|
||
void data_pros(void);
|
||
void data_pm25(void);
|
||
void data_hh06(void);
|
||
//! 串口1和串口2使能,禁止函数
|
||
void disadle_uart(void);
|
||
void enadle_uart(void);
|
||
|
||
//********************************************************************//
|
||
//! 函数名:main
|
||
//! 功能:主函数
|
||
//! 输入:none
|
||
//! 输出:none
|
||
//********************************************************************//
|
||
int main(void)
|
||
{
|
||
//! flag_dht11为读取温湿度数据延时三个主周期而设置,主循环周期大于300ms
|
||
u8 CheckSum=0,j=0,flag_dht11=0;
|
||
//! GSM模块上传数据buffer
|
||
u8 send[36]={0};
|
||
//! 中断优先级配置,四个抢占优先级,四个副优先级
|
||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
|
||
//! LCD初始化
|
||
LCD_Init();
|
||
//! LED灯GPIO初始化
|
||
LED_GPIO_Config();
|
||
//! 延时1.5秒
|
||
delay_ms(1500);
|
||
//! 开启LCD显示
|
||
lcd_display();
|
||
//! 串口1初始化 噪音数据接口
|
||
uart1_init(115200);
|
||
//! 串口2初始化 pm2.5数据接口
|
||
uart2_init(9600);
|
||
//! 串口3初始化 GSM模块
|
||
uart3_init(115200);
|
||
//! 延时1秒
|
||
delay_ms(1000);
|
||
dht11_flag=1;
|
||
//! 初始化DHT11
|
||
if(DHT11_Init())
|
||
{
|
||
dht11_flag=1;
|
||
}
|
||
else
|
||
{
|
||
//! 100 纵坐标,10 横坐标
|
||
LCD_ShowString(100,10,80,24,24,"Error");
|
||
dht11_flag=0;
|
||
}
|
||
//! 定时器3初始化,定时1秒
|
||
time3_init(2000,35999);
|
||
delay_ms(500);
|
||
//! 关闭串口1,2
|
||
disadle_uart();
|
||
//! 主循环
|
||
while(1)
|
||
{
|
||
//! DHT11读取计数
|
||
flag_dht11++;
|
||
//! 点亮LED2
|
||
LED2_ON;
|
||
//! 点亮LED1
|
||
LED1_ON;
|
||
//! 温度采集周期大概900ms
|
||
if(flag_dht11==3)
|
||
{
|
||
//! 清标志
|
||
flag_dht11=0;
|
||
//! DHT11数据读取过程大于100ms
|
||
data_pros();
|
||
}
|
||
//! 只允许在这300ms开启串口,读取传感器数据
|
||
enadle_uart();
|
||
delay_ms(150);
|
||
LED1_OFF;
|
||
delay_ms(150);
|
||
disadle_uart();
|
||
//! 噪音数据读取成功标志
|
||
if(USART1_RX_STA)
|
||
{
|
||
USART1_RX_STA=0;
|
||
data_hh06();
|
||
}
|
||
if(usart_time==15)
|
||
{
|
||
usart_time=0;
|
||
Image_flag=~Image_flag;
|
||
//! 延时5ms是为了解决显示器死掉的问题,大概原因是刷新LCD的频率太高,
|
||
//! 根本原因与中断中更新屏幕内容有关,如果在主函数中正在更新屏幕,但是中断又更新,可能出现错误
|
||
delay_ms(5);
|
||
//! 在坐标(0,160)到坐标(319,239)区域填充白色
|
||
LCD_Fill(0,167,319,239,WHITE);
|
||
//! 图标刷新标志有效,并且定时器没进定时器中断
|
||
if(Image_flag && (TIM_GetITStatus(TIM3,TIM_IT_Update)!=SET))
|
||
{
|
||
delay_ms(5);
|
||
//! 显示SWPU图标
|
||
image_display(45,167,(u8*) gImage_swpu);
|
||
}
|
||
if((Image_flag==0)&&(TIM_GetITStatus(TIM3,TIM_IT_Update)!=SET))
|
||
{
|
||
//! 显示公交E图标
|
||
delay_ms(5);
|
||
image_display(45,167,(u8*) gImage_gongjiaoe);
|
||
}
|
||
delay_ms(50);
|
||
//! 实际请求网址ַ:http://xkmg9m2k.qcloud.la/weapp/usrcloud?a=255&b=1&c=18&d=15&e=1&f=12&g=50&h=3&i=0
|
||
//! 域名已在GSM模块中配置,这里仅需配置参数
|
||
if(dht11_flag==1) //get请求参数:a=255&b=1&c=18&d=15&e=1&f=12&g=50&h=3&i=0
|
||
{
|
||
send[0]='a';
|
||
send[1]='=';
|
||
send[2]=0xFF;
|
||
send[3]='&';
|
||
send[4]='b';
|
||
send[5]='=';
|
||
//! 需加48转换成对应的ASCII码,否则服务器无法读出数据
|
||
send[6]=1+48;
|
||
send[7]='&';
|
||
send[8]='c';
|
||
send[9]='=';
|
||
send[10]=temperature+48;
|
||
send[11]='&';
|
||
send[12]='d';
|
||
send[13]='=';
|
||
send[14]=humidity+48;
|
||
send[15]='&';
|
||
send[16]='e';
|
||
send[17]='=';
|
||
send[18]=pm25_zheng+48;
|
||
send[19]='&';
|
||
send[20]='f';
|
||
send[21]='=';
|
||
send[22]=pm25_xiao+48;
|
||
send[23]='&';
|
||
send[24]='g';
|
||
send[25]='=';
|
||
send[26]=hh06_zheng+48;
|
||
send[27]='&';
|
||
send[28]='h';
|
||
send[29]='=';
|
||
send[30]=hh06_xiao+48;
|
||
send[31]='&';
|
||
send[32]='i';
|
||
send[33]='=';
|
||
send[34]=0+48;
|
||
send[35]='\0';
|
||
//! 向服务器发送请求
|
||
USART_SendString(USART3,send);
|
||
}
|
||
else
|
||
{
|
||
send[0]='a';
|
||
send[1]='=';
|
||
send[2]=0xfe;
|
||
send[35]='\0';
|
||
//! 向服务器发送错误标志
|
||
USART_SendString(USART3,send);
|
||
}
|
||
enadle_uart();
|
||
}
|
||
//! 串口收到pm2.5数据
|
||
if(USART2_RX_STA)
|
||
{
|
||
USART2_RX_STA=0;
|
||
CheckSum=FucCheckSum(USART2_RX_BUF,9);
|
||
if(CheckSum==USART2_RX_BUF[8])
|
||
{
|
||
data_pm25();
|
||
}
|
||
}
|
||
//! GMS串口模块,数据为服务器返回的字符串:
|
||
//! {"a":0,"b":0,"c":0,"d":0,"e":0,"f":2,"g":12,"h":21,"i":22,"j":2}
|
||
//! a为系统状态;b为公交车状态;c为到达时间;d为车到站牌距离的整数;e为距离的小数;f为服务器时间星期几;
|
||
//! g为服务器时间日期;hij分别为服务器时间时分秒
|
||
//! 串口收到一帧服务器的回复标志,站牌每15秒向服务器发送一次请求,请求发送后需要十二三秒才能收到回复(2G网络)
|
||
//! 返回数据为字符串,长度小于75字节但是不固定
|
||
if(USART3_RX_STA)
|
||
{
|
||
u8 m=0;
|
||
u8 bus_flag=48,system_flag=48,arrivaltime=0,distance_h=0,distance_l=0,day=0,date=0,hours=0,minutes=0,seconds=0;
|
||
LED2_OFF;
|
||
USART3_RX_STA=0;
|
||
for(m=0;m<75;m++)
|
||
{
|
||
//! 系统状态
|
||
if(USART3_RX_BUF[m]=='a')
|
||
{
|
||
bus_flag=USART3_RX_BUF[m+3];
|
||
if(bus_flag-48==1)
|
||
{
|
||
GUI_Chinese_Text(188,78,"运行中",6,0x0000,0xffff);
|
||
}
|
||
else
|
||
GUI_Chinese_Text(188,78,"待发车",6,0x0000,0xffff);
|
||
}
|
||
//! 公交车状态
|
||
if(USART3_RX_BUF[m]=='b')
|
||
{
|
||
system_flag=USART3_RX_BUF[m+3];
|
||
if(system_flag-48==1)
|
||
{
|
||
LCD_Fill(114,30,122,46,WHITE);
|
||
LCD_ShowString(90,30,24,16,16,"OK!");
|
||
}
|
||
else
|
||
LCD_ShowString(90,30,32,16,16,"OFF!");
|
||
}
|
||
//! 公交车到达站台时间,单位:分钟
|
||
if(USART3_RX_BUF[m]=='c')
|
||
{
|
||
//! 区分到达时间分钟数为一位还是两位,需做不同处理
|
||
//! 分钟数为一位
|
||
if(USART3_RX_BUF[m+4]==',')
|
||
{
|
||
arrivaltime=USART3_RX_BUF[m+3]-48;
|
||
LCD_Fill(133,78,141,94,WHITE);
|
||
LCD_ShowxNum(141,78,arrivaltime,1,16,0);
|
||
//! 分钟数为两位
|
||
}
|
||
else
|
||
{
|
||
arrivaltime=(USART3_RX_BUF[m+3]-48)*10+USART3_RX_BUF[m+4]-48;
|
||
LCD_ShowxNum(133,78,arrivaltime,2,16,0);
|
||
}
|
||
}
|
||
//! 公交车到站台的距离整数,单位:米
|
||
if(USART3_RX_BUF[m]=='d')
|
||
{
|
||
if(USART3_RX_BUF[m+4]==',')
|
||
{
|
||
distance_h=USART3_RX_BUF[m+3]-48;
|
||
LCD_Fill(61,78,69,94,WHITE);
|
||
//! LCD显示区域,按像素点计算,下同
|
||
//! 69=57+4+8
|
||
LCD_ShowxNum(69,78,distance_h,1,16,0);
|
||
}else{
|
||
distance_h=(USART3_RX_BUF[m+3]-48)*10+USART3_RX_BUF[m+4]-48;
|
||
//! 61=57+4
|
||
LCD_ShowxNum(61,78,distance_h,2,16,0);
|
||
}
|
||
}
|
||
//! 公交车到站台的距离小数,单位:米
|
||
if(USART3_RX_BUF[m]=='e')
|
||
{
|
||
if(USART3_RX_BUF[m+4]==',')
|
||
{
|
||
distance_l=USART3_RX_BUF[m+3]-48;
|
||
LCD_Fill(85,78,93,94,WHITE);
|
||
//! 77=61+16
|
||
LCD_ShowxNum(77,78,distance_l,1,16,0);
|
||
}
|
||
else
|
||
{
|
||
distance_l=(USART3_RX_BUF[m+3]-48)*10+USART3_RX_BUF[m+4]-48;
|
||
//! 77=61+16
|
||
LCD_ShowxNum(77,78,distance_l,2,16,0);
|
||
}
|
||
}
|
||
//! 当前服务器时间星期几
|
||
if(USART3_RX_BUF[m]=='f')
|
||
{
|
||
day=USART3_RX_BUF[m+3]-48;
|
||
switch(day)
|
||
{
|
||
case 1:
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期一",6,0x0000,0xffff);
|
||
break;
|
||
case 2:
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期二",6,0x0000,0xffff);
|
||
break;
|
||
case 3:
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期三",6,0x0000,0xffff);
|
||
break;
|
||
case 4:
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期四",6,0x0000,0xffff);
|
||
break;
|
||
case 5:
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期五",6,0x0000,0xffff);
|
||
break;
|
||
case 6:
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期六",6,0x0000,0xffff);
|
||
break;
|
||
case 7:
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期日",6,0x0000,0xffff);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
//! 当前服务器时间日期
|
||
if(USART3_RX_BUF[m]=='g')
|
||
{
|
||
if(USART3_RX_BUF[m+4]==',')
|
||
{
|
||
date=USART3_RX_BUF[m+3]-48;
|
||
LCD_Fill(82,10,90,26,WHITE);
|
||
//! 90=82+8
|
||
LCD_ShowxNum(90,10,date,1,16,0);
|
||
}
|
||
else
|
||
{
|
||
date=(USART3_RX_BUF[m+3]-48)*10+USART3_RX_BUF[m+4]-48;
|
||
//! 66+16=82
|
||
LCD_ShowxNum(82,10,date,2,16,0);
|
||
}
|
||
}
|
||
//! 服务器当前时间:时
|
||
if(USART3_RX_BUF[m]=='h')
|
||
{
|
||
if(USART3_RX_BUF[m+4]==',')
|
||
{
|
||
hours=USART3_RX_BUF[m+3]-48;
|
||
time_hours=hours;
|
||
//! 98+16=114
|
||
LCD_ShowxNum(114,10,0,1,16,0);
|
||
//! 98+16+8=122
|
||
LCD_ShowxNum(122,10,hours,1,16,0);
|
||
}
|
||
else
|
||
{
|
||
hours=(USART3_RX_BUF[m+3]-48)*10+USART3_RX_BUF[m+4]-48;
|
||
time_hours=hours;
|
||
//! 98+16=114
|
||
LCD_ShowxNum(114,10,hours,2,16,0);
|
||
}
|
||
|
||
}
|
||
//! 服务器时间:分
|
||
if(USART3_RX_BUF[m]=='i')
|
||
{
|
||
if(USART3_RX_BUF[m+4]==',')
|
||
{
|
||
minutes=USART3_RX_BUF[m+3]-48;
|
||
time_minutes=minutes;
|
||
//! 130+8=138
|
||
LCD_ShowxNum(138,10,0,1,16,0);
|
||
//! 130+8+8=146
|
||
LCD_ShowxNum(146,10,minutes,1,16,0);
|
||
}
|
||
else
|
||
{
|
||
minutes=(USART3_RX_BUF[m+3]-48)*10+USART3_RX_BUF[m+4]-48;
|
||
time_minutes=minutes;
|
||
//! 130+8=138
|
||
LCD_ShowxNum(138,10,minutes,2,16,0);
|
||
}
|
||
}
|
||
//! 服务器时间:秒
|
||
if(USART3_RX_BUF[m]=='j')
|
||
{
|
||
//! 通过判断数据结束大括弧位置确定
|
||
if(USART3_RX_BUF[m+4]=='}')
|
||
{
|
||
seconds=USART3_RX_BUF[m+3]-48;
|
||
time_seconds=seconds;
|
||
//! 154+8=162
|
||
LCD_ShowxNum(162,10,0,1,16,0);
|
||
//! 154+8+8=170
|
||
LCD_ShowxNum(170,10,seconds,1,16,0);
|
||
}
|
||
else
|
||
{
|
||
seconds=(USART3_RX_BUF[m+3]-48)*10+USART3_RX_BUF[m+4]-48;
|
||
time_seconds=seconds;
|
||
//! 154+8=162
|
||
LCD_ShowxNum(162,10,seconds,2,16,0);
|
||
}
|
||
}
|
||
}
|
||
//! 清空数据buffer
|
||
for(j=0;j<=75;j++)
|
||
{
|
||
USART3_RX_BUF[j]=0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//********************************************************************//
|
||
//! 函数名:lcd_display
|
||
//! 功能:LCD固定内容显示,初始化完成调用一次
|
||
//! 输入:none
|
||
//! 输出:none
|
||
//********************************************************************//
|
||
void lcd_display(void)
|
||
{
|
||
//! 清屏
|
||
LCD_Clear(WHITE);
|
||
//! 显示默认时间,数据依次含义:开始显示点横纵坐标;要显示的数;数的位数;区域大小;叠加方式
|
||
LCD_ShowxNum(10,10,2018,4,16,1);
|
||
//! 4*8+10=42
|
||
GUI_Chinese_Text(42,10,"年",2,0x0000,0xffff);
|
||
//! 42+16=58
|
||
LCD_ShowxNum(58,10,6,1,16,1);
|
||
//! 58+8=66
|
||
GUI_Chinese_Text(66,10,"月",2,0x0000,0xffff);
|
||
//! 66+16=82
|
||
LCD_ShowxNum(82,10,7,2,16,1);
|
||
//! 82+8*2=98
|
||
GUI_Chinese_Text(98,10,"日",2,0x0000,0xffff);
|
||
//! 98+16=114
|
||
LCD_ShowxNum(114,10,13,2,16,1);
|
||
//! 114+2*8=130
|
||
LCD_ShowString(130,9,8,16,16,":");
|
||
//! 130+8=138
|
||
LCD_ShowxNum(138,10,47,2,16,1);
|
||
//! 138+2*8=154
|
||
LCD_ShowString(154,9,8,16,16,":");
|
||
//! 154+8=162
|
||
LCD_ShowxNum(162,10,50,2,16,1);
|
||
//! 162+2*8+3=181
|
||
GUI_Chinese_Text(181,10,"星期四",6,0x0000,0xffff);
|
||
//! 行间距4像素,第二行30=16+10+4
|
||
GUI_Chinese_Text(10,30,"系统状态",10,0x0000,0xffff);
|
||
//! 10+5*16=90
|
||
LCD_ShowString(90,30,32,16,16,"OFF!");
|
||
|
||
//! 画表格
|
||
//! (0,50)-->(239,50) 50=30+16+4
|
||
LCD_DrawLine(0,50,239,50);
|
||
//! (0,74)-->(239,74)
|
||
LCD_DrawLine(0,74,239,74);
|
||
//! (0,98)-->(239,98)
|
||
LCD_DrawLine(0,98,239,98);
|
||
//! (0,122)-->(239,122)
|
||
LCD_DrawLine(0,122,239,122);
|
||
//! (57,50)-->(57,122)
|
||
LCD_DrawLine(57,50,57,122);
|
||
//! (114,50)-->(114,122)
|
||
LCD_DrawLine(114,50,114,122);
|
||
//! (184,50)-->(184,122)
|
||
LCD_DrawLine(184,50,184,122);
|
||
|
||
//! 填充表格内容
|
||
GUI_Chinese_Text(12,54,"线路",4,0x0000,0xffff);
|
||
GUI_Chinese_Text(70,54,"距离",4,0x0000,0xffff);
|
||
GUI_Chinese_Text(133,54,"时间",4,0x0000,0xffff);
|
||
GUI_Chinese_Text(196,54,"状态",4,0x0000,0xffff);
|
||
LCD_ShowString(12,78,16,16,16,"XX");
|
||
GUI_Chinese_Text(28,78,"路",2,0x0000,0xffff);
|
||
|
||
//! 93=89+4
|
||
GUI_Chinese_Text(93,78,"米",2,0x0000,0xffff);
|
||
GUI_Chinese_Text(117,78,"约",2,0x0000,0xffff);
|
||
|
||
GUI_Chinese_Text(149,78,"分钟",4,0x0000,0xffff);
|
||
GUI_Chinese_Text(188,78,"待发车",6,0x0000,0xffff);
|
||
|
||
//! 0~3共四像素
|
||
GUI_Chinese_Text(3,126,"气温",6,0x0000,0xffff);
|
||
//! 67=3+16*3+8*2
|
||
GUI_Chinese_Text(67,126,"度",2,0x0000,0xffff);
|
||
//! 87=67+16+4
|
||
GUI_Chinese_Text(87,126,"颗粒物",8,0x0000,0xffff);
|
||
//! 199=87+4*16+6*8
|
||
LCD_ShowString(199,126,40,16,16,"ug/m3");
|
||
//! 146=126+16+4
|
||
GUI_Chinese_Text(3,146,"湿度",6,0x0000,0xffff);
|
||
//! 67=51+16
|
||
LCD_ShowString(67,146,24,16,16,"%rh");
|
||
//! 103=87+3*16-2*16
|
||
GUI_Chinese_Text(103,146,"噪音",6,0x0000,0xffff);
|
||
LCD_ShowString(191,146,16,16,16,"dB");
|
||
|
||
}
|
||
//********************************************************************//
|
||
//! 函数名:data_pros
|
||
//! 功能:温湿度数据处理
|
||
//! 输入:none
|
||
//! 输出:none
|
||
//********************************************************************//
|
||
void data_pros(void)
|
||
{
|
||
u8 temp;
|
||
u8 humi;
|
||
u8 temp_buf[3],humi_buf[3];
|
||
//! 关闭定时器,避免打断数据处理过程
|
||
TIM_ITConfig(TIM3, TIM_IT_Update, DISABLE);
|
||
//! 温湿度数据读取核心函数,模拟dht11的通信时序,要求us级精确延时
|
||
DHT11_Read_Data(&temp,&humi);
|
||
//! 打开定时器
|
||
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
|
||
temp_buf[0]=temp/10+0x30;
|
||
temp_buf[1]=temp%10+0x30;
|
||
temp_buf[2]='\0';
|
||
delay_ms(5);
|
||
//! 51=3+16*3
|
||
LCD_ShowString(51,126,16,16,16,temp_buf);
|
||
humi_buf[0]=humi/10+0x30;
|
||
humi_buf[1]=humi%10+0x30;
|
||
humi_buf[2]='\0';
|
||
delay_ms(5);
|
||
//! 51=3+6*8
|
||
LCD_ShowString(51,146,16,16,16,humi_buf);
|
||
temperature = temp;
|
||
humidity = humi;
|
||
}
|
||
//********************************************************************//
|
||
//! 函数名:data_pm25
|
||
//! 功能:pm2.5数据处理
|
||
//! 输入:none
|
||
//! 输出:none
|
||
//********************************************************************//
|
||
void data_pm25(void)
|
||
{
|
||
u8 z=0,x=0;
|
||
u32 density=0;
|
||
//! 整数部分
|
||
z=USART2_RX_BUF[3];
|
||
//! 小数部分
|
||
x=USART2_RX_BUF[4];
|
||
density=z*20*100 + x*20;
|
||
pm25_zheng=z;
|
||
pm25_xiao=x;
|
||
|
||
pm25_lcd[0]=(u8)(density/1000)+0x30;
|
||
pm25_lcd[1]=(u8)(density%1000/100)+0x30;
|
||
pm25_lcd[2]='.';
|
||
pm25_lcd[3]=(u8)(density%100/10)+0x30;
|
||
pm25_lcd[4]=(u8)(density%10)+0x30;
|
||
pm25_lcd[5]='\0';
|
||
delay_ms(5);
|
||
LCD_ShowString(151,126,40,16,16,pm25_lcd);
|
||
}
|
||
//********************************************************************//
|
||
//! 函数名:data_hh06
|
||
//! 功能:噪音数据处理
|
||
//! 输入:none
|
||
//! 输出:none
|
||
//********************************************************************//
|
||
void data_hh06(void)
|
||
{
|
||
u8 h,l;
|
||
u16 date=0;
|
||
h=USART1_RX_BUF[4];
|
||
l=USART1_RX_BUF[3];
|
||
date=((u16)(h)<<8)|(u16)(l);
|
||
hh06_zheng=(u8)(date/1000)*100+(u8)((date%1000)/100)*10+(u8)((date%100)/10);
|
||
hh06_xiao=(u8)(date%10);
|
||
hh06_lcd[0]=(u8)(date/1000)+0x30;
|
||
hh06_lcd[1]=(u8)((date%1000)/100)+0x30;
|
||
hh06_lcd[2]=(u8)((date%100)/10)+0x30;
|
||
hh06_lcd[3]='.';
|
||
hh06_lcd[4]=(u8)(date%10)+0x30;
|
||
hh06_lcd[5]='\0';
|
||
delay_ms(3);
|
||
LCD_ShowString(151,146,40,16,16,hh06_lcd);
|
||
delay_ms(3);
|
||
}
|
||
//********************************************************************//
|
||
//! 函数名:disadle_uart
|
||
//! 功能:关闭串口1,2
|
||
//! 输入:none
|
||
//! 输出:none
|
||
//********************************************************************//
|
||
void disadle_uart(void)
|
||
{
|
||
USART_Cmd(USART1,DISABLE);
|
||
USART_Cmd(USART2,DISABLE);
|
||
}
|
||
//********************************************************************//
|
||
//! 函数名:enadle_uart
|
||
//! 功能:开启串口1,2
|
||
//! 输入:none
|
||
//! 输出:none
|
||
//********************************************************************//
|
||
void enadle_uart(void)
|
||
{
|
||
USART_Cmd(USART1,ENABLE);
|
||
USART_Cmd(USART2,ENABLE);
|
||
}
|
||
|
||
|