新闻  |   论坛  |   博客  |   在线研讨会
程序学习-按键程序
笨笨的世界 | 2014-09-22 09:09:27    阅读:822   发布文章

在51单片机中,对单片机的某一个端口进行操作时,不能对单片机的某一个端口实施具体的操作,必须是把端口赋值给某一个变量,对这个变量进行操作才可以。

例如:sbit LED1=PO^0;

         sbit LED2=P2^1;

在程序的实际操作中,对LED1和LED2进行操作,实际上就是对这两个端口进行了操作,这是针对8位单片机的情况。

在程序中如果检测3个按键都按下的情况,再判断是哪个按键按下了,执行下面的C语句。

if(KEY1==0||key2==0||KEY3==0),这条语句是用来检测哪个按键被按下了,如果KEY1被按下了,或者KEY2,或者KEY3或者三个按键当中的2个或者3个按下了,都可以根据这条语句来进行判断。然后在这条if语句的C程序里面检测是哪个按键按下了,如果是KEY1按下了,会执行什么样的操作,如果是别的按键按下了,会执行什么样的操作。

具体的程序设计如下所示:

void KEY()     //按键的程序。
{
if(KEY1==0 || KEY2==0 || KEY3==0) //按键都按下了,如果按键按下那么KEY1=0;,KEY1==0;是检验按键是否是真的按下了。如果所有的按键都是按下了,检验下是哪个按键按下了!
{
Delay(2);   //20毫秒软件防抖
if(KEY1 == 0)

LED1 = 0;
LED2 = 1;
LED3 = 1;
}
if(KEY2 == 0)
{
LED1 = 1;
LED2 = 0;
LED3 = 1;
}
if(KEY3 == 0)
{
LED1 = 1;
LED2 = 1;
LED3 = 0; 
}
Delay(50); //延时0.5秒再进行下次按键的检测
}
}

第二个按键程序

第二个按键程序
/********************************************************************
* 文件名  : 数码管字符显示.c
* 描述    :  按下S19按键,数码管上显示的数字加1。
* 创建人  : 东流,2012年2月7日
* 版本号  : 1.0
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit KEY = P3^2;
uchar table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/********************************************************************
* 名称 : Delay()
* 功能 : 延时,延时时间为 10ms * del
* 输入 : del
* 输出 : 无
***********************************************************************/
void Delay(uint del)
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<1827; j++)    
;
}
/********************************************************************
* 名称 : Main()
* 功能 : 数码管的显示
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
uchar i = 0;
P2 = 7;
while(1)
{
P0 = table[i%16];   //这里i%16是防止table中的数据在0--15,不会溢出
if(KEY == 0)
{
i++;
Delay(30);   //延时0.3秒,防止按一次按键,程序自加多次的情况
}
}
}
















*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
记录我的成长。。。
最近文章
芯片的信号输入管脚
2018-07-10 16:07:06
ICD3驱动更新
2018-02-23 14:30:36
串口的数据接收问题
2016-11-14 14:24:54
推荐文章
最近访客