单片机C语言,一个按键控制三个流水灯

单片机C语言,一个按键控制三个流水灯,第1张

void main()

{

int i=0; //设置参考变量

//初始化

p10=1;

p11=0;

p12=0;

//进入按键 *** 作

while(1)

{

if(p22==0)

{

i++;

if(i==1)

{

p10=0;

p11=1;

p12=0;

delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。

}

if(i==2)

{

p12=1;

p10=0;

p11=0;

delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。

}

if(i==3)

{

p10=1;

p11=0;

p12=0;

delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。

i=0;//参考变量归0

}

}

}

}

/

编写者:XP

学习单片机一个星期,这是我自己写的/

#include<reg52h>

sbit Key=P3^2;

sbit LED_1=P1^0;

sbit LED_2=P1^1;

/

延时函数/

void Delay(int del)

{ int i,j;

for(i=0;i<=42;i++)

for(j=0;j<=del;j++) ;

}

void main()

{ while(1)

{ if(Key==0)

{ Delay(10); //软件防抖,延时10ms

if(Key==0)

{ LED_1=0; //第一个灯亮

LED_2=1; //

Key=1;

Delay(250);

if(Key==0)

{ Delay(10); //软件防抖,延时10ms

LED_1=1; //第一个灭

LED_2=0;} //第二个亮

}

}

Delay(300);

Key=1;

}

}

#include <reg51h>

sbit P3_3=P3^3;

sbit P3_4=P3^4;

unsigned char Time,Ledtemp,Sign;

void InitTimer1()//50ms定时器初始化

{

    TMOD = 0x10;

    TH1 = 0x3C;

    TL1 = 0x0B0;

    EA = 1;

    ET1 = 1;

    TR1 = 1;

}

main()

{

    InitTimer1();

while(1)

{

if(P3_3==0)Sign=1; //P33按下启动流水

if(P3_4==0)Sign=0; //P34按下停止流水灯

if(Sign)P1=Ledtemp;

else P1=0;

}

}

void Timer1Interrupt() interrupt 3

{

    TH1 = 0x3C;

    TL1 = 0x0B0;

    if(Time<50)Time++;//中断50次=1s

else

{

Time=0;

if(Ledtemp>0)Ledtemp>>=1;//高电平循环右移

else Ledtemp=0x80;

}

}

已测试,自己拿去编译。

这个是单片机IO口输出高电平的流水灯,如果要改成输出低电平的,只需要把23行改成P1=~Ledtemp

实现流水灯的方式有很多种(中断,定时器,延时等等),看用哪种方式,最简单的是延时做流水灯,那么在死循环里面增加按键检测,判断出有按键按下来时,再进入死循环,程序不往下走就可以暂停,再按跌出死循环。

#include //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint); //声明延时函数

void main(void)

{

uint i;

uchar temp;

uint Flag1=0;  按键标志位bai

uint Flag2=0;

while(1)

{

Flag1 = keyscan();

if(Flag1==1)(Flag2=~Flag2); //如果一旦检测到一次按键扫描就把标志位2 打开;再次就关闭;

if(Flag2==1)// 如果标志位打开就开始流水灯

{

temp=0x01;

for(i=0;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp<<=1;

}

}

扩展资料:

单片机编程就是硬件是单片机,基于单片机进行的程序开发,在有周围外设支持的情况下,用软件来控制的部分通过单片机编程来实现。单片机能识别的语言是硬件语言即汇编,因此编程就是围绕汇编来实现,有直接用汇编程序来编写的,但是较难调试的编写,特别是一上规模就更不易实现,因此常用高级语言来写然后通过编译器转化成汇编。

参考资料来源:百度百科-单片机C语言编程

先定义4个按键,

sbit k1=P1^0;

sbit k2=P1^1;

sbit k3=P1^2;

sbit k4=P1^3;

再定义一个变量计数,分别计1,2,3,4,对应4个按键。

在主循环程序中判断4个按键是否按下,每一个开关按下,变量赋值对应的数。

再根据变量值,执行对应的第1,2,3,4种花样就行了。

以上就是关于单片机C语言,一个按键控制三个流水灯全部的内容,包括:单片机C语言,一个按键控制三个流水灯、单片机可控制流水灯汇编程序 要求:按一下亮一个,再按一下第二个亮,第一个熄灭、怎样用按键C51语言控制流水灯亮灭呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9706597.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存