找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機雙聯(lián)開關(guān)按鍵輕觸檢測程序的分析

查看數(shù): 1844 | 評論數(shù): 2 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2019-9-26 15:43

正文摘要:

我用的的是雙聯(lián)開關(guān)有個輕觸功能,1和2接  P1.6輸出高電平,P1.7輸出低電平,1和3接  全部關(guān)閉,1和2接時  輕觸一下,1和2斷開然后松開閉合,,狀態(tài)改變 P1.6輸出低電平,P1.7輸出高 ...

回復(fù)

ID:586438 發(fā)表于 2019-9-27 17:06
wulin 發(fā)表于 2019-9-27 09:33
樓主這個開關(guān)相當(dāng)于有3種狀態(tài):1.A-B通穩(wěn)態(tài),2.A-B-C都互不通暫態(tài),3.A-C通穩(wěn)態(tài),給你寫個示例。
程序功能 ...

非常感謝  完美實現(xiàn)了我需要的現(xiàn)象,這種邏輯思維真的好清晰,我在這邏輯里經(jīng)常把自己繞混。再次感謝   
ID:213173 發(fā)表于 2019-9-27 09:33
樓主這個開關(guān)相當(dāng)于有3種狀態(tài):1.A-B通穩(wěn)態(tài),2.A-B-C都互不通暫態(tài),3.A-C通穩(wěn)態(tài),給你寫個示例。
程序功能:加電判斷開關(guān)初始狀態(tài)確定輸出狀態(tài)
          輕按一下,開關(guān)狀態(tài)1-2-1,輸出狀態(tài)取反。再輕按一下,開關(guān)狀態(tài)1-2-1,輸出狀態(tài)恢復(fù)。
          重按一下,開關(guān)狀態(tài)1-2-3,輸出清0。再重按一下,開關(guān)狀態(tài)3-2-1,輸出恢復(fù)到第一次重按之前狀態(tài)。
  1. #include <reg51.h>

  2. sbit k1=P3^1;
  3. sbit k2=P3^0;
  4. sbit p16=P1^6;
  5. sbit p17=P1^7;

  6. bit flag=0;//聲明開關(guān)狀態(tài)標(biāo)志

  7. void main()
  8. {
  9. //加電識別開關(guān)初始狀態(tài)
  10.         if(!k1)
  11.         {
  12.                 p16=1;
  13.                 p17=0;
  14.         }
  15.         if(!k2)
  16.         {
  17.                 p16=0;
  18.                 p17=0;
  19.         }
  20. //主循環(huán)
  21.         while(1)
  22.         {
  23.                 if(k1==1&&k2==1)//判斷開關(guān)有操作動作
  24.                 {
  25.                         flag=~flag;        //記憶操作狀態(tài),
  26.                         while(1)                //等待操作結(jié)果
  27.                         {
  28.                                 if(k1==0&&flag==1)
  29.                                 {
  30.                                         p16=0;
  31.                                         p17=1;
  32.                                         break;                //跳出循環(huán)
  33.                                 }
  34.                                 if(k1==0&&flag==0)
  35.                                 {
  36.                                         p16=1;
  37.                                         p17=0;
  38.                                         break;                //跳出循環(huán)
  39.                                 }
  40.                                 if(k2==0)
  41.                                 {
  42.                                         p16=0;
  43.                                         p17=0;
  44.                                         break;                //跳出循環(huán)
  45.                                 }
  46.                         }
  47.                 }
  48.         }
  49. }
復(fù)制代碼

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

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

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