很多时候,主控IC资源是极其有限的。我们可以通过IO扩展芯片来扩展IO。TM1652是一款国产的LED驱动芯片。可以用来驱动8段5位或者7段6位共阴极数码管。然而它只有一条通讯线,支持异步串口。可见,使用它极其方便了IO资源紧张的应用情景。
我在用它来驱动8段4位数码管。这里给出电路图:
因为我的主控IC是一个3.3V工作的芯片,而TM1652工作的典型值是5V,所以,为保证通信正常,我使用了左上角这个驱动电平转换的基本电路。
电路设置完毕,上代码:
void TM1652Send8bit(char sdat)
{
unsigned char i=0, sfalg=0;
//???
SET_TX;
RESET_TX;
delay_us(52); //??52us
//??8???
for(i=0; i<8; i++)
{
if(sdat & 0x01)
{
SET_TX;
sfalg++;
}else
{
RESET_TX;
}
delay_us(52);
sdat >>=1;
}
//jiao yan wei, an zhao fa song shu ju zho