LED等の表示器でふら付く場合の処理ヒント
周波数カウンタの表示はゲートの関係でとなりの数と変り、数字がチラツキ見難くなります。 この場合、普通ゲート時間を伸ばし桁下を切り捨てて対応させるのが普通です ここでアイデアですが「差が1以下なら正常と判断して表示を変更しない」事にすれば表示が大幅に安定します。 2以上変化した場合は通常の処理(表示)をさせる、この場合変更は最低2ステップ以上で変化する様になる。これでも容認出来る場合は利用すると表示は一段と安定する。 周波数カウンタ用としたが、これは温度計とか電圧計でも応用出来るはずだ! 以前はプール式を使っていたが、今回の方法は処理が簡単で早く使い道も広い。 前回測定のDATA(16Bit)と比較して差が1以下なら何もしないで変換部分をパスする。 SW_foを付けてこれをチエックして、m3に飛ばせばこのプログラムを飛ばせるので通常動作と切り替えて使う事も出来ます。 --------------------------------------------------------------- ; D_Low.D_Midは測定DATA、back1.back2は保存DATA ; SWがセットしてある(Low)と比較部分をパスして通常動作。 sbis PinD,SW_fo ;SW ? ck rjmp m3 ;SW on to Pass m1: mov temp,D_Low ;(DATA_Low.Mid)-(back1.2)を実行 mov btemp,D_Mid sub temp,back1 sbc btemp,back2 ; brcc m2 neg temp ;引き切れない時は差の数字を逆にする m2: cpi temp,2 ;絶対値は 2 以下か ? brcs m4 ;yes to Display(0or1) mov back1,D_Low ;2以上の時保存してDATA変換をする mov back2,D_Mid m3: rcall BinBCD ;binary to BCD m4: ;BinLow.BinMidのDATAを表示するこれは共通 --------------------------------------------------------------- 2004/DEC/19 |
もどる [MAIN MENU]