乘着物联网的东风,中国的安信可(AI-Thinker)推出的ESP8266系列可是火了一把。
所谓物美价廉,花很少的钱就能让你的老爷车51单片机系统插上无线的翅膀,真的是带你zb带你飞。。。
其实不仅仅是51,AVR/STM甚至Aduino系列都能鸡犬升天。
说了这么多废话,这篇文章不是教程,只是记录一下上手esp01时掉过的坑以及怎么爬出来的。。。

Read More

前面几篇我们学习了如何利用一片或多片级联的74HC595芯片来驱动显示数码管的方法。最开始我们提出的两个问题:

  1. 占用IO口过多
  2. 做动态扫描时占用CPU资源太多导致显示不稳定

第一个问题已经利用级联的74HC595解决了。(不管驱动几只数码管,只用3个IO即可)
但第二个问题依然存在,树莓派仍然需要不停地访问IO口进行动态扫描。
好,既然动态扫描占用CPU资源太多,那这活儿咱包出去让别人干不就行了?这就是本文主角MAX7219的特长,动态扫描这活儿MAX7219全包了,干的还比咱自己干得还好,一片MAX7219可最多支持显示8位8段数码管,还支持各种设置如亮度设置扫描位数设置等。而我们只用告诉它显示的内容就行了。

Read More

上一篇我们学习了如何利用74HC595这块显示驱动芯片来驱动1位8段数码管的方法。并逐一讲解了该芯片各引脚的功能。细心的童鞋可能注意到了,上次我们有一个Q7S引脚没有用到。这一篇我们就用这个引脚来级联两块74HC595芯片同时驱动8个8段数码管。在两块74HC595芯片的配合下,同样只需要3个GPIO口就能驱动八只8段数码管。而如果直接用GPIO驱动则需要至少16个GPIO口,节省了13个GPIO!而且按照本文的方法,你还可以级联更多的74HC595芯片,每多级联一片就能多驱动8只数码管,而需要的IO口仍然只有3个!妈妈再也不用担心我的IO口不够用了。

Read More

之前我们学习了如何驱动数码管显示数字
但是这种做法有两个缺点。

  1. 需要占用大量IO口,在那篇文章里,我们为了驱动4位数码管一共使用了12个IO口。如果需要驱动8位数码管则至少需要16个IO口。
  2. 系统资源占用过多。还是在那篇文章里,为了实现数码管的动态扫描显示,需要不停地高速操作IO口,这对单任务的单片机比如51单片机来说问题并不太大,因为单任务的单片机的执行时序是由晶振来决定的,动态扫描的时间间隔可以控制地非常精确,数码管的显示会很稳定,不会出现闪烁的现象。但对于运行着多任务的Linux操作系统的树莓派来说,对IO口的大量反复操作以及大量使用sleep语句会导致CPU占用过多,最后导致动态扫描的间隔时间不均匀,体现为数码管显示不稳定,有明显闪烁的现象。为了改善这个问题我在那篇文章的最后还尝试用c语言来代替python语言,可实际效果有限。
    使用GPIO直接驱动数码管时,上面这两个问题是不可避免的。想解决这两个问题,我们需要借助外部芯片的帮助。
    接下来我将用几个篇幅来介绍如何使用显示驱动芯片74HC595来驱动数码管的方法。同时我们也可以学习到串行数据传输的方法以及一些数字芯片通用的一些概念,比如时钟引脚,上升沿,锁存,移位寄存等。理解了这些通用的概念对学习使用其他芯片是很有帮助的。

Read More