智能寝室开发代码

/**************************************************************

* 文件名称: main.c

*

*作 者: 苏锋

*

*日 期: 2018-8-8

*

*说 明: BH1750光强传感器实验主程序

*

*修改记录:

****************************************************************/

//单片机头文件

#include "stm32f10x.h"

//硬件驱动

#include "delay.h"

#include "usart.h"

#include "i2c.h"

#include "BH1750.h"

#include "GUI.h"

#include "Lcd_Driver.h"

#include "Lcd_Api.h"

#include "fan.h"

#include "ch422.h"

#include "beep.h"

#include "sht20.h"

//结构体声明

IIC_INFO iicInfo;

BH1750_INFO BH1750_Info;

FAN_INFO Fan_Info;

SHT20_INFO SHT20_Info;

//自定义变量

char Light_STA=0;

char Window_STA=0;

//定于语音变量

#define voiceMood 0x03

//定义16个数码管的映像缓存区

unsigned char CH422_buf[16];

//机械按键变量

unsigned char i;

static u8 sta;

/*

************************************************************

*函数名称:Hardware_Init

*

*函数功能:硬件初始化

*

*入口参数:无

*

*返回参数:无

*

*说明:初始化单片机功能以及外接设备

************************************************************

*/

void Hardware_Init(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断控制器分组设置

Delay_Init();//Systick初始化,用于普通的延时

Usart1_Init(115200); //串口初始化为115200

Lcd_Init();//LCD初始化

Lcd_Clear(WHITE);//LCD清屏

Fan_Init();//风扇初始化

IIC_Init();//软件IIC总线初始化

CH422_Init();//机械按键初始化

BH_init();//光照初始化

Beep_Init();//语音模块初始化

}

/*

************************************************************

*函数名称:SHT20Data

*

*函数功能:温湿度数据

*

*入口参数:无

*

*返回参数:无

*

*说明:初始化单片机功能以及外接设备

************************************************************

*/

void SHT20Data(void){

SHT20_GetValue();

if(SHT20_Info.humidity>80||SHT20_Info.temperature>30){

Fan_Set(ON);

}else{

Fan_Set(OFF);

}

}

/*

************************************************************

*函数名称:BHData

*

*函数功能:光照度数据

*

*入口参数:无

*

*返回参数:无

*

*说明:初始化单片机功能以及外接设备

************************************************************

*/

void BHData(void){

Get_BH_Value();

if(BH1750_Info.bh_data<100){

Light_STA =1;

}else{

Light_STA =0;

}

}

/*

************************************************************

*函数名称:BeepVoice

*

*函数功能:语音模块

*

*入口参数:无

*

*返回参数:无

*

*说明:初始化单片机功能以及外接设备

************************************************************

*/

void BeepVoice(void){

Beep_Start();

Beep_Transfer(voiceMood);

}

/*

************************************************************

*函数名称:CH422

*

*函数功能:触摸按键初始化

*

*入口参数:无

*

*返回参数:无

*

*说明:初始化单片机功能以及外接设备

************************************************************

*/

void CH422(void){

//扫描检查高八位引脚每一位的状态,然后根据按键输入状态来控制LED灯的亮灭

for(i = 0;i<4;i++)

{

if(!((CH422_ReadByte()>>i)& 1))

{

DelayXms(10);

if(!((CH422_ReadByte()>>i)& 1))

{

switch (i){

case 0 :

Window_STA=!Window_STA;

BeepVoice();

break;

case 1 :

Window_STA=0;

BeepVoice();

break;

case 2 :

Light_STA=!Light_STA;

BeepVoice();

break;

case 3 :

Light_STA=0;

BeepVoice();

break;

}

sta = ! sta;

CH422_WriteByte(CH422_OC_H_CMD | (0xFF - (sta<<i)));

}

}

DelayXms(1);

}

}

/*

************************************************************

*函数名称:main

*

*函数功能:主函数

*

*入口参数:无

*

*返回参数:0

*

*说 明:

************************************************************

*/

int main(void)

{

Hardware_Init(); //延时函数初始化

//检查机械按键LED灯是否正常亮灭

for(i = 0;i<= 4;i++)

{

CH422_WriteByte(CH422_OC_H_CMD | (0xFF - (1<<i)));

DelayXms(50);

}

LCD_Test();

Lcd_Clear_Area(WHITE,0,40,128,88);

Gui_DrawFont_GBK16(10,30,RED,WHITE, (u8 *) "温度: ");

Gui_DrawFont_GBK16(10,48,RED,WHITE, (u8 *) "湿度: ");

Gui_DrawFont_GBK16(10,64,RED,WHITE, (u8 *) "光照: ");

Gui_DrawFont_GBK16(10,80,RED,WHITE, (u8 *) "风扇: ");

Gui_DrawFont_GBK16(10,96,RED,WHITE, (u8 *) "窗户: ");

Gui_DrawFont_GBK16(10,112,RED,WHITE,(u8 *) "灯 : ");

while(1)

{

BHData();

CH422();

SHT20Data();

SPILCD_DisString(50, 30, 16, BLUE, 1, "%.2f C ",SHT20_Info.temperature);

SPILCD_DisString(50, 48, 16, BLUE, 1, "%.2f %%RH",SHT20_Info.humidity);

SPILCD_DisString(50, 64, 16, BLUE, 1, "%.2f lux",BH1750_Info.bh_data);

SPILCD_DisString(50, 80, 16, BLUE, 1, "%d ",Fan_Info.Fan_status);

SPILCD_DisString(50, 96, 16, BLUE, 1, "%d ",Window_STA);

SPILCD_DisString(50, 112, 16, BLUE, 1, "%d ",Light_STA);

DelayXms(100);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值