实现流水灯的方式有很多种(中断,定时器,延时等等),看用哪种方式,最简单的是延时做流水灯,那么在死循环里面增加按键检测,判断出有按键按下来时,再进入死循环,程序不往下走就可以暂停,再按跌出死循环。
#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语言编程
我想要的是比如说流水灯在走 我按了下按键 流水灯就在那停住了 打个比方刚好亮到第二个 然后我在按下按键 从第二个开始 哪里暂停哪里继续 一个按键就够了 请在帮帮忙。
追答要完全符合自己的要求,需要自己修改,自己做才能有提高。
追问我要的是用外部中断来实现 你这个我也会的。这两个概念的 你看清楚问题
追答if(~k1) // 给你修改一个 试试 按下 k1 流水灯在走。释放k1 停住
{
if(i==8){i=0;temp=0x01;} //8个流水灯逐个闪动
i++;
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp<<=1;
}
单片机c语言编了个流水灯,用按键怎么实现它暂停。
实现流水灯的方式有很多种(中断,定时器,延时等等),看用哪种方式,最简单的是延时做流水灯,那么在死循环里面增加按键检测,判断出有按键按下来时,再进入死循环,程序不往下走就可以暂停,再按跌出死循环。include \/\/51系列单片机定义文件 define uchar unsigned char \/\/定义无符号字符 define uint ...
单片机C语言编程:控制流水灯
T0 工作模式2 计时器中断,一次200us,1s流水灯左移或右移一次。k3触发外部中断0,级别高于计时器中断,故暂停。include <reg52.h>#include <intrins.h> #defineuint unsigned int#defineuchar unsigned charsbit k1=P1^0; \/\/左循环按钮sbit k2=P1^1; \/\/右循环按钮sbit k4=P1^2; \/\/恢复暂停...
用矩阵键盘上的键控制流水灯暂停的程序怎么编啊 用 C语言
但是你如果要求按一下就流水,再按一下就暂停,第三次按又流水,那你将按键按下计数,然后根据你按下按键次数进行对流水灯的操作。。。
单片机流水灯C语言结束程序该怎么写?也就是从灯0亮到灯7后就停止循环的...
你的描述太少了,下次提问把情况说明白,比如LED接口,点亮是什么电平。假设你电路使用P0驱动,低电平点亮,点亮下一个灯时需要关闭前一个灯。void delay(unsigned int ms) \/\/你自己根据晶振频率调整 { unsigned char j;for(;ms>0;ms--)for(j=110;j>0;j--);} void main(void){ unsigned ...
51单片机流水灯如何通过两个按键启动和停止 ,怎么停止
sbit k1=P3^6; \/\/启动按键 sbit k2=P3^7;\/\/停止按键 bit s=0; \/\/ 启停标志 char a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; \/\/LED灯的数组 void delay1s(void); \/\/延时函数 void liushuideng(); \/\/流水灯的循环 void main(){ led=~0xff;k1=1;while(1)...
在做单片机按键控制流水灯,我想达到按一下自己循环,再按一下就停止的...
{ Delayms(10); \/\/按键去抖动 if(K1==0) s=0; \/\/按键按下此时是键值s=0 } while(s==0) \/\/当按键第一次按下时进入循环点亮灯的循环 { temp=0x01; for(i=0;i<8;i++) { P0
单片机流水灯怎么实现的?
一般来说,实现流水灯功能需要以下步骤:首先确定单片机型号和开发环境,并熟悉指令集和寄存器配置。然后确定LED灯的连接方式,并编写程序来控制LED灯的亮灭状态。最后在程序中添加延时函数来实现LED灯的亮灭延迟。在编写程序时,需要注意语法错误和逻辑错误,并进行测试和调试,以确保程序能够正确运行并实现...
单片机cc2530怎么让按下sw1暂停流水灯
在流水灯函数里,检测按键,如果按键按下,就直接返回。void led(void){ if(sw1 == 0)return;led = ~led;Delay(100);...}
求大神一个关于89c52单片机用S0键来启动和停止流水灯的程序,在这里先感...
\/\/键控流水灯 include "REG52.H"define DataGPIO P1\/\/显示端口 define FLOWTIME 100\/\/修改此值,改变流水速度 sbit KEY = P2^0;\/\/按键 bit Start_flag =0;\/\/流水灯控制 bit Flow_flag =0;\/\/流水 unsigned char Cnt =0;\/\/流水灯计数器 unsigned char KEY_Cnt=0;\/\/按键识别计数...
C51单片机编程,按键控制流水灯
\/\/若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,全部灯灭 } } ...