找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3108|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

我是小白,求思路,如何用at89c52將十進制數(shù)轉(zhuǎn)換為十六進制數(shù),后在LCD上顯示

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1090450 發(fā)表于 2023-11-5 23:24 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
我是小白,求思路,如何用at89c52將十進制數(shù)轉(zhuǎn)換為十六進制,然后在LCD上顯示

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:517951 發(fā)表于 2023-11-6 07:31 | 只看該作者
與10進制顯數(shù)方法一樣的, 向右位移4位,每位數(shù)取余,然后每位根據(jù)余數(shù)值顯示0-f.
回復(fù)

使用道具 舉報

板凳
ID:69038 發(fā)表于 2023-11-6 07:51 | 只看該作者
給你思路,8位(1字節(jié))10進制的高4位是10,低4位是1,16制制的高4位是16,低4 位是1

回復(fù)

使用道具 舉報

地板
ID:584814 發(fā)表于 2023-11-6 08:14 | 只看該作者
將十進制數(shù)除以16,得到結(jié)果后在LCD上顯示就可以
回復(fù)

使用道具 舉報

5#
ID:996773 發(fā)表于 2023-11-6 08:53 | 只看該作者
我是高手,求問題,這十進制數(shù)字有多少位?個位還是百位還是千位,還是上億?

您給我分辨率多大的LCD?
回復(fù)

使用道具 舉報

6#
ID:819526 發(fā)表于 2023-11-6 08:54 | 只看該作者
把十進制數(shù)轉(zhuǎn)換成十六進制在轉(zhuǎn)換成字符串,在輸出到lcd上就行了。




給你個參考程序:
/*八位無符號整型->字符串(十六進制)*/
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';
}
回復(fù)

使用道具 舉報

7#
ID:276663 發(fā)表于 2023-11-6 08:58 | 只看該作者
思路就是
1、先在屏幕上實現(xiàn)畫點
2、將0-F取模并且能在屏幕上顯示
3、DecToHex需要自己實現(xiàn)
4、屏幕顯示
回復(fù)

使用道具 舉報

8#
ID:161164 發(fā)表于 2023-11-6 09:00 | 只看該作者
Hex_H =Uchar_dat/16;
Hex_L = Uchar_dat%16;
回復(fù)

使用道具 舉報

9#
ID:883242 發(fā)表于 2023-11-6 13:41 | 只看該作者
我覺得樓主未能理解十進制和二進制的區(qū)別。應(yīng)該舉例說明原始數(shù)據(jù)和想顯示的數(shù)據(jù)。
回復(fù)

使用道具 舉報

10#
ID:1090450 發(fā)表于 2023-11-6 13:50 | 只看該作者
在LCD1602上先顯示所要計算的四位十六進制數(shù),然后在第二行輸出計算后的十進制數(shù),想法是這樣的
回復(fù)

使用道具 舉報

11#
ID:1088099 發(fā)表于 2023-11-6 15:52 | 只看該作者
按你這個說法是已經(jīng)知道十六進制數(shù)了,現(xiàn)在想問的是如何顯示嗎?這個你去搜如何控制LCD1602或者看看數(shù)據(jù)手冊通過指令去控制輸出就好了
回復(fù)

使用道具 舉報

12#
ID:883242 發(fā)表于 2023-11-6 18:08 | 只看該作者
丟車保帥 發(fā)表于 2023-11-6 13:50
在LCD1602上先顯示所要計算的四位十六進制數(shù),然后在第二行輸出計算后的十進制數(shù),想法是這樣的

你還是舉例說明吧,比如有個“四位十六進制數(shù)”0x7fff,你想顯示32767???還是別的什么東西,你現(xiàn)在這么說沒人能看懂。
回復(fù)

使用道具 舉報

13#
ID:1090450 發(fā)表于 2023-11-6 21:44 來自觸屏版 | 只看該作者
那我舉個例子,我輸四位十進制數(shù)2222,然后轉(zhuǎn)換成十六進制數(shù)8AE,最后在LCD上顯示
回復(fù)

使用道具 舉報

14#
ID:883242 發(fā)表于 2023-11-6 21:58 | 只看該作者
丟車保帥 發(fā)表于 2023-11-6 21:44
那我舉個例子,我輸四位十進制數(shù)2222,然后轉(zhuǎ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)換。
回復(fù)

使用道具 舉報

15#
ID:272612 發(fā)表于 2023-11-8 10:16 | 只看該作者
結(jié)合2樓和14樓的回答就能搞定了。14樓:數(shù)據(jù)在內(nèi)存里都是二進制存儲的,不存在十進制和16進制的轉(zhuǎn)換問題,這個是前提要理解。LCD上的東西只是給人看的,是按照單個字符逐一顯示出來的。所以你想在LCD上顯示一個數(shù)據(jù),不管用什么進制顯示,只要按照進制取出每一位字符,然后逐一顯示出來就行了。二樓通過移位的方式可以很方便的滿足一個數(shù)據(jù)取16進制的各位字符,如果是10進制,那就是不斷除以10取余就可以了。
回復(fù)

使用道具 舉報

16#
ID:1097455 發(fā)表于 2023-11-13 15:17 | 只看該作者
程序里面的十進制你可以直接轉(zhuǎn)化的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表