IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 查理复用算法Charlieplexing下的led矩阵模拟数码管 -> 正文阅读

[嵌入式]查理复用算法Charlieplexing下的led矩阵模拟数码管

?????? 老套路;引言,追源,再讲实际

?????????在产品设计的时候,总是会因为需要控制的led数量过多而感到烦恼,点亮几个灯明明如此简单的功能却要占用非常多的IO,这对低成本的产品而言无疑是雪上加霜。

??????? 大学期间我们都学过矩阵式点多个灯或按键的设计,如果称其为进阶版,那查理复用就可以说是高级版的设计了,见下图,这里一共点了20个灯。实际操作方法最后与程序思想一起介绍。

???? 要实现该算法,所选MCU的GPIO功能必须拥有三态

该图为基础复用,每两个IO之间接正反两个发光二极管,发光二极管也是二极管,具有正向导通的功能,所以当pin1输出1,pin2输出0时,只有LED1会发光

?该图升级为3个IO控制6个led,此处就开始需要涉及到GPIO中高阻态的功能了,多数的MCU都具备高阻态输入功能,详细可以查看所使用的MCU规格书,回到上图,比如我只点亮LED1,则需要设置pin2为低电平,pin1为高电平,而此时,当pin2为低电平时,要使LED4不亮,pin3需设置为低电平,此时,pin1与pin3之间的LED5就被点亮了,故单纯使用高低电平的输出模式无法实现此算法,将pin3设置为高阻态,可以通俗的把高阻态理解为断路,也就是不具备电平,整个电路只剩下LED1一条回路了,从而只点亮了LED1,以此类推。

重点来了

?

?????????看完上面的两个图后,实际的操作其实已经知道了,本文章就是要讲解用此方法实现数码管,我实现该方法的思想如下;

????????构建一个三维数组,我将其暂时设为x,y,z轴,x轴为需要显示的数据,也就是0-99,y轴为所需要显示数字的五个状态,z为该状态需要轮询的五个IO配置,简易的说,当我使用5个IO的时候,其实已经决定了我需要轮询五轮配置,每轮点亮每一列下我需要的灯,经过五轮后,点亮所有我需要的灯从而达到最终我要显示的数字,弊端在于,该方法无法将两位数码管单独控制,当你需要单独控制时,就需要10轮的配置,也就是频率需要double,这对整个系统而言,压力是巨大的,可以大概想一下,我整个系统啥都不干,就500us轮询一次的在那里只干显示,那其他功能还干不干了,当然,如果可以将代码量精简或者不考虑功耗将MCU的时钟频率开到24M或者48M甚至72M再往上跑,那完全可以显示更多位。

??????? 该算法实际应用时,也遇到数码管余晖问题,解决办法同数码管消隐一致,每一个状态显示前先将所有IO设置为高阻态即可。

????????其实以理论来讲,只要频率够快,多少位的数码管都是可以实现的,但是不得不说该方法存在一些致命的弊端,也是矛盾的地方,会使用该方法的目的是为了节省IO,选用的mcu内存本身不大,但实现该方法却需要占用3k左右的内存,所以具体实例具体分析,如果大家有更好的方法实现该算法或纠正该文章的bug,或者想与我沟通一下算法的实现情况,和问题的处理,都可以与我联系。

????

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:15:04  更:2021-08-07 12:16:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:18:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计