標(biāo)題: 我是小白,求思路,如何用at89c52將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),后在LCD上顯示 [打印本頁]

作者: 丟車保帥    時間: 2023-11-5 23:24
標(biāo)題: 我是小白,求思路,如何用at89c52將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),后在LCD上顯示
我是小白,求思路,如何用at89c52將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制,然后在LCD上顯示
作者: rayin    時間: 2023-11-6 07:31
與10進(jìn)制顯數(shù)方法一樣的, 向右位移4位,每位數(shù)取余,然后每位根據(jù)余數(shù)值顯示0-f.
作者: zhuls    時間: 2023-11-6 07:51
給你思路,8位(1字節(jié))10進(jìn)制的高4位是10,低4位是1,16制制的高4位是16,低4 位是1


作者: man1234567    時間: 2023-11-6 08:14
將十進(jìn)制數(shù)除以16,得到結(jié)果后在LCD上顯示就可以
作者: hi等你    時間: 2023-11-6 08:53
我是高手,求問題,這十進(jìn)制數(shù)字有多少位?個位還是百位還是千位,還是上億?

您給我分辨率多大的LCD?
作者: TTL.    時間: 2023-11-6 08:54
把十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制在轉(zhuǎn)換成字符串,在輸出到lcd上就行了。




給你個參考程序:
/*八位無符號整型->字符串(十六進(jìn)制)*/
void u82str(u8* x,u8* Str,u8 lenth)
{
        u8 i;
        for(i=0;i<lenth;i++)
        {
                *(Str+2*i)   = (*(x+i)/16<=9)?(*(x+i)/16+'0'):(*(x+i)/16-10+'A');
                *(Str+2*i+1) = (*(x+i)%16<=9)?(*(x+i)%16+'0'):(*(x+i)%16-10+'A');
        }
        *(Str+2*lenth) = '\0';
}
作者: IdeaMing    時間: 2023-11-6 08:58
思路就是
1、先在屏幕上實現(xiàn)畫點
2、將0-F取模并且能在屏幕上顯示
3、DecToHex需要自己實現(xiàn)
4、屏幕顯示
作者: lkc8210    時間: 2023-11-6 09:00
Hex_H =Uchar_dat/16;
Hex_L = Uchar_dat%16;
作者: Hephaestus    時間: 2023-11-6 13:41
我覺得樓主未能理解十進(jìn)制和二進(jìn)制的區(qū)別。應(yīng)該舉例說明原始數(shù)據(jù)和想顯示的數(shù)據(jù)。
作者: 丟車保帥    時間: 2023-11-6 13:50
在LCD1602上先顯示所要計算的四位十六進(jìn)制數(shù),然后在第二行輸出計算后的十進(jìn)制數(shù),想法是這樣的
作者: 金玉之食    時間: 2023-11-6 15:52
按你這個說法是已經(jīng)知道十六進(jìn)制數(shù)了,現(xiàn)在想問的是如何顯示嗎?這個你去搜如何控制LCD1602或者看看數(shù)據(jù)手冊通過指令去控制輸出就好了
作者: Hephaestus    時間: 2023-11-6 18:08
丟車保帥 發(fā)表于 2023-11-6 13:50
在LCD1602上先顯示所要計算的四位十六進(jìn)制數(shù),然后在第二行輸出計算后的十進(jìn)制數(shù),想法是這樣的

你還是舉例說明吧,比如有個“四位十六進(jìn)制數(shù)”0x7fff,你想顯示32767???還是別的什么東西,你現(xiàn)在這么說沒人能看懂。
作者: 丟車保帥    時間: 2023-11-6 21:44
那我舉個例子,我輸四位十進(jìn)制數(shù)2222,然后轉(zhuǎn)換成十六進(jìn)制數(shù)8AE,最后在LCD上顯示
作者: Hephaestus    時間: 2023-11-6 21:58
丟車保帥 發(fā)表于 2023-11-6 21:44
那我舉個例子,我輸四位十進(jìn)制數(shù)2222,然后轉(zhuǎn)換成十六進(jìn)制數(shù)8AE,最后在LCD上顯示

那就根本不用轉(zhuǎn)換,原始數(shù)據(jù)是0,按2,原始數(shù)據(jù)變成2,再按2,原始數(shù)據(jù)*10加上剛剛輸入的2,……如此反復(fù)就可以了。你是不明白2222在內(nèi)存里面就是8AE,不要轉(zhuǎn)換。
作者: longwu357    時間: 2023-11-8 10:16
結(jié)合2樓和14樓的回答就能搞定了。14樓:數(shù)據(jù)在內(nèi)存里都是二進(jìn)制存儲的,不存在十進(jìn)制和16進(jìn)制的轉(zhuǎn)換問題,這個是前提要理解。LCD上的東西只是給人看的,是按照單個字符逐一顯示出來的。所以你想在LCD上顯示一個數(shù)據(jù),不管用什么進(jìn)制顯示,只要按照進(jìn)制取出每一位字符,然后逐一顯示出來就行了。二樓通過移位的方式可以很方便的滿足一個數(shù)據(jù)取16進(jìn)制的各位字符,如果是10進(jìn)制,那就是不斷除以10取余就可以了。
作者: 圣博朗西斯    時間: 2023-11-13 15:17
程序里面的十進(jìn)制你可以直接轉(zhuǎn)化的




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1