用51单片机的定时器实现LED灯逐一点亮,间隔一秒。要求拨动控制开关可以控制灯的方向。
展开全部
追问
谢谢您的回答,您能给我留个QQ么。我们这课快考试了,我还好多不会呢,希望您能教教我。
追答
826807446
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以设置一个外部中断,中断的目的是控制灯的方向。间隔一秒可以用单片机小精灵生成。你自己在加中断就可以啦!
/*头文件*/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
/*端口定义*/#define led_port P0 /*定义LED显示的数据脚*/
/*1MS为单位的延时程序*/
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; /*初始化显示寄存器为1号灯亮*/
for(i=0;i<8;i++){
led_port = led_sdata; /*将显示寄存器输出到LED端口*/
led_sdata = (led_sdata<<1)+1; /*将显示寄存器数据左移1位,并将第一位置高,即熄灭*/
delay_1ms(200);
delay_1ms(200);
delay_1ms(200); /*延时*/
}
}
}
/*头文件*/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
/*端口定义*/#define led_port P0 /*定义LED显示的数据脚*/
/*1MS为单位的延时程序*/
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; /*初始化显示寄存器为1号灯亮*/
for(i=0;i<8;i++){
led_port = led_sdata; /*将显示寄存器输出到LED端口*/
led_sdata = (led_sdata<<1)+1; /*将显示寄存器数据左移1位,并将第一位置高,即熄灭*/
delay_1ms(200);
delay_1ms(200);
delay_1ms(200); /*延时*/
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询