如何用软件分别微星主板灯光控制软件几千个LED灯

多个独立按键控制LED灯程序设计
我的图书馆
多个独立按键控制LED灯程序设计
【】多个独立按键控制LED灯程序设计
一般的程序中实现用一个按键来控制一个LED灯的亮灭这么简单的功能不用也能轻易做到。但在实际应用中往往不止一个独立按键,这就要用到按键识别功能了,下面介绍一下独立按键识别的程序,程序中把按下的键值通过数码管显示出来。
通过该程序可以实现独立按键的识别。独立按键具有编程简单但占用I/O口资源的特点,不适合在按键较多的场合应用。在实际应用中经常要用到输人数字、字母等功能,如密码锁、电话机键盘等一般都至少有12-16个按键,在这种情况下用独立按键的话显然太浪费I/O口资源,为此引入了矩阵键盘。矩阵键盘又称行列键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键,这样键盘上按键的个数就为4X4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
最常见的键盘布局如图6一10所示,一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式。4x4矩阵键盘的内部如图6-11所示。
I/O口线之间短路。判断有无按键按下的方法是:第1步,置列线PC4 ~ PC7为输入状态,从行线PC0-PC3输出低电平.读入列线数据。若某一列线为低电平,则该列线上有键闭合。第2步,行线轮流输出低电平,从列线PC4~PC7读入数据,若有某一列为低电平,则对应行线上有键按下。综合这两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此必须等到按键释放后再进行键功能操作,否则按一次键.有可能会连续多次进行同样的键操作。为了详细介绍矩阵键盘的应用,我们通过以下程序来实现按键值检测,并在8个LED上显示出键值。测试图如图6-12所示。硬件电路如图6-13所示
电子街推荐阅读
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢一个让LED灯亮度变化的程序
在电子工程世界为您找到如下关于“一个让LED灯亮度变化的程序”的新闻
一个让LED灯亮度变化的程序资料下载
一个让LED灯亮度变化的程序,程序中 如有不妥之处请见谅...
一个让LED灯亮度变化的程序相关帖子
一个让LED灯亮度变化的程序视频
你可能感兴趣的标签
热门资源推荐查看: 9764|回复: 18
求STC89C52单片机 独立按键的代码,要求只需要用一个按键控制一个led灯
求STC89C52单片机 独立按键的代码,要求只需要用一个按键控制一个led灯,第一次按下,灯亮,再按,灯灭,依此类推
入门问题,这个只能靠自己了
/***********************************************************************************************************************************************
按一下灯亮,按一下灯灭
***********************************************************************************************************************************************/
#include&reg52.h&
sbit S1=P1^4;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //将S1位定义为P1^4,检测独立按键
sbit led0=P1^0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //将led0定义为P1.0口的LED
/***********************************************************************************************************************************************
***********************************************************************************************************************************************/
void delay(void)
& & & & for(i=5000;i&0;i--)
/***********************************************************************************************************************************************
***********************************************************************************************************************************************/
void main(void)
& & & & if(S1==0)& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //判断是否有键按下
& & & & & & & & delay();& & & & & & & & & & & & & & & & & & & & & & & & & & & & //有键按下,延时去抖,真正应用时要少用这种延时,占用时间,用定时器延时或一个寄存器循环检测10多次按键
& & & & & & & & if(F0==0)& & & & & & & & & & & & & & & & & & & & & & & & & & & & //用F0标志位判断键按下是否已经处理,因刚学C语言没多久,
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //不知道怎么定义RAM能位寻址的寄存器,先用F0,按键多的话,一个F0不够用
& & & & & & & & {
& & & & & & & & & & & & F0=1; & & & & & & & & & & & & & & & & & & & & & & & & & & & & //F0置1,表示这次按键按下已处理
& & & & & & & & & & & & led0=~led0;& & & & & & & & & & & & & & & & & & & & & & & & //将LED亮灭状态取反
& & & & & & & & }
& & & & else & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //S1=1说明按键释放
& & & & & & & & F0=0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //F0清零,清按键已处理标志
此程序自己编写,经测试OK
回帖助人的奖励!
/****************************************************************************
按一下灯亮,按一下灯灭
*****************************************************************************/
#include&reg52.h&
sbit S1=P1^4;& & & & & & & & & & & & & & & & & & & & //将S1位定义为P1^4,检测独立按键
sbit led0=P1^0;& & & & & & & & & & & & & & & & //将led0定义为P1.0口的LED
/************************************************************************
***************************************************************************/
void delay(void)
& & & & for(i=5000;i&0;i--)
/**************************************************************************
****************************************************************************/
void main(void)
& & & & if(S1==0)& & & & & & & & & & & & & & & & & & & & & & & & //判断是否有键按下
& & & & & & & & delay();& & & & & & & & & & & & & & & & & & & & //有键按下,延时去抖,真正应用时要少用这种延时,占用时间,用定时器延时或一个寄存器循环检测10多次按键
& & & & & & & & if(S1==0)
& & & & & & & & {
& & & & & & & & & & & & if(F0==0)& & & & & & & & & & & & & & & & //用F0标志位判断键按下是否已经处理,因刚学C语言没多久,不知道怎么定义RAM能位寻址的寄存器,先用F0,按键多的话,一个F0不够用
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & F0=1; & & & & & & & & & & & & & & & & //F0置1,表示这次按键按下已处理
& & & & & & & & & & & & & & & & led0=~led0;& & & & & & & & & & & & //将LED亮灭状态取反
& & & & & & & & & & & & }
& & & & & & & & }
& & & & else & & & & & & & & & & & & & & & & & & & & & & & & & & & & //S1=1说明按键释放
& & & & & & & & F0=0;& & & & & & & & & & & & & & & & & & & & & & & & //F0清零,清按键已处理标志
上面程序漏了一个if语句,要不延时去抖没作用,汗
/****************************************************************************
按一下灯亮,按一下灯灭
*****************************************************************************/
#include&reg52.h&
sbit S1=P1^4;& & & & & & & & & & & & & & & & & & & & //将S1位定义为P1^4,检测独立按键
sbit led0=P1^0;& & & & & & & & & & & & & & & & //将led0定义为P1.0口的LED
/************************************************************************
***************************************************************************/
void delay(void)
& & & & for(i=5000;i&0;i--)
/**************************************************************************
****************************************************************************/
void main(void)
& & & & if(S1==0)& & & & & & & & & & & & & & & & & & & & & & & & //判断是否有键按下
& & & & & & & & delay();& & & & & & & & & & & & & & & & & & & & //有键按下,延时去抖,真正应用时要少用这种延时,占用时间,用定时器延时或一个寄存器循环检测10多次按键
& & & & & & & & if(S1==0)
& & & & & & & & {
& & & & & & & & & & & & if(F0==0)& & & & & & & & & & & & & & & & //用F0标志位判断键按下是否已经处理,因刚学C语言没多久,不知道怎么定义RAM能位寻址的寄存器,先用F0,按键多的话,一个F0不够用
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & F0=1; & & & & & & & & & & & & & & & & //F0置1,表示这次按键按下已处理
& & & & & & & & & & & & & & & & led0=~led0;& & & & & & & & & & & & //将LED亮灭状态取反
& & & & & & & & & & & & }
& & & & & & & & }
& & & & else & & & & & & & & & & & & & & & & & & & & & & & & & & & & //S1=1说明按键释放
& & & & & & & & F0=0;& & & & & & & & & & & & & & & & & & & & & & & & //F0清零,清按键已处理标志
上面程序漏了一个if语句,要不延时去抖没作用,汗
回帖助人的奖励!
入门问题,这个只能靠自己,看郭天祥视频
回帖助人的奖励!
/****************************************************************************
按一下灯亮,按一下灯 ...
/****************************************************************************
按一下灯亮,按一下灯 ...
F0的标志位不需要提前先定义麽?
F0的标志位不需要提前先定义麽?
F0是PSW的,头文件已经定义了
F0是PSW的,头文件已经定义了
哦哦,谢谢
哦哦,谢谢
不客气,以前我也试过学习时有一些问题卡住,难以解决的痛苦,有人知道提示一下能少走很多弯路
回帖助人的奖励!
哪位大师能写个,四按键四LED的,多谢,在线等
这个靠自己来理解了
哪位大师能写个,四按键四LED的,多谢,在线等
我也是初学者,我认为,你把他复制4份,改一下端口,融合在一起就行
有没有汇编程序
百度找找,我是来凑数子的。。。。
#include &reg52.h& sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; sbit k4=P3^3; void delay(int i) {& &&&while(i--); } void key() {& &&&if(k1==0) & & & & { & & & && & delay(100); & & & && & if(k1==0) & & & && & { & & & && && &&&led1=~led1; & & & && & } & & & && & while(!k1); & & & & } & & & & if(k2==0) & & & & { & & & && & delay(100); & & & && & if(k2==0) & & & && & { & & & && && &&&led2=~led2; & & & && & } & & & && & while(!k2); & & & & } & & & & if(k3==0) & & & & { & & & && & delay(100); & & & && & if(k3==0) & & & && & { & & & && && &&&led3=~led3; & & & && & } & & & && & while(!k3); & & & & } & & & & if(k4==0) & & & & { & & & && & delay(100); & & & && & if(k4==0) & & & && & { & & & && && &&&led4=~led4; & & & && & } & & & && & while(!k4); & & & & } } void main() {& &&&while(1) & & & & { & & & & key(); & & & & } }
Powered by

我要回帖

更多关于 微星主板灯光控制软件 的文章

 

随机推荐