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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的智能飲水機程序電路原理圖

[復制鏈接]
跳轉到指定樓層
樓主
制作出來的智能飲水機實物圖如下:


智能飲水機電路原理圖如下:


單片機智能飲水機源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. int num=0;
  6. unsigned char table[]={"0123456789"};//顯示的數值
  7. //   1602的引腳定義
  8. sbit RW=P2^1;
  9. sbit RS=P2^0;  
  10. sbit E=P2^2;   

  11. //報警引腳定義
  12. sbit Q1=P1^4;
  13. sbit Q2=P1^2;
  14. sbit key3=P1^5;
  15. sbit key1=P1^0;
  16. sbit key2=P1^1;

  17. int numm=0,nnum=0;

  18. void delayms(unsigned int ms)
  19. {
  20.         unsigned char i=100,j;
  21.         for(;ms;ms--)
  22.         {
  23.                 while(--i)
  24.                 {
  25.                         j=10;
  26.                         while(--j);
  27.                 }
  28.         }
  29. }

  30. bit flag;           //溫度變量
  31. uint temp;
  32. sbit ds=P1^3;  //溫度引腳

  33. //超聲波位定義
  34. sbit Trig = P3^7;
  35. sbit Echo = P3^6;
  36. uint time=0;
  37. unsigned long S=0;
  38. bit flagg=0;

  39. void delay2(uchar p)
  40.         {
  41.           uchar l,k;
  42.            for(l=p;l>0;l--)
  43.               for(k=110;k>0;k--);
  44.         }

  45. void delay(uchar z)
  46. {
  47.     while(z--);
  48. }

  49. //溫度初始化函數                        
  50. void ds_reste()         
  51. {
  52.         ds=1;
  53.         delay(5);
  54.         ds=0;
  55.         delay(80);
  56.         ds=1;
  57.         delay(14);
  58.         if(ds==0)                 //判斷ds總線被拉低
  59.         flag=1;
  60.         else
  61.         flag=0;
  62.         delay(20);
  63. }

  64. //讀一位字節
  65. bit ds_read_byte()        
  66. {
  67.          bit dat;
  68.          ds=0;               
  69.          _nop_();
  70.          _nop_();
  71.          ds=1;
  72.          _nop_();
  73.          dat=ds;         
  74.          delay(10);
  75.          return dat;
  76. }

  77. //讀一位字節
  78. uchar ds_read()        
  79. {
  80.         uchar i,j,k;
  81.       for(i=0;i<8;i++)
  82.         {
  83.         j=ds_read_byte();
  84.         k=(j<<7)|(k>>1);
  85.         }
  86.          return k;
  87. }

  88. //寫入數據
  89. void ds_write(uchar dat)
  90. {
  91.          uchar i;
  92.          for(i=0;i<8;i++)
  93.     {
  94.          ds=0;
  95.          _nop_();
  96.          ds=dat&0x01;
  97.          delay(6);
  98.          ds=1;
  99.          dat=dat>>1;
  100.         }
  101.          delay(6);
  102. }

  103. //讀取溫度
  104. uint read_temp()         
  105. {
  106.         uchar a,b;
  107.         ds_reste();
  108.         ds_write(0xcc);
  109.         ds_write(0xbe);
  110.         a=ds_read();
  111.         b=ds_read();
  112.         temp=b;
  113.         temp=temp<<8;
  114.         temp=temp|a;
  115.         temp=temp*0.0625*10+0.5;                 
  116.         return temp;
  117. }

  118. //寫入命令1602
  119. void write_com(uchar com)           
  120. {
  121.         RS=0;
  122.         RW=0;
  123.         E=0;
  124.         P0=com;           
  125.         delay2(5);
  126.         E=1;
  127.         delay2(5);
  128.         E=0;
  129. }

  130. //寫入數據 1602
  131. void write_data(uchar date)        
  132. {
  133.         RS=1;
  134.         RW=0;
  135.         E=0;
  136.         P0=date;               
  137.         delay2(5);
  138.         E=1;
  139.         delay2(5);
  140.         E=0;
  141. }

  142. //1602初始化顯示
  143. void init()                                 
  144. {
  145.     RS=0;
  146.         write_com(0x38);
  147.          write_com(0x0c);
  148.          write_com(0x06);
  149.         write_com(0x01);
  150.         write_com(0x80);
  151.                   write_com(0x80+0x40);
  152.           write_data('C');
  153.                 write_com(0x80+0x41);
  154.           write_data('O');
  155.                 write_com(0x80+0x42);
  156.           write_data('L');
  157.                 write_com(0x80+0x43);
  158.           write_data('D');
  159. }

  160. //溫度在1602上顯示出來
  161. void display(uint tempp)           
  162. {  
  163.          write_com(0x80+0x0b);                        
  164.          write_data(table[tempp/100]);         
  165.          delay2(0);
  166.   
  167.          write_com(0x80+0x0c);
  168.          write_data(table[tempp%100/10]);           
  169.          delay2(0);        

  170.             write_com(0x80+0x0d);
  171.          write_data('.');                           
  172.          delay2(0);
  173.    
  174.             write_com(0x80+0x0e);
  175.          write_data(table[tempp%100%10]);
  176.          delay2(0);                                                         

  177.          write_com(0x80+0x0f);
  178.          write_data('C');                                    
  179.          delay2(0);

  180.          write_com(0x80+0x09);
  181.          write_data('T');                                    
  182.          delay2(0);

  183.          write_com(0x80+0x0a);
  184.          write_data(':');                                 
  185.          delay2(0);
  186. if(tempp>50) Q1=0;
  187. else Q1=1;
  188. }

  189. //超聲波測距
  190. void Conut(void)
  191.         {  
  192.          time=TH0*256+TL0;
  193.          TH0=0;
  194.          TL0=0;
  195.          S=(time*1.7)/100+1;                //算出來測距值單位是CM
  196.          if((S>1000)||S<1||flagg==1)           //超出測量范圍顯示“***”
  197. //按鍵控制
  198. void KEY()
  199. {
  200.    if(key1==0)
  201.    {
  202.              delay2(2);         

  203. void  StartModule()          //啟動模塊
  204.   {
  205.           Trig=1;         //啟動一次模塊
  206.           _nop_(); _nop_(); _nop_();
  207.           _nop_(); _nop_(); _nop_();
  208.           _nop_(); _nop_(); _nop_();
  209.           _nop_(); _nop_(); _nop_();
  210.           _nop_(); _nop_(); _nop_();
  211.           _nop_(); _nop_(); _nop_();
  212.           _nop_(); _nop_(); _nop_();
  213.            
  214.           Trig=0;  
  215.          
  216.   }

  217. void tempchang(void)
  218. {
  219.            ds_reste();          //d8b20的初始化
  220.         delay2(1);
  221.         ds_write(0xcc);        //d8b20的數據
  222.         ds_write(0x44);        //d8b20的數據
  223. }

  224. void main()
  225. {        
  226.    Q1=1;
  227.          Q2=1;
  228.          EA=1;
  229. //         IT0=1;
  230. //         EX0=1;         
  231.          TMOD=0x01;                   //設T0為方式1,GATE=1;
  232.          TH0=0;
  233.          TL0=0;
  234.          TR0=1;         
  235.          ET0=1;             //允許T0中斷
  236. //       TH1=(65536-5000)/256;
  237. //         TL1=(65536-5000)%256;
  238. //         TR1=1;         
  239. //         ET1=1;         
  240.          init();                          //1602的初始化                  
  241.      
  242.          while(1)
  243.          {
  244.              display1();        //顯示按鍵值                           
  245.              KEY();                         //按鍵         
  246.                StartModule();
  247.              while(!Echo);          //當RX為零時等待
  248.              TR0=1;                         //開啟計數
  249.              while(Echo);    //當RX為1計數并等待
  250.              TR0=0;                     //關閉計數        
  251.              Conut();             //距離顯示
  252.               delayms(10);   
  253.              tempchang();    //溫度開始轉換
  254.              display(read_temp());//溫度顯示
  255.                  if(key3==0) Q2=0;
  256.                  .................
復制代碼

原理圖+代碼: 08-基于51單片機的智能飲水機.7z (627.92 KB, 下載次數: 12)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久亚洲 | 亚洲精品电影 | 精品蜜桃一区二区三区 | 一级大黄色片 | 国产一区二区视频在线 | 成人在线视频免费观看 | 国产在线观看不卡一区二区三区 | 手机av在线 | 一区二区三区四区国产精品 | 免费黄色在线 | 国产精品美女久久久久aⅴ国产馆 | 人人射人人草 | 国产综合精品一区二区三区 | 激情婷婷| 国产一区二区影院 | 午夜日韩 | 岛国av在线免费观看 | 久久久久久久久淑女av国产精品 | 999久久久久久久 | 久久久久久久久久影视 | 精品国产一级 | 五月婷婷丁香婷婷 | 一区二区免费高清视频 | 久久久久无码国产精品一区 | 亚洲精品乱| 91黄色免费看 | 成人精品一区二区三区中文字幕 | 欧美成人免费在线视频 | 亚洲国产视频一区二区 | 91精品国产777在线观看 | 久久久精品一区二区三区 | 亚洲欧美v| 少妇精品亚洲一区二区成人 | 欧美五月婷婷 | 三级黄色片在线播放 | 久久久婷婷 | 久久国产精品一区二区三区 | 日韩午夜激情 | 久久在视频| av国产精品| 色综合色综合网色综合 |