欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機控制繼電器通斷多模式切換,求思路

[復制鏈接]
跳轉到指定樓層
樓主
ID:693676 發表于 2020-2-25 17:01 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
第一個模式設置單片機控制繼電器通斷時間50ms,確定執行,50ms后繼電器斷開。按鍵可以切換下一個模式通斷時間為100ms,以此類推可以到1000ms。請問各位大神這程序要怎么弄啊感覺要很長。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2020-2-25 20:58 | 只看該作者
給你寫一個50~1000ms遞進延時繼電器示例,按鍵與定時器互鎖。繼電器延時期間鎖按鍵
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit key=P1^0;
  5. sbit OUT=P1^7;

  6. uchar num=0;//鍵值變量
  7. uchar flag=0;//中斷標志

  8. /***********定時器初始化****************/
  9. void Timer0Init()                //50毫秒@12.000MHz
  10. {
  11.         TMOD |= 0x01;                //設置定時器模式
  12.         TH0 = 0x3C;                        //設置定時初值
  13.         TL0 = 0xB0;                        //設置定時初值
  14.         TF0 = 0;                                //清除TF0標志
  15. //        TR0 = 1;                                //定時器0開始計時
  16.         EA = 1;                                //開總中斷
  17.         ET0 = 1;                                //開T0中斷
  18. }
  19. /***********按鍵掃描程序****************/
  20. void keyscan()       
  21. {
  22.         static uchar count=0;                //消抖計數變量                       
  23.         static bit sign=0;                        //按鍵自鎖標志
  24.         if(key==0)                                                //檢測鍵按下
  25.         {                                       
  26.                 if(++count>=100 && sign==0 && TR0==0)//消抖/自鎖/與定時器互鎖
  27.                 {                       
  28.                         sign=1;
  29.                         num++;
  30.                         if(num>20)
  31.                                 num=0;
  32.                         if(num!=0)
  33.                         {
  34.                                 TR0=1;//開定時器
  35.                                 OUT=0;//閉合繼電器
  36.                         }
  37.                 }
  38.         }
  39.         else //松手
  40.         {
  41.                 count=0;                                        //消抖計數變量清0
  42.                 sign=0;                                        //按鍵自鎖標志清0
  43.         }
  44. }
  45. /***********主函數****************/
  46. void main()
  47. {
  48.         Timer0Init();
  49.         while(1)
  50.         {
  51.                 keyscan();
  52.         }
  53. }
  54. /***********中斷服務程序****************/
  55. void Timer0Interrupt() interrupt 1
  56. {
  57.         TH0 = 0x3C;
  58.         TL0 = 0xB0;
  59.         flag++;
  60.         if(flag>=num)//50~1000ms遞進
  61.         {
  62.                 flag=0;
  63.                 OUT=1;//斷開繼電器
  64.                 TR0=0;//關定時器
  65.         }
  66. }
復制代碼
回復

使用道具 舉報

板凳
ID:168996 發表于 2020-2-25 21:03 | 只看該作者
100行以內吧?
回復

使用道具 舉報

地板
ID:67356 發表于 2020-2-26 08:07 | 只看該作者
設置一個變量mode,存儲于單片機內,作為默認的繼電器通電時間,通過按鈕改變mode的數值(50,60,70,,1000ms),
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表