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

QQ登錄

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

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

單片機(jī)旋轉(zhuǎn)編碼器程序調(diào)試問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:232366 發(fā)表于 2021-12-31 15:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
論壇的各位老鐵你們好。!向你們請(qǐng)教幾個(gè)問(wèn)題。

uint8 integer=0;//整數(shù)
uint8 decimals=0;//小數(shù)

是這樣的我搞了一個(gè)旋轉(zhuǎn)編碼器 想法是這樣的:就是說(shuō)使用4數(shù)碼管來(lái)顯示旋轉(zhuǎn)編碼器的值分為整數(shù)位和小數(shù)位,編碼器控制decimals小數(shù)變量加加和減減實(shí)現(xiàn)目的是小數(shù)每加到99,integer整數(shù)步進(jìn)加1。搞來(lái)搞來(lái)整數(shù)怎么也加不上去  小數(shù)減也減不回來(lái)。思路倒是有小數(shù)每到99整數(shù)加1 小數(shù)往回減99整數(shù)減1在程序上怎么也寫不出來(lái)實(shí)現(xiàn)不出來(lái)看來(lái)我還是道行潛了,所以來(lái)請(qǐng)教請(qǐng)教論壇的老鐵們,感激不盡。
下面這函數(shù)是我的旋轉(zhuǎn)編碼器的一個(gè)服務(wù)函數(shù):


void ROTARY_ROTARY_Service()//旋轉(zhuǎn)編碼器服務(wù)函數(shù)放到主循環(huán)里循環(huán)調(diào)用
{
        static xdata uint8 Count=0;

        Count++;
        
        if(Count>=250)
        {
                Count=0;
               
                switch(Read_ROTATE_Data)
                {
                        case(1)://左轉(zhuǎn)
                                        decimals--;
                                        if(decimals>=99)
                                        {
                                                decimals=99;
                                        }
                                        Read_ROTATE_Data=0;
                                                                                                break;
                        case(2)://右轉(zhuǎn)
                                        decimals++;
                                        if(decimals>=99)
                                        {
                                                decimals=0;
                                        }
                                        Read_ROTATE_Data=0;
                                                                                                break;
                        default:break;
                }
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:8222 發(fā)表于 2021-12-31 18:46 | 只看該作者
  switch(Read_ROTATE_Data)
                {
                        case(1)://左轉(zhuǎn)
                                        decimals++;
                                        if(decimals>=99)
                                        {
                                                decimals=99;
                                        }
                                        Read_ROTATE_Data=0;
                                                                                                break;
                        case(2)://右轉(zhuǎn)
                                        decimals--;
                                        if(decimals<=0)
                                        {
                                                decimals=0;
                                        }
                                        Read_ROTATE_Data=0;
                                                                                                break;
                        default:break;
                }
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2021-12-31 20:51 | 只看該作者
如果按編碼器的一個(gè)脈沖算1,用整數(shù)計(jì)算較好。char型變量范圍127~-128,int型變量范圍32767~-32768。數(shù)碼管顯示時(shí)在相應(yīng)的位加小數(shù)點(diǎn)即可。
回復(fù)

使用道具 舉報(bào)

地板
ID:844772 發(fā)表于 2022-1-1 18:26 | 只看該作者
我也覺(jué)得小數(shù)在顯示時(shí)考慮就行,不用分開(kāi)計(jì)算,不過(guò)你要分開(kāi)計(jì)算小數(shù),可以試試下面改法。
                        case(1)://左轉(zhuǎn)
                                       
                                        if(decimals=0)
                                        {      if (integer>0)
                                                 {integer--;
                                                 decimals=99;
                                                 }
                                        }else
                                          decimals--;      
                                        Read_ROTATE_Data=0;
                                         break;
                        case(2)://右轉(zhuǎn)
                                       
                                        if(decimals=99)
                                        {       integer++;
                                                decimals=0;
                                        }else decimals++;
                                        Read_ROTATE_Data=0;
                                        break;
                        default:break;
                }
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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