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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD1602+AS608+DS1302指紋模塊+繼電器+水位檢測模塊+DHT11程序原理圖PCB

[復制鏈接]
跳轉到指定樓層
樓主
              1,在指紋模塊和DS1302時間模塊基礎上添加了DHT11溫濕度檢測功能,水位檢測模塊,繼電器控制的加濕功能。

               2,供電是通過DC5V供電給單片機

              3,指紋模塊通過AMS1117降壓模塊供電5V-3.3V,通過串口和單片機通信。

              4,DS1302也是需要通過3.3V供電,時間功能可以通過單片機自帶的計時器編寫代碼完成

              5,DHT11的3引腳可以滯空,并且數據傳輸引腳可以不用加上拉電阻。
            
             資料內涵視頻+代碼+原理圖


             實物圖

            



            Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)

            



             資料內涵原理圖+代碼+運行視頻
  最后歡迎加入技術交流群:938456660可以與我交流
單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "buzz.h"
  4. #include "key.h"
  5. #include "uart.h"
  6. #include "delay.h"
  7. #include "FPM10A.h"
  8. #include "lcd_1602.h"
  9. #include "ds1302.h"

  10. sbit Data=P1^3;
  11. sbit beep=P2^7;
  12. sbit LED=P3^7;
  13. sbit jiashi=P1^4;
  14. sbit JDQ=P3^6;
  15. sbit SHUI=P3^4;

  16. typedef unsigned int u16;          //對數據類型進行聲明定義
  17. typedef unsigned char u8;
  18. char DisplayData[16]="   -     :  :   ";
  19. char DisplayData1[16]="Humi:  %Temp:  C";
  20. int wendu=0,shidu=0,cishu=0;


  21. void DHT11_delay_us(uchar n);
  22. void DHT11_delay_ms(uint z);
  23. void DHT11_start(void);
  24. u8 DHT11_rec_byte(void);
  25. void DHT11_receive(void);

  26. void datapros()         
  27. {
  28.   Ds1302ReadTime();      //反饋時間TIME

  29.   DisplayData[1] = TIME[4]/16+0x30;
  30.   DisplayData[2] = (int)(TIME[4]&0x0f)+0x30;                        //月

  31.   DisplayData[4] = TIME[3]/16+0x30;
  32.   DisplayData[5] = (int)(TIME[3]&0x0f)+0x30;     //日
  33.         
  34.         DisplayData[7] = TIME[2]/16+0x30;                                                        //時
  35.         DisplayData[8] = (int)(TIME[2]&0x0f)+0x30;        
  36.         

  37.         DisplayData[10] = TIME[1]/16+0x30;                                                //分
  38.         DisplayData[11] = (int)(TIME[1]&0x0f)+0x30;        

  39.         
  40.         DisplayData[13] = TIME[0]/16+0x30;                                                //秒
  41.         DisplayData[14] = (int)(TIME[0]&0x0f)+0x30;
  42. }

  43. void main()
  44. {                                                        
  45.         u8   i;
  46.         LCD1602_Init();                        //初始化液晶
  47.   Uart_Init();                        //初始化串口
  48.         Key_Init();                                //初始化按鍵
  49.         LED=0;
  50.   while(1)
  51.         {               
  52.         if(KEY_ENTER==0)                  //檢測按鍵K1是否按下
  53.         {        
  54.                 Delay_Ms(10);    //消除抖動 一般大約10ms
  55.                 if(KEY_ENTER==0)         //再次判斷按鍵是否按下
  56.                 {
  57.                         cishu++;
  58.                         while(!KEY_ENTER);         //檢測按鍵是否松開
  59.                 }               
  60.         }        
  61.         
  62. //----------------------------時間功能模塊------------------------------------
  63.                 if(cishu==1)
  64.         {
  65.         LCD1602_Display(0x80,"Fingerprint Test",0,16);         //液晶開機顯示界面
  66.         datapros();                                                 //數據處理函數        
  67.         LCD1602_WriteCMD(0x80+0x40);
  68.         for(i=0;i<16;i++)
  69.         {
  70.                 LCD1602_WriteDAT(DisplayData[i]);        
  71.         }
  72.         }               
  73.                                                                                        
  74. //---------------------------指紋模塊功能------------------------------------        
  75.         if(cishu==2)
  76.         {
  77.                 Delay_Ms(200);          //延時500MS,等待指紋模塊復位
  78.                 Device_Check();                           //校對指紋模塊是否接入正確,液晶做出相應的提示
  79.                 Delay_Ms(1000);                        //對接成功界面停留一定時間
  80.                 while(1)
  81.                 {
  82.                                 if(KEY_ENTER==0)                  //檢測按鍵K1是否按下
  83.         {        
  84.                 Delay_Ms(10);    //消除抖動 一般大約10ms
  85.                 if(KEY_ENTER==0)         //再次判斷按鍵是否按下
  86.                 {
  87.                         cishu++;
  88.                         while(!KEY_ENTER);         //檢測按鍵是否松開
  89.                 }               
  90.         }        
  91. //--------------------------溫濕度功能模塊------------------------------------        
  92.         if(cishu==3)
  93.         {
  94.         while(1)
  95.         {
  96.                 DHT11_receive();
  97.                 LCD1602_WriteCMD(0x01);
  98.                 LCD1602_WriteCMD(0x80);
  99.                 for(i=0;i<16;i++)
  100.                 {
  101.                 LCD1602_WriteDAT(DisplayData1[i]);        
  102.                 }
  103.                 LCD1602_Display(0xc0,"H:70L:20H:30L:30",0,16);
  104.                 Delay_Ms(100);
  105.                 if(wendu<30)
  106.                 {
  107.                         LED=0;
  108.                         beep=~beep;                                                                        //蜂鳴器聲音很小
  109.                         Delay_Ms(200);
  110.                         LED=1;
  111.                 }
  112.                 else
  113.                 {
  114.                         LED=0;
  115.                         beep=0;
  116.                 }
  117.                 if(shidu<20)
  118.                 {
  119.                         if(SHUI==1){JDQ=1;}        
  120.                 }
  121.                 else
  122.                 {
  123.                         JDQ=0;
  124.                 }
  125.         }        
  126.         }
  127.         
  128. //--------------------進入主功能界面------------------------------------
  129.                 LCD1602_Display(0x80,"  search finger ",0,16);         //第一排顯示搜索指紋
  130.                 LCD1602_Display(0xc0,"  Add     delete",0,16);         //添加和刪除指紋
  131.                 if(local_date==0)
  132.                 {
  133.                         LCD1602_Display(0x80,  " *",0,2);
  134.                         LCD1602_Display(0xc0,  "  ",0,2);
  135.                         LCD1602_Display(0xc0+8,"  ",0,2);        
  136.                 }
  137.                 else if(local_date==1)
  138.                 {
  139.                         LCD1602_Display(0x80,  "  ",0,2);
  140.                         LCD1602_Display(0xc0,  " *",0,2);
  141.                         LCD1602_Display(0xc0+8,"  ",0,2);        
  142.                 }
  143.                 else if(local_date==2)
  144.                 {
  145.                         LCD1602_Display(0x80,  "  ",0,2);
  146.                         LCD1602_Display(0xc0,  "  ",0,2);
  147.                         LCD1602_Display(0xc0+8," *",0,2);        
  148.                 }                        
  149.                 //確認鍵
  150.                 if(KEY_OK == 0)
  151.                 {         
  152.                          while(KEY_OK == 0);//等待松開按鍵                                                               
  153.                         switch(local_date)
  154.                         {
  155.                                         case 0:  //搜索指紋                                                
  156.                                         FPM10A_Find_Fingerprint();                                                                                                                                                                                                
  157.                                         break;        
  158.                                        
  159.                                         case 1:         //添加指紋
  160.                                         FPM10A_Add_Fingerprint();
  161.                                         break;                                         
  162.                                        
  163.                                         case 2:        //清空指紋
  164.                                         FPM10A_Delete_All_Fingerprint();
  165.                                           break;
  166.                                 }
  167.                         }
  168.                     //切換鍵
  169.                         if(KEY_DOWN == 0)
  170.                         {
  171.                                  while(KEY_DOWN == 0); //等待松開按鍵                                
  172.                                    if(local_date<=2)
  173.                                 {
  174.                                         local_date++;
  175.                                         if(local_date==3)
  176.                                                 local_date=0;                                                
  177.                                 }               
  178.                         }                                                
  179.                         Delay_Ms(100); //延時判斷100MS檢測一次
  180.                 }
  181.         }
  182.                 }
  183. }

  184. void DHT11_delay_us(uchar n)//延遲函數
  185. {
  186.     while(--n);
  187. }

  188. void DHT11_delay_ms(uint z)//延遲函數
  189. {
  190.    uint i,j;
  191.    for(i=z;i>0;i--)
  192.       for(j=110;j>0;j--);
  193. }

  194. void DHT11_start()//開始
  195. {
  196.    Data=1;
  197.    DHT11_delay_us(2);
  198.    Data=0;
  199.    DHT11_delay_ms(20);   
  200.    Data=1;
  201.    DHT11_delay_us(30);
  202. }

  203. u8 DHT11_rec_byte()   
  204. {
  205.    uchar i,dat=0;
  206.   for(i=0;i<8;i++)   
  207.    {         
  208.       while(!Data);   
  209.       DHT11_delay_us(8);   
  210.       dat<<=1;         
  211.       if(Data==1)   
  212.          dat+=1;
  213.       while(Data);      
  214.     }  
  215.     return dat;
  216. }

  217. void DHT11_receive()   
  218. {
  219.     uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
  220.     DHT11_start();
  221.     if(Data==0)
  222.     {
  223.         while(Data==0);   //等待數據   
  224.         DHT11_delay_us(40);  //延時80us
  225.         R_H=DHT11_rec_byte();    //濕度高位  
  226.         R_L=DHT11_rec_byte();    //濕度低位  
  227.         T_H=DHT11_rec_byte();    //溫度高位
  228.         T_L=DHT11_rec_byte();    //溫度低位
  229.         revise=DHT11_rec_byte(); //獲取數據

  230.         DHT11_delay_us(25);    //延時

  231.         if((R_H+R_L+T_H+T_L)==revise)      //校驗
  232.         {
  233.             RH=R_H;
  234.             RL=R_L;
  235.             TH=T_H;
  236.             TL=T_L;
  237.         }
  238.                                 shidu=RH;
  239.                                 wendu=TH;
  240.                                 DisplayData1[5]=shidu/10+0x30;
  241.                                 DisplayData1[6]=shidu%10+0x30;
  242.                                 DisplayData1[13]=wendu/10+0x30;
  243.                                 DisplayData1[14]=wendu%10+0x30;
  244.     }
  245. }

復制代碼

代碼+PCB+原理圖: 原理圖+代碼+視頻.rar (7.27 MB, 下載次數: 145)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:495323 發表于 2021-6-5 20:51 來自手機 | 只看該作者
歡迎加入技術交流
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美一区二区三区在线 | 精品一级| 99视频精品 | 一级片在线视频 | 91免费入口 | 日韩成人免费在线视频 | 国产一区二区三区在线 | 久久精品日产第一区二区三区 | 成人精品在线观看 | 日韩精品在线观看视频 | 视频在线观看一区 | 婷婷中文在线 | 成人小视频在线观看 | 久热精品在线观看视频 | 国产一区二区高清在线 | 久久久久久国产 | 久久久精品网 | www.久久久久久久久久久久 | 久久精品这里 | 在线看片国产精品 | 精品免费国产 | 欧美网站一区 | 亚洲成a| 日韩a v在线免费观看 | 国产精品国产成人国产三级 | 日韩精品在线视频免费观看 | 久久男人天堂 | 日韩在线播放一区 | 欧美日韩一区二区在线播放 | 在线观看亚洲专区 | 美女网站视频免费黄 | 我要看黄色录像一级片 | 国产精品污www一区二区三区 | 日本一二三区高清 | 久久久99国产精品免费 | 精品96久久久久久中文字幕无 | 国产精品久久久久久久久久久新郎 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 日本三级日产三级国产三级 | 天天插天天狠天天透 | 精品国产乱码久久久久久1区2区 |