从零开始学习单片机14
数码管原理
数码管由8个发光二极管(LED)组成,8个发光二极管由两种连接方式,共阴极和共阳极
使用的是共阴极接法时,要想点亮LED,只需要在对应的二极管的阳极上接上高电平;使用的是共阳极接法时,要想点亮LED,只需要在对应的二极管的阴极上接上低电平
单片机控制数码管还存在一些的问题,51单片机的引脚电流能力只有1mA左右,驱动能力不足以直接点亮数码管,三极管电路可以增强IO的驱动能力,但每个LED都加上三极管电路,器件会很多,不是很方便
三极管电路
这时就可以选择集成芯片方案,用一颗74HC245芯片来增加单片机引脚的驱动能力,这颗芯片的引脚拉电流能够达到7.8mA。(原理就是把8个电路集成到一个芯片上了)
方向引脚接VCC,就代表A1-A8是输入。B1-B8是输出,把8个IO接到A1-A8,把B1-B8接到数码管,这样就可以完成数码管的驱动。控制IO的高低电平就可以控制LED的亮灭
51单片机总共32个IO口,如果每个数码管要占用8个IO,驱动3个数码管时需要24个IO,那其他功能就难以进行,使用74HC595芯片就可以使一个IO控制8个IO的输出(串行转并行)。
Q0-Q7输出引脚,GND接地,Q7S串口的输出(芯片同时支持并口和串口的输出),MR复位,OE是使能引脚,SHCP(移位寄存器时钟输入)、STCP(锁存寄存器时钟输入)为时钟信号,DS为输入引脚
74HC595D芯片工作原理:
1.开始工作前,MR必须是高电平(低电平时会让芯片复位),OE必须是低电平,595才能工作。
2.SHCP是上升沿的时候,芯片会读取DS上的信号,写入DS的数据,每写入一个数据时,移位寄存器中的数据依次移动一位
3.STCP是上升沿的时候,把数据从移位寄存器转存至锁存寄存器。OE为低电平时,把锁存寄存器的值输出到Q0-Q7
74HC595芯片的发送顺序是由Q0,一直到Q7。下图是发送1位数据的过程,先在Q7输出高位,低位在Q0输出
用代码表示为
void hc595_send_data(unsigned char byte)
{unsigned int i;for(i = 0; i < 8; i++){//串行输入引脚if(byte & 0x80)ds_pin = 1;elseds_pin = 0;//SHCP发生一次上升沿的时候,74HC595才会从DS引脚上取得当前的数据shcp_pin = 0;shcp_pin = 1;byte <<= 1;}stcp_pin = 0;stcp_pin = 1;
}