咋搞,51单片机的led的闪烁

咋搞呀,这个东西急着用,在线等,记,大概萨达是接电话撒娇的后果撒娇活动轨迹

img

img

卧槽!现在学校还有教 C51 吗? 那都是我读书的时候的事了

Delay延时的单位是毫秒,不清楚的话可以查一下51主频和指令周期的资料。

问题1.
灯的闪灭,如果肉眼看上去比较舒服,一般是0.8秒为周期,也可以设置为0.5秒或1秒。图片中的解答有两个错误:
一是P1=ledo;语句之后没有delay,也就是说灯灭的时间只有1条指令的周期,完全感觉不到。
二是Delay(100)=0.1秒,而人的视觉残留是0.2秒,延迟时间太短,闪烁的体感不佳;
所以建议修改为:

P1=led;
Delay(800);
P1=ledo;
Delay(800);

问题2.
解答用的led灯设置数组: 0x18, 0x24, 0x42, 0x81, 与题设要求的“依次点亮,再依次熄灭”不符合。
应该是序列 0x18, 0x3C, 0x7E, 0xFF, ,然后再反过来,重复2次。
一样的,建议用Delay(800)。

问题3.
呼吸灯,意思是逐渐变亮,再逐渐变暗。原理是利用视觉残留,通过调整灯的亮/暗占比时间,达到亮度的控制。因为答案部分图片不全,所以不好判断正确性,只能说逐渐变亮的部分,前面4行代码是对的。