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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機超聲波水位液位控制系統程序仿真PCB原理圖資料 LCD1602顯示

  [復制鏈接]
跳轉到指定樓層
樓主
ID:449323 發表于 2021-1-10 19:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大學四年,最后一個實訓,還挺好玩,水泵抽水的快樂,也比較小兒科,很遺憾要暫時告別實訓室好好復習準備二戰了,還是很喜歡實驗室里面奇奇怪怪的波形,每一次都讓我驚嘆不已,今年找工作期間發現行業女性歧視很嚴重,我去面試的幾家公司里,都說了相似的話,你的簡歷沒什么問題,但是這個行業要面臨加班什么的,說女孩子結了婚就不干這行了,有時候也質疑過自我,但是還是堅定想從電子行業發展,希望還有機會在電子行業走下去吧,發個牢騷。
基于51單片機超聲波水位液位控制系統LCD1602資料中,我是用水泵抽水,加了一個繼電器電路,繼電器電路的PCB沒有放進去,但是原理圖的圖片我放進去了,大家自己畫一個小模塊,我當時拍的視頻我也放進去了,方便大家調試,有什么疑問再問吧,希望我還會上黑電子論壇,感謝四年陪伴,致敬電子行業領路人!

制作出來的實物圖如下:


水泵驅動電路:


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



仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #include "LCD1602.h"
  4. #include "STCEEPROM.h"
  5. sbit  RX = P3^6;  //定義超聲波端口
  6. sbit  TX = P3^7;

  7. sbit LED = P2^0;  //LED
  8. sbit SPEAK = P2^1; //蜂鳴器
  9. sbit Motor = P2^2; //水泵

  10. sbit KEY1 = P1^3;  //設置按鍵
  11. sbit KEY2 = P1^4;  //加按鍵
  12. sbit KEY3 = P1^5;  //減按鍵

  13. unsigned int  time=0;//計時變量
  14. unsigned int  timer=0;//計時變量
  15. unsigned int S=0;//當前值
  16. unsigned int SET_H=100,SET_L=10;//最高值和最低值
  17. bit  flag =0; //測量標志位
  18. unsigned char Table[3],Table1[5];//顯示數組
  19. unsigned char KEY_flag=0; //按鍵選擇標志
  20. //延時函數
  21. void Delay_ms(int jj)  //延時函數
  22. {
  23.         int ii;        //延時變量
  24.         while(jj--)//延時n毫秒
  25.                 for(ii=0;ii<116;ii++);//延時1毫秒
  26. }
  27. void Conut(void)         //測量函數
  28.         {
  29.          time=TH0*256+TL0;         //距離計數
  30.          TH0=0;         //定時器清零
  31.          TL0=0;         //定時器清零
  32.        
  33.          S=(time*1.87)/10;     //算出來是CM、轉換
  34.          if((S>=700)||flag==1) //超出測量范圍顯示“-”
  35.          {         
  36.           flag=0; //數據無效標志
  37.          }
  38.          else
  39.          {
  40.           Table1[0]= S/1000+0X30;        //顯示當前值
  41.           Table1[1]= S/100%10+0X30;        //顯示當前值
  42.           Table1[2]= S/10/10+0X30;        //顯示當前值
  43.           Table1[3]= '.';                        //顯示當前值
  44.           Table1[4]= S%10+0X30;           //顯示當前值
  45.           LCD1602_Disp_ZF(0x88,Table1,5); //顯示當前值
  46.         }
  47. }
  48. void main(void)        //主函數
  49. {
  50.     LCD1602_init();//液晶初始化
  51.         //////////////////////0123456789ABCDEF
  52.     LCD1602_Disp_ZF(0x80,"  Now S:     CM ",16);
  53.                                                      //0123456789ABCDEF
  54.     LCD1602_Disp_ZF(0x80+0X40,"Set H:    L:    ",16);
  55.         TMOD=0x11;                   //設T0為方式1,GATE=1;
  56.         TH0=0;                           //定時器清零
  57.         TL0=0;             //定時器清零
  58.         TH1=0xf8;                   //2MS定時
  59.         TL1=0x30;                   //2MS定時
  60.         ET0=1;             //允許T0中斷
  61.         ET1=1;                           //允許T1中斷
  62.         TR1=1;                           //開啟定時器
  63.         EA=1;                           //開啟總中斷
  64.         EA=0;//關閉中斷
  65.         SET_H = ISP_READ(0x2c00)*256+ISP_READ(0x2c01);//讀取存儲的最大值
  66.         SET_L = ISP_READ(0x2c02)*256+ISP_READ(0x2c03);//讀取存儲的最小值
  67.         EA=1; //開啟總中斷
  68.         while(1)//函數循環
  69.         {
  70.                 while(!RX);                    //當RX為零時等待
  71.                 TR0=1;                            //開啟計數
  72.                 while(RX);                        //當RX為1計數并等待
  73.                 TR0=0;                                //關閉計數
  74.                 Conut();  //計算顯示距離函數
  75.                 /////////////////////////////////////
  76.                 if((S/10>SET_H)||(S/10>SET_H)) //水位過低過高報警,
  77.                 {
  78.                         LED=0;SPEAK=0; //報警
  79.                 }
  80.                 else
  81.                 {
  82.                         LED=1;SPEAK=1; //不報警
  83.                 }
  84.                 ////////////////////////////////
  85.                 if((S/10>SET_H)) //水位過低打開水泵
  86.                 {
  87.                         Motor; //打開
  88.                 }
  89.                 else
  90.                 {
  91.                         LED=1;SPEAK=1; //關閉
  92.                 }       
  93.                 if(!KEY1) //切換設置最大值和最小值
  94.                 {
  95.                         Delay_ms(10);//延時去抖動
  96.                         if(!KEY1)//切換設置最大值和最小值
  97.                         {
  98.                                 KEY_flag++;        //模式選擇
  99.                                 ISP_ERASE(0x2c00);                //注意:字節編程時必須要先要擦除整個扇區       
  100.                                 ISP_PROGRAM(0x2c00, SET_H/256);        //記憶存儲
  101.                                 ISP_PROGRAM(0x2c01, SET_H);//記憶存儲
  102.                                 ISP_PROGRAM(0x2c02, SET_L/256);//記憶存儲
  103.                                 ISP_PROGRAM(0x2c03, SET_L);        //記憶存儲
  104.                         }
  105.                         while(!KEY1);//等待按鍵抬起
  106.                 }
  107.                 if(!KEY2)//設置加
  108.                 {
  109.                         Delay_ms(10);//延時去抖動
  110.                         if(!KEY2) //設置加
  111.                         {
  112.                                 if(KEY_flag%2==0)SET_H++; //設置加
  113.                                 if(KEY_flag%2==1)SET_L++; //設置加
  114.                         }
  115.                 }
  116.                 if(!KEY3) //設置減
  117.                 {
  118.                         Delay_ms(10);//延時去抖動
  119.                         if(!KEY3) //設置減
  120.                         {
  121.                                 if(KEY_flag%2==0)SET_H--; //設置減
  122.                                 if(KEY_flag%2==1)SET_L--;//設置減
  123.                         }
  124.                 }
  125.           Table[0]= SET_H/100+0X30;//顯示最大值
  126.           Table[1]= SET_H%100/10+0X30;
  127.           Table[2]= SET_H%10+0X30;
  128.           LCD1602_Disp_ZF(0x86+0x40,Table,3);
  129.           Table[0]= SET_L/100+0X30;         //顯示最小值
  130.           Table[1]= SET_L%100/10+0X30;
  131.           Table[2]= SET_L%10+0X30;
  132.           LCD1602_Disp_ZF(0x8C+0x40,Table,3);
  133.         }
  134. }

  135. /********************************************************/
  136.      void zd0() interrupt 1                  //T0中斷用來計數器溢出,超過測距范圍
  137.   {
  138.     flag=1;                                                         //中斷溢出標志
  139.   }
  140. /********************************************************/
  141.    void  zd3()  interrupt 3        
  142.   {
  143.          TH1=0xf8;//2毫秒定時初始化
  144.          TL1=0x30;//2毫秒定時初始化
  145.          timer++;//計數
  146.          if(timer>=100)//計數100次,200毫秒
  147.          {
  148.           timer=0;
  149.           TX=1;                                        //200MS  啟動一次模塊
  150.           _nop_(); _nop_(); _nop_();
  151.           _nop_(); _nop_(); _nop_();
  152.           _nop_(); _nop_(); _nop_();
  153.           _nop_(); _nop_(); _nop_();
  154.           _nop_(); _nop_(); _nop_();
  155.           _nop_(); _nop_();_nop_();
  156.           _nop_(); _nop_(); _nop_();
  157.           TX=0;
  158.          }
  159.   }
復制代碼

所有資料51hei提供下載:
基于51單片機超聲波水位液位控制系統LCD1602資料.rar (10.42 MB, 下載次數: 246)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:848824 發表于 2021-1-24 11:15 | 只看該作者
非常感謝,初學者的我測試成功
回復

使用道具 舉報

板凳
ID:889626 發表于 2021-3-11 11:00 來自手機 | 只看該作者
protues仿真中超聲波模塊體現在哪里了
回復

使用道具 舉報

地板
ID:543424 發表于 2021-3-11 21:46 | 只看該作者
資料很好,可以學習參考一下
回復

使用道具 舉報

5#
ID:7485 發表于 2021-3-12 08:44 | 只看該作者
女生能搞到這個樣挺好的!繼續努力!
回復

使用道具 舉報

6#
ID:797416 發表于 2021-3-13 16:22 | 只看該作者
小姐姐要繼續加油哦  我現在大二  好多人跟我說這個行業對待女性不好  所以我們要更加努力
回復

使用道具 舉報

7#
ID:822775 發表于 2021-10-14 10:49 | 只看該作者
能不能幫忙講解一下那個水位探器怎么顯示的水位,到現在很懵
回復

使用道具 舉報

8#
ID:822775 發表于 2021-10-14 12:15 | 只看該作者
主要是沒明白你寫的這個代碼,哎,水位都咯不懂
回復

使用道具 舉報

9#
ID:449323 發表于 2021-10-15 09:00 | 只看該作者
ahshmj 發表于 2021-3-12 08:44
女生能搞到這個樣挺好的!繼續努力!

謝謝你,只可惜畢業之后還是老老實實在家準備考編,荒廢四年所學了
回復

使用道具 舉報

10#
ID:449323 發表于 2021-10-15 09:05 | 只看該作者
hlncclb 發表于 2021-3-11 11:00
protues仿真中超聲波模塊體現在哪里了

輪子轉速代替的,Protues里面沒有超聲比模塊直接仿真,建議搭建好硬件進行調試
回復

使用道具 舉報

11#
ID:449323 發表于 2021-10-15 09:05 | 只看該作者
清北清北 發表于 2021-3-13 16:22
小姐姐要繼續加油哦  我現在大二  好多人跟我說這個行業對待女性不好  所以我們要更加努力

你也好好加油喲
回復

使用道具 舉報

12#
ID:449323 發表于 2021-10-15 09:15 | 只看該作者
wl521520 發表于 2021-10-14 10:49
能不能幫忙講解一下那個水位探器怎么顯示的水位,到現在很懵

我個人理解的你這句話,我感覺我們做的不是一個東西,我說一下我的系統裝置大概是這樣的,預置好距離,超聲波對準水桶里面的水,當超聲波檢測到距離時,按照預設值做出指令抽水,我們同學當時拍了抖Y視頻,我把鏈接發給你,你可以去看一下整個系統的搭建。
回復

使用道具 舉報

13#
ID:449323 發表于 2021-10-15 09:16 | 只看該作者
wl521520 發表于 2021-10-14 10:49
能不能幫忙講解一下那個水位探器怎么顯示的水位,到現在很懵

去搜索下這個短視頻:
實訓的快樂大概就是,水泵抽水玩了三四次,玩得不亦樂乎
回復

使用道具 舉報

14#
ID:822775 發表于 2021-10-29 21:14 | 只看該作者
這個超聲波檢測距離是不是要對著水面,然后有一段距離,,然后探測的是水桶里面的距離
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频福利一区 | 免费午夜电影 | 欧美第一区 | 综合中文字幕 | 色资源站 | 欧美日韩综合精品 | 韩国精品一区 | 草比av| 中文字幕一区二区三区在线观看 | 精品久久久久久久 | 日韩一区二区免费视频 | 欧美 日韩 亚洲91麻豆精品 | 91久久精品 | 在线日韩 | 毛片的网址 | 91精品国产色综合久久 | 欧美日韩亚洲在线 | av在线播放免费 | 国产日韩一区二区 | 亚洲欧美在线观看 | 亚洲国产中文字幕 | 精品一区二区不卡 | 久久久久亚洲精品中文字幕 | 国产精品成人一区二区三区吃奶 | 免费精品 | 国产高清精品在线 | 精品日韩一区 | 久久91 | 亚洲精品在线视频 | 成人高清在线 | 国产在线精品一区二区三区 | 日本成人午夜影院 | 色婷婷综合久久久中字幕精品久久 | 美女福利网站 | 亚洲综合色视频在线观看 | 国产在线视频一区二区 | 九九视频网 | 毛片大全| 国产欧美一区二区三区国产幕精品 | 亚洲有码转帖 | 久久小视频 |