标题: 单片机LED程序调试 求助各位大佬,请各位留下你们宝贵的建议,感激不尽 [打印本页]

作者: 小白大佬轻点喷    时间: 2022-12-12 23:32
标题: 单片机LED程序调试 求助各位大佬,请各位留下你们宝贵的建议,感激不尽
想问一下单片机烧录程序时候这样子的led电路全给高电平会全亮,按下复位也会亮,但是写入流水灯代码的之后就总有俩个灯没反应,单独赋值那俩个灯也没反应,请各位分享你们宝贵的建议,万分感谢。个人感觉代码没问题,以经过调试,但我还是把各位贴在下方,再次感谢。



#include <STC12C5A60S2.H>

unsigned char LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//led赋值

void delay()//延时函数
{
        int i,j;
        for(i=0;i<1000;i++){
                for(j=0;j<120;j++);
        }
}

void init()//io口模式选择函数
{
        P0M0=0xff;
        P0M1=0x00;
}
void main()
{
        int i;
        init();
        while(1){
                for(i=0;i<8;i++){
                        P0=LED[i ];//给共阴led赋值
                        delay();//延时函数
                }
        }
}


作者: wulin    时间: 2022-12-13 05:55
程序没有问题,单片机加电复位或按下复位键后所有IO口高电平是正常现象,如果你写入流水灯代码之后总有两个灯没反应是硬件有故障。
作者: 小白大佬轻点喷    时间: 2022-12-13 07:42
wulin 发表于 2022-12-13 05:55
程序没有问题,单片机加电复位或按下复位键后所有IO口高电平是正常现象,如果你写入流水灯代码之后总有两个 ...

好的感谢你的解答

作者: f350001    时间: 2022-12-13 08:05
P0口有加上拉电阻了吗
作者: man1234567    时间: 2022-12-13 08:44
严重同意一楼意见,流水灯程序没问题。
假设硬件算正常,确定是否接线正确,或修改程序不用数组依次亮灯试试;
假设硬件不着调,更换或调不亮的那些口到别的空闲口(需改程序)试试。
当然,还可以在主程序里删除 init(); 试试,或者全部平移到除P0以外的口试试。
总之就是折腾才有乐趣
作者: lkc8210    时间: 2022-12-13 09:19
那俩个灯引脚短路了
一高一低,会被低电平拉低(长时间会烧引脚)
试试把俩个灯引脚置1,一齐亮就更实锤了
作者: 小白大佬轻点喷    时间: 2022-12-13 17:40
man1234567 发表于 2022-12-13 08:44
严重同意一楼意见,流水灯程序没问题。
假设硬件算正常,确定是否接线正确,或修改程序不用数组依次亮灯试 ...

感谢大佬的回答,但是有时候程序不理解想确实有点烦对我来说,同时将问题解决内心也是极为满足的
作者: 小白大佬轻点喷    时间: 2022-12-13 17:42
lkc8210 发表于 2022-12-13 09:19
那俩个灯引脚短路了
一高一低,会被低电平拉低(长时间会烧引脚)
试试把俩个灯引脚置1,一齐亮就更实锤了

还真如此,4,5俩个led灯焊接时锌接到一起去了,新手焊接还是问题太大了
作者: 小白大佬轻点喷    时间: 2022-12-13 17:43
f350001 发表于 2022-12-13 08:05
P0口有加上拉电阻了吗

评论区无法回复图片但是应有有,我看到了vcc




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1