找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1640|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

請求高人幫助 磁保持繼電器的驅(qū)動程序如何編寫?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:261455 發(fā)表于 2020-4-9 14:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


見圖。本人初學(xué)單片機,想寫一個這個程序,由于才疏學(xué)淺,無法實現(xiàn),請高人幫助指導(dǎo)一下,不勝感激,謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 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ù)制代碼
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表