欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
自己寫的一個基于STM32F104的智能安防源程序
[打印本頁]
作者:
NOTHIN9
時間:
2019-10-29 16:50
標題:
自己寫的一個基于STM32F104的智能安防源程序
用到:超聲波,OLED,藍牙,火焰報警傳感器,溫濕度傳感器;
不足:沒有用到操作系統,當時想學ucos3的,然后再寫的,但是發下看了一下之后,有點蒙,就直接寫裸機
單片機源程序如下:
#include "led.h"
#include "timer.h"
#include "HS0038.h"
#include "usart.h"
#include "instruct.h"
#include "key.h"
#include "exit.h"
#include "beep.h"
#include "pwm.h"
#include "DHT11.h"
#include "oled.h"
#include "SR04.h"
#include "adc.h"
#include "flash.h"
#include "rc522.h"
#include "rtc.h"
//===================================//
/************全局變量聲明區************/
//===================================//
//0x01:時間顯示標志 0x02:清除時間標志 0x04:溫濕度顯示標志 0x08:清除溫濕度顯示 0x10:顯示超聲波距離和火焰檢測標志
//0x20:清除超聲波距離和火焰檢測顯示標志
volatile uint32_t g_Flags = 0;
__IO uint32_t g_HS0038data = 0; //接收紅外遙控的數據
volatile uint8_t g_HS0038key = 0; //紅外鍵值
__IO uint8_t SYSClockMode = 0; //用做選擇系統時鐘源,默認系統時鐘由PLL提供
uint32_t TimeOut = 0; //用作優化
u8 *AM_PM[2] = {".AM", ".PM" }; //上下午顯示
uint8_t g_FlashRecordBuff[128] = {0}; //用作讀取記錄緩存
uint8_t g_FlashRecordCnt = 0; //記錄讀取FLASH位置
uint32_t g_WarningDistance = 100; //超聲波報警距離,默認100mm
volatile uint8_t g_LedBright = 50; //控制LED亮度
extern uint8_t g_USART_DataBuf[DATA_BUF_MAX]; //接收串口數據緩沖區
extern uint8_t g_USART_RxCnt; //記錄串口接收數據的字節數
extern uint8_t g_USART_RxDoneFlag; //串口數據接收完成標志位
extern volatile uint8_t g_RCTWakeUpFlag; //RTC喚醒標志位
//MFRC522數據區
extern u8 mfrc552pidbuf[18];
extern u8 card_pydebuf[2];
extern u8 card_numberbuf[5];
//***************結束****************//
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優先級分組2
InitLED(); //初始化LED
InitKey(); //初始化按鍵
InitBeep(); //初始化蜂鳴器
InitHS0038(); //初始化紅外遙控
InitSr04(); //初始化超聲波
InitKeyExit(); //使能按鍵外部中斷
InitUsart1(115200); //初始化串口1 波特率115200bps
InitUsart3(9600); //初始化串口3:波特率9600bps
// InitTIM2(10); //初始化定時器2 定時時間100ms
// InitTIM3(100); //初始化定時器3 定時時間10ms
// InitTIM8(100); //初始化定時器8 定時時間10ms
InitDHT11(); //初始化溫濕度
OLED_Init(); //初始化OLED
OLED_Clear(); //清除屏幕
InitRTC_f(); //初始化RTC和讀取RTC備份寄存器
InitADC(); //初始化ADC
InitFires(); //初始化火焰傳感器,并啟動ADC
BootGrap(); //啟動頁面
// MFRC522_Initializtion();
if(g_WarningDistance == 100) //讀取超聲波報警距離
ReadWarnDist();
while(1)
{
delay_us(50);
TimeOut++;
if(g_USART_RxDoneFlag) //接收藍牙命令執行相應功能
{
ChangeTime_Date(g_USART_DataBuf);
Ctrl_LED(g_USART_DataBuf);
ShiftOrder(g_USART_DataBuf);
if((g_Flags & 0x100) == 0x100)
g_Flags |= 0x400; //開啟修改標志為
ChangeWarnDist(); //修改超聲波報警距離
ClearUsartBuf_Flag(); //清除串口相關標志和緩沖區
}
WarningBeep(); //蜂鳴器報警
if(TimeOut/10000 != 0 && TimeOut%10000 == 0 ) //顯示FLASH內容
CardRecord();
if(PAin(8) == 0)
{
g_HS0038data = GET_HS0038Data();
g_HS0038key = GetKey(g_HS0038data);
// if(TimeOut/20000!=0 && TimeOut%20000==0)
printf("%d\r\n",g_HS0038key);
if(g_HS0038key == 17)
{
LED3 ^= 1;
}
}
if(TimeOut/5000 != 0 && TimeOut%5000 == 0 )
ShowTime_Date(g_RCTWakeUpFlag); //顯示時間日期
g_RCTWakeUpFlag = 0; //清除RTC喚醒標志
ShowSR04_Fire(); //顯示超聲波距離和火焰檢測
ShowTH(); //顯示溫濕度
ReadCard(); //讀卡
#ifdef DEBUG //調試用
if(TimeOut/20000!=0 && TimeOut%20000==0)
{
TimeOut = 0;
printf("%d\r\n",g_WarningDistance);
}
#endif
}
}
//-------------------------------------------------------------------------------------
// PWM2Led(100);
// PWM2Beep(100);
// AdjustLed3Brightness(0);
// AdjustLed4Brightness(0);
// AdjustBeepVOL(0);
//------------------------------------------------------------------------------------
/****************** 蜂鳴器實驗:復位響*****************/
//------------------------------------------------------------------------------------
// BeepOn();
// delay_ms(200);
// BeepOff();
//------------------------------------------------------------------------------------
// revID = Read_w25qxxID();
//
// printf("revID = %04X\r\n",revID);
//------------------------------------------------------------------------------------
/****************** 串口3藍牙實驗:發送命令點亮LED*****************/
//------------------------------------------------------------------------------------
// if(TimeOut/10000!=0 && TimeOut%10000 ==0)
// {
// if(g_USART_RxDoneFlag)
// {
//// SendUartData(USART1,g_USART_DataBuf);
// Ctrl_LED(g_USART_DataBuf);
//
// ClearUsartBuf_Flag();
// }
// printf("SECOND: %d\r\n",sec++);
// if(sec==7)
// sec = 1;
// }
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
/****************** RTC實驗 *****************/
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
/****************** 溫濕度傳感器實驗,獲取溫濕度值*****************/
//------------------------------------------------------------------------------------
// delay_us(100);
// TimeOut++;
// if(TimeOut/60000 != 0 && TimeOut%60000 == 0)
// {
// i_DHT11data = GET_DHT11Data();
// printf("Humidity: %d.%d\r\n",(i_DHT11data>>24&0xff),(i_DHT11data>>16&0xff));
// printf("Temperature: %d.%d\r\n",(i_DHT11data>>8&0xff),(i_DHT11data&0xff));
// TimeOut=0;
// }
//
//
//------------------------------------------------------------------------------------
/****************** PWM實驗:控制LED亮度*****************/
//------------------------------------------------------------------------------------
// delay_ms(100);
// g_HS0038data = GET_HS0038Data();
// i_HS0038key = GetKey(g_HS0038data);
// printf("%d\r\n",i_HS0038key);
// if(i_HS0038key == 13 && g_LedBright > 0)
// {
// g_LedBright -= 10;
// }
// else if(i_HS0038key == 12 && g_LedBright < 100)
// {
// g_LedBright += 10;
// }
//
// AdjustLed1Brightness(g_LedBright);
// delay_ms(100);
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
/****************** 定時器實驗:控制LED閃爍時間*****************/
//------------------------------------------------------------------------------------
// LED1 ^= OFF;
// delay_ms(100);
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
/****************** 外部中斷實驗:按鍵控制LED*****************/
//------------------------------------------------------------------------------------
// LED1 ^= OFF;
// delay_ms(100);
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
/****************** 按鍵實驗:按鍵控制LED*****************/
//------------------------------------------------------------------------------------
// if(KEY0 == 0)
// {
// delay_ms(100); //軟件消除按鍵抖動
// if(KEY0 == 0)
// {
// LED1 ^= OFF;
// }
// }
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
/****************** 串口1實驗:發送命令點亮LED*****************/
//------------------------------------------------------------------------------------
// delay_ms(100);
// if(g_USART_RxDoneFlag)
// {
// Ctrl_LED(g_USART_DataBuf);
// ClearBuf_Flag();
// }
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
/****************** 紅外遙控:按鍵0控制燈*****************/
//------------------------------------------------------------------------------------
// g_HS0038data = GET_HS0038Data();
// g_HS0038key = GetKey(g_HS0038data);
// if(g_HS0038key<21)
// {
// if(g_HS0038key == 0)
// LED1 ^= 1;
// if(g_HS0038key == 1)
// {
// i_DHT11data = GET_DHT11Data();
// printf("Humidity: %d.%d\n",(i_DHT11data>>24&0xff),(i_DHT11data>>16&0xff));
// printf("Temperature: %d.%d\n",(i_DHT11data>>8&0xff),(i_DHT11data&0xff));
// TimeOut=0;
// }
// g_HS0038key = 21;
// g_HS0038data = 0;
// }
//------------------------------------------------------------------------------------
復制代碼
所有資料51hei提供下載:
智能安防.rar
(109.13 KB, 下載次數: 22)
2019-10-29 16:49 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1