C51单片机按下独立按键切换流水灯或跑马灯的流动速率

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-29
C51单片机按下独立按键怎样实现能够切换流水灯或者是跑马灯的流动方向

/*单片机,用定时中断实现每隔0.2秒让接在P1口的8个小灯从左往右循环点亮。*/
#include
#include
#define uchar unsigned char
uchar a,b;
uchar b=1;
uchar a=0xfe;
void main()
{
EA=1;IT1=1;ET0=1;
TH0=-5000/256;
TL0=-5000%256;
TMOD=0x01;

TR0=1;
while(1)
{;}


}

void timer0(void) interrupt 1 using 1
{
TH0=-5000/256;
TL0=-5000%256;
b=b+1;

if(b==40)
{
b=0;
P1=a;
a=_crol_(a,1);
P1=a;
}
}

#include
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit anjian = P1^0; //按键位
void delay(uint16 h) //延时程序
{
while(h--);
}
main()
{uint8 k = 0 , i = 0;
P0 = 0xff;
anjian = 1;
while(1)
{
P0 = ~(1<<k++);
if(anjian == 0)
{
delay(200);
if(anjina == 0) i++;
if(i == 3)
i = 0;
}
switch(i)
{
case 0: delay(10000);break;
case 1: delay(20000);break;
case 2: delay(20000); break;
}
if(k==8) k=0;
}

}
//头一次回答问题,多多支持,全部知识都是自学的,但是我试验过可以符合你的要求运行,谢谢

流水灯每变化一次,即流动一步,都要延时的,通常是调延时子程序,而且要带一个延时的时间值,例如:
delay(5000);如果所带参数是一个常数,那流水灯的速度就是固定不变的。如果改成一个变量,如:
delay(speed); 这速度就可以变化可调了。这样,通过按键改变变量speed的值,就调速度了。

  • 89C51单片机 4*4矩阵键盘加流水灯问题,求个汇编程序代码。
    答:;其实很简单,都不用判断键值,有键按下暂停2S程序如下:ORG 0000H LJMP STA ORG 000BH LJMP T0ISR ORG 0030H STA:MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA MOV 30,#0FEH MOV R2,#0 CLR 00H LOOP:MOV P1,#0F0H MOV A,P1 CJNE A,#0F0H,LOOP1 SJMP LOOP...
  • 51单片机外部按钮控制24lLED流水灯C程序
    答:可以在网上找一下流水灯程序和独立按键的程序,然后自己再稍微整合一下就可以的。如果是想好好学的话,最好自己动手做一下。
  • ...按下一个独立按键然后流水灯就先全亮,最后熄灭?
    答:"流水灯依次上下亮过一遍"不是左右流水一次,“按下一个独立按键然后流水灯就先全亮最后熄灭”就是按下键以后,全给端口一个低电平;接着给高电平(灯是共阳接法,反之成立)。
  • 单片机c51编程,有很多延时语句,严重拖慢整个系统,怎么用中断的方式防...
    答:不一定要用中断,可以用一些扫描语句代替延时。比如用独立按键控制流水灯状态,流水灯的延时会影响按键扫描使得按键不是很灵敏,每次都要按好长时间才有反应,因为按键只有不断扫描才能实时接收外界脉冲信号。但如果用按键扫描代替延时就不一样了
  • 怎么用c程序实现3个独立按键控制流水灯(按键1实现速度加快,按键2实现...
    答:3个按键控制8个流水灯,P1口接8个LED灯,P3口接3个按键,仿真图如下。
  • 一个独立按键控制八只流水灯
    答:while(1)//把while放到你的主函数里 { if(key==0) //定义到自己的按键 { run++; //全局变量 if(run==4){ run=1;} } P0=0xff; //这个程序控制的是P0口 switch(run){ case 1:P0=0xfe;P0=0xfd;P0=0xfb;P0=0xf7;P0=0xef;P0=0xdf;P0=0xbf;P0=0x7f;break;case ...
  • 关于单片机C51独立按键和程序执行顺序问题
    答:根据你提供的函数,表明你的板子LED是共阳极连接的,即LED阳极接到一起,每个LED阴极接IO口,这样当IO口为低电平时灯就点亮了。所以,你的程序一开始是亮灯而不是灭灯。sbit BY1=P3^4是一个位定义,意思是把单片机的P3.4口定义为BY1,以后对BY1进行操作就是对P3.4进行操作。
  • 在做单片机按键控制流水灯,我想达到按一下自己循环,再按一下就停止的...
    答:if(K1==0){ Delayms(10); //按键去抖动 if(K1==0) s=0; //按键按下此时是键值s=0 } while(s==0) //当按键第一次按下时进入循环点亮灯的循环 { temp=0x01; for(i=0;i<8;i++) {
  • 请问一个独立按键控制同时控制八盏流水灯,左右循环分开控制的源程序怎...
    答:一个按键要控制左右循环的话,可以是:按下和抬起两个状态,分别控制左循环和右循环。
  • 基于单片机的花样流水灯控制
    答:单片机流水灯,是学习单片机的基础实验,花样+按键是稍微进一步,可以多看一些实例,网上有很多仿真实例可以参考学习。