51单片机8路流水灯! 用三个按键控制三个程序!每个按键对应一个程序!按键一个键死循环一个程序!

51单片机8路流水灯!
用三个按键控制三个程序!每个按键对应一个程序!按键一个键死循环一个程序!只有按下一个键!跳到下一个程序死循环

第1个回答  2016-10-23
#include<reg51.h>
#define uchar unsigned char
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
uchar led1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar led2[]={0xe7,0xdb,0xbd,0x7e};
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
void prog1(void)
{
uchar i;
while(flag)
{
P0=led1[i];
i++;
i%=8;
delay(200);
}
}
void prog2(void)
{
uchar i;
while(flag)
{
P0=led2[i];
i++;
i%=4;
delay(200);
}
}
viud prog3{void)
{
uchar i=7;
while(flag)
{
P0=led1[i];
i--;
if(i>7)i=7;
delay(200);
}
}
main()
{
flag=0;
while(1)
{
if(key1==0)
{
flag=0;
while(key1==0);
flag=1;
}
if(key2==0)
{
flag=0;
while(key2==0);
flag=1;
}
if(key3==0)
{
flag=0;
while(key3==0);
flag=1;
}
}
}追问

flag是代表1还是啥意思

flag是定义循环跳出是不?

三个亮灯方式主函数怎么没有调用啊!如果问的有点菜鸟!请原谅😔😔

追答

while(1)
{
if(key1==0)
{
flag=0;
while(key1==0);
prog1();
flag=1;
}
if(key2==0)
{
flag=0;
while(key2==0);
prog2();
flag=1;
}
if(key3==0)
{
flag=0;
while(key3==0);
prog3();
flag=1;
}
}

追问

嗯晓得了

本回答被提问者和网友采纳

51单片机8路流水灯! 用三个按键控制三个程序!每个按键对应一个程序...
if(key3==0){ flag=0;while(key3==0);flag=1;} } }

实现P0口驱动8个发光二极管流水灯点亮,设置三个按键 c51单片机 急...
return(0x31);\/\/返回字符"4"表示按键SW1按下 } } XBR0 =0X02;return(0);\/\/返回0,表示没有按键按下

51单片机汇编控制8个流水灯
} }}void main(){ unsigned char i=0,j=0; PData=0x00;\/\/全灭状态 for (i=8;i>0;i--){\/\/控制常亮的位置,先从最高位开始,依次循环到最低位 for (j=0;j<i-1;j++){\/\/从最低位循环到不是常亮的最高位 P1=~(PData+(1<<j));\/\/第i位亮 delay(500); ...

用51单片机设计8个灯的跑马灯程序拜托各位大神
while(x--){ for(j=0;j<125;j++) {;} } } \/*主程序*\/ void main() { uchar led_sdata; \/*显示寄存器*\/ uchar i; while(1){ led_sdata=0xfe; \/*初始化显示寄存器为1号灯亮*\/ led_port = led_sdata; \/*将显示寄存器输出到LED端口*\/ delay_1ms(200); delay_1ms(200); ...

很简的51单片机C语言流水灯程序
1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include<reg51.h> \/\/51单片机头文件#include <intrins.h> \/\/包含有左右循环移位子函数的库#define uint unsigned int \/\/宏定义#define uchar unsigned char \/\/宏定义sbit beep=P2^3;void delay(uint z) \/\/延时函数,z...

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) \/\/8个流水灯逐个闪动 { P1=~temp;delay(100); \/\/调用延时函数 temp<<=1;} temp=0x80;for(i=0;i<8;i++) \/\/8个流水灯反向逐个闪动 { P1=~temp;delay(100); \/\/调用延时函数 temp>>=1;} temp...

怎么用c程序实现3个独立按键控制流水灯(按键1实现速度加快,按键2实现...
3个按键控制8个流水灯,P1口接8个LED灯,P3口接3个按键,仿真图如下。

51单片机按键控制流水灯和数码管(最好用外部中断)?
51单片机按键控制流水灯和数码管,P1口接8个LED灯,P0口接一个共阳数码管,P3.2和P3.3各接一个按键,分别用外部中断0和中断1。早蜂鸣器接在P2.7上。仿真图如下。

单片机课程设计8个流水灯程序
可以改成按键控制多种花样流水灯,原理是一样的#include#include#defineLED_PORT1P1unsignedcharcodetable1[8]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e};voidtime(unsignedintucMs);voidmain(void){unsignedcharucTimes;#defineDELAY_TIME200while(1){for(ucTimes=0;ucTimes<7;ucTimes++){LED_...

如何用3个按键控制流水灯方向和流速同时使用数码管显示当前时间间隔...
1、将你控制用的单片机datasheet下载下来,不用全看,挑需要的看,其他的以后研究。2、这个项目只是控制单片机的流水灯而已,由于你未提供原理图,我就假设一个IO口控制一盏灯,程序设计流程如下:初始化单片机(设置定时器的定时时间为0.1s,控制灯,数码管的IO口设置为输出模式,检测按键的IO口设置为...

相似回答