关于51单片机流水灯和数码管控制的问题

2024-11-21 17:10:33
推荐回答(3个)
回答1:

while(1)
{
delay(1000);
temp=_crol_(temp,1);
P1=temp;
}
上面while(1)里的是P1端口上接的LED流水灯循环左移,这里的delay(1000);当P1口上的LED左移一位时,延时一段时间。

而定时器0中的是数码管显示变换,也就是当TH0 和THL中的数值从(65536-50000)/256的值开始记数当记到65535时,定时器0中断溢出,aa加1,当aa加到40时,num加1,这要把num的值通过table查表 在给P0显示(显示值在0-F间);
我看你这里定时器0中断时间大概在50MS间中断一次吧,那应该就是2S时间数码管显示值变化一次。

结论就是上delay(1000);是经流水灯延时用,定时器0是为数码管延时用,这样流水灯与数码管可以同时显示而不相互干涉,其实用一个定时器也可以实现流水灯和数码管的同时显示,不过相对麻烦一点,那天你了解了多任务时就知道了。

回答2:

1、你程序只用了一个定时器

2、你程序主循环控制的是LED流水灯,1S钟左右的周期。
3、你程序定时器0控制的是数码管,2S钟改变一下显示内容,从0到F循环显示。

回答3:

哥们儿 你只用了一个定时器(大概2秒 用于数码管的显示);
你的流水灯循环用的是延时(大概一秒)。