用矩阵键盘上的键控制流水灯暂停的程序怎么编啊 用 C语言

作者&投稿:宏斧 (若有异议请与网页底部的电邮联系)
单片机c语言编了个流水灯,用按键怎么实现它暂停。~

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

这个要使用外部中断,你在程序里面改一下,加入中断,可以用你的连接矩阵键盘的io口的最高位与最低位做一个与非门作为中断信号就可以了。附上一段以前写的,你看看,不过由于我没有与非门,所以我用按键代替了中断信号。

这个。。流水灯用for()语句来循环,循环内部用delay来延时控制流水的运转速度。
设置一个变量M,这个变量在每次循环的情况下都要赋值一次,从哪里赋值呢??就是判断一下你指定按键是否按下,按下了,这个变量M为1,没按下,这个变量M为0,然后你在for语句的中间那个判断表达式中加入一个条件:那就是这个变量M是(M=1就满足条件,继续循环,M=0不满足,就跳出循环)。这样就实现了按键终止循环的行为
然后你在for循环外边也不断判断这个按键的状态,并随时给这个M变量更新值,这样,你跳出来循环之后就不会回不去,如此的话,你就按住不放就会暂停,放开就继续流水

但是你如果要求按一下就流水,再按一下就暂停,第三次按又流水,那你将按键按下计数,然后根据你按下按键次数进行对流水灯的操作。。。。。

楼主好!
其实这个问题很简单 ,我觉得根本不用锁存器,感觉有点浪费,一般单片机IO都可以完成你所需要的功能:不知道楼主有没有注意到8X8点阵的实现方法,你要做的60个流水灯完全可以模仿点阵的构造结构来实现。
查一下点阵的构造,60个流水灯的接法完全按照那个接法,只用16个IO口就行了,需要提醒你的是P1口的驱动能力还行 其他的需要上拉电阻。
同时这个问题还有点类似矩阵键盘的控制。
在你学会了你需要的60个流水灯的同时你还学会了点阵的控制,矩阵键盘的控制,一举多得,祝你学习愉快,单片机很有意思,我也是自学的。



矩阵中分控键盘是干什么的
分控键盘是在除了主控室内的主控键盘外,其他监控室的都是分控,是在其他分控室里面操作控制图像的,但又不影响主控室的画面 深圳昊诚矩阵厂家希望能帮助到你

键盘对矩阵的基本操作是什么?
①输出通道号:输入1~99的数字

矩阵式键盘扫描工作的原理是什么
矩阵式键盘扫描工作原理基于矩阵电路的原理。在矩阵键盘中,每个按键都被连接到一个行路和一个列路上。通过不断地将电流送入行路和列路,并检测电流是否流经特定的按键,来确定哪个按键被按下。这种方法称为矩阵扫描。具体来说,首先会将一个电流送入行路中的某一行,然后检测列路中的每一列是否有...

怎样知道单片机的矩阵键盘每个按键的地址?
1、比如是一个4行×4列的矩阵键盘。2、将4行和4列共8根线分别接到单片机的I\/O口,比如接P1口,行接低4位(P1.0~P1.3),列接高4位(P1.4~P1.7)。3、单片机先将行置第电平0,列置高电平1.4、在键盘扫描程序中,判断是否有任意按键按下:if((P1&0xf0)!=0xf0),表示有按键...

4x4按键矩阵原理是什么?为什么要移位?他是怎么样确认按键位置的,求教大 ...
这个是高低电平反转法确定4x4按键,P1口4位接行矩阵四位接列矩阵。首先让P1口高四位为0,低四位为1。若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。然后让P1口高四位为1,低四位为0。若有按键按下,则高四位中会有一个1翻转为0,低四位不会...

51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言...
然后返回缓冲区地址就可以得到多个按键的数据了。这样只要定义16字节的缓冲区全部按键都能检测到。(一般不需要那么多6个足够)还有一种方式 是 如果只返回2个按键的话。可以这样 常规按键扫描 返回范围在0-15也就是0-F 读取到一个值后把这个值左移4位 再继续读取。当读取到第二个值的时候与上第...

一个RS232接口的矩阵键盘,需要每个按键按下后发送一个数据,请问怎么改...
一、引言 本方案是用VHDL语言来实现的基于RS232按位串行通信总线的行列式矩阵键盘接口电路,具有复位和串行数据的接收与发送功能,根据发光二极管led0-led2的显示状态可判断芯片的工作情况;实现所有电路功能的程序均是在美国ALTERA公司生产的具有现场可编程功能的芯片EPM7128SLC84-15上调试通过的。能通过动态...

单片机矩阵键盘键号的判别
每行有8列,第2行的行首号(因为行号从0开始,所以行号为2的行,按照习惯是第3行)为16,列号为1,那么键号就为16+1=17 下面有扫描2*4键盘的汇编程序(你的是4*8,即4行8列的键盘),仅供参考 看不懂不强求,希望对你有所帮助 DATA SEGMENT TABLE DB ‘A’ ,‘B’ ,‘C’ ,‘D...

单片机电子琴 用矩阵键盘代表琴键 求帮助
1)知道怎么驱动矩阵键盘,识别按下的键盘(可以是单键或者多键);2)音符振荡器,如键值 1--7分别对应音符 1--7,这样需要对应输出不同的音频频率,这个可以百度找到。这些都是为了给定时器设备不同的参数以便输出所需要的音频频率;3)按下单键得到单音,按下双键(或多键)你还可以定义为其他音...

arduino 4*4矩阵键盘 怎么用
例如,当第1行输出低电平,其他行输出高电平,分别读取依次列上的状态,如果第1列为低,结果为(1,1),按键为1,如果第2列为低,则结果为(1,2)按键为2 安装4*4矩阵键盘 4*4矩阵键盘有一个8孔的排母,理论上可以直接插到0-7脚上,但0,1脚用于串口通信,所以只能选择2~13脚,这里选用了...

安顺市15762018035: 单片机c语言编个流水灯,用按键怎么实现它暂停 -
叱干段亚叶: 实现流水灯的方式有很多种(中断,定时器,延时等等),看你用哪种方式,最简单的是延时做流水灯,那么在死循环里面增加按键检测,判断出有按键按下来时,再进入死循环,程序不往下走就可以暂停,再按跌出死循环;

安顺市15762018035: 51单片机用4个按钮控制开始暂停快速慢速的流水灯.需要用C语言编程.求大神帮助 -
叱干段亚叶: 其实很简单的,随便使用一个定时/计数 器,使其工作在方式1(方便计算初值),然后写中断服务函数,使用_crol_()函数来反复循环做流水效果,然后在主函数最后写while(1),一直不停扫描键盘函数,然后键盘函数定义4个按键,开始:TRx=1,停止:TRx=0,至于快慢的控制你可以在中断函数里边写一个延时函数,然后按键3和4按下一次自增或自减1000(你可以取其他值),然后传递给延时函数.有不懂的地方随时回复我.希望我的回答能帮助到你.

安顺市15762018035: 求一个51单片机程序,要求用一个按键控制流水灯的启停,按一下流水启 -
叱干段亚叶: #include <reg51.h> typedef unsigned char uint8; typedef unsigned int uint16; it anjian = P1

安顺市15762018035: 求一个C程序,用一个按键控制8个流水灯,当按下按键时,流水灯暂停,当再一次按下按键时,流水灯继续流动 -
叱干段亚叶: void public run{ LOOP (int i = 0 ,i++) {when (i<8){this.lamp.light = true;}else{breakl;} } }

安顺市15762018035: 单片机c52怎么用4个键控制四种方式的流水灯,还能暂停,求解决!!! -
叱干段亚叶: 不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式.你使用的键盘函数直接调用流水灯函数就可以.比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water() { num=1; for(a=0;a{ P1.1=numdelay(1000); //延时;keyboard();//执行时又不停扫描键盘函数;} } 这样就会有一个LED从右往左移动8次;那么当第一次流水未完时,又调用第二个流水函数light_water1就能中断当前执行的流水函数又去执行第二个流水灯函数了.希望我的回答能帮助到你.

安顺市15762018035: 单片机编程 使用按键控制流水灯延时时间,每按一次按键流水灯流水速度逐渐变慢,直到停止流水 -
叱干段亚叶: 你可以简单地认为单片机只能输出5V或者0V的电压 分别对应1和0,那么LED灯的另一端接地或者接5V,如果你 的单片机输出5V接到LED灯,LED灯另一端接地 , 那就产生电压了,电路就导通了,灯就亮了 ,反之也是这个道理.时间方面可以写大致的延时,或者用定时器,这样就比较精确了,你学会了这个就可以说入门了.

安顺市15762018035: 51单片机,按键控制流水灯程序,懂的进!八个LED灯与单片机P1口连,按键key1与单片机P32连.该程序是完成以下工作:单片机上电,流水灯每一秒移一... -
叱干段亚叶:[答案] 假如,你的程序在执行key_scan();是触发了两次中断导致num>20,你的显示函数将永远被跳过,你应该写成 if(num>20) { num=0; display(); } 这是一个比较直观的错误,其他的没细看,你在试试

安顺市15762018035: 求教大婶们~51单片机单个按键控制流水灯C程序 -
叱干段亚叶: 很简单啊,只提供一个简单思路, 所以只提供简单的程序,自己理解 char flag=0;viod main() { while(1) { if(key==0 ) //假设0 按下按键 { flag=~flag; } if(flag==0) { leds(); //流水灯函数 } } }

安顺市15762018035: 51单片机摁键控制流水灯? -
叱干段亚叶: 用4个按键控制流水灯,P1口接8个LED流水灯,P3.4~P3.7接有4个按键,仿真图如下.

安顺市15762018035: 51单片机中怎样用一个按键控制三种模式的流水灯,如控制流水灯流水速率(每按一下加速,到三后返回和第一次 -
叱干段亚叶: #include <reg51.h> 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...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网