51单片机编程问题,如何在1602上显示出矩阵键盘的十六进制码,主要是如何把保存的十六进制数转化成十进制?

51单片机编程问题,如何在1602上显示出矩阵键盘的十六进制码,主要是如何把保存的十六进制数(如0xee)转化成十进制数238?C语言。请高手指点。程序如下,还有很多问题... 51单片机编程问题,如何在1602上显示出矩阵键盘的十六进制码,主要是如何把保存的十六进制数(如0xee)转化成十进制数238?C语言。请高手指点。
程序如下,还有很多问题,但最迫切知道上述问题。。。。
#include "at89x52.h"
#include "intrins.h"
#define uchar unsigned char
sbit RS=P3^0;
sbit RW=P3^1;
sbit E =P3^2;
uchar code dis[]={"Put In Key !"};
/*uchar key[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; //键码 */
uchar disp[4];
uchar displ[]={"0123456789ABCDEFX"};
uchar x,y,jz;
void delay(uchar n);
bit busy();
void xzl(uchar zl);
void xxs(uchar xs);
void xwz(uchar wz);
void clr();
void csh();
void js();
void keys();

void main() //主函数
{ P1=0x0f;
delay(50);
csh();
aa: clr();
xwz(0x02);
for(x=0;dis[x]!='\0';x++)
{ xxs(dis[x]);
}
delay(20);
while(P1!=0x0f)
{ keys();
js();
clr();
xwz(0x46);
xxs(displ[0]);
xxs(displ[16]);
y=disp[2];
xxs(displ[y]);
y=disp[3];
xxs(displ[y]);
delay(20);

}
goto aa;

}

void delay(uchar n) //延时n*1ms
{
unsigned char a,b,c;
for(c=n;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}

bit busy() //忙检测
{ bit Busy;
RS=0;
RW=1;
E=1;
_nop_();
Busy=(bit)(P0&0x80);
E=0;
return Busy;

}

void xzl(uchar zl) //写指令
{ while(busy());
RS=0;
RW=0;
E=0;
_nop_();
P0=zl;
_nop_();
E=1;
_nop_();
E=0;

}

void xxs(uchar xs) //写显示
{ while(busy());
RS=1;
RW=0;
E=0;
_nop_();
P0=xs;
_nop_();
E=1;
_nop_();
E=0;
}

void xwz(uchar wz) //写位置
{ xzl(wz|0x80);
}

void clr() //清屏
{ xzl(0x01);
delay(5);
}

void csh() //初始化
{ delay(15);
xzl(0x38);
delay(15);
xzl(0x38);
delay(15);
xzl(0x38);
delay(5);
xzl(0x0c);
delay(5);
xzl(0x06);
delay(5);
xzl(0x01);
delay(5);
}

void js() //计算
{ disp[2]=jz/16;
disp[3]=jz%16;

}

void keys() //键盘扫描
{ uchar i,j,k,jz;
P1=0x0f;
i=P1;
if((i&0x0f)!=0x0f) //按键判断是否按下?
{ delay(20); //延时消抖20ms
i=P1;
if((i&0x0f)!=0x0f) //确定是否真按下了?
{ j=i;
P1=0xf0;
k=P1;
jz=j|k; //合成键码
return;
}

}
else P1=0xff;
return;
}
展开
 我来答
ball648500361
2012-04-23 · TA获得超过606个赞
知道小有建树答主
回答量:270
采纳率:50%
帮助的人:187万
展开全部
给你举个例子吧
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);
步行者===电子单片机
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风云10万号
2012-04-26 · TA获得超过134个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:72.7万
展开全部
改数字,因为1602默认的都是固定值。如果显示动态的 得+ table[]=S/10+48;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vall_lwj
2012-04-22 · TA获得超过384个赞
知道小有建树答主
回答量:395
采纳率:50%
帮助的人:281万
展开全部
如何把保存的十六进制数转化成十进制 这句话什么意思?? 只是转换的话直接写多一个转换用的子函数不就行了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式