年过完了,首先祝大家开工大吉!

TM1638是一种带键盘扫描接口的数码管驱动芯片。可以驱动共阳极数码管或共阴极数码管,相比单片机直接驱动数码管的方案,可以省去很多单片机的端口,也不需要浪费资源去扫描显示了。使用方便,价格也便宜。

最近一个项目用到它,没详细看数据手册,只是按照数据手册给的共阳极的原理图画了电路。

然而板子做好了写程序时发现,它的寄存器是按照共阴极数码管的方式定义的。驱动共阴极数码管,只需要写1个或2个(如果用到SEG9和SEG10)寄存器即可,寄存器的8位对应一个数码的8段,非常简单,如下:

       然而,驱动共阳极数码管,则需要写8个或16个(如果用到SEG9和SEG10)寄存器。而且还需要根据自己的电路图进行行列的转换,移位操作。程序上,比共阴极的驱动方式要复杂很多。

无奈,板子已经做好了,只能按照共阳极的写程序,下面是我写的共阴极寄存器转换为共阳极显示的程序。

void Convert()
{uint8_t Temp;uint8_t i,j,k;for(i=0; i<8; i++) //8个寄存器{Temp = Disp_Cathode_Reg[i];//共阴极寄存器for(j=0; j<16; j+=2) //8个寄存器移位{Disp_Anode_Reg[j] = Disp_Anode_Reg[j]>>1;}for(j=0; j<8; j++) //8位{k=j<<1;if(Temp&0x01){Disp_Anode_Reg[k] |= 0x80;}else{Disp_Anode_Reg[k] &= 0x7F;}Temp = Temp>>1;}}for(i=0; i<16; i+=2) //8个寄存器{Disp_Anode_Reg[i+1] = Disp_Anode_Reg[i]>>5;Disp_Anode_Reg[i] = Disp_Anode_Reg[i]<<3;}
}

共阴极的方式最多可驱动8位x10段的数码管,而共阳极可驱动10位x8端的数码管。这里给大家提个醒,电路尽量要按照共阴极的方式设计,写程序方便。如果数码管位数大于8位,必须按照共阳极的方式设计,也要尽量按照顺序去设计数码管的位和段,这样程序做转换时逻辑也简单一些。

最后附上完整驱动程序,仅供参考。(公众号不支持外部链接,请复制到浏览器打开)

链接:https://pan.baidu.com/s/1DCSW039uw8n4ugY5dLntZg

提取码:bpka

推荐阅读:

【硬件设计】电源防反接电路设计

【硬件设计】几种电平转换电路

【软件设计】Keil总是未响应?

【软件设计】STM32软件调用系统BootLoader

欢迎关注公众号"嵌入式技术开发",大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助,也欢迎推荐分享给其他人。

TM1638驱动数码管的一点建议,附程序相关推荐

  1. K_A02_005 基于单片机驱动数码管 LED 按键模块(TM1638) 流水灯 0-7 按键值显示

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.通信协议说明 1.写数据 时序: 程序: 2.读数据 时序: 程序: 四.部分代码说明 1.接线说明 1.1.STC89C52RC+按键数 ...

  2. 【雕爷学编程】Arduino动手做(102)---TM1638按键数码管

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

  3. 学校计算机基础做慢了扣分,中职学校《计算机应用基础》课程改革的一点建议...

    中职学校<计算机应用基础>课程改革的一点建议 论文关键词:课程改革 任务驱动 模式化教学 过程性评价 教育技术 论文摘要:本文针对目前中职学校中学生的现状,以及计算机应用基拙教学中存在的问 ...

  4. 中职学校计算机应用基础学什么,浅谈中职学校《计算机应用基础》课程改革的一点建议...

    <浅谈中职学校<计算机应用基础>课程改革的一点建议>由会员分享,可在线阅读,更多相关<浅谈中职学校<计算机应用基础>课程改革的一点建议(3页珍藏版)>请 ...

  5. 关于新笔记本到手至正式使用前的一点建议(以Lenovo air14plus为例)

    关于新笔记本到手至正式使用前的一点建议(以Lenovo air14plus为例) 1. 开箱 2. 机器开机激活(一般情况下在最后一步激活,见下文) 3. 机器硬件检测 3点5. GPU驱动安装 4. ...

  6. 【职场】肺腑之言,给即将参加秋招的同学一点建议

    文章来源于AI的那些事儿,作者黄鸿波 7月份到了,很多公司都陆陆续续的开启了秋招的进程,也有不少2021年毕业的同学也都在积极的准备着,并且也有很多同学都已经进入到了提前批的面试阶段.今天我就结合我自 ...

  7. 阳光学院计算机科学与技术需要英语四级,给各位想报阳光的朋友一点建议!来自学长的亲身经历!...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 给各位想报阳光的朋友一点建议!来自学长的亲身经历! 首先,不要期望阳光学院的师资有多好.从师资上来说,阳光学院早期聘用的是福大的老师没错,但是阳光现在为了 ...

  8. Mysql数据库的瓶颈处理一点建议

    Mysql数据库的瓶颈处理一点建议         我们在使用Mysql数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候.磁盘I/O瓶颈的出 ...

  9. 定时器驱动数码管c语言程序,74hc595驱动数码管时间程序

    74hc595驱动数码管时间程序 这里是电路图: 下面是51单片机驱动74hc595芯片的程序: #include                            //包含51单片机的头文件 # ...

最新文章

  1. php可以定义数组的常量吗
  2. PostgreSQL SQL 语言:并行查询
  3. 南京大学《物联网技术导论》课程
  4. python编程django遇到问题Passing a 3-tuple to include() is not supported.解决方案
  5. 检查SELECTION-SCREEN 上面输入的参数是否合适
  6. HTTP 协议 Host 请求头的作用
  7. VTK:可视化之RotateActor
  8. 还不明白可空类型原理? 我可要挖到底了
  9. nginx tcp转发_Nginx学习(九):负载均衡服务
  10. mysql改date格式_mysql数据库修改添加Date格式列的方法
  11. ubuntu18.04安装、配置dosbox
  12. node.js模块和包
  13. Springboot 应用部署建议
  14. css连续选取几个li_CSS高级选择器:nth-child()应用大全
  15. 计算机协议-http
  16. ppt放映显示备注 投影不显示
  17. 学习了pr后的收获_pr学习心得(入门篇)
  18. 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
  19. 一年月份大小月口诀_《认识年月日》大小月记忆法知识点教学设计
  20. 京东被优衣库打脸,阿里:怪我咯?

热门文章

  1. 什么是FD.IO/VPP?
  2. 达内java培优训练营 2106班
  3. k8s NoSchedule k8s 设置污点 NoExecute有点复杂 移除节点 drain和不可调度cordon
  4. 是时候来了解android7了:shortcuts(快捷方式)
  5. 计算机组成原理 第三章存储系统 知识点
  6. 苹果的福利被“羊毛党”薅废了
  7. 与新晋图灵奖得主的虚拟对话
  8. Learning to Rank系列之Pointwise方法
  9. openfire入门
  10. 少儿机器人编程学习指南