搜索
bottom↓
回复: 21

请教各位大神,如何让数码管显示16进制的数据?

[复制链接]

出0入8汤圆

发表于 2015-6-10 14:03:41 | 显示全部楼层 |阅读模式
请教各位大神,如何让数码管显示16进制的数据?比如数据0x12ab,要让一个四位的数码管显示12ab,怎么弄,望各位大神,给个算法。俺是菜鸟。

出0入0汤圆

发表于 2015-6-10 14:31:08 | 显示全部楼层
显示16进制其实最简单,BCD码反倒需要转一下.

  1. ;                 --------
  2. ;                |   a    |
  3. ;                |f     b |
  4. ;                |   g    |
  5. ;                 --------
  6. ;                |   g    |
  7. ;                |e     c |
  8. ;                |   d    |
  9. ;                 -------- O(h)

  10. #define bSEG_A       0
  11. #define bSEG_B       1
  12. #define bSEG_C       2
  13. #define bSEG_D       3
  14. #define bSEG_E       4
  15. #define bSEG_F       5
  16. #define bSEG_G       6
  17. #define bSEG_H       7

  18. #define dSEG_A       (1<<bSEG_A)
  19. #define dSEG_B       (1<<bSEG_B)
  20. #define dSEG_C       (1<<bSEG_C)
  21. #define dSEG_D       (1<<bSEG_D)
  22. #define dSEG_E       (1<<bSEG_E)
  23. #define dSEG_F       (1<<bSEG_F)
  24. #define dSEG_G       (1<<bSEG_G)
  25. #define dSEG_H       (1<<bSEG_H)

  26. #define TEXT_0      ((dSEG_A)|(dSEG_B)|(dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_F))
  27. #define TEXT_1      ((dSEG_B)|(dSEG_C))
  28. #define TEXT_2      ((dSEG_A)|(dSEG_B)|(dSEG_D)|(dSEG_E)|(dSEG_G))
  29. #define TEXT_3      ((dSEG_A)|(dSEG_B)|(dSEG_C)|(dSEG_D)|(dSEG_G))
  30. #define TEXT_4      ((dSEG_B)|(dSEG_C)|(dSEG_F)|(dSEG_G))
  31. #define TEXT_5      ((dSEG_A)|(dSEG_C)|(dSEG_D)|(dSEG_F)|(dSEG_G))
  32. #define TEXT_6      ((dSEG_A)|(dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_F)|(dSEG_G))
  33. #define TEXT_7      ((dSEG_A)|(dSEG_B)|(dSEG_C))
  34. #define TEXT_8      ((dSEG_A)|(dSEG_B)|(dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_F)|(dSEG_G))
  35. #define TEXT_9      ((dSEG_A)|(dSEG_B)|(dSEG_C)|(dSEG_D)|(dSEG_F)|(dSEG_G))
  36. #define TEXT_A      ((dSEG_A)|(dSEG_B)|(dSEG_C)|(dSEG_E)|(dSEG_F)|(dSEG_G))
  37. #define TEXT_b      ((dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_F)|(dSEG_G))
  38. #define TEXT_C      ((dSEG_A)|(dSEG_D)|(dSEG_E)|(dSEG_F))
  39. ;#define TEXT_c      ((dSEG_D)|(dSEG_E)|(dSEG_G))
  40. #define TEXT_d      ((dSEG_B)|(dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_G))
  41. #define TEXT_E      ((dSEG_A)|(dSEG_D)|(dSEG_E)|(dSEG_F)|(dSEG_G))
  42. #define TEXT_F      ((dSEG_A)|(dSEG_E)|(dSEG_F)|(dSEG_G))
  43. #define TEXT_L      ((dSEG_D)|(dSEG_E)|(dSEG_F))
  44. #define TEXT_S      ((dSEG_A)|(dSEG_C)|(dSEG_D)|(dSEG_F)|(dSEG_G))
  45. #define TEXT_t      ((dSEG_D)|(dSEG_E)|(dSEG_F)|(dSEG_G))
  46. #define TEXT_O      ((dSEG_A)|(dSEG_B)|(dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_F))
  47. ;#define TEXT_o      ((dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_G))
  48. #define TEXT_u      ((dSEG_C)|(dSEG_D)|(dSEG_E))
  49. #define TEXT_BANK   (!((dSEG_A)|(dSEG_B)|(dSEG_C)|(dSEG_D)|(dSEG_E)|(dSEG_F)|(dSEG_G)|(dSEG_H)))
复制代码

出0入0汤圆

发表于 2015-6-10 14:40:30 | 显示全部楼层
还是好人多,要是我我就先讽刺一下楼主

出0入0汤圆

发表于 2015-6-10 15:06:36 | 显示全部楼层
对于单片机来说没有十进制十六进制的问题,关键是你要怎么分离开各个数据,移位不就解决了吗?

出0入0汤圆

发表于 2015-6-10 15:08:41 | 显示全部楼层
简单的方法:
                                                       //0  1    2   3    4    5    6     7   8     9    A    b   C     d     E   F
        unsigned char const DispData[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7C,0x58,0x5e,0x79,0x71};
        dispBuff[0]=value/4096;
        dispBuff[1]=(value%4096)/256;
        dispBuff[2]=(value%256)/16;
        dispBuff[3]=value%16;
       
        数码管1 = DispData[dispBuff[0]];
        数码管2 = DispData[dispBuff[1]];
        数码管3 = DispData[dispBuff[2]];
        数码管4 = DispData[dispBuff[3]];
       

出0入8汤圆

 楼主| 发表于 2015-6-10 15:14:13 | 显示全部楼层
fenjinzhe 发表于 2015-6-10 15:08
简单的方法:
                                                       //0  1    2   3    4    5    6     7    ...

谢谢您的帮助!!

出0入8汤圆

 楼主| 发表于 2015-6-10 15:15:20 | 显示全部楼层
辰星和月 发表于 2015-6-10 14:40
还是好人多,要是我我就先讽刺一下楼主

希望前辈指点下,接收前辈的讽刺!!菜鸟之路不好走!!

出0入0汤圆

发表于 2015-6-10 16:36:08 | 显示全部楼层
直接显示16位字符 字库编码把所有的ASCII都写上

出0入0汤圆

发表于 2015-6-10 21:32:13 | 显示全部楼层
大部分的字母都可以显示的,pqstunljhc

出0入0汤圆

发表于 2015-6-11 11:57:05 | 显示全部楼层
辰星和月 发表于 2015-6-10 14:40
还是好人多,要是我我就先讽刺一下楼主

在讽刺中成长,脸皮厚点好

出0入0汤圆

发表于 2015-6-13 18:02:26 来自手机 | 显示全部楼层
有些东西一点就透

出0入0汤圆

发表于 2015-6-14 09:03:29 来自手机 | 显示全部楼层
顶讽刺.其实新手不怕讽刺成长更快

出0入0汤圆

发表于 2015-6-15 16:09:32 | 显示全部楼层
高手的确不少,学习了!

出0入0汤圆

发表于 2015-6-15 16:11:51 | 显示全部楼层
liufabing 发表于 2015-6-10 14:31
显示16进制其实最简单,BCD码反倒需要转一下.

比较喜欢你的代码风格,直接,明了

出0入0汤圆

发表于 2015-6-15 21:17:37 | 显示全部楼层
zhengxg1990 发表于 2015-6-15 16:11
比较喜欢你的代码风格,直接,明了

主要是修改方便.

出0入0汤圆

发表于 2015-6-16 09:27:09 | 显示全部楼层
怎么都往这里发,还惦记着飞币呢

出0入0汤圆

发表于 2015-6-30 14:03:03 | 显示全部楼层
   非常感谢你的技术问题。如果你没有其他问题,我们将此帖默认为已解决.

出0入0汤圆

发表于 2015-6-30 19:54:58 | 显示全部楼层
查表呀,简单

出0入0汤圆

发表于 2015-7-1 11:10:20 来自手机 | 显示全部楼层
liufabing 发表于 2015-6-15 21:17
主要是修改方便.

我大学时候也弄了这个.不过…还加了宏.共阴共阳

出0入0汤圆

发表于 2015-7-1 11:20:06 | 显示全部楼层
fenjinzhe 发表于 2015-6-10 15:08
简单的方法:
                                                       //0  1    2   3    4    5    6     7    ...

查表是最方便快速的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 16:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表