AVR 115 :表示関係のノウハウ


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

inserted by FC2 system