0

0 ~ 1023 の範囲の数値を生成するために回転できるポテンショメータから値を読み取っています。これらの数値を LCD 画面に横棒グラフで表示できるようにしたいと考えています。LCD 画面の幅は 20 ブロックなので、0 ~ 1023 を 0 ~ 20 に縮小する必要があります。棒グラフを作成するために使用したい文字は、使用可能な 20 個のブロックのうち 1 個全体を埋めるブロックです。このブロックのビット パターンは0b11110001.

   block = 0b11110001; 
   BarGraph = ((DELVAL2/5115)*2000);

   lcd_putxy(2,0,buf);
   for (delay = 0; delay < 50000; delay++);      // introduce a delay 

   sprintf(buf, "*", BarGraph); 
   lcd_putxy(2,0,buf);

これを達成する方法と、ポテンショメータの値を縮小するための最良の方法を誰かが説明してくれることを望んでいました.

4

2 に答える 2

1

あなたの計算は間違っています

 BarGraph = ((DELVAL2/5115)*2000);

DELVAL2 は 0 ~ 1023 です。それを 5115 で割ると、0 と 1 の間の値が得られます。おそらく 0 にキャストされます。0 を 2000 で乗算しても 0 のままです。

最初に乗算してから除算してみてください。

BarGraph = (DELVAL2*2000/5115);

印刷にも

 sprintf(buf, "*", BarGraph); 

動作しないでしょう。buf 配列にシンボルを配置するには、sprintf 関数または単純な使用ループを参照してください。

于 2016-12-14T21:34:52.703 に答える