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

標題: 簡易單片機直流電機啟動、停止、正反轉(zhuǎn)三者相互制約控制系統(tǒng)的項目工程 [打印本頁]

作者: 51黑電子會員    時間: 2020-3-8 10:11
標題: 簡易單片機直流電機啟動、停止、正反轉(zhuǎn)三者相互制約控制系統(tǒng)的項目工程
  1. #include<reg52.h>//包含52單片機內(nèi)部寄存器頭文件
  2. #define uchar unsigned char // 自定義uchar為unsigned char(即無符號字符型數(shù)據(jù),數(shù)據(jù)范圍:0到255。)
  3. #define int int//自定義int為int(即有符號整數(shù)型數(shù)據(jù),數(shù)據(jù)范圍:-32768到32767。)
  4. sbit M1=P1^6;//位定義直流電機M1端
  5. sbit M2=P1^7;//位定義直流電機M2端
  6. sbit K1=P3^7;//位定義啟動按鍵K1
  7. sbit K2=P3^6;//位定義停止按鍵K2
  8. sbit K3=P3^5;//位定義正轉(zhuǎn)按鍵K3
  9. sbit K4=P3^4;//位定義反正按鍵K4
  10. uchar qidongflag,tingzhiflag,zhengzhuanflag,fanzhuanflag;//聲明啟動標志位變量、停止標志位變量、正轉(zhuǎn)標志位變量、反轉(zhuǎn)標志位變量、
  11. int Value;//聲明數(shù)值變量
  12. //int ge ,shi,bai,qian;//聲明數(shù)值變量個位變量、數(shù)值變量十位變量、數(shù)值變量百位變量、數(shù)值變量千位變量、
  13. //uchar qitingflag;
  14. //unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽數(shù)碼管段碼數(shù)字0~9字碼表,低電平點亮數(shù)碼管段碼數(shù)字0~9。
  15. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x38,0x77,0x71,} ; //共陰數(shù)碼管段碼數(shù)字0~9、字符O、字符S、字符L、字符R、無顯示等字符字碼表,高電平點亮數(shù)碼管段碼數(shù)字0~9。
  16.   void delay(int z)//延時程序
  17. {
  18.    int x,y;
  19.    for(x=z;x>0;x--)
  20.         for(y=110;y>0;y--);
  21. }
  22.   void ShuMaGuanDisplayValue(int Value)//數(shù)碼管顯示數(shù)值函數(shù)
  23. {  
  24. //   qian=Value/1000;//數(shù)值變量個位變量值
  25. //   bai=Value%1000/100;//數(shù)值變量十位變量值
  26. //   shi=Value%100/10;//數(shù)值變量百位變量值
  27. //   ge=Value%10;//數(shù)值變量千位變量值
  28.   
  29.    P2=0xfe;//數(shù)碼管千位顯示位
  30.    P0=table[10];//數(shù)碼管千位數(shù)值顯示
  31.    delay(2);//延時

  32.    P2=0xfd;//數(shù)碼管百位顯示位
  33.    P0=table[10];//數(shù)碼管百位數(shù)值顯示
  34.    delay(2);//延時

  35.    P2=0xfb;//數(shù)碼管十位顯示位
  36.    P0=table[10];//數(shù)碼管十位數(shù)值顯示
  37.    delay(2);//延時
  38.    
  39.    P2=0xf7;//數(shù)碼管個位顯示位
  40.    P0=table[Value];//數(shù)碼管個位數(shù)值顯示
  41.    delay(2);//延時
  42. }
  43.   void zhengzhuanhanshu()//正轉(zhuǎn)函數(shù)
  44. {
  45.    M1=1;//直流電機M1端置1
  46.    M2=0;//直流電機M2端置0
  47.   }
  48.   void fanzhuanhanshu()//反轉(zhuǎn)函數(shù)
  49. {
  50.    M1=0;//直流電機M1端置0
  51.    M2=1;//直流電機M2端置1
  52.   }
  53.   void KeyScan()//按鍵掃描函數(shù)
  54. {
  55.    if(K1==0)//是否按下啟動按鍵K1
  56. {
  57.     delay(5);//消除抖動
  58. //  ShuMaGuanDisplayValue(Value);//延時
  59.     if(K1==0) //再次判斷是否按下啟動按鍵K1
  60.   {
  61.      delay(5);//消除抖動
  62.      qidongflag=1;//啟動標志位變量置1
  63.      while(!K1);//等待啟動鍵K1復(fù)位(斷開)
  64. //   while(!K1)//等待啟動按鍵K1復(fù)位(斷開)
  65. //   ShuMaGuanDisplayValue(Value);//延時
  66.     }
  67.   }
  68.    if(qidongflag==1)//判斷啟動標志位變量是否為1
  69. {         
  70.     if(K3==0)//是否按下正轉(zhuǎn)按鍵K3
  71.   {
  72.      delay(5);//消除抖動
  73. //   ShuMaGuanDisplayValue(Value);//延時
  74.      if(K3==0)//再次判斷是否按下正轉(zhuǎn)按鍵K3
  75.     {
  76.       delay(5);//消除抖動
  77.       zhengzhuanflag=1;//正轉(zhuǎn)標志位變量置1
  78.       fanzhuanflag=0;//反轉(zhuǎn)標志位變量置0
  79.       while(!K3);//等待正轉(zhuǎn)按鍵K3復(fù)位(斷開)
  80. //    while(!K3)//等待正轉(zhuǎn)按鍵K3復(fù)位(斷開)
  81. //    ShuMaGuanDisplayValue(Value);//延時
  82.      }
  83.    }
  84.      if(K4==0)//是否按下反轉(zhuǎn)按鍵K4
  85.    {
  86.       delay(5);//消除抖動
  87. //    ShuMaGuanDisplayValue(Value);//延時
  88.       if(K4==0)//再次判斷是否按下反轉(zhuǎn)按鍵K4
  89.      {
  90.        delay(5);//消除抖動
  91.        zhengzhuanflag=0;//正轉(zhuǎn)標志位變量置0
  92.        fanzhuanflag=1;//反轉(zhuǎn)標志位變量置1
  93.        while(!K4);//等待反轉(zhuǎn)按鍵K4復(fù)位(斷開)
  94. //     while(!K4)//等待反轉(zhuǎn)按鍵K4復(fù)位(斷開)
  95. //     ShuMaGuanDisplayValue(Value);//延時
  96.       }
  97.    }
  98.     if(K2==0)//是否按下停止鍵K2
  99.   {
  100.      delay(5);//消除抖動
  101. //   ShuMaGuanDisplayValue(Value);//延時
  102.      if(K2==0)//再次判斷是否按下停止鍵K2
  103.     {
  104.       delay(5);//消除抖動
  105.       tingzhiflag=1;//停止標志位變量置1
  106.       qidongflag=0;//啟動標志位變量置0
  107.       zhengzhuanflag=0;//正轉(zhuǎn)標志位變量置0
  108.       fanzhuanflag=0;//反轉(zhuǎn)標志位變量置0
  109.       M1=1;//直流電機M1端置1
  110.       M2=1;//直流電機M2端置1  
  111.       while(!K2);//等待停止鍵K2復(fù)位(斷開)
  112. //    while(!K2)//等待停止鍵K2復(fù)位(斷開)
  113. //    ShuMaGuanDisplayValue(Value);//延時
  114.      }
  115.     }
  116.    }
  117.   }
  118.   void main()//主函數(shù)
  119. {        
  120.    while(1)//死循環(huán)
  121. {
  122.     KeyScan();//按鍵掃描函數(shù)
  123.     if(qidongflag==1&&zhengzhuanflag==0&&fanzhuanflag==0)//判斷啟動標志位變量是否為1和正轉(zhuǎn)標志位變量是否為0和反轉(zhuǎn)標志位變量是否為0
  124.     ShuMaGuanDisplayValue(0);//數(shù)碼管顯示字符O,表示啟動信號。
  125.     if(tingzhiflag==1&&qidongflag==0&&zhengzhuanflag==0&&fanzhuanflag==0)//判斷停止標志位變量是否為1和啟動標志位變量是否為0和正轉(zhuǎn)標志位變量是否為0和反轉(zhuǎn)標志位變量是否為0
  126.     ShuMaGuanDisplayValue(5);//數(shù)碼管顯示字符S,表示停止信號。
  127.     if(zhengzhuanflag==1&&fanzhuanflag==0)//判斷正轉(zhuǎn)標志位變量是否為1和反轉(zhuǎn)標志位變量是否為0
  128.   {
  129.      zhengzhuanhanshu();//正轉(zhuǎn)
  130.      ShuMaGuanDisplayValue(11);//數(shù)碼管顯示字符L,表示正轉(zhuǎn)。
  131.    }
  132.     if(zhengzhuanflag==0&&fanzhuanflag==1)//判斷正轉(zhuǎn)標志位變量是否為0和反轉(zhuǎn)標志位變量是否為1
  133.   {
  134.      fanzhuanhanshu();//反轉(zhuǎn)
  135.      ShuMaGuanDisplayValue(12);//數(shù)碼管顯示字符R,表示右轉(zhuǎn)。
  136.    }
  137.   }
  138. }
復(fù)制代碼


簡易直流電機啟動、停止、正反轉(zhuǎn)三者相互制約控制系統(tǒng)的Proteus仿真電路圖.png (97.29 KB, 下載次數(shù): 57)

簡易直流電機啟動、停止、正反轉(zhuǎn)三者相互制約控制系統(tǒng)的Proteus仿真電路圖.png





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品a在线观看图片 | 久久伊人精品 | 日韩欧美在线视频播放 | 888久久久| 美女视频一区 | 天天干天天谢 | 日韩成人在线播放 | 日韩精品一区二区三区视频播放 | 女同videos另类| 国产精品福利在线 | 久久久久久国产精品 | 青青操av | 国产一区二区在线播放 | 最新中文字幕在线 | 欧美一区免费 | 欧美涩 | 国产精品网址 | 精品久久久久国产免费第一页 | 国产欧美在线 | 91亚洲一区 | 黄色在线免费观看视频 | 亚洲国产精品激情在线观看 | 欧美激情国产日韩精品一区18 | 日本不卡在线视频 | 精品99在线| 精品亚洲一区二区三区四区五区高 | 欧美日韩一区二区三区不卡视频 | 国产在线一区二区 | 午夜大片| 国产精品久久国产愉拍 | 欧美日韩三级 | 亚洲免费在线观看视频 | 国产高清视频一区二区 | 国产精品a一区二区三区网址 | 色视频成人在线观看免 | 日日操天天射 | 精品国产一区二区国模嫣然 | 性国产丰满麻豆videosex | 男人的天堂在线视频 | av天天爽| 国产精品视频一区二区三区四区国 |