標(biāo)題: 請求高人幫助 磁保持繼電器的驅(qū)動程序如何編寫? [打印本頁]

作者: heimao    時間: 2020-4-9 14:13
標(biāo)題: 請求高人幫助 磁保持繼電器的驅(qū)動程序如何編寫?


見圖。本人初學(xué)單片機,想寫一個這個程序,由于才疏學(xué)淺,無法實現(xiàn),請高人幫助指導(dǎo)一下,不勝感激,謝謝!

作者: wulin    時間: 2020-4-9 20:07
按你的原理圖給你寫個的程序,未經(jīng)實物驗證,僅供參考。
  1. /*******************************
  2. 本程序只適合STC15系列1T單片機
  3. 使用內(nèi)部時鐘11.0592MHz
  4. 磁保持繼電器與輸出端口需要對應(yīng)
  5. *******************************/
  6. #include <reg51.h>
  7. #include <intrins.h>
  8. //特殊功能寄存器聲明
  9. sfr P3M0=0xB2;   //端口3模式寄存器0
  10. sfr P3M1=0xB1;   //端口3模式寄存器1
  11. //端口聲明
  12. sbit key =P3^0;
  13. sbit OUT1=P3^2;
  14. sbit OUT2=P3^3;
  15. //變量聲明
  16. unsigned int count=0;//消抖計數(shù)變量
  17. bit lock=0;//按鍵自鎖位變量
  18. bit flag=0;//按鍵狀態(tài)位變量
  19. //延時函數(shù)
  20. void Delay100ms()                //@11.0592MHz
  21. {
  22.         unsigned char i, j, k;
  23.         _nop_();
  24.         _nop_();
  25.         i = 5;
  26.         j = 52;
  27.         k = 195;
  28.         do
  29.         {
  30.                 do
  31.                 {
  32.                         while (--k);
  33.                 } while (--j);
  34.         } while (--i);
  35. }
  36. //主函數(shù)
  37. void main()
  38. {
  39.         OUT1=0;//初始化輸出端口
  40.         OUT2=0;//初始化輸出端口
  41.         P3M1 = 0x00;//設(shè)置P3.2/P3.3推挽模式
  42.         P3M0 = 0x0c;//設(shè)置P3.2/P3.3推挽模式
  43.         while(1)
  44.         {
  45.                 if(!key)//按鍵按下
  46.                 {
  47.                         if(++count>=500 && lock==0)//消抖與自鎖
  48.                         {
  49.                                 lock=1;//自鎖,防止長按重復(fù)響應(yīng)
  50.                                 flag=~flag;//按鍵狀態(tài)標(biāo)志取反
  51.                                 if(flag)
  52.                                 {
  53.                                         OUT1=1;//繼電器吸合
  54.                                         Delay100ms();
  55.                                         OUT1=0;
  56.                                 }
  57.                                 else
  58.                                 {
  59.                                         OUT2=1;//繼電器釋放
  60.                                         Delay100ms();
  61.                                         OUT2=0;
  62.                                 }
  63.                         }
  64.                 }
  65.                 else//按鍵松手
  66.                 {
  67.                         lock=0;//自鎖標(biāo)志清0
  68.                         count=0;//消抖計數(shù)清0
  69.                 }
  70.         }
  71. }
復(fù)制代碼





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1