【单片机】如何用1602液晶显示十六进制数

2024-11-16 21:29:42
推荐回答(5个)
回答1:

嗯,大概就是这个样子...
可能会有拼写错误,自己检查下...
//-----------------------------------------
unsigned char hex_table[16] =
{
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
};
//------------------------------------------
void display_num(unsigned int num)
{
unsigned int a, b, c, d;

a = (num/256)/16; //取高字节的高4位
b = (num/256)%16; //取高字节的低4位

c = (num%256)/16; //取低字节的高4位
d = (num%256)%16; //取低字节的低4位

write_com(0x80); //显示的初始地址

// write_data('n');
// write_data('u');
// write_data('m');
// write_data('=');
// write_data('0');
// write_data('x');
write_data(hex_table[a]);
write_data(hex_table[b]);
write_data(hex_table[c]);
write_data(hex_table[d]);
}
//------------------------------------------

回答2:

void write_hexnum(unsigned char n)
{ if(n>=10) write_data('A'+n); else write_data('0'+n);
}
void display_num(unsigned char num)
{
write_com(0x80); //显示的初始地址
write_hexnum(num>>4); //高位
write_hexnum(num&0xf); //低位
}

回答3:

a=num/16; //高位
b=num%16; //低位
再加几行转换的
if(a>9)a=a+0x27;
if(b>9)b=b+0x27;
然后就是write了,和你写得一样的。

回答4:

给你举个例子吧
unsigned
char
sd,kk;
unsigned
int
ha=0;
sd=0x11;
//你说的16进制对吧
kk=16*(sd>>4);
ha=kk;
kk=(sd&0x0f);
ha+=kk;//ha里面存放的就是sd的十进制
简单一点ha=(16*(sd>>4))+(sd&0x0f);
步行者===电子单片机

回答5:

液晶只会显示你送进去的数值,要是显示十六进制的话应该先转换成十六进制后再送显示吧?同关注!