今天有位朋友在群里面问如何接收串口调试助手发来的十六进制数据,并以十六进制的形式显示在LCD上。比如串口调试助手上发送十六进制数据3C,单片机带的LCD上也显示3C。单片机接收到来自电脑串口的数据0x3C后,存储到一个变量中,当我们调用显示数字的函数时,实际上显示出来的是十进制的数据,例如发送0x3C,会显示十进制数据60。看来要想显示十六进制,还不是那么容易。十六进制中,包含0~9数字,还包含A~F字母,看来要想显示,必须要用显示字符的函数而不能用显示数字的函数了。

但是不能直接调用显示字符的函数。因为要想显示3C,实际上是要显示2个字符,你如果直接把数据带进去,实际上他会认为是一个字符的ASCII码。

于是我们要把发过来的数据变换成两个字符,用下面的公式:

shi = rece_data/16; // 获取第一位

ge? = rece_data%16; // 获取第二位

然后把数字转换成字符:

switch(shi)

{

case 0:shi='0';break;

case 1:shi='1';break;

case 2:shi='2';break;

case 3:shi='3';break;

case 4:shi='4';break;

case 5:shi='5';break;

case 6:shi='6';break;

case 7:shi='7';break;

case 8:shi='8';break;

case 9:shi='9';break;

case 10:shi='A';break;

case 11:shi='B';break;

case 12:shi='C';break;

case 13:shi='D';break;

case 14:shi='E';break;

case 15:shi='F';break;

default:break;

}

switch(ge)

{

case 0:ge='0';break;

case 1:ge='1';break;

case 2:ge='2';break;

case 3:ge='3';break;

case 4:ge='4';break;

case 5:ge='5';break;

case 6:ge='6';break;

case 7:ge='7';break;

case 8:ge='8';break;

case 9:ge='9';break;

case 10:ge='A';break;

case 11:ge='B';break;

case 12:ge='C';break;

case 13:ge='D';break;

case 14:ge='E';break;

case 15:ge='F';break;

default:break;

}

然后就可以显示了:

LCD_ShowChar(xpos, ypos, shi);

LCD_ShowChar(xpos+8, ypos, ge);

实践图片欣赏:

总结一下,实际上用到的原理是十进制转十六进制函数。把这个功能封装一下,如下所示:

void char DecToHex(redata)

{

unsigned char shi,ge;

redata = UART->RBR;

shi = redata/16;

ge? = redata%16;

switch(shi)

{

case 0:shi='0';break;

case 1:shi='1';break;

case 2:shi='2';break;

case 3:shi='3';break;

case 4:shi='4';break;

case 5:shi='5';break;

case 6:shi='6';break;

case 7:shi='7';break;

case 8:shi='8';break;

case 9:shi='9';break;

case 10:shi='A';break;

case 11:shi='B';break;

case 12:shi='C';break;

case 13:shi='D';break;

case 14:shi='E';break;

case 15:shi='F';break;

default:break;

}

switch(ge)

{

case 0:ge='0';break;

case 1:ge='1';break;

case 2:ge='2';break;

case 3:ge='3';break;

case 4:ge='4';break;

case 5:ge='5';break;

case 6:ge='6';break;

case 7:ge='7';break;

case 8:ge='8';break;

case 9:ge='9';break;

case 10:ge='A';break;

case 11:ge='B';break;

case 12:ge='C';break;

case 13:ge='D';break;

case 14:ge='E';break;

case 15:ge='F';break;

default:break;

}

}

c语言用数组10进制转16进制,十进制转十六进制c语言函数相关推荐

  1. 16进制数组转成10进制 qt_QT 16进制 ASII   10进制 转换

    //16进制字符串转字节数组 static QByteArray HexStrToByteArray(QString str) { QByteArray senddata;  //发送数据 int h ...

  2. C语言 10进制 以8进制和16进制显示, #处理显示前导符

    C语言 10进制 以8进制和16进制显示, #处理显示前导符 #include<stdio.h> void main() {int a=20,b=30;int c=a+b;printf(& ...

  3. go语言10进制与16进制转换

    野旷天低树,江清月近人 目录 16进制字符串转16进制int64 16进制字符串转10进制字符串 10进制字符串转16进制字符串 10进制字符串转换10进制int64 16进制字符串转16进制int6 ...

  4. linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)

    [编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...

  5. python16进制转10进制_python 字节串及10进制,16进制相关转换

    进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: in ...

  6. 10进制和16进制 数字和ASCII码互转

    10进制和16进制数转ASCII码 int hex2ascii(unsigned char *hex, int hex_len, char *text) {char buffer[20];int cn ...

  7. linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include #incl ...

  8. linux shell 10进制转16进制

    10进制转16进制:15 > 0xf printf '%x\n' 15 16进制转10进制:0xf > 15 printf '%d\n' 0xF echo $((16#f)) 16进制转8 ...

  9. Java10进制转16进制,16进制转10进制

    1.Java10进制转16进制 /** 卡号位数:8 */public static byte CARD_NUM_BIT = 8;/*** isBlank * * @param value* @ret ...

  10. Javascript 10进制转16进制补0 ,16进制转10进制

    Javascript 10进制转16进制补0 ,16进制转10进制 10进制转16进制补0 16进制转10进制 10进制转16进制补0 // 10进制转16进制补0 function dec2hex( ...

最新文章

  1. Go语言环境搭建(Windows+Linux)
  2. zabbix监控系统的安装与配置
  3. 观察者模式C#实现实例(一)
  4. ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
  5. Tomcat5内存简单优化
  6. nginx conf 文件
  7. 颈椎前路caspar撑开器_82岁女性神经根型颈椎病,你该怎么办?手术还是不手术?...
  8. 将网页保存为webarchive文件的代码
  9. OA(part2)--Outlier Evaluation Techniques
  10. php+mysqli,php+mysqli数据库连接的两种方式
  11. chromebook刷机_如何在Chromebook上切换(或离开)Canary频道
  12. 实例1.2:获得应用程序主窗口指针
  13. pom文件各标签解释
  14. 【直接下载】x86_64-6.3.0-release-win32-seh-rt_v5-rev2
  15. 火线零线接反等问题的分析(电工)
  16. Roshan.exe 运行直接崩溃
  17. 捕获iOS模拟器视频以进行App预览
  18. 【关于Endnotes】
  19. overleaf表格_搞定LaTeX论文中的表格
  20. 知物由学 | Android应用破解与防护,阻断猖獗的应用乱象

热门文章

  1. 30句触动内心的人生感言
  2. 认识流媒体协议,从 RTSP 协议解析开始!
  3. 同程艺龙2020秋招笔试--Binrry(冰蕊)
  4. postgresql中的with用法
  5. 缺陷与出路——一个游戏开发者的反思(转自《大众软件》)
  6. 系统程序设计学习笔记
  7. 计算机辅助设计结课,计算机辅助设计课程小结
  8. smali语言详解之方法的调用
  9. 小浩算法全目录汇总 - 20200520版
  10. android 开源聊天控件,聊天IM的时间戳显示规则