标题:
STM32f103zet6智能楼宇系统源程序
[打印本页]
作者:
2107972907
时间:
2019-4-9 09:50
标题:
STM32f103zet6智能楼宇系统源程序
基于STM32f103zet6的智能楼宇程序
#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "bsp_lcd.h"
#include "dht11.h"
#include "GY30.h"
#include "qc.h"
void display(void);
extern const unsigned char gImage_tu1[153608];
extern const unsigned char gImage_two[153608];
u8 yema=0;
u8 s=0;
u8 key_num;
int num=30;
char str[50];
int ws = 40,wx = 6,ss = 70,sx = 30,gs = 1000,gx = 9;
u8 wd,sd;
u32 gz;
void bj(void)
{
if(wd>ws || wd<wx)
{
BEEP_ON;
}
else
{
BEEP_OFF;
}
if(sd>ss || sd<sx)
{
LED4_ON;
}
else
{
LED4_OFF;
}
if(gz>gs)
{
LED2_ON;
}
else
{
LED2_OFF;
}
if(gz<gx)
{
LED1_ON;
}
else
{
LED1_OFF;
}
}
void jiemian1(void)
{
yema = 1;//记录当前页码
display();
//
// BACK_COLOR = GRAY; //背景灰色
// POINT_COLOR = BLACK; //字体黑色
// LCD_ShowButton(70,20,168,65,"LED_ON");//16号字体
// LCD_ShowButton(70,100,168,145,"LED_OFF");//16号字体
//
// LCD_ShowButton(70,180,168,225,"光照:");//16号字体
//
// LCD_ShowButton(70,260,168,305,"PM2.5:");//16号字体
// LCD_ShowButton(162,284,239,319,"下一页");//16号字体
}
void jiemian2(void)
{
yema = 2;//记录当前页码
Paint_Bmp(0,0,240,320,gImage_two); //画图
BACK_COLOR = GRAY; //背景灰色
POINT_COLOR = BLACK; //字体黑色
sprintf(str,"%3d ",ws);//将湿度值转换成字符串
LCD_ShowString(120,10,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,15,500,500,16,"℃",0);//将字符串的内容显示出来
sprintf(str,"%3d ",wx);//将湿度值转换成字符串
LCD_ShowString(120,40,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,45,500,500,16,"℃",0);//将字符串的内容显示出来
sprintf(str,"%3d ",ss);//将湿度值转换成字符串
LCD_ShowString(120,110,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,110,500,500,24,"%",0);//将字符串的内容显示出来
sprintf(str,"%3d ",sx);//将湿度值转换成字符串
LCD_ShowString(120,140,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,140,500,500,24,"%",0);//将字符串的内容显示出来
sprintf(str,"%3d ",gs);//将湿度值转换成字符串
LCD_ShowString(140,180,500,500,24,str,0);//将字符串的内容显示出来
// LCD_ShowString(170,180,500,500,24,"lx",0);//将字符串的内容显示出来
sprintf(str,"%3d ",gx);//将湿度值转换成字符串
LCD_ShowString(140,200,500,500,24,str,0);//将字符串的内容显示出来
// LCD_ShowString(170,200,500,500,24,"lx",0);//将字符串的内容显示出来
LCD_ShowButton(70,6,120,36,"温度上阈");//16号字体
LCD_ShowButton(70,36,120,66,"温度下阈");//16号字体
LCD_ShowButton(70,106,120,136,"湿度上阈");//16号字体
LCD_ShowButton(70,136,120,166,"湿度下阈");//16号字体
LCD_ShowButton(70,176,120,206,"光照上阈");//16号字体
LCD_ShowButton(70,206,120,236,"光照下阈");//16号字体
LCD_ShowButton(70,266,120,296,"空气质量");//16号字体
}
u8 status=0;
void gongneng(void)
{
if(tp_dev.x[0]>162 && tp_dev.y[0]>284 && tp_dev.x[0]<239 && tp_dev.y[0]<319)
{
jiemian1();//切换界面
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>6 && tp_dev.x[0]<120 && tp_dev.y[0]<36)
{
status=1;
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>36 && tp_dev.x[0]<120 && tp_dev.y[0]<66)
{
status=2;
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>106 && tp_dev.x[0]<120 && tp_dev.y[0]<136)
{
status=3;
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>136 && tp_dev.x[0]<120 && tp_dev.y[0]<166)
{
status=4;
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>176 && tp_dev.x[0]<120 && tp_dev.y[0]<206)
{
status=5;
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>206 && tp_dev.x[0]<120 && tp_dev.y[0]<236)
{
status=6;
}
}
void LED_Ctrl(void)
{
if(tp_dev.x[0]>10 && tp_dev.y[0]>10 && tp_dev.x[0]<55 && tp_dev.y[0]<65)
{
LED1_ON;//开灯
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>100 && tp_dev.x[0]<168 && tp_dev.y[0]<145)
{
LED1_OFF;//关灯
}
else if(tp_dev.x[0]>162 && tp_dev.y[0]>284 && tp_dev.x[0]<239 && tp_dev.y[0]<319)
{
jiemian2();//切换界面
}
}
void BEEP_Ctrl(void)
{
if(tp_dev.x[0]>70 && tp_dev.y[0]>20 && tp_dev.x[0]<168 && tp_dev.y[0]<65)
{
BEEP_ON;//开蜂鸣器
}
else if(tp_dev.x[0]>70 && tp_dev.y[0]>100 && tp_dev.x[0]<168 && tp_dev.y[0]<145)
{
BEEP_OFF;//关蜂鸣器
}
else if(tp_dev.x[0]>162 && tp_dev.y[0]>284 && tp_dev.x[0]<239 && tp_dev.y[0]<319)
{
jiemian1();//切换界面
}
}
void display(void)
{
Paint_Bmp(0,0,240,320,gImage_tu1); //画图
DHT11_Read_Data(); //读取温湿度数据
wd = Temperature;
sd = Humidity;
sprintf(str,"%3d℃",wd);//将温度值转换成字符串
POINT_COLOR = BLACK;
BACK_COLOR = WHITE;
LCD_ShowString(145,48,500,500,16,str,0);//将字符串的内容显示出来
sprintf(str,"%3d %%",sd);//将湿度值转换成字符串
LCD_ShowString(145,115,500,500,16,str,0);//将字符串的内容显示出来
BH1750_ReadDate(); //读取光照强度
gz = (u32)BH1750_Value;
sprintf(str,"%5d lx",gz);//将湿度值转换成字符串
LCD_ShowString(145,180,500,500,16,str,0);//将字符串的内容显示出来
if(KQ == 1)
{
LCD_ShowString(145,240,500,500,16,"fine",0);
}
else
{
LCD_ShowString(145,240,500,500,16,"DANGER",0);
}
}
//主函数
int main(void)
{
delay_init(); //延时初始化,必须初始化
LED_Init(); //LED初始化
KEY_Init(); //按键初始化
BEEP_Init();
TFTLCD_Init(); //屏幕初始化
TP_Init(); //触摸初始化
// TP_Adjust(); //触摸校准
DHT11_Init();
Init_BH1750();
tp_dev.xfac = 0.075815;
tp_dev.xoff = -32;
tp_dev.yfac = 0.086930;
tp_dev.yoff = -17;
jiemian1();
while(1)
{
if(yema == 1) //判断是否在第一页
{
jiemian1();
}
TP_Scan(0);//触摸扫描
bj();
key_num = key_scan();
if(status == 1)
{
if(key_num == 1)
{
ws++;
sprintf(str,"%3d ",ws);//将湿度值转换成字符串
LCD_ShowString(120,10,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,15,500,500,16,"℃",0);//将字符串的内容显示出来
}
if(key_num == 2)
{
ws--;
sprintf(str,"%3d ",ws);//将湿度值转换成字符串
LCD_ShowString(120,10,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,15,500,500,16,"℃",0);//将字符串的内容显示出来
}
}
if(status == 2)
{
if(key_num == 1)
{
wx++;
sprintf(str,"%3d ",wx);//将湿度值转换成字符串
LCD_ShowString(120,40,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,45,500,500,16,"℃",0);//将字符串的内容显示出来
}
if(key_num == 2)
{
wx--;
sprintf(str,"%3d ",wx);//将湿度值转换成字符串
LCD_ShowString(120,40,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,45,500,500,16,"℃",0);//将字符串的内容显示出来
}
}
if(status == 3)
{
if(key_num == 1)
{
ss++;
sprintf(str,"%3d ",ss);//将湿度值转换成字符串
LCD_ShowString(120,110,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,110,500,500,24,"%",0);//将字符串的内容显示出来
}
if(key_num == 2)
{
ss--;
sprintf(str,"%3d ",ss);//将湿度值转换成字符串
LCD_ShowString(120,110,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,110,500,500,24,"%",0);//将字符串的内容显示出来
}
}
if(status == 4)
{
if(key_num == 1)
{
sx++;
sprintf(str,"%3d ",sx);//将湿度值转换成字符串
LCD_ShowString(120,140,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,140,500,500,24,"%",0);//将字符串的内容显示出来
}
if(key_num == 2)
{
sx--;
sprintf(str,"%3d ",sx);//将湿度值转换成字符串
LCD_ShowString(120,140,500,500,24,str,0);//将字符串的内容显示出来
LCD_ShowString(155,140,500,500,24,"%",0);//将字符串的内容显示出来
}
}
if(status == 5)
{
if(key_num == 1)
{
gs++;
sprintf(str,"%3d ",gs);//将湿度值转换成字符串
LCD_ShowString(140,180,500,500,24,str,0);//将字符串的内容显示出来
}
if(key_num == 2)
{
gs--;
sprintf(str,"%3d ",gs);//将湿度值转换成字符串
LCD_ShowString(140,180,500,500,24,str,0);//将字符串的内容显示出来
}
}
if(status == 6)
{
if(key_num == 1)
{
gx++;
sprintf(str,"%3d ",gx);//将湿度值转换成字符串
LCD_ShowString(140,200,500,500,24,str,0);//将字符串的内容显示出来
}
if(key_num == 2)
{
gx--;
sprintf(str,"%3d ",gx);//将湿度值转换成字符串
LCD_ShowString(140,200,500,500,24,str,0);//将字符串的内容显示出来
}
}
if(tp_dev.sta & 0x40) //判断触摸是否按下
{
if(yema == 1) //判断是否在第一页
{
jiemian1();
LED_Ctrl();
}
else if(yema == 2) //判断是否在第二页
{
gongneng();
}
tp_dev.sta &= 0xbf;//清零第6位
}
}
}
复制代码
全部资料51hei下载地址:
最终程序.7z
(285.15 KB, 下载次数: 17)
2019-4-9 16:10 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1