|
本帖最后由 ycwjl728 于 2016-1-18 23:22 编辑
后来编辑:问题已经锁定,详见8楼。
故障现象:不论是送0x00还是0xFF,数码管的C和小数点总是常亮,也就是a,f,e,d,和dp段总是常亮。
感觉TM1650驱动数码管挺简单的,没想到遇到问题了。。
单片机是ATmega16L,系统3.3V供电,两个IO模拟I2C,程序是某宝上买数码管模块的发的资料,号称亲测有效,我看好像也没啥问题,直接拿来用的。开显示和关显示的命令是好使。
原理图:
数码管型号:LDS-5202FX,力创商城买的,单片机也是。
数码管是共阳极的,数据手册上写的是共阴极例子,有关系吗?
哪位大神遇到过这种情况吗?
附上程序,为了简便我都压缩到一个函数里面了。
void TM1650Full(uchar addr1,uchar data1)
{
uchar i,t;
DIO_OUT;
CLK_OUT;
CLK_H;
DIO_H;
Delay_us(5);
DIO_L;
Delay_us(5);
CLK_L;
Delay_us(5);
for(i=0;i<8;i++)
{
t = addr1 & 0x80;
addr1 = addr1<<1;
if(t == 0x80)
{
DIO_H;
}
else
{
DIO_L;
}
Delay_us(5);
CLK_H;
Delay_us(5);
CLK_L;
}
DIO_IN;
DIO_H;
while((PINC&(1<<PC1)==(1<<PC1)));
CLK_H;
Delay_us(5);
CLK_L;
Delay_us(5);
DIO_OUT;
Delay_us(5);
for(i=0;i<8;i++)
{
t = data1 & 0x80;
data1 = data1<<1;
if(t == 0x80)
{
DIO_H;
}
else
{
DIO_L;
}
Delay_us(5);
CLK_H;
Delay_us(5);
CLK_L;
}
DIO_IN;
DIO_H;
while((PINC&(1<<PC1)==(1<<PC1)));
CLK_H;
Delay_us(5);
CLK_L;
Delay_us(5);
DIO_OUT;
Delay_us(5);
CLK_H;
Delay_us(5);
DIO_H;
Delay_us(5);
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|