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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5790|回復: 0
打印 上一主題 下一主題
收起左側

單片機自習室監控系統程序(包括原理圖)

[復制鏈接]
跳轉到指定樓層
樓主
自習室監控系統用紅外傳感器來檢查,通過12864液晶顯示屏來顯示

電路原理圖如下:

Comment    Designator    LibRef
電解電容    C1    10uF
瓷片電容    C2, C3    30pF
USB5V    DC 1    Header 2
紅外開關    P1, P2    MHDR1X3
發光二極管    POWER1    LED0
電阻    R1    10k
電阻    R2    10K
電阻    R3    2k
電位器    RV1    R
觸點開關    S1    SW-PB
電源開關    SW1    SW-SPDT
藍牙模塊    LANYA    HC-05
單片機    U1    STC89C52
液晶屏    U2    LCD12864
溫濕度傳感器    U3    DTT11
晶振    Y1    12MHz
萬能板        9x15cm

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
  3. #define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535
  4. #include "LCD12864.h"
  5. #include<intrins.h>
  6. #include "dht11.h"

  7. sbit jin_1 = P2^0;          //進來傳感器1
  8. sbit chu_1 = P2^1;          //出去傳感器1

  9. uint zong_rs;    //總人數
  10. uint tongd1_jl;  //通道1進來的人數
  11. uint tongd1_cq;  //通道1出去的人數
  12. uchar t1_value; //通道1用做判斷是進來還是出去的變量
  13. uchar t1_zk;    //通道1人走開
  14. uchar t1_j_xd;    //通道1進消抖
  15. uchar t1_c_xd;    //通道1出消抖
  16. uchar t1_qans_qx;  //通道1延時取消
  17. uint t1_qans_value;  //通道1延時取消
  18. uchar Rx_buf[4],Rxnum=0;
  19. uchar table_dht11[5]={1,2,3,4,5};

  20. void InitUART(void)                         //這是串口的基本配置,配置他的波特率是9600.這些參數都是標準的。
  21. {
  22.     TMOD = 0x20;
  23.     SCON = 0x50;
  24.     TH1 = 0xFD;
  25.     TL1 = TH1;
  26.     PCON = 0x00;
  27.     EA = 1;
  28.     ES = 1;
  29.     TR1 = 1;
  30. }

  31. /*
  32. * UART 發送一字節
  33. */
  34. void UART_send_byte(char dat)
  35. {
  36.         SBUF = dat;
  37.         while (TI == 0);
  38.         TI = 0;
  39. }

  40. /*
  41. * UART 發送字符串
  42. */
  43. void UART_send_string(unsigned char *buf)
  44. {
  45.         while (*buf != '\0')
  46.         {
  47.                 UART_send_byte(*buf++);
  48.         }
  49. }
  50. void Delay_ms(unsigned int n)
  51. {
  52.         unsigned int  i,j;
  53.         for(i=0;i<n;i++)
  54.                 for(j=0;j<123;j++);
  55. }
  56. void dst11()
  57. {
  58.         RH();//讀出溫濕度
  59.         table_dht11[2] = U8T_data_H;
  60.         table_dht11[0] = U8RH_data_H;
  61. }


  62. void tongd1_display()
  63. {
  64. /*******************通道1處理********************/
  65.         if(t1_value == 0)
  66.         {
  67.                 if(jin_1 == 0)
  68.                 {
  69.                         t1_j_xd ++;
  70.                         if(t1_j_xd >= 3)
  71.                         {
  72.                                 t1_j_xd = 0;
  73.                                 t1_value = 1;       
  74.                                 t1_zk = 0;
  75.                                 t1_qans_qx = 1;               
  76.                                 t1_qans_value = 0;
  77.                         }
  78.                 }
  79.                 else
  80.                         t1_j_xd = 0;       

  81.                 if(chu_1 == 0)
  82.                 {
  83.                         t1_c_xd ++;
  84.                         if(t1_c_xd >= 3)
  85.                         {
  86.                                 t1_c_xd = 0;
  87.                                 t1_value = 2;       
  88.                                 t1_zk = 0;               
  89.                                 t1_qans_qx = 1;
  90.                                 t1_qans_value = 0;
  91.                         }
  92.                 }
  93.                 else
  94.                         t1_c_xd = 0;       
  95.         }
  96.         else
  97.         {
  98.                 if(t1_qans_qx == 1)
  99.                 {
  100.                         t1_qans_value ++;             //5ms
  101.                         if(t1_qans_value > 400)         //2s
  102.                                 t1_value = 0;       
  103.                 }
  104.                 if(t1_value == 1)
  105.                 {
  106.                         if((chu_1 == 0) && (t1_zk == 0))
  107.                         {
  108.                                 tongd1_jl ++;              //通道1進來的人數加1       
  109.                                 zong_rs = tongd1_jl - tongd1_cq;
  110.                                 t1_zk = 1;   
  111.                                 t1_qans_value = 0;
  112.                                 t1_qans_qx = 0;
  113.                         }
  114.                         if(t1_zk == 1)                 //人走開
  115.                         {
  116.                                 if(chu_1 == 1)                 
  117.                                 {
  118.                                         t1_value = 0;
  119.                                         t1_zk = 0;                                
  120.                                 }                       
  121.                         }
  122.                 }
  123.                 if(t1_value == 2)
  124.                 {
  125.                         if((jin_1 == 0) && (t1_zk == 0))
  126.                         {
  127.                                 if(tongd1_jl  > tongd1_cq )
  128.                                         tongd1_cq ++;              //通道1出去的人數加1       
  129.                                 zong_rs = tongd1_jl - tongd1_cq;           //計算總人數
  130.                                 t1_zk = 1;  
  131.                                 t1_qans_value = 0;
  132.                                 t1_qans_qx = 0;               
  133.                         }
  134.                         if(t1_zk == 1)                 //人走開
  135.                         {
  136.                                 if(jin_1 == 1)
  137.                                 {
  138.                                         t1_value = 0;
  139.                                         t1_zk = 0;                                
  140.                                 }                       
  141.                         }
  142.                 }
  143.         }

  144. }

  145. void main(void)
  146. {
  147.     uchar Tx_Buf[15];
  148.         InitUART();                        //初始化串口     
  149.     LCD12864_Reset();                                                                //初始化液晶
  150.         LCD12864_HAIZI_SET();                                                        //設置為普通模式
  151.         LCD12864_NoWaitIdle_COM_Write(0x80);                                                //指針設置
  152.         LCD12864_write_word("座位:50 人員:   ");
  153.         LCD12864_NoWaitIdle_COM_Write(0x90);                                                //指針設置
  154.         LCD12864_write_word("余座:           ");                       
  155.         LCD12864_NoWaitIdle_COM_Write(0x88);                                                //指針設置
  156.         LCD12864_write_word("溫度:   ℃      ");
  157.         LCD12864_NoWaitIdle_COM_Write(0x98);                                                //指針設置
  158.         LCD12864_write_word("濕度:   %      ");
  159.         dst11();                //先讀出溫濕度的值
  160.         while(1)
  161.         {       
  162.             tongd1_display();
  163.                        
  164.                    dst11();                //先讀出溫濕度的值       
  165.                 LCD12864_NoWaitIdle_COM_Write(0x8b);                                                //指針設置
  166.                 LCD12864_Data_Write(0x30+table_dht11[2]%100/10);
  167.                 LCD12864_Data_Write(0x30+table_dht11[2]%10);
  168.             Delay_ms(1);
  169.                 LCD12864_NoWaitIdle_COM_Write(0x9b);
  170.                 LCD12864_Data_Write(0x30+table_dht11[0]%100/10);
  171.                 LCD12864_Data_Write(0x30+table_dht11[0]%10);
  172.                 Delay_ms(1);                  
  173.                 LCD12864_NoWaitIdle_COM_Write(0x87);
  174.                 LCD12864_Data_Write(0x30+zong_rs/10);
  175.                 LCD12864_Data_Write(0x30+zong_rs%10);
  176.                 Delay_ms(1);
  177.                 LCD12864_NoWaitIdle_COM_Write(0x93);
  178.                 LCD12864_Data_Write(0x30+(50-zong_rs)/10);
  179.                 LCD12864_Data_Write(0x30+(50-zong_rs)%10);       
  180.             
  181.                 Tx_Buf[0]='T';        //幀頭
  182.             Tx_Buf[1]=5+0x30;                 //將濕度數據送往發送數組,送給藍牙模塊讓手機APP顯示
  183.             Tx_Buf[2]=0+0x30;               
  184.             Tx_Buf[3]=zong_rs/10+0x30;
  185.             Tx_Buf[4]=zong_rs%10+0x30;

  186.                 Tx_Buf[5]=(50-zong_rs)/10+0x30;
  187.             Tx_Buf[6]=(50-zong_rs)%10+0x30;

  188.                 Tx_Buf[7]=table_dht11[2]/10+0x30;
  189.             Tx_Buf[8]=table_dht11[2]%10+0x30;

  190.                 Tx_Buf[9]=table_dht11[0]/10+0x30;
  191.             Tx_Buf[10]=table_dht11[0]%10+0x30;
  192.                 Tx_Buf[11]=0;//結束符
  193.             UART_send_string(Tx_Buf);          //串口發送溫濕度數據出去

  194.         }
  195. }


  196. /*****************串口接收中斷函數,接收藍牙模塊的數據*********************/
  197. void UARTInterrupt(void) interrupt 4
  198. {       
  199.         ES=0;        //關閉中斷
  200.     if(RI)          //接收到數據
  201.     {

  202.         Rx_buf[Rxnum]=SBUF;  //接收數據進數組
  203.         if(Rx_buf[Rxnum]==0x08)
  204.                 Rxnum=0;
  205.         else
  206.                 Rxnum++;
  207. //                        if(Rx_buf[0]==0x01)//LED1燈
  208. //                {
  209. //                                 if(Rx_buf[1]==0x01)//開燈
  210. //                                        LED1=0;//開燈
  211. //                                else
  212. //                                        LED1=1;        //關燈       
  213. //                }
  214. //                if(Rx_buf[0]==0x02)//LED2燈
  215. //                {
  216. //                                 if(Rx_buf[1]==0x01)//開燈
  217. //                                        LED2=0;//開燈
  218. //                                else
  219. //                                        LED2=1;        //關燈       
  220. //                }
  221.         }
  222.     RI=0;

  223.    ES=1;          //關閉中斷
  224. }
復制代碼

所有資料51hei提供下載:
自習室藍牙監控系統.7z (224.9 KB, 下載次數: 42)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久在线视频 | 精品欧美一区二区三区久久久 | 国产1区2区3区| 中文字幕视频在线看5 | 免费黄色特级片 | 久久国产精品久久久久久 | 天天弄天天操 | 一本一道久久a久久精品蜜桃 | 在线观看黄视频 | 日韩一区二区三区av | 国产99视频精品免费视频7 | 精品成人一区二区 | 亚洲一区二区三区在线视频 | 欧美成ee人免费视频 | 亚洲三区在线观看 | 日韩免费在线观看视频 | 日日天天| 免费视频一区二区 | 亚洲在线| 久久成人国产精品 | 国产成人99久久亚洲综合精品 | 亚洲天堂免费 | 91资源在线 | 欧洲一级黄 | 91亚洲免费 | 91成人影院 | 久久伊| 亚洲国产成人精品女人久久久 | 日韩精品一区二区三区在线观看 | av中文在线观看 | 精品视频免费 | 一级视频黄色 | 欧美日韩精品久久久免费观看 | 亚洲欧美视频一区 | 日本精品视频在线 | 亚洲www啪成人一区二区麻豆 | 色橹橹欧美在线观看视频高清 | 亚洲精品久 | www.性色| 国产欧美精品一区二区色综合 | 天天干视频|