久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4725|回復: 0
收起左側

基于STM32的溫度傳感器和煙霧報警器程序源碼,在LCD顯示的同時通過HC05與手機通訊

[復制鏈接]
ID:642248 發表于 2019-11-14 20:54 | 顯示全部樓層 |閱讀模式
單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"
  7. #include "hc05.h"
  8. #include "usart3.h"                                 
  9. #include "string.h"           
  10. #include "usmart.h"        
  11. #include "beep.h"
  12. #include "adc.h"
  13. #include "tsensor.h"



  14. //顯示ATK-HC05模塊的主從狀態
  15. void HC05_Role_Show(void)
  16. {
  17.         if(HC05_Get_Role()==1)LCD_ShowString(30,140,200,16,16,"ROLE:Master");        //主機
  18.         else LCD_ShowString(30,140,200,16,16,"ROLE:Slave ");                                         //從機
  19. }
  20. //顯示ATK-HC05模塊的連接狀態
  21. void HC05_Sta_Show(void)
  22. {                                                                                                
  23.         if(HC05_LED)LCD_ShowString(120,140,120,16,16,"STA:Connected ");                        //連接成功
  24.         else LCD_ShowString(120,140,120,16,16,"STA:Disconnect");                                 //未連接                                 
  25. }        

  26. int main(void)
  27. {
  28.         short temp;  
  29.         u8 key;
  30.         u8 sendmask=0;
  31.         //u8 sendcnt=0;
  32.         u8 sendbuf[20];         
  33.         u8 reclen=0;         
  34.         delay_init();                     //延時函數初始化         
  35.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  36.         uart_init(115200);                 //串口初始化為9600
  37.         LED_Init();                                //初始化與LED連接的硬件接口
  38.         KEY_Init();                                //初始化按鍵
  39.   LCD_Init();                                //初始化LCD
  40.   usmart_dev.init(72);         //初始化USMART        
  41.          
  42.          
  43.   BEEP_Init();
  44.          T_Adc_Init();                                  //ADC初始化                  
  45.         

  46.          
  47.         POINT_COLOR=BLUE;//設置字體為藍色      
  48.          LCD_ShowString(30,280,200,16,16,"TEMPERATE: 00.00C");
  49.         LCD_ShowString(30,310,200,16,16,"SMOKE:    ");
  50.          
  51.          
  52.          
  53.         delay_ms(1000);                        //等待藍牙模塊上電穩定
  54.          while(HC05_Init())                 //初始化ATK-HC05模塊  
  55.         {
  56.                 LCD_ShowString(30,90,200,16,16,"ATK-HC05 Error!");
  57.                 delay_ms(500);
  58.                 LCD_ShowString(30,90,200,16,16,"Please Check!!!");
  59.                 delay_ms(100);
  60.         }                                                                                                      

  61.         LCD_ShowString(30,110,200,16,16,"ATK-HC05 Standby!");  
  62.   LCD_ShowString(30,160,200,16,16,"Send:");        
  63.         LCD_ShowString(30,180,200,16,16,"Receive:");
  64.         POINT_COLOR=BLUE;
  65.         HC05_Role_Show();
  66.         delay_ms(100);
  67.         USART3_RX_STA=0;
  68.          while(1)
  69.         {               
  70.                 HC05_Sta_Show();
  71.                 temp=Get_Temprate();        //得到溫度值
  72.                 //if(temp>70)
  73.                 //{LCD_ShowString(30+10*8,310,16,16,16,"DANGER");
  74.                 //LED0=1;
  75.                 //BEEP=0;}
  76.                 if(temp<0)
  77.                 {

  78.                         temp=-temp;
  79.                         LCD_ShowString(30+10*8,280,200,16,16,"-");        //顯示負號
  80.                 }
  81.                 else

  82.                 LCD_ShowString(30+10*8,280,16,16,16," ");        //無符號               
  83.                 LCD_ShowxNum(30+11*8,280,temp/100,2,16,0);                //顯示整數部分
  84.                 LCD_ShowxNum(30+14*8,280,temp%100,2,16, 0X80);        //顯示小數部分
  85.                 LED1=1;        
  86.                
  87.                 if(PBin(13))
  88.                 {LED0=1;BEEP=0;LCD_ShowString(30+6*8,310,200,16,16," SAFE!  ");LED1=0;
  89.                 }

  90.                 else if(PBin(13)==0||temp>70)
  91.                
  92.          {LED0=0;
  93.                 BEEP=1;
  94.                 LCD_ShowString(30+6*8,310,200,16,16,"DANGER!");
  95.                 LED1=1;}

  96.                 delay_ms(250);
  97.                
  98.                
  99.                 key=KEY_Scan(0);
  100.                 if(key==KEY1_PRES)                                                //切換模塊主從設置
  101.                 {
  102.                            key=HC05_Get_Role();
  103.                         if(key!=0XFF)
  104.                         {
  105.                                 key=!key;                                          //狀態取反           
  106.                                 if(key==0)HC05_Set_Cmd("AT+ROLE=0");
  107.                                 else HC05_Set_Cmd("AT+ROLE=1");
  108.                                 HC05_Role_Show();
  109.                                 HC05_Set_Cmd("AT+RESET");        //復位ATK-HC05模塊
  110.                                 delay_ms(200);
  111.                         }
  112.                 }
  113.                
  114.                 else if(BEEP==1)
  115.                 {
  116.                         sendmask=1;                                //發送/停止發送           
  117.         
  118.                 }
  119.                 else if
  120.                 (BEEP==0)
  121.                 {LCD_Fill(30+40,160,240,160+16,WHITE);
  122.                         sendmask=0;}//清除顯示
  123.                
  124.                 delay_ms(10);           

  125.                         if(sendmask)                                        //定時發送
  126.                         {
  127.                                 sprintf((char*)sendbuf,"Danger\r\n");
  128.                                   LCD_ShowString(30+40,160,200,16,16,sendbuf);        //顯示發送數據        
  129.                                 u3_printf("Danger\r\n");                //發送到藍牙模塊
  130.                         }
  131.                         HC05_Sta_Show();            
  132.                         
  133.       delay_ms(10);        
  134.                           
  135.                
  136.                 if(USART3_RX_STA&0X8000)                        //接收到一次數據了
  137.                 {
  138.                         LCD_Fill(30,200,64,64,WHITE);        //清除顯示
  139.                          reclen=USART3_RX_STA&0X7FFF;        //得到數據長度
  140.                           USART3_RX_BUF[reclen]=0;                 //加入結束符
  141.                         if(reclen==9||reclen==8)                 //控制DS1檢測
  142.                         {
  143.                                 if(strcmp((const char*)USART3_RX_BUF,"+LED0 ON")==0)LED0=0;        //打開LED1
  144.                                 if(strcmp((const char*)USART3_RX_BUF,"+LED0 OFF")==0)LED0=1;//關閉LED1
  145.                                 if(strcmp((const char*)USART3_RX_BUF,"+BEEP ON")==0) BEEP=1;
  146.                                 if(strcmp((const char*)USART3_RX_BUF,"+BEEP OFF")==0) BEEP=0;
  147.                         }
  148.                          LCD_ShowString(30,200,209,16,16,USART3_RX_BUF);//顯示接收到的數據
  149.                          USART3_RX_STA=0;         
  150.                 }                                                                                                                                                                        

  151.         }
  152. }
復制代碼

所有資料51hei提供下載:
1.7z (254.9 KB, 下載次數: 129)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久 | 成人精品视频 | 久久久久久久久中文字幕 | 亚洲国产精品久久久久婷婷老年 | 亚洲国产一 | 欧美黄色片 | 超碰综合| 久久综合伊人 | 福利视频1000| 91精品久久久久久久久久入口 | 国产激情网 | 久久久久国产精品一区二区 | 精品一区二区三区在线视频 | 日韩美女一区二区三区在线观看 | 色狠狠桃花综合 | 一级片免费视频 | 91精品久久久久久久久 | 欧美一区二区三区在线观看视频 | 91精品久久久久久久久 | 中文区中文字幕免费看 | 欧美一二精品 | 精品一二三区视频 | 一级黄色片在线免费观看 | 亚洲黄色在线免费观看 | 91九色在线观看 | 国产成人久久精品一区二区三区 | 中文字幕在线网 | 中文字幕在线一区 | 欧美日一区二区 | 国产精品69毛片高清亚洲 | 午夜小视频免费观看 | 蜜桃视频在线观看免费视频网站www | 国产欧美精品区一区二区三区 | 国产色婷婷 | 精品一级 | 亚洲手机在线 | 久久免费视频观看 | 国产91久久精品一区二区 | 亚洲欧美中文日韩在线v日本 | 亚洲综合区| 中文久久 |