由原理图可知,八个数码管并不是直接接在单片机的IO口上的,而是用了74HC595芯片,那么我们要想驱动数码管,就必须了解595芯片到底是个什么玩意儿,大多数开发板并没有使用这个芯片。
74HC595
74HC595芯片的作用就是把串行的信号转为并行的信号。关于这个芯片的详细信息以及时序问题,我不在这里详细叙述,大家去问百度去,百度一大堆资料。
只谈谈74HC595芯片的使用步骤
第一步:将要准备输入的唯一数据移入74HC595数据输入端上。送位数据到595芯片。
第二步:将位数据逐步移入74HC595,即SCL产生一个上升沿,将SI上的数据移入74HC595移位寄存器中,先送低位,再送高位。
第三步:并行输出数据,即数据并出。RCK产生一上升沿,将由QA-QH上已移入数据寄存器中的数据送入输出锁存器。
根据原理图可以知道,数码管驱动设计到两个74HC595芯片,一个芯片的输出用于控制数码管的位选,另一个芯片的输出控制数码管的段选,两个芯片的12号引脚同时受单片机的P2.5引脚控制,两个芯片的11号引脚同时受到单片机的P2.6引脚控制,段选数据和位选数据都是通过单片机引脚P2.7发送,在控制时钟引脚P2.6的控制下,当P2.6出现上升沿时,单片机通过P2.7引脚向505芯片内部发送数据,应先发送位选数据,当八位位选数
据在P2.7引脚产生的8个上升沿的作用下,从高位到低位一次存于Q7——Q0上。感觉说了这么多,已经有人懵逼了,觉得很烦,算啦,直接上代码大家瞅瞅吧,我只给大家看看驱动代码,至于main主函数里面的,相信大家自己可以完成:
实验效果