| 很大概率是硬件连接问题, 我debug时一般会写个简单程式来逐个点亮熄灭每个灯,如果硬件没有问题,再来分析代码问题, 把功能减到最少比如1个灯再来确认,确认好再逐步添加功能,希望这个思路能帮到你! |
为什么我第一反应是用的晶振频率过大,延时效果看不出来![]() |
| 建议检查一下101w的io口是否正常,没有仪器用万用表也行,用led逐个检查也行 |
msgd6688 发表于 2021-2-10 11:57 楼主先按下面闪烁灯程序验证你的硬件是否正常,免得搞不清是驴不走还是磨不转。 #include <reg51.H> /**1ms延时子程序(11.0592MHz 1T)****/ void delay(unsigned int k) { unsigned int i,j; for(i=k;i>0;i--) for(j=829;j>0;j--); } void main() { while(1) { P3=~P3; delay(500);//0.5秒 } } |
wulin 发表于 2021-2-10 07:18 按照你说的,我改了模式,然后改成低电平驱动还是6个IO口接的灯都全亮,会是这个单片机坏了吗?烧录都一直成功 |
| 程序设置后硬件电路不对应,导致与输出结果不一致 |
|
原程序作者是采用低电平驱动,楼主改高电平驱动要把LED驱动码通通取反,采用stc15f101w还要修改IO口输出模式。 void main() { int t=0; char f=0;//亮暗标志,0为亮 P3M0 = 0xff;//推挽输出模式 P3M1 = 0x00;//推挽输出模式 Init(); while(1) //主循环。 { ...... |
418854190 发表于 2021-2-9 18:53 跟我是高电平驱动有关吗,刚刚学到这 |
| 我用15F104W实验了 程序没问题 你在好好检查一下接线是否接错了 |
| 虽然楼主链接的这个程序不咋地,甚至有错误,但还是可以勉强运行。程序烧录成功,但是通电以后所有灯全亮可能是楼主硬件电路有问题。 |
| 建议使用示波器查看灯的IO口是否输出高低电平 |
| 建议使用示波器看一下控制灯的IO口是否输出高低变化的电平。 |