永发信息网

用51单片机的定时器实现LED灯逐一点亮,间隔一秒。要求拨动控制开关可以控制灯的方向。

答案:2  悬赏:40  手机版
解决时间 2021-11-23 22:12
  • 提问者网友:鼻尖触碰
  • 2021-11-23 17:58
用51单片机的定时器实现LED灯逐一点亮,间隔一秒。要求拨动控制开关可以控制灯的方向。
最佳答案
  • 五星知识达人网友:躲不过心动
  • 2021-11-23 18:28
嘿嘿 这个俺可以帮你解答
1 利用定时计数器0 工作在方式2 定时50毫秒 结合软件计数器(初始值选20)
允许定时计数器中断
2 设计一个定时器0的中断服务程序 每50毫秒 就中断 在中断程序中软件计数器减1
当减到0时,表示1秒时间到 (重新送初始值20)
判断拨动开关状态 如果为低低电平 则选择控制LED的端口内容左移一位
如果为高低电平 则选择控制LED的端口内容右移一位
即可实现对流水灯的方向控制。

呵呵 满意 就选满意回答哦追问谢谢您的回答,您能给我留个QQ么。我们这课快考试了,我还好多不会呢,希望您能教教我。追答826807446
全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-11-23 19:22
你可以设置一个外部中断,中断的目的是控制灯的方向。间隔一秒可以用单片机小精灵生成。你自己在加中断就可以啦!

#include
#include
#define uint unsigned int
#define uchar unsigned char

#define led_port P0


void delay_1ms(uchar x)
{
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}


void main()
{
uchar led_sdata;
uchar i;

while(1){
led_sdata=0xfe;
for(i=0;i<8;i++){
led_port = led_sdata;
led_sdata = (led_sdata<<1)+1;
delay_1ms(200);
delay_1ms(200);
delay_1ms(200);
}
}

}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯