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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3659|回復: 1
收起左側

51單片機土壤濕度監控程序 DCS

[復制鏈接]
ID:222477 發表于 2019-4-15 23:40 | 顯示全部樓層 |閱讀模式
以51單片機為內核,土壤濕度傳感器檢測濕度,電機驅動模塊驅動水泵,1602顯示,矩陣鍵盤控制電機轉速

Cache_79c699d2cc891340..jpg Cache_1477b8187f123a2c..jpg 原理圖.jpg

單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. unsigned char i=100;
  5. unsigned char j,k,temp,key;

  6. sbit lcden=P3^4;
  7. sbit rs=P3^2;
  8. sbit rw=P3^3;        
  9. sbit D1=P3^5;
  10. sbit TR=P3^6;
  11. uchar table1[]=" soil humidity  ";
  12. uchar table2[]="    ok";
  13. uchar table3[]="Not ok";
  14. void delay(uint x)
  15. {
  16.         uint a,b;
  17.         for(a=x;a>0;a--)
  18.                 for(b=10;b>0;b--);
  19. }

  20. void write_com(uchar com)
  21. {
  22.         P1=com;
  23.         rs=0;
  24.         lcden=0;
  25.         delay(10);
  26.         lcden=1;
  27.         delay(10);
  28.         lcden=0;
  29.         
  30. }

  31. void write_date(uchar date)
  32. {
  33.         P1=date;
  34.         rs=1;
  35.         lcden=0;
  36.         delay(10);
  37.         lcden=1;
  38.         delay(10);
  39.         lcden=0;
  40.         
  41. }

  42. void init()
  43. {
  44.     rw=0;
  45.         write_com(0x38);   //顯示模式設置:16×2顯示,5×7點陣,8位數據接口
  46.         delay(20);
  47.         write_com(0x0f);   //顯示模式設置
  48.         delay(20);
  49.         write_com(0x06);   //顯示模式設置:光標右移,字符不移
  50.         delay(20);
  51.         write_com(0x01);   //清屏幕指令,將以前的顯示內容清除
  52.         delay(20);        
  53. }

  54. unsigned char key_scan()
  55. {
  56.         P2=0xfe;
  57.     temp=P2;
  58.     temp=temp&0xf0;
  59.     if(temp!=0xf0)
  60.     {
  61.       delay(5);
  62.       if(temp!=0xf0)
  63.       {
  64.         temp=P2;
  65.         switch(temp)
  66.         {
  67.           case 0xee:
  68.                key=0;
  69.                break;

  70.           case 0xde:
  71.                key=15;
  72.                break;

  73.           case 0xbe:
  74.                key=14;
  75.                break;

  76.           case 0x7e:
  77.                key=13;
  78.                break;
  79.          }
  80.          while(temp!=0xf0)
  81.          {
  82.            temp=P2;
  83.            temp=temp&0xf0;
  84.          }
  85.                  return key;
  86.       }
  87.     }
  88.     P2=0xfd;
  89.     temp=P2;
  90.     temp=temp&0xf0;
  91.     if(temp!=0xf0)
  92.     {
  93.       delay(5);
  94.       if(temp!=0xf0)
  95.       {
  96.         temp=P2;
  97.         switch(temp)
  98.         {
  99.           case 0xed:
  100.                key=12;
  101.                break;

  102.           case 0xdd:
  103.                key=9;
  104.                break;

  105.           case 0xbd:
  106.                key=6;
  107.                break;

  108.           case 0x7d:
  109.                key=3;
  110.                break;
  111.          }
  112.          while(temp!=0xf0)
  113.          {
  114.            temp=P2;
  115.            temp=temp&0xf0;
  116.          }
  117.                  return key;
  118.       }
  119.       }
  120.     P2=0xfb;
  121.     temp=P2;
  122.     temp=temp&0xf0;
  123.     if(temp!=0xf0)
  124.     {
  125.       delay(5);
  126.       if(temp!=0xf0)
  127.       {
  128.         temp=P2;
  129.         switch(temp)
  130.         {
  131.           case 0xeb:
  132.                key=0;
  133.                break;

  134.           case 0xdb:
  135.                key=8;
  136.                break;

  137.           case 0xbb:
  138.                key=5;
  139.                break;

  140.           case 0x7b:
  141.                key=2;
  142.                break;
  143.          }
  144.          while(temp!=0xf0)
  145.          {
  146.            temp=P2;
  147.            temp=temp&0xf0;
  148.          }
  149.                  return key;
  150.       }
  151.       }
  152.     P2=0xf7;
  153.     temp=P2;
  154.     temp=temp&0xf0;
  155.     if(temp!=0xf0)
  156.     {
  157.       delay(5);
  158.       if(temp!=0xf0)
  159.       {
  160.         temp=P2;
  161.         switch(temp)
  162.         {
  163.           case 0xe7:
  164.                key=11;
  165.                break;

  166.           case 0xd7:
  167.                key=7;
  168.                break;

  169.           case 0xb7:
  170.                key=4;
  171.                break;

  172.           case 0x77:
  173.                key=1;
  174.                break;
  175.          }
  176.          while(temp!=0xf0)
  177.          {
  178.            temp=P2;
  179.            temp=temp&0xf0;
  180.          }
  181.                  return key;
  182.       }
  183.     }
  184.         return 16;
  185. }

  186. void main()
  187. {
  188.         uchar a;
  189.         uchar b;
  190.         uchar c;
  191.         D1=0;
  192.         init();
  193.         write_com(0x80);         //將第一個字符寫在向右偏移17個字符處,為后面的由右向左劃入做準備。
  194.         delay(20);
  195.         for(a=0;a<16;a++)
  196.         {
  197.         write_date(table1[a]);
  198.         delay(20);               
  199.         }
  200.         while(1)
  201.         {
  202.                 b=key_scan();
  203.                 if(b!=16)
  204.                 {
  205.                   c=b;
  206.                   write_com(0xc0|0x07);
  207.                  write_date('0'+c);
  208.                   write_date('D');
  209.                 }
  210.                 if(TR==1)
  211.                 {
  212.                         D1=0;
  213.                         write_com(0xc0);
  214.                         delay(1);
  215.                         for(a=0;a<6;a++)
  216.                         {
  217.                         write_date(table2[a]);
  218.                         delay(1);               
  219.                         }
  220.                 }
  221.                 else
  222.                 {
  223.                         D1=1;
  224.                         delay(c*20);
  225.                         D1=0;
  226.                         write_com(0xc0);
  227.                         for(a=0;a<6;a++)
  228.                         {
  229.                         write_date(table3[a]);               
  230.                         }
  231.                         
  232.                 }
  233.                         
  234.         }
  235. }
復制代碼

所有資料51hei提供下載:
源代碼.rar (24.19 KB, 下載次數: 26)

評分

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

查看全部評分

回復

使用道具 舉報

ID:1 發表于 2019-4-17 01:23 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩区 | 一区2区| 日韩一二区在线 | 综合久久综合久久 | 二区中文字幕 | 狠狠干影院 | 欧美日韩高清在线观看 | 精品久久亚洲 | 国产精品福利网站 | 国产网站久久 | 日韩电影在线一区 | 在线观看日韩精品视频 | www.4567 | 99久热| 成人综合视频在线 | 国产精品久久久久久238 | 国产日韩欧美在线 | 久久久精 | 四色成人av永久网址 | 韩日精品一区 | 亚洲日韩第一页 | 日韩欧美在线播放 | 日本午夜精品 | 色精品视频 | 午夜在线视频 | 欧美aⅴ在线观看 | 国产精品久久久久久久久久久久久 | 国产福利在线小视频 | 日韩免费视频一区二区 | 99久9| 99热这里只有精品8 激情毛片 | 99在线国产| 国产乱码精品1区2区3区 | 伊人久久精品一区二区三区 | 日韩在线精品视频 | 羞羞视频一区二区 | 午夜视频在线观看一区二区 | 日日摸夜夜添夜夜添特色大片 | 欧美 日韩 在线播放 | 九九色九九 | 精品欧美一区二区精品久久久 |