|
IdeaMing 發(fā)表于 2022-3-8 14:47 好的 謝謝 |
|
設(shè):X是16進(jìn)制有符號數(shù),需要轉(zhuǎn)成10進(jìn)制并在LED7-0(由高到低的8位數(shù)碼管)上顯示。 方案: 1、設(shè)置S7-0:8個寄存器(或存儲器),存放X的絕對值的BCD碼,SS是符號標(biāo)記(1=負(fù),0=正)。 2、設(shè)置Y7-Y0:8個寄存器(或存儲器),對應(yīng)存放S7-0段位譯碼值(數(shù)值依據(jù)LED的引腳譯碼,送屏后直接能顯示Sx的對應(yīng)數(shù)字)。 3、設(shè)置BF7-0:8個閃動標(biāo)記位,對應(yīng)LED7-0是否需要閃動,1閃。例如:全不閃BF7-0=00000000;需要第2位閃BF7-0=01000000;需要首末位閃BF7-0=10000001。 4、LED顯示掃描程序(注:閃動是在此程序中實現(xiàn)的,這里從略。):從Y7-Y0取數(shù)據(jù)送屏顯示。 程序步驟(當(dāng)X有變化時才做): 1、將X進(jìn)行16進(jìn)制→10制計算,絕對值入S7-0。【注:小數(shù)點的表示方式這里略去,負(fù)數(shù)的顯示方式以下也略去】 2、譯碼:從S7至S0順序譯碼。并設(shè)立一個首0標(biāo)記:FE0 = 0/1 = 0顯示0/0顯示空,譯碼開始時置 FE0 = 1。【注:這是關(guān)鍵!!!】 3、譯碼規(guī)則:【注:這是關(guān)鍵!!!】 3.1、當(dāng)Sx=0時,如果FE0 = 0,正常譯碼。如果FE0 = 1,將“0”譯成空(即:Yx=11111111,0亮1不亮的驅(qū)動。反之是Yx=00000000)。 3.2、當(dāng)Sx<>0時,正常譯碼,并清FE0 = 0(阻止之后將“0”譯成空)。 3.3、末位S0必須正常譯碼(即必須譯成0-9,無論FE0是0是1,防止X=0時,LED7-0顯示全空)。 |
| 先以你想到的方法來做,做出來就是了,程序就是為了達(dá)到目的,這個目的并不難,你要先自己弄出來一個,然后去優(yōu)化 |
| 加一個標(biāo)志位吧,計數(shù)一共收到幾個數(shù)字,這樣你也就知道最高位是誰了,同時收到數(shù)字也不用8位全左移了。 |
| 在顯示那里修改,從最高位開始,如果是0、并且不是個位數(shù),就不顯示該位。 |
Powered by 單片機(jī)教程網(wǎng)