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

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:25:04
如题,假如说write_data()和write_com()是我程序中的写数据和写命令的两个函数。现在我从外界采集进来一个char型的数据num,如果要在液晶中显示这个num数值,我可以这样,编写函数
void display_num()
{
uchar a,b,c;
a=num/100; //百位
b=num/10%10; //十位
c=sernum%10; //个位
write_com(0x80); //显示的初始地址
write_data(0x30+a); //百位
write_data(0x30+b); //十位
write_data(0x30+c); //个位
}
这样就可以显示我这个num了,但是现在在液晶中显示出来的显然是十进制的数,如果我想显示十六进制的数,应该怎么处理呢??请指教!

嗯,大概就是这个样子...
可能会有拼写错误,自己检查下...
//-----------------------------------------
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(h