搜索
bottom↓
回复: 82

让数码管比段生成器去见鬼吧(转载)

  [复制链接]

出0入0汤圆

发表于 2012-9-13 15:25:33 | 显示全部楼层 |阅读模式
经常看到一些工程师或网友在编写数码管程序时,花费很多时间在制作那个数字的对照表,甚至
有什么数码管笔段生成器的软件出现,其实数码管定义很简单,只要知道那个7段的定义,不需要
半秒钟,笔段对照比较就知道生产,也不需要什么数码管比段生成器

方法如下:
/*
   a
  ---
f| g |b   
  ---
e|   |c   
  ---
   d
*/


#define Sega    0x01
#define Segb    0x02
#define Segc    0x40
#define Segd    0x20
#define Sege    0x10
#define Segf    0x04
#define Segg    0x08

#define Num0    (Sega + Segb + Segc + Segd + Sege + Segf       )
#define Num1    (           Segb + Segc                                       )
#define Num2    (Sega + Segb + Segd + Sege + Segg)
#define Num3    (Sega + Segb + Segc + Segd               + Segg)
#define Num4    (           Segb + Segc               + Segf + Segg)
#define Num5    (Sega            + Segc + Segd + Segf + Segg)
#define Num6    (Sega            + Segc + Segd + Sege + Segf + Segg)
#define Num7    (Sega + Segb + Segc                            )
#define Num8    (Sega + Segb + Segc + Segd + Sege + Segf + Segg)
#define Num9    (Sega + Segb + Segc + Segd        + Segf + Segg)
#define Numblk  (0                                             )


INT8U  Num_code[11] = {Num0,Num1,Num2,Num3,Num4,Num5,Num6,Num7,Num8,Num9,Numblk};
如果以后比段的位置发生变化了,修改seg的定义,在编译就好了
这个方法无论从代码可读性,维护难易程度来来说,都是十分理想的;

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2012-9-13 15:28:06 | 显示全部楼层
"#define Num0    (Sega + Segb + Segc + Segd + Sege + Segf       )"
“+”改为位或“|”更合理

出0入0汤圆

发表于 2012-9-13 15:32:22 | 显示全部楼层
楼上正解

出0入4汤圆

发表于 2012-9-13 16:06:00 | 显示全部楼层
嗯  是这么干的

出0入0汤圆

发表于 2012-9-13 16:11:30 | 显示全部楼层
hao

出0入0汤圆

发表于 2012-9-13 16:21:00 | 显示全部楼层
很好,很强大,收藏了.谢谢楼主提供新思路.

出0入0汤圆

发表于 2012-9-13 16:27:13 | 显示全部楼层
哈哈 不错的想法啊。收藏下。

出0入0汤圆

发表于 2012-9-13 16:31:48 | 显示全部楼层
方法确实不错,又简单

出0入0汤圆

发表于 2012-9-13 16:34:27 | 显示全部楼层
xjbh001 发表于 2012-9-13 15:28
"#define Num0    (Sega + Segb + Segc + Segd + Sege + Segf       )"
“+”改为位或“|”更合理 ...

对,而且用处更大, 这是石器时期的技巧了

出0入0汤圆

发表于 2012-9-13 16:34:52 | 显示全部楼层
好思路 谢谢楼主分享!!!!

出0入0汤圆

发表于 2012-9-13 16:36:33 | 显示全部楼层
都是这么搞的啊。哈哈

出0入0汤圆

发表于 2012-9-13 16:44:25 | 显示全部楼层
学到了,好主意

出0入0汤圆

发表于 2012-9-13 17:31:47 | 显示全部楼层
好东西,方便快捷~~~

出0入0汤圆

发表于 2012-9-13 17:33:39 | 显示全部楼层
好方法   

出0入0汤圆

发表于 2012-9-13 17:37:24 | 显示全部楼层
位运算   用得挺巧妙的

出0入0汤圆

发表于 2012-9-13 17:39:55 | 显示全部楼层
牛逼

出0入0汤圆

发表于 2012-9-13 17:47:35 | 显示全部楼层
本帖最后由 bg6agf 于 2012-9-13 17:54 编辑

这是啥时候的事啊?我以前在本坛发过的。还被人喷了。。

出0入0汤圆

发表于 2012-9-13 17:50:16 | 显示全部楼层
/*****************************************************************************/
#define _seg_c            0x80
#define _seg_dp           0x40
#define _seg_d           0x20
#define _seg_e            0x10
#define _seg_g            0x08
#define _seg_a            0x04
#define _seg_f            0x02
#define _seg_b            0x01
/* seg7_code 84218421  共阴七段数码管 */
#define SEGALL        (255-_seg_dp)
#define SEG0          (SEGALL-_seg_g)
#define SEG1          (_seg_b+_seg_c)
#define SEG2          (SEGALL-_seg_f-_seg_c)
#define SEG3          (SEGALL-_seg_f-_seg_e)
#define SEG4          (_seg_b+_seg_c+_seg_f+_seg_g)
#define SEG5          (SEGALL-_seg_b-_seg_e)
#define SEG6          (SEGALL-_seg_b)
#define SEG7          (_seg_a+_seg_b+_seg_c)
#define SEG8          (SEGALL)
#define SEG9          (SEGALL-_seg_e)
#define SEGA          (SEGALL-_seg_d)
#define SEGB          (SEGALL-_seg_a-_seg_b)
#define SEGC          (_seg_a+_seg_d+_seg_e+_seg_f)
#define SEGD          (SEGALL-_seg_a-_seg_f)
#define SEGE          (SEGALL-_seg_b-_seg_c)
#define SEGF          (SEGE-_seg_d)
#define SEGG          (SEGALL-_seg_b-_seg_g)
#define SEGH          (SEGALL-_seg_a-_seg_d)
#define SEGI          (_seg_a+_seg_c)
#define SEGJ          (_seg_b+_seg_c+_seg_d+_seg_e)
#define SEGK          (_seg_f+_seg_g+_seg_e)
#define SEGL          (_seg_d+_seg_e+_seg_f)
#define SEGM          (_seg_a+_seg_c+_seg_d+_seg_f)
#define SEGN          (SEGALL-_seg_g-_seg_d)
#define SEGO          (_seg_a+_seg_b+_seg_f+_seg_g)
/*****************************************************************************/

这是我大学时候做的。。大概是06年左右吧。。
后来发到本坛。被人喷了。。没想到现在有人又拿出来了。

出0入0汤圆

发表于 2012-9-13 17:50:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-9-13 17:52:18 | 显示全部楼层
http://www.amobbs.com/thread-4887533-1-1.html

这是我当时发的。10L

出0入0汤圆

发表于 2012-9-13 17:54:26 | 显示全部楼层
这个不错!!!

出0入0汤圆

发表于 2012-9-13 17:59:33 | 显示全部楼层
有图为证。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-9-13 19:52:07 | 显示全部楼层
谢谢楼主!

出0入442汤圆

发表于 2012-9-13 20:18:18 | 显示全部楼层
哈哈,竟然跟我几天前的想法不谋而合了。

出0入0汤圆

发表于 2012-9-13 20:22:46 | 显示全部楼层
不错的,学习一下

出0入0汤圆

发表于 2012-9-13 20:23:42 | 显示全部楼层
bg6agf 发表于 2012-9-13 17:59
有图为证。。。。

顿时亮了。。。

出0入0汤圆

发表于 2012-9-13 20:34:51 | 显示全部楼层
再改一下, 更直观看到D0~D7
#define _BV(v) (1<<v)
#define _seg_c           _BV(7)
#define _seg_dp          _BV(6)
#define _seg_d           _BV(5)
#define _seg_e           _BV(4)
#define _seg_g           _BV(3)
#define _seg_a           _BV(2)
#define _seg_f           _BV(1)
#define _seg_b           _BV(0)

出0入4汤圆

发表于 2012-9-13 20:46:31 | 显示全部楼层
不错!记号。

出0入0汤圆

发表于 2012-9-13 21:37:50 | 显示全部楼层
呵呵,围观一下,貌似有人发过,不过发太早了没人欣赏,安慰一下

出0入0汤圆

发表于 2012-9-13 21:46:53 | 显示全部楼层
数码管,MARK

出0入0汤圆

发表于 2012-9-13 22:19:19 | 显示全部楼层
bucuo   学习了

出110入12汤圆

发表于 2012-9-14 13:21:13 | 显示全部楼层
真心很牛X~

出0入0汤圆

发表于 2012-9-14 15:36:07 | 显示全部楼层
这个办法很好,学习了

出0入0汤圆

发表于 2012-9-14 15:44:05 | 显示全部楼层
非常好的思路,值得借鉴,原先我也是找的数码管生成软件,看来还是这个爽,简单实用!

出0入0汤圆

发表于 2012-9-14 16:00:46 | 显示全部楼层
好方法!

出0入0汤圆

发表于 2012-9-14 16:00:48 | 显示全部楼层
这个才7段而已,VFD的显示定义才叫累。如果不采用宏的话!。。!

不同的VFD脚位定义不一样的。

出0入4汤圆

发表于 2012-9-14 16:26:47 | 显示全部楼层
#define Num8    0x7F
#define Num9   Num8-SegE
#define Num6   Num8-SegB
#define Num0   Num8-SegG
#define Num2   Num8- SegF - SegC
#define Num1   SegB + SegC
#define Num7   Num1 + SegC

懒得打字了,加个括号吧,开个玩笑而已,这个没啥意思。

出0入0汤圆

发表于 2012-9-14 16:28:20 | 显示全部楼层
厉害,以前从来没想过!

出0入0汤圆

发表于 2012-9-14 21:56:22 | 显示全部楼层
早就这么干了

出0入0汤圆

发表于 2012-9-15 10:31:12 | 显示全部楼层
xjbh001 发表于 2012-9-13 15:28
"#define Num0    (Sega + Segb + Segc + Segd + Sege + Segf       )"
“+”改为位或“|”更合理 ...

怎么个合理法呢?不是太明白。。

出0入0汤圆

发表于 2015-7-24 21:48:30 来自手机 | 显示全部楼层
虽然好久了,但思路很好,宏定义很强大

出0入0汤圆

发表于 2015-7-25 09:42:30 | 显示全部楼层
马上留个记号。

出0入0汤圆

发表于 2015-7-25 09:59:52 | 显示全部楼层
我们就是这么做的

出0入0汤圆

发表于 2015-7-25 10:14:30 | 显示全部楼层
收藏了,多谢   

出0入0汤圆

发表于 2015-7-25 10:45:49 来自手机 | 显示全部楼层
大家不知道有段码生成器之类的小软件吗?

出0入4汤圆

发表于 2015-7-25 11:10:21 | 显示全部楼层
真是一个好思路,顶楼主!

出0入0汤圆

发表于 2015-7-25 22:13:34 | 显示全部楼层
这个办法真不错

出390入22汤圆

发表于 2015-7-29 19:40:35 | 显示全部楼层
段码生成器也不麻烦

出0入0汤圆

发表于 2015-7-29 20:11:15 | 显示全部楼层
简单实用,不错

出0入0汤圆

发表于 2015-7-29 20:41:09 | 显示全部楼层
一直都是这么用的。

出0入0汤圆

发表于 2015-7-30 14:41:05 | 显示全部楼层
好主意,顶起

出0入0汤圆

发表于 2015-7-30 22:32:32 | 显示全部楼层
确实不错

出0入0汤圆

发表于 2016-4-19 18:14:23 | 显示全部楼层
好思路,学习了。

出0入4汤圆

发表于 2016-4-19 18:24:32 | 显示全部楼层
一般人我不告诉他,很早就这么用,最早发现好像是TI 或某个公司的例程里。

出0入0汤圆

发表于 2016-4-19 18:28:23 | 显示全部楼层
好思路,标记了

出0入0汤圆

发表于 2016-4-19 22:46:41 | 显示全部楼层
好方法,先做个记号

出5入42汤圆

发表于 2016-4-20 09:49:24 | 显示全部楼层
蛮好的,我之前只用的宏定义,楼主再用个数组,更好。

出0入0汤圆

发表于 2016-4-20 09:55:24 | 显示全部楼层
这个方法真心不错

出0入0汤圆

发表于 2016-4-20 10:11:50 | 显示全部楼层
好思路,标记了

出0入300汤圆

发表于 2016-4-29 22:22:40 | 显示全部楼层
日本人民搞个数码管或者是键盘中断都能搞一辈子

出0入0汤圆

发表于 2016-4-29 23:20:20 | 显示全部楼层
的确不错,以后用这方法

出0入0汤圆

发表于 2016-5-14 11:35:55 | 显示全部楼层

方法确实不错,又简单

出0入0汤圆

发表于 2016-5-14 11:55:36 来自手机 | 显示全部楼层
很不错,收了。

出0入0汤圆

发表于 2016-5-16 21:18:42 | 显示全部楼层
好主意,学习了

出0入0汤圆

发表于 2016-5-16 21:56:58 | 显示全部楼层
#define Sega    0x01 #define Segb    0x02 #define Segc    0x40 #define Segd    0x20 #define Sege    0x10 #define Segf    0x04 #define Segg    0x08

出0入0汤圆

发表于 2016-5-16 22:06:12 | 显示全部楼层
帮楼主优化一下

#define Pin_a    1<<0
#define Pin_b    1<<1
#define Pin_c    1<<2
#define Pin_d    1<<3
#define Pin_e    1<<4
#define Pin_f     1<<5
#define Pin_g    1<<6
#define Pin_blk   1<<7


#define Num0    (Pin_a | Pin_b | Pin_c| Pin_d |  Pin_e|Pin_f  )   
#define Num1    (Pin_b | Pin_c                                          )
#define Num2    (Pin_a | Pin_b | Pin_d| Pin_e | |Pin_f          )
#define Num3    (Pin_a | Pin_b | Pin_c| Pin_d |  Pin_g          )
#define Num4    (Pin_b | Pin_c | Pin_f|  Pin_g                      )
#define Num5     (Pin_a | Pin_c | Pin_d| Pin_f |  Pin_g          )
#define Num6     (Pin_a | Pin_c | Pin_d| Pin_e| Pin_f |  Pin_g          )
#define Num7     (Pin_a | Pin_b | Pin_c                                )
#define Num8   (Pin_a | Pin_b | Pin_c| Pin_d |  Pin_e|Pin_f  |Pin_g )   
#define Num9    (Pin_a | Pin_b | Pin_c| Pin_d |Pin_f  |Pin_g   )
#define Numblk  ( Pin_blk                                                   )


INT8U  Num_code[11] = {Num0,Num1,Num2,Num3,Num4,Num5,Num6,Num7,Num8,Num9,Numblk};

出75入4汤圆

发表于 2016-5-17 00:06:56 | 显示全部楼层
这个好用。

出0入0汤圆

发表于 2016-5-17 02:33:06 | 显示全部楼层
谢谢楼主提供新思路.

出0入0汤圆

发表于 2016-5-17 15:51:41 | 显示全部楼层
这个牛B,学习了

出0入0汤圆

发表于 2016-5-17 17:56:23 | 显示全部楼层
很好,很强大,收藏了.谢谢楼主提供新思路.

出0入0汤圆

发表于 2016-5-17 17:58:18 来自手机 | 显示全部楼层
收藏,不过很少用数码管了

出0入0汤圆

发表于 2016-5-17 18:01:34 | 显示全部楼层
很好,很强大,

出0入0汤圆

发表于 2016-6-3 21:43:08 | 显示全部楼层
感谢 !

出0入0汤圆

发表于 2016-6-3 21:50:13 | 显示全部楼层
不错,谢谢分享

出0入0汤圆

发表于 2016-6-4 18:34:19 来自手机 | 显示全部楼层
66楼优化的不错,谢谢楼主分享。

出0入0汤圆

发表于 2016-6-4 19:06:09 | 显示全部楼层
bg6agf 发表于 2012-9-13 17:50
/*****************************************************************************/
#define _seg_c       ...

估计喷你的人是觉得下划线看的眼花,太烦乱了,有说影响效率的吗?

出0入0汤圆

发表于 2016-6-5 00:25:31 | 显示全部楼层
ywlzh 发表于 2016-6-4 19:06
估计喷你的人是觉得下划线看的眼花,太烦乱了,有说影响效率的吗?

这个一次定义。受用终身啊。这种宏定义不占用任何额外空间的。

出0入0汤圆

发表于 2016-6-5 09:48:57 | 显示全部楼层
bg6agf 发表于 2016-6-5 00:25
这个一次定义。受用终身啊。这种宏定义不占用任何额外空间的。

的确是的

出0入8汤圆

发表于 2016-6-5 21:37:37 | 显示全部楼层
这个定义不错啊,很好的资料

出0入0汤圆

发表于 2016-9-9 20:47:23 来自手机 | 显示全部楼层
这个真不错,学习了。

出0入0汤圆

发表于 2016-9-9 21:26:34 | 显示全部楼层
学习记录下。

出0入0汤圆

发表于 2016-9-9 23:20:50 | 显示全部楼层
必须收藏!!

出0入10汤圆

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

本版积分规则

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

GMT+8, 2024-4-25 13:35

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

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