常用单个数码管分共阴极和共阳极数码管,根据其7段(seg)需要接7个IO口。联排的数码管共用段码,分别再需要位(com)码选择亮哪个数码管。如5个联排的数码管就需要7个段选IO,5个位选IO,则需要接12个IO口。
       在IO口不足的时候,又想显示多个数码管,这时候就可以使用7pin数码屏这种,通过7个引脚可以控制最多42个段码,就是42个led。节省了IO口,又能达到显示的效果。
       通过万用表打到二极管选项,通过红黑探棒可以放在显示数码管的两引脚之间获得显示数码管每段灯亮的引脚电平情况,这就是我们点亮显示数码管的依据。实际编写的代码看所使用IO口的寄存器进行相关的输出(高和低)、输入(高阻态)的设置。大概示意图如下,实际段码以实际器件引脚测量为准。

查理复用(Charlieplex)是一种在驱动大量LED时有效地节约IO口的方法。利用单片机IO口的三个状态:高电平、低电平和高阻态。所谓“高阻态”,指的是引脚对外表现出极大的阻抗状态,对于后级电路的影响很小,在后级电路看来,就如同引脚悬空一样。而另一方面,发光二极管和普通的二极管一样拥有单向导通的特点,只有在电流以某种方式流动的时候,LED才能发光。利用以上两点,我们就能够设计出查理复用拓扑的基本电路了。

如上图显示的简单电路,该电路使用两个端口控制红灯和绿灯,当端口1高端口2低时绿灯亮,端口1低端口2高时红灯亮。根据如此就可以增加端口叠加电路,如在接一个端口3。

增加端口后电路如上图所示,可以发现有2个LED由端口1和2控制,另外两个LED由端口1和3控制,另外2个LED由端口2和3控制,总共6个LED。增加一个端口可控制的led灯的数量为n(n为端口数)*(n-1)。
       为了在点亮我们想要点亮的灯的时候不会误点亮其他的灯,只有两个端口可以同时输出(一个为高一个为低),而其他所有端口都可以通过将它们定义为输入来处于高阻抗状态。需要注意驱动的电路完全由单片机取得电流,所以对于IO口的驱动能力有一定的要求。

typedef void (*pfunc) (bool);void Digital_screen_pin0(bool flag)
{//定义一个函数,进行屏管脚的的输出高还是低,用if语句通过相应的寄存器进行设置
}//根据使用的几个管脚输出设置函数,定义一个函数指针数组进行存放
pfunc Digital_screen_pfunc[]={Digital_screen_pin0,...}
//根据使用的管脚个数进行设置void Digital_screen_clr(void)
{//定义一个数码屏清理函数//主要把屏脚所使用的GPIO设置为输入,屏就没有显示了
}void Digital_screen_set (u8 seg_bits,u8 com_pin)
{//定义一个函数去进行点亮屏,u8为unsigned charvoid (*pfunc)(bool);u8 i;Digital_screen_clr();pfunc=Digital_screen_pfunc[com_pin];(*pfunc)(1);    //调用最开始的管脚设置输出函数,把管脚输出高for(i=0;i<N;i++)  //N为多少个屏脚{pfunc=Digital_screen_pfunc[i];if(seg_bits&BIT(i))            //BIT(i)为1<<i,seg_bits存放设置输出低的屏脚,取出来一位位点亮{(*pfunc)(0);     }}
}//定义一个结构体存放需要的参数
typedef struct
{u8 buf[];u8 seg_bits;u8 com_pin;
}Digital_srceen;
Digital_srceen Digital_srceen_g;void Digital_srceen_scan(void)  //进行屏脚的扫描,放到中断中去处理
{u8 seg_bits;u8 com_pin;Digital_srceen_g.com_pin++;if(Digital_srceen_g.com_pin>(N-1)){Digital_srceen_g.com_pin=0;}seg_bits=Digital_srceen_g.buf[Digital_srceen_g.com_pin];com_pin=Digital_srceen_g.com_pin;Digital_screen_set(seg_bits,com_pin);
}//Digital_srceen_g.buf[]每个元素是记录每个屏脚为高,对应其他引脚设置低全部显示
//例以开头第一张图片的数码屏为例
//第7脚为高时,只有6,5,3脚为输出低可以分别亮K4,4G,4B.则Digital_srceen_g.buf[6]为0x34

通过编写函数传入置高的位com,和置低的位seg去显示段码。就是去控制IO相关的寄存器的输入/输出模式,和输出的值。这个和联排数码管的思路是差不多的,所使用的7个IO口,当IO1作为com输出高时,可以点亮其他IO口输出为低的6个段。同理其他IO同样也可以,这就是上面所说最多点亮42个led灯。
       按com扫描,扫描间隔自己确定。com口共有7个。总共扫描7行。一面完整的图像就显示结束了,在每行扫描的时候,需要亮灯的高低电平点亮,不亮的灯的IO口都设为输入。然后通过编写显示函数就可以用这种数码显示屏去显示像音响等产品的显示UI。

7pin数码屏的使用相关推荐

  1. 工业物联网LCD数码屏的驱动原理及低功耗设计(华大半导体HC32L136)

    目录 1.驱动原理 2.驱动程序 3.低功耗设计 在工业物联网传感器可视化设计时,仅仅为显示传感器的数值变化,多选用低成本.低功耗.尺寸合适的LCD数码屏,本次博客为各位分享华大半导体HC32L136 ...

  2. fcpx插件:21个模拟相机取景器数码屏显效果预设Camera Rec

    fcpx插件:21个模拟相机取景器数码屏显效果预设Camera Rec是一套现在很流行的模拟相机取景器效果制作工具,包括有21种样式效果,并可通过参数调节画面的效果,如干扰.黑白.抖动和颜色等等,给创 ...

  3. 万豪国际集团在华运营酒店超过400家;高清4K登机口智能数码屏亮相虹桥T2国内出发候机厅 | 美通企业日报...

    今日看点:万豪国际集团在华运营酒店超过400家.高清4K登机口数码屏系列亮相上海虹桥机场T2航站楼.三星半导体和三星显示正式在中国启动运营官方新媒体账号.名创优品葡萄牙首家商店开业,加速欧洲市场扩张. ...

  4. 液晶屏和数码屏哪个好?

    经常会碰到这样的客户要把之前使用的LED数码屏换成LCD液晶屏,在双方尺寸和显示内容都确定下来后并等LCD液晶屏样品收到的时候,客户又不知道怎么做软件.毕竟LCD液晶屏和LED数码屏是不一样的.那么究 ...

  5. ibm笔记本电脑电池_开善乡 2.0间距笔记本电池连接器公座 11P电池座接口

    东莞市全禄电子科技有限公司是一家集生产销售子开关.插座.连接器的专业厂家.开发.设计的各类轻触开关.MINI拨动开关.拨动开关.按键开关.微动开关.船形开关及2.5 /3.5(SMT.DIP)耳机插座 ...

  6. 有STC制作一个手持微型示波器

    简 介: 本文介绍了 CreativeLau在 Instructables Circuits 上的博文,介绍了它设计制作的基于STC单片机的手持迷你示波器.它可以测量电压,信号波形等,同时也可以产生常 ...

  7. 电视机当计算机屏幕,怎么实现电视机当电脑的显示器和音箱用?

    VGA各针脚定义和焊接方法 一.15针VGA各针脚的定义: 按照VGA接头(15HD)的标准,共各引脚的定义如下:(PIN表示"脚"的意思) 1PIN --Red--模拟信号的&q ...

  8. esxi直通 gen8_HP MicroServer Gen8与ESXI采坑之旅

    安装镜像下载 最新的 ESXI 6.5 的 HP 定制镜像可以在这个 URL 进行下载: https://my.vmware.com/web/vmware/details?productId=614& ...

  9. esp8266oled做时钟python_利用esp8266和鸿蒙带的OLED屏做了一个时钟

    连接图: 先看原理图: 然后接线 接线原理如下: * 7pin SPI引脚,正面看,从左到右依次为GND.VCC.D0.D1.RES.DC.CS * ESP8266 --- OLED * 3V --- ...

  10. 我的swagger上面怎么没有models_浅析特斯拉Model S的采样板

    这是胡兄的投稿,分为两篇,我都把它整合在一起. 1)上篇 PCB物理信息 2)中篇 设计电路设计 以下为正文: 最近弄到几个Model S上面的采样板,虽然产品都出来好多年了,但仍然忍不住说说这个采样 ...

最新文章

  1. 使用NVIDIA A100 TF32获得即时加速
  2. R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战
  3. 基于能量的生成对抗网络
  4. 怎样查看光驱硬盘托架的尺寸
  5. python读取大文件-使用Python读取大文件的方法
  6. 物体掉落速度_重3吨的巨型“手环”掉落高速路,车辆纷纷刹车躲避
  7. Mysql 日历数据表
  8. mac 升级自带Python方法
  9. python 对比matlab_全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?
  10. 互联网下半场,苏宁“拼购村”如何打造现象级模式
  11. 程序员进阶神器,ProcessOn绘制时序图
  12. 树莓派安装安装fcitx及google拼音输入法
  13. inurl_inurl,intitle指令的含义、作用及用法
  14. [深度学习] 自然语言处理 --- NLP入门指南
  15. 简单快速分析多个物流揽收后没有物流的单号
  16. pip安装pygame
  17. Jetson Nano【13】关于torch2trt报错:AttributeError: ‘Tensor‘ object has no attribute ‘_trt‘的一种可能性
  18. 学了python可以做什么兼职,学python真的能做兼职吗?
  19. 【5G基础学习笔记】 5G核心网架构
  20. vue上传图片到指定文件夹

热门文章

  1. LTE无线网络规划的四大要点
  2. 【超图+CESIUM】【基础API使用示例】40、超图|CESIUM - 特效-雨景设置
  3. .jpg .png .jpeg图片转.eps矢量图的python脚本
  4. java tm插件下载_Java(TM) Platform SE binary
  5. java类加载器说法正确的_Java中的类加载器
  6. android 的layout
  7. 虚拟机怎么启动共享文件服务器,VMware虚拟机中ubuntu启用本地文件共享的设置方法...
  8. 基于Python实现的Alpha-Beta剪枝算法
  9. 源型输入和漏型输入差别及其接线
  10. 谷歌FLASH无法添加保存网站