我想編程我自己的版本的變差表示爬升和水槽以米/秒爲單位。這些值顯示在LCD模塊屏幕上。在程序運行時,可以通過旋轉的電位計縮小爬升值和吸入值。要顯示的爬升值範圍從climb: 0 m/s
到climb: 300 m/s
,並且下降值範圍從sink: 0 m/s
到sink: -300 m/s
。這一點很好。顛倒C條形圖的方向
我現在要做的就是以零點在中心的條形圖的形式顯示它們。當climb
增加到300時,零點右側的塊從左到右填充。當sink
值減少到-300時,我希望零點左側的塊從右向左填充,實質上反轉右側的方向。
climb = (DELVAL*600ul + 1023/2)/1023;
sink = (DELVAL*600ul + 1023/2)/1023;
climb2 = ((DELVAL-511.5)*600ul + 1023/2)/1023;
sink2 = ((DELVAL+511.5)*600ul + 1023/2)/1023;
if (DELVAL > 511.5)
{
sprintf(buf, "Climb: +%d m/s ", climb-300);
lcd_putxy(2,0,buf);
for (delay = 0; delay < 50000; delay++);
}
if (DELVAL < 511.5)
{
sprintf(buf, "Sink: -%d m/s ", ~sink+300);
lcd_putxy(2,0,buf);
for (delay = 0; delay < 50000; delay++);
}
character1 = climb2/35;
character2 = sink2/35;
lcd_move(1,10);
for (i = 0; i < character1; i++)
{
lcd_putchar(0xD0);
}
lcd_putstr(" ");
for (delay = 0; delay < 50000; delay++);
lcd_move(1,2);
for (i = 0; i < character2; i++)
{
lcd_putchar(0xD0);
}
for (delay = 0; delay < 50000; delay++);
DELVAL
是從電位器讀取的數據。我可以讓條形圖的右側工作,但不能讓左側工作。任何人都可以讓我知道我的代碼的任何問題,並解釋讓左側工作的最佳方法。
在我的代碼中不工作的部分是包含character2
的for循環。
您需要添加一些所需輸出示例。例如,在休息時(零爬/下沉),你可能需要'░░░░█░░░░';最大爬升量爲'█████',最大量爲'█████░░░░'。或類似的東西。您可以複製粘貼Unicode [block element](https://en.wikipedia.org/wiki/Block_Elements)或[box drawing](https://en.wikipedia.org/wiki/Box-drawing_character)字符維基百科頁面。還有StackOverflow [markdown編輯幫助](http://stackoverflow.com/editing-help)。 –
您正在使用哪種LCD控制器? – Uint32
@NominalAnimal你擁有它的方式正是我想要的。唯一的區別是中間零點需要一個更大的塊字符。我有右手側的工作,但一旦進入左側'水槽'側,液晶顯示器將在屏幕上顯示塊。 –