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

QQ登錄

只需一步,快速開始

搜索
查看: 3090|回復(fù): 12
收起左側(cè)

單片機(jī)AD結(jié)果送數(shù)碼管顯示,相鄰的數(shù)字來(lái)回跳動(dòng)顯示,如何處理?

  [復(fù)制鏈接]
ID:686513 發(fā)表于 2022-3-5 12:16 | 顯示全部樓層 |閱讀模式
例如將0-1.25v電壓送單片機(jī)的AD,數(shù)碼管顯示在兩個(gè)數(shù)的臨界點(diǎn)上時(shí)(如:在7-8的臨界點(diǎn)上,數(shù)碼管顯示7或8 ,來(lái)回跳動(dòng)),怎樣處理跳動(dòng),使其顯示幾就是幾,不再跳動(dòng)!AD結(jié)果我試過(guò)求平均法并通過(guò)查表法顯示,還是有跳動(dòng)!
回復(fù)

使用道具 舉報(bào)

ID:554500 發(fā)表于 2022-3-5 16:04 | 顯示全部樓層
進(jìn)行數(shù)字濾波,常用冒泡排序法
回復(fù)

使用道具 舉報(bào)

ID:488334 發(fā)表于 2022-3-5 20:14 | 顯示全部樓層
1、最終的AD值采用平均值,比如采集32次相加,最后取平均值。
2、軟件上設(shè)置一個(gè)跳動(dòng)余量,當(dāng)前的AD平均值和上次的AD平均值對(duì)比,如果差值小于自己的設(shè)定的跳動(dòng)余量,則不刷新AD值
3、設(shè)置數(shù)碼管刷新時(shí)間,比如0.5秒刷新一次數(shù)碼管。
總之有很多方法可以限制數(shù)碼管頻繁跳動(dòng),我一般都是把三種方式一起用
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-3-5 21:44 | 顯示全部樓層
AD采樣,必然是有跳動(dòng)的,
但是,如果你認(rèn)為他是穩(wěn)定的,比如通過(guò)ADC測(cè)量室溫,通常溫度不會(huì)頻繁變化。
此時(shí),可以設(shè)置一個(gè)策略,比如: 17,18 度反復(fù)跳變 超過(guò)5次,則進(jìn)入“遲鈍狀態(tài)”(即溫度假想為 18 度,不再變動(dòng))只有當(dāng)溫度超過(guò)19,或者低于16,才再次進(jìn)入“敏銳”狀態(tài)。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-3-5 22:42 | 顯示全部樓層
ADC是一定會(huì)跳動(dòng)的,這是絕對(duì)的,ADC本身就是有一個(gè)上下浮動(dòng)的誤差
2#已經(jīng)給出正確的方法了
我這個(gè)代碼你參考一下,是參考,不是照抄        float Bat_Voltage,i;
        Bat_Voltage=(float)1.19*1024/ADC_data_bat;                                                                //STC8G的內(nèi)部參考電壓為1.19V
        i=Bat_Voltage-Last_Voltage;                         //本次電壓值和上次電壓進(jìn)行比較,Last_Voltage為全局變量
        i=fabs(i);
        if(i>0.05)                                                                                                                                //電壓變化值超過(guò)0.05V才進(jìn)行處理
        {
                Last_Voltage=Bat_Voltage;

處理;
}
回復(fù)

使用道具 舉報(bào)

ID:686513 發(fā)表于 2022-3-8 16:27 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-3-5 22:42
ADC是一定會(huì)跳動(dòng)的,這是絕對(duì)的,ADC本身就是有一個(gè)上下浮動(dòng)的誤差
2#已經(jīng)給出正確的方法了
我這個(gè)代碼你參 ...

Bat_Voltage=(float)1.19*1024/ADC_data_bat; 這個(gè)應(yīng)該是反了吧?應(yīng)該ADC數(shù)據(jù)/1024吧?Bat_Voltage=(float)1.19*ADC_data_bat/1024;
回復(fù)

使用道具 舉報(bào)

ID:1008839 發(fā)表于 2022-3-8 16:33 | 顯示全部樓層
很多原因會(huì)產(chǎn)生跳動(dòng)啊
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-3-8 18:29 | 顯示全部樓層
zhth1979 發(fā)表于 2022-3-8 16:27
Bat_Voltage=(float)1.19*1024/ADC_data_bat; 這個(gè)應(yīng)該是反了吧?應(yīng)該ADC數(shù)據(jù)/1024吧?Bat_Voltage=(floa ...

大哥,我不是說(shuō)參考,不要照抄了嗎?
我這個(gè)是通過(guò)內(nèi)部參考電壓來(lái)計(jì)算電源電源的,不是計(jì)算IO端口的電壓呀
只想給你看一下怎么處理而已
要是我有話,我是不可能等上那么多天的,這幾天的時(shí)間,我至少上網(wǎng)找相關(guān)資料一百遍了,至少改代碼100次以上了
回復(fù)

使用道具 舉報(bào)

ID:800866 發(fā)表于 2022-3-10 15:08 | 顯示全部樓層
我這里說(shuō)明一下我做AD采集時(shí)候的思路,你可以設(shè)置一個(gè)需要AD數(shù)據(jù)的間隔時(shí)間,時(shí)間越長(zhǎng),跳動(dòng)越小,當(dāng)然AD采集就不及時(shí)了,所以個(gè)時(shí)間可以根據(jù)實(shí)際情況而定;因?yàn)楝F(xiàn)在AD單次轉(zhuǎn)換的速度都是比較快的,這樣就是每一次想要AD數(shù)據(jù)的時(shí)候,在很短的時(shí)間內(nèi)可以連續(xù)采集N次AD值,然后去掉最大值和最小值,然后再取平均數(shù)值,然后在和余量值比較(這個(gè)值可以自己多試幾次,看看效果,取一個(gè)數(shù)就行),在余量之內(nèi),就不更新AD數(shù)據(jù);超過(guò)余量值,就更新AD數(shù)據(jù);
回復(fù)

使用道具 舉報(bào)

ID:341453 發(fā)表于 2022-3-10 15:57 | 顯示全部樓層
跳動(dòng)是必然的,不過(guò)可以提高分辨率,例如提高采樣結(jié)果到1.456,你只顯示1.45,可以減少跳動(dòng)出現(xiàn)。
回復(fù)

使用道具 舉報(bào)

ID:1009505 發(fā)表于 2022-3-10 16:22 | 顯示全部樓層
四舍五入?不要讓范圍波動(dòng)?
回復(fù)

使用道具 舉報(bào)

ID:415064 發(fā)表于 2022-3-10 16:47 | 顯示全部樓層
窗口,在臨界值附近時(shí),變化必須大于多少才能顯示
回復(fù)

使用道具 舉報(bào)

ID:121859 發(fā)表于 2022-3-10 18:10 | 顯示全部樓層
出現(xiàn)跳動(dòng)是因?yàn)槟鉇D檢測(cè)的結(jié)果前后兩次不同所致。要靈敏度,跳動(dòng)是無(wú)法避免的,除非犧牲靈敏度。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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