angmall 发表于 2023-1-15 13:43 你这解释我就清楚了,谢谢提点。这样做硬件是省事了,但软件就麻烦多了。 |
感觉这种都是移动电源催生的数码管,根据其排列规律来驱动,IO口要可以设置推挽输出、高阻。 |
查理复用(Charlieplex)是一种在驱动大量LED时有效地节约IO口的方法,理论上可点亮 脚数*(脚数-1)个LED,也有接入二极管用来做按键的,理论上可实现 IO数*(IO数-1)个按键。 7个脚用满理论上可管理是42个LED,数码管不带小数点有6位数字,带小数点可5位数字还多2个灯。 所以这个器件还是比较保守做了7脚3位,理论上6脚可3位带小数点还多出6个LED管理位 这种被叫做 查理复用 Charlieplexing的方法可以用N个IO驱动N*(N-1)个LED。 6 个IO 可以驱动 30 个LED 这种数码管是由单片机I/O口直接驱动,I/O口要在工作在3态(高、低电平和高阻),驱动程序有点复杂。直接驱动每一个IO口吧,,没法省事了 这个是在内部将段引脚连接在一起了。一共8个段引脚,3个位引脚。如果是扫描显示和单个的用法一样。 如果使用的是扫描显示,程序完全都一样,认准管脚就行了。也可以自己写一段小程序,测定管脚。 每隔3~5秒显示一个段,a\b\c\d\e\f\g\h,一目了然。 编写驱动这种数码管的程序有点麻烦,它不是常规数码管按位多段同时点亮的,而是逐段轮流点亮的,类似流水灯。5个I/O口最多可以驱动20个笔段。编程时把暂时不需要用的3个端口置高阻,要用的两个端口一高一低,就点亮某一笔段(或两个端口同高同低不显示某一笔段,这点很重要,否则因扫描周期不同各段亮度不均匀)。如此这般把所有笔段扫描一遍。 http://www.51hei.com/bbs/dpj-161297-1.html http://www.51hei.com/bbs/dpj-168963-1.html |
利用IO口高阻? |