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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)3個(gè)按鍵靈活修改多個(gè)參數(shù)(浮點(diǎn)與整數(shù)型)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:96935 發(fā)表于 2018-5-7 12:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近寫代碼,涉及到按鍵修改參數(shù),就設(shè)計(jì)了由3個(gè)按鍵修改多個(gè)參數(shù)的程序設(shè)計(jì)。按鍵修改參數(shù),我以寫過(guò),但是有著很長(zhǎng)的代碼。最近寫了一個(gè)程序,個(gè)人感覺(jué)代碼量較少,適合使用。這里我選STC15F2K60S2單片機(jī)開(kāi)發(fā)板來(lái)寫Demo程序。
原理很簡(jiǎn)單,第一個(gè)按鍵是 調(diào)節(jié)+ 按鍵(程序IO口寫Add),第二個(gè)按鍵是 調(diào)節(jié)- 按鍵程序IO口寫Sub),第二個(gè)按鍵是 切換 按鍵(程序IO口寫Exit),也就是切換要修改的參數(shù)。然后通過(guò)Exit按鍵修改Add和Sub調(diào)節(jié)的變量,從而達(dá)到修改參數(shù)。
預(yù)先定義3個(gè)要修改的變量和操作標(biāo)志位。
  1. unsigned char Data1=0,Data2=0,Data3=0;
  2. unsigned char Handle = 1 ; //Handle  1:操作Data1,2:操作Data2,3:操作Data3
復(fù)制代碼

實(shí)現(xiàn)代碼分為3部分。
第一部分是Exit按鍵改變標(biāo)志(代碼如下)。Handle是標(biāo)志當(dāng)前修改的變量,1:操作Data1,2:操作Data2,3:操作Data3。當(dāng)按下Exit按鍵,則切操作標(biāo)志加1,到末端著回到第一個(gè),形成一個(gè)環(huán)形循環(huán)結(jié)構(gòu)。如果增加要修改的參量,要在這里加。

  1.     if(Exit==0)        //切換按鍵按下,操作位標(biāo)志改變
  2.     {
  3.     while(Exit == 0);//等待松手
  4.     if(Handle ==1)   
  5.     {
  6.         Handle=2;
  7.     }
  8.     else if(Handle == 2)   
  9.     {
  10.         Handle=3;         
  11.     }
  12.     else if(Handle == 3)   
  13.     {
  14.         Handle=1;            
  15.     }            
  16.     }
復(fù)制代碼



第二部分是根據(jù)Handle把參量的地址傳入到修改函數(shù)。如果增加要修改的參量,也是要在這里加。
switch(Handle) //選擇修改指向
{
    case 1:KeyAlterValue(&Data1);break; //Handle = 1,按鍵修改操作指針指向Data1
    case 2:KeyAlterValue(&Data2);break; //Handle = 2,按鍵修改操作指針指向Data2
    case 3:KeyAlterValue(&Data3);break; //Handle = 3,按鍵修改操作指針指向Data3
}


第三部分是調(diào)節(jié)函數(shù)。輸入?yún)?shù)是一個(gè)指針,也就是要調(diào)節(jié)的變量的地址。函數(shù)名void KeyAlterValue(unsigned char *Variate),代碼如下:
  1. void KeyAlterValue(unsigned char *Variate)
  2. {
  3.     if(Add==0)
  4.     {
  5.         while(Add ==0);      //等待松手,如果要長(zhǎng)按快速加,則注釋此句
  6.         if((*Variate)<20)    //設(shè)置調(diào)節(jié)上限為20
  7.         (*Variate)++;        //值加1
  8.     }
  9.     if(Sub==0)
  10.     {
  11.         while(Sub ==0);      //等待松手,如果要長(zhǎng)按快速減,則注釋此句
  12.         if(*Variate!=0)      //設(shè)置調(diào)節(jié)下限為0,
  13.         {
  14.             (*Variate)--;    //值減1
  15.         }
  16.     }
  17. }
復(fù)制代碼

整份代碼我都沒(méi)有設(shè)置消抖,都是直接等待松手,即類似while(Add ==0);
三部分代碼,前2部分直接扔大循環(huán)就可以實(shí)現(xiàn)3個(gè)按鍵修改多個(gè)參數(shù)。但是不能沒(méi)有顯示當(dāng)前修改的參數(shù)是什么,如果不用的話,也可以直接按一下Add或者Sub就可以知道。如果要顯示,請(qǐng)看我等下的解決辦法。對(duì)于按鍵輸入,我習(xí)慣開(kāi)個(gè)定時(shí)時(shí)間約為20ms~30ms的定時(shí)器中斷。然后把按鍵掃描或者按鍵操作的程序放進(jìn)定時(shí)器中斷中,這樣按鍵響應(yīng)是非常快的。但是定時(shí)器中斷不能跑時(shí)間很長(zhǎng)的代碼,原因你們應(yīng)該都懂得。這里我使用定時(shí)器0,設(shè)置20ms。
因?yàn)槭前存I操作,定時(shí)器中斷代碼如下。KeyAction()函數(shù)體集合第一部分和第二部分代碼。關(guān)閉定時(shí)器0中斷是防止還在處理按鍵的時(shí)候再次來(lái)中斷。重新裝初值是避免定時(shí)時(shí)間減少。
  1. void T0Service() interrupt 1
  2. {
  3.     ET0 = 0;        //關(guān)閉定時(shí)器0中斷
  4.     TR0 = 0;                //定時(shí)器0開(kāi)始計(jì)時(shí)   
  5.     KeyAction();    //修改參數(shù)      
  6.     TL0 = 0x00;                //設(shè)置定時(shí)初值
  7.     TH0 = 0x70;                //設(shè)置定時(shí)初值
  8.     TR0 = 1;                //定時(shí)器0開(kāi)始計(jì)時(shí)   
  9.     ET0 = 1;        //開(kāi)啟定時(shí)器0中斷
  10. }
復(fù)制代碼


至此,響應(yīng)很快的3個(gè)按鍵修改參量已經(jīng)可以完成。

上述是修改整形參數(shù)的,如果要修改浮點(diǎn)型的,請(qǐng)修改要修改的類型為float,然后把KeyAlterValue的類型也改為float在其內(nèi)部的自加語(yǔ)句改為需要按下增加的精度就好,Dome程序是以0.1為例,沒(méi)有松手等待。


Dome程序 參數(shù)為浮點(diǎn)型.zip

50.43 KB, 下載次數(shù): 40, 下載積分: 黑幣 -5

Dome程序 參數(shù)為整數(shù).zip

45.82 KB, 下載次數(shù): 52, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:331928 發(fā)表于 2018-5-17 10:32 | 只看該作者
看看學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

板凳
ID:370667 發(fā)表于 2018-7-13 09:23 | 只看該作者
這里的代碼如何寫?請(qǐng)教!
回復(fù)

使用道具 舉報(bào)

地板
ID:384956 發(fā)表于 2018-8-10 12:57 | 只看該作者
好思路學(xué)些了,謝謝
回復(fù)

使用道具 舉報(bào)

5#
ID:273583 發(fā)表于 2018-8-13 11:09 | 只看該作者
很好,有啟發(fā)!
回復(fù)

使用道具 舉報(bào)

6#
ID:96935 發(fā)表于 2018-8-27 22:41 | 只看該作者
denny1011 發(fā)表于 2018-7-13 09:23
這里的代碼如何寫?請(qǐng)教!

簡(jiǎn)單的C語(yǔ)言代碼而已,應(yīng)該很容易看懂。
回復(fù)

使用道具 舉報(bào)

7#
ID:275854 發(fā)表于 2018-8-28 09:48 來(lái)自手機(jī) | 只看該作者
很厲害的樣子,學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

8#
ID:361213 發(fā)表于 2018-10-17 10:28 | 只看該作者
思路不錯(cuò),學(xué)到了
回復(fù)

使用道具 舉報(bào)

9#
ID:373813 發(fā)表于 2018-10-31 12:49 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

10#
ID:66287 發(fā)表于 2018-10-31 14:17 | 只看該作者
期待,謝謝分享!
回復(fù)

使用道具 舉報(bào)

11#
ID:230847 發(fā)表于 2018-10-31 14:50 來(lái)自手機(jī) | 只看該作者
學(xué)習(xí)學(xué)習(xí),謝謝
回復(fù)

使用道具 舉報(bào)

12#
ID:265468 發(fā)表于 2018-11-3 18:12 | 只看該作者
很好!多謝!
回復(fù)

使用道具 舉報(bào)

13#
ID:303892 發(fā)表于 2018-11-4 09:23 | 只看該作者
學(xué)習(xí)學(xué)習(xí),謝謝
回復(fù)

使用道具 舉報(bào)

14#
ID:422833 發(fā)表于 2018-12-18 20:18 | 只看該作者
厲害啊啊啊
回復(fù)

使用道具 舉報(bào)

15#
ID:385506 發(fā)表于 2019-3-21 22:53 | 只看該作者
學(xué)習(xí),謝謝樓主分享。
回復(fù)

使用道具 舉報(bào)

16#
ID:65956 發(fā)表于 2019-3-22 08:53 | 只看該作者
方法不錯(cuò),學(xué)習(xí)學(xué)習(xí),謝謝分享
回復(fù)

使用道具 舉報(bào)

17#
ID:349986 發(fā)表于 2019-3-22 11:29 | 只看該作者
真棒
回復(fù)

使用道具 舉報(bào)

18#
ID:343102 發(fā)表于 2019-3-22 12:46 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

19#
ID:228022 發(fā)表于 2019-3-22 13:27 | 只看該作者
學(xué)習(xí)一下,感謝LZ分享!
回復(fù)

使用道具 舉報(bào)

20#
ID:497468 發(fā)表于 2019-3-24 20:03 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

21#
ID:476909 發(fā)表于 2019-7-23 16:22 | 只看該作者
學(xué)習(xí)了,不錯(cuò)的思路
回復(fù)

使用道具 舉報(bào)

22#
ID:406505 發(fā)表于 2020-3-27 10:46 | 只看該作者
學(xué)習(xí),和我想要的功能和點(diǎn)出入,
回復(fù)

使用道具 舉報(bào)

23#
ID:282626 發(fā)表于 2020-8-18 18:13 | 只看該作者
很簡(jiǎn)捷,有啟發(fā),學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产激情视频网 | 九七午夜剧场福利写真 | 久草网站| 亚洲狠狠爱一区二区三区 | 二区三区视频 | 一级做a爰片性色毛片视频停止 | 久久中文一区二区 | 国产91黄色| 毛片一级网站 | 成年无码av片在线 | 精品国产一区二区三区四区在线 | 狠狠操电影 | 天堂久久久久久久 | 夜夜草天天草 | 黑色丝袜三级在线播放 | 久久久精品网 | 日韩三| 久久噜噜噜精品国产亚洲综合 | 青青久久 | 日韩av中文 | 亚洲精品一区二区冲田杏梨 | 91亚洲一区 | 婷婷久久五月 | av性色全交蜜桃成熟时 | 久久久久久久一区二区三区 | 国产精品亚洲精品 | 久久国内精品 | 国产精品揄拍一区二区久久国内亚洲精 | 欧美一级免费观看 | 涩涩视频在线观看 | 狠狠躁躁夜夜躁波多野结依 | 欧美日韩精品久久久免费观看 | 一区在线观看视频 | 欧美高清一级片 | www.蜜桃av | 在线午夜| 欧美极品在线视频 | 一区在线播放 | 国产欧美视频一区 | 久久久亚洲精品视频 | 日韩一区二区三区视频 |