由事理图可知,八个数码管并不是直接接在单片机的IO口上的,而是用了74HC595芯片,那么我们要想驱动数码管,就必须理解595芯片到底是个什么玩意儿,大多数开拓板并没有利用这个芯片。
74HC59574HC595芯片的浸染便是把串行的旗子暗记转为并行的旗子暗记。关于这个芯片的详细信息以及时序问题,我不在这里详细阐述,大家去问百度去,百度一大堆资料。
只谈谈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主函数里面的,相信大家自己可以完成:
实验效果