‘壹’ 单片机C语言,一个按键控制三个流水灯
void main()
{
int i=0; //设置参考变量
//初始化
p1.0=1;
p1.1=0;
p1.2=0;
//进入按键操作
while(1)
{
if(p2.2==0)
{
i++;
if(i==1)
{
p1.0=0;
p1.1=1;
p1.2=0;
delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。
}
if(i==2)
{
p1.2=1;
p1.0=0;
p1.1=0;
delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。
}
if(i==3)
{
p1.0=1;
p1.1=0;
p1.2=0;
delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。
i=0;//参考变量归0
}
}
}
}
‘贰’ c51单片机独立按键控制三种流水灯
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
ucharkeyval,led,led1;
sbitkey=P3^2;
voidext0()interrupt0
{
while(key==0);
keyval++;
keyval%=3;
}
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
led=0xfe;
led1=0x55;
while(1)
{
switch(keyval)
{
case0:P1=led;led=_crol_(led,1);delay(200);break;
case1:P1=led;led=_cror_(led,1),delay(200);break;
case2:P1=led1;led1=~led1;delay(200);brek;
default:break;
}
}
}
‘叁’ 51单片机摁键控制流水灯
用4个按键控制流水灯,P1口接8个LED流水灯,P3.4~P3.7接有4个按键,仿真图如下。
‘肆’ 51单片机利用独立按键控制流水灯
while(1)
{ P1=aa;
delayms(1000);
aa=_crol_(aa,1);
}
这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了
if(key1==0)
{
P1=0x7e;
‘伍’ C51单片机编程,按键控制流水灯
#include "reg51.h"
unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED灯的花样数据
void delay(unsigned char time){ //延时函数
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
bit dir=0,run=0; //标志位定义及初始化
char i;
while(1){
switch (P0 & 0x0f){ //读取键值
case 0x0e:run=1;break; //K1动作,设run=1
case 0x0d:run=0,dir=0;break; // K2动作,设run=dir=0
case 0x0b:dir=1;break; //K3动作,设dir=1
case 0x07:dir=0;break; //K4动作,设dir=0
}
if (run) //若run=dir=1,自上而下流动
if(dir)
for(i=0;i<=3;i++){
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流动
P2=led[i];
delay(200);
}
else P2=0xff; //若run=0,全部灯灭
}
}
‘陆’ 单片机按键控制流水灯状态切换
现在一般不用2051了,呵呵,不过仿真也没事。
这程序可以这样写:设一个变量作为按键的键值,按下为1,再次按下为0;首先写一个流水灯的子程序,然后再主函数里去识别之前设置的键值,=1--->去执行流水灯;=0--->直接把P1口赋值0(也就是全亮)。这样就可以实现了。
‘柒’ 51单片机按键中断控制流水灯
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
ucharled,time=0;
sbitkey=P1^0;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
led=_crol_(led,1);
P0=led;
time++;
if(time>=200)TR0=0;
}
main()
{
ucharkeyval=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
keyval++;
keyval%=3;
}
switch(keyval)
{
case0:led=0xff;P0=led;break;
case1:TR0=1;led=0xfe;break;
case2:TR0=0;break;
default:break;
}
}
}
‘捌’ 按键控制单片机流水灯模式
在死循环的函数开始判断具体是哪个按键,然后根据不同的按键用switch case语句调用具体的流水灯模式,每一种模式可以写在case中 也可以是一个函数
‘玖’ c51单片机独立按键控制,流水灯程序
while(1)
{ P1=aa;
delayms(1000);
aa=_crol_(aa,1);
}
这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了
if(key1==0)
{
P1=0x7e;
‘拾’ C51单片机按键切换流水灯
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delayms(uint i) //1ms延时程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void main(void)
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
P2=0X01<<i;
delay_ms(200);
}
}
}