TM1638驱动数码管的一点建议,附程序
年过完了,首先祝大家开工大吉!
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驱动数码管的一点建议,附程序相关推荐
- K_A02_005 基于单片机驱动数码管 LED 按键模块(TM1638) 流水灯 0-7 按键值显示
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.通信协议说明 1.写数据 时序: 程序: 2.读数据 时序: 程序: 四.部分代码说明 1.接线说明 1.1.STC89C52RC+按键数 ...
- 【雕爷学编程】Arduino动手做(102)---TM1638按键数码管
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...
- 学校计算机基础做慢了扣分,中职学校《计算机应用基础》课程改革的一点建议...
中职学校<计算机应用基础>课程改革的一点建议 论文关键词:课程改革 任务驱动 模式化教学 过程性评价 教育技术 论文摘要:本文针对目前中职学校中学生的现状,以及计算机应用基拙教学中存在的问 ...
- 中职学校计算机应用基础学什么,浅谈中职学校《计算机应用基础》课程改革的一点建议...
<浅谈中职学校<计算机应用基础>课程改革的一点建议>由会员分享,可在线阅读,更多相关<浅谈中职学校<计算机应用基础>课程改革的一点建议(3页珍藏版)>请 ...
- 关于新笔记本到手至正式使用前的一点建议(以Lenovo air14plus为例)
关于新笔记本到手至正式使用前的一点建议(以Lenovo air14plus为例) 1. 开箱 2. 机器开机激活(一般情况下在最后一步激活,见下文) 3. 机器硬件检测 3点5. GPU驱动安装 4. ...
- 【职场】肺腑之言,给即将参加秋招的同学一点建议
文章来源于AI的那些事儿,作者黄鸿波 7月份到了,很多公司都陆陆续续的开启了秋招的进程,也有不少2021年毕业的同学也都在积极的准备着,并且也有很多同学都已经进入到了提前批的面试阶段.今天我就结合我自 ...
- 阳光学院计算机科学与技术需要英语四级,给各位想报阳光的朋友一点建议!来自学长的亲身经历!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 给各位想报阳光的朋友一点建议!来自学长的亲身经历! 首先,不要期望阳光学院的师资有多好.从师资上来说,阳光学院早期聘用的是福大的老师没错,但是阳光现在为了 ...
- Mysql数据库的瓶颈处理一点建议
Mysql数据库的瓶颈处理一点建议 我们在使用Mysql数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候.磁盘I/O瓶颈的出 ...
- 定时器驱动数码管c语言程序,74hc595驱动数码管时间程序
74hc595驱动数码管时间程序 这里是电路图: 下面是51单片机驱动74hc595芯片的程序: #include //包含51单片机的头文件 # ...
最新文章
- php可以定义数组的常量吗
- PostgreSQL SQL 语言:并行查询
- 南京大学《物联网技术导论》课程
- python编程django遇到问题Passing a 3-tuple to include() is not supported.解决方案
- 检查SELECTION-SCREEN 上面输入的参数是否合适
- HTTP 协议 Host 请求头的作用
- VTK:可视化之RotateActor
- 还不明白可空类型原理? 我可要挖到底了
- nginx tcp转发_Nginx学习(九):负载均衡服务
- mysql改date格式_mysql数据库修改添加Date格式列的方法
- ubuntu18.04安装、配置dosbox
- node.js模块和包
- Springboot 应用部署建议
- css连续选取几个li_CSS高级选择器:nth-child()应用大全
- 计算机协议-http
- ppt放映显示备注 投影不显示
- 学习了pr后的收获_pr学习心得(入门篇)
- 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
- 一年月份大小月口诀_《认识年月日》大小月记忆法知识点教学设计
- 京东被优衣库打脸,阿里:怪我咯?