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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機手動抽水泵程序

[復制鏈接]
跳轉到指定樓層
樓主
單片機源程序如下:
  1. #include<reg52.h>
  2. #include <stdio.h>
  3. #include<intrins.h>
  4. #include "delay.h"
  5. #include "TM1650.h"
  6. #include "EEPROM.h"
  7. uchar jishu;
  8. char num,num1,num2,i0,i1,i2,i3,S=0,wg;
  9. sfr WDT_CONTR=0xe1;
  10. //按鍵信號輸入引腳定義
  11. sbit Q1=P1^2; //啟動按鍵
  12. sbit Q2=P1^3; //停止按鍵
  13. sbit Q3=P1^4; //復位按鍵
  14. sbit Q4=P1^5; //減時按鍵

  15. //繼電器信號輸入引腳定義
  16. sbit B0=P3^2; //火線繼電器或者零線繼電器信號
  17. sbit B1=P3^3; //火線繼電器或者零線繼電器信號

  18. sfr P3M1 = 0xB1;
  19. sfr P3M0 = 0xB2;

  20. uchar code mun_to_char[]={0x3F,0x06,0x5B,0x4f,0x66,               
  21.                                                   0x6D,0x7D,0x07,0x7F,0x6F,
  22.                                                   0x77,0x7C,0x39,0x5E,0x79,
  23.                                                   0x71,0x00,0x86,0xdB,0xcf,0xe6,               
  24.                                                   0xeD,0xfD,0x87,0xfF,0xeF};
  25. /*                         0    1    2    3    4
  26.                            5    6    7    8    9   
  27.                                                       a    b    c    d    e
  28.                                                    f    關                    */         


  29. void inint()
  30. {
  31.    TMOD=0x11;  //設置T1定時器方式1,T0定時器方式1
  32.    EA=1;        //打開總中斷
  33.    TH0=(65536-50000)/256;           //50ms計數
  34.    TL0=(65536-50000)%256;           //50ms計數
  35.    TH1=(65536-50000)/256;           //50ms計數
  36.    TL1=(65536-50000)%256;           //50ms計數
  37.    //TR0=1;         //啟動T0定時器
  38.    TR1=1;
  39.    ET0=1;         //
  40.    ET1=1;
  41.    //B1=0;
  42.    WDT_CONTR=0x37;
  43.    /* 用于eeprom的初始值設置        */
  44.    num1=num2=byte_read(0x0000);          //num2讀取eeprom中的數據


  45. P3M1 = 0xB1|0x00;
  46. P3M0 = 0xB2|0x0c;
  47. }

  48. void keycan()
  49. {
  50.           if(Q1==0)
  51.                 {  
  52.             delay_1ms(10);                  //延時10ms
  53.                 if(Q1==0)
  54.                         {
  55.                         num1=num2;
  56.                         num=0;
  57.                     TR0=1;
  58.                         B0=0;
  59.                         S=1;               
  60.                         }
  61.                 while(!Q1);                  //啟動按鍵松手檢測
  62.                 }

  63.                 if(Q2==0)
  64.                 {
  65.                 delay_1ms(10);
  66.                 if(Q2==0)                 //停止按鍵松手檢測
  67.                         {
  68.                         if(S==1)
  69.                            {TR0=~TR0;B0=~B0;B1=~B1;}
  70.                     }
  71.                 while(!Q2);                         
  72.                 }

  73.                 if(Q3==0)                //復位按鍵
  74.                 {
  75.                 delay_1ms(10);
  76.                 if(Q3==0)                 //復位按鍵松手檢測
  77.                         {
  78.                      B0=1;
  79.                          B1=1;
  80.                          num1=num2;
  81.                          num=0;
  82.                          S=0;
  83.                          TR0=0;
  84.                     }
  85.                 while(!Q3);                         
  86.                 }
  87.                
  88.                 if(Q4==0)                //時間初值設置按鍵
  89.                 {
  90.                  delay_1ms(10);           //長按3s
  91.                  if(Q4==0)                 //按鍵松手檢測
  92.                         {

  93.                           num2++;
  94.                           if(num2>=100){num2=1;}                           
  95.                           SectorErase(0x0000);                        //擦出扇區
  96.                           byte_write(0x0000,num2);           //把num2的值寫入eeprom中2000地址
  97.                           TM1650_Set(0x48,0x11,                       //總共8級亮度,現在設置5級亮度
  98.                                                  0x6E,mun_to_char[16],  //數碼管個位顯示數據
  99.                                                  0x6C,mun_to_char[16],  //數碼管個位顯示數據
  100.                                                  0x6A,mun_to_char[num2%10],  //數碼管十位顯示數據
  101.                                      0x68,mun_to_char[num2%100/10]  //數碼管百位顯示數?
  102.                         );
  103.                                
  104.                     }
  105.                 while(!Q4);                         
  106.                 }                                       
  107. }                       

  108. //數據處理
  109. void CLshuju()
  110. {
  111.         i3=num1%100/10;
  112.         i2=num1%10;
  113.         i1=num%100/10;
  114.         i0=num%10;                          //16進制轉換成10進制       
  115.         if(i2==0){i2=0;}
  116.         if(i3==0){i3=0;}
  117.                                                                                                                  
  118.         TM1650_Set(0x48,0x11,                       //總共5級亮度,現在設置5級亮度
  119.                     0x6E,mun_to_char[i0],  //數碼管個位顯示數據
  120.                                 0x6C,mun_to_char[i1],  //數碼管十位顯示數據
  121.                                 0x6A,mun_to_char[i2],  //數碼管百位顯示數據
  122.                                 0x68,mun_to_char[i3]  //數碼管千位顯示數據                                        
  123.                 );
  124. }

  125. void main()
  126. {
  127.     inint();           //初始化變量

  128.         while(1)
  129.            {                       
  130.             if(num2>=100){num2=0;}           //防止首次上電讀取錯誤的eeprom的數據
  131.             if((num1==0)&&(num==0)){num1=num2;}
  132.                 keycan();                                  //按鍵檢測       
  133.                 CLshuju();                                  //數據顯示
  134.                 }

  135. }
  136.    
  137. void timer0() interrupt 1   //計時中斷0工作方式1函數。
  138. {
  139.          TH0=(65536-50000)/256;           //50ms計數
  140.          TL0=(65536-50000)%256;           //50ms計數
  141.          jishu++;
  142.      if(jishu==20)                           //50ms*20=1000ms
  143.                  {
  144.                          jishu=0;                                                                                                            
  145.                      if(num==0)
  146.                                 {
  147.                                  num=60;
  148.                                  num1--;
  149.                                 }
  150.                           num--;
  151.                           if(num<58){B1=0;}
  152.                           if((num1==0)&(num==0)){B0=1;B1=1;S=0;TR0=0;}         
  153.                  }
  154. }


  155. void timer1() interrupt 3   //計時中斷1工作方式1函數。
  156. {
  157.          TH1=(65536-50000)/256;           //50ms計數
  158.          TL1=(65536-50000)%256;           //50ms計數
  159.          wg++;                                         //喂狗變量
  160.          if(wg==160)                        //50ms*160次=8s喂狗
  161.          {
  162.                  wg=0;
  163.                  WDT_CONTR=0x37;         //看門狗溢出時間為9秒
  164.          }
  165.      
  166. }
復制代碼

Keil代碼下載:
手動抽水泵軟件20211107版.zip (75.32 KB, 下載次數: 22)


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

使用道具 舉報

沙發
ID:1 發表于 2022-1-7 20:17 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

板凳
ID:386118 發表于 2022-1-8 22:36 | 只看該作者
手動抽水泵原理圖如下

按鍵原理圖.png (14.2 KB, 下載次數: 63)

按鍵原理圖

按鍵原理圖

數碼管顯示原理圖.png (28.53 KB, 下載次數: 70)

數碼顯示原理圖

數碼顯示原理圖

主板原理圖.png (55.79 KB, 下載次數: 59)

主板原理圖

主板原理圖
回復

使用道具 舉報

地板
ID:386118 發表于 2022-1-8 22:37 | 只看該作者
admin 發表于 2022-1-7 20:17
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)

源碼已經提供了,壓縮包文件里面就是
回復

使用道具 舉報

5#
ID:230742 發表于 2022-1-9 16:28 | 只看該作者
建議添加水滿自動關閉。要不手動抽水,手動停止,沒意義啊。
回復

使用道具 舉報

6#
ID:386118 發表于 2022-3-10 20:28 | 只看該作者
啤酒瓶子老大 發表于 2022-1-9 16:28
建議添加水滿自動關閉。要不手動抽水,手動停止,沒意義啊。

0~99分鐘的時間設置,時間到了自動停止抽水
回復

使用道具 舉報

7#
ID:386118 發表于 2022-4-27 16:38 | 只看該作者
啤酒瓶子老大 發表于 2022-1-9 16:28
建議添加水滿自動關閉。要不手動抽水,手動停止,沒意義啊。

設定時間,每次抽水時間到達后自動停止抽水
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色在线观看国产 | 欧美日本在线观看 | 欧美日韩在线精品 | 亚洲精品一二三区 | 97超碰成人| 亚洲国产精品第一区二区 | 在线观看亚洲专区 | 日韩精品久久久久久 | 欧美久久一级特黄毛片 | 伊人色综合久久久天天蜜桃 | 久久久久国产一区二区三区 | av官网在线 | 国产高清在线观看 | 国外成人在线视频网站 | 中文日韩字幕 | 久久精品99 | 中文字幕不卡视频在线观看 | 亚洲国产欧美精品 | 人人干人人草 | 91免费观看国产 | 午夜视频在线免费观看 | 精品二| 久在线| 香蕉大人久久国产成人av | 欧美理伦片在线播放 | 91成人小视频 | 欧美一区二区视频 | 久久精品小短片 | 91在线精品一区二区 | 日韩视频免费 | av中文字幕在线 | 国产视频福利 | 国产精品久久久久久久 | 国产精品一区二区不卡 | 欧美亚洲视频在线观看 | 欧美日韩在线成人 | 国产精品精品久久久 | 91欧美激情一区二区三区成人 | 欧美日韩在线一区 | 国产午夜精品一区二区三区嫩草 | www.99久久.com|