单片机STC89C52,P0.1口作为按钮,P1.0连接灯,要求按钮控制灯的亮灭。请设计硬件连接方式和C程序

单片机STC89C52,P0.1口作为按钮,P1.0连接灯,要求按钮控制灯的亮灭。请设计硬件连接方式和C程序,第1张

图我就随便画了,暂时没有专业工具。

#include <reg52h>

sbit KEY = P0^1;     //定义按键 按键按下时引脚为低

sbit LED = P1^0;     //定义LED脚, 当P1^0为低时 灯亮

void delayms(unsigned int times )       //毫秒延时

{

unsigned int i,j;

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

{

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

;

}

}

void main()

{

KEY=1;

LED=1;     //初始化按键和灯

while(1)

{

if(KEY==0)

{

delayms(15);           //延时15-20MS去抖动

if(KEY==0) LED=0;       //此时按键还是低电平表示被按下,灯亮

}

else LED=1;                       //否则灯不亮

}

}

按键消抖动程序估计有问题,给你看个消抖动的例子程序

while(key1==0)

{

delayms(10);

if(key1==0)

{

num=1;

}

}

if (key==0)            如果按键按下

for(i=0;i<100;i++):利用延时消除抖动

    if (key==0)            再次判断按键,如果还是按下状态

( 要执行的语句)则执行相关语句

这是常用的软件消抖方法

#include<reg52h>

bit KEYFlag = 1; //指示按键状态,'1'为d起态,'0'按下态

/

按键去抖

/

void KEYDelay()

{

unsigned char i = 200;

while(i--);

}

/

键翻译

/

unsigned char KEY_Tran(unsigned char Key)

{

switch(Key)

{

case 0xee: return 0; break; //根据按键编码返回对应的键值

case 0xde: return 1; break;

case 0xbe: return 2; break;

case 0x7e: return 3; break;

case 0xed: return 4; break;

case 0xdd: return 5; break;

case 0xbd: return 6; break;

case 0x7d: return 7; break;

case 0xeb: return 8; break;

case 0xdb: return 9; break;

case 0xbb: return 0;break;

case 0x7b: return 0x0b;break;

case 0xe7: return 0x0c;break;

case 0xd7: return 0x0d;break;

case 0xb7: return 0x0e;break;

case 0x77: return 0x0f;break;

default: break;

}

}

/

键扫描

/

unsigned char KEY_Scan()

{

unsigned char KEY_Value;

P2 = 0x0f;

KEY_Value = P2;

P2 = 0xf0;

KEY_Value |= P2;

return KEY_Value;

}

/

查键

/

void KEY()

{

static bit KEYFlag = 1;

static unsigned char KEYCode;

if(KEYFlag)

{

if(KEY_Scan()!=0xff)

{

KEYCode = KEY_Scan();

KEYDelay();//有按键按下延时去抖

if(KEYCode==KEY_Scan())

{

// 键号 = KEY_Tran(KEYCode);

// 此处添加功能模块

KEYFlag = 0;

}

}

}

else

{

if(KEY_Scan()==0xff)

{

KEYDelay();//按键d起延时去抖

if(KEY_Scan()==0xff)

KEYFlag = 1;

}

}

}

以上就是关于单片机STC89C52,P0.1口作为按钮,P1.0连接灯,要求按钮控制灯的亮灭。请设计硬件连接方式和C程序全部的内容,包括:单片机STC89C52,P0.1口作为按钮,P1.0连接灯,要求按钮控制灯的亮灭。请设计硬件连接方式和C程序、怎么用C语言实现51单片机矩阵键盘按一个键后其他键才有用、单片机按键如何消抖等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9438268.html

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

发表评论

登录后才能评论

评论列表(0条)

保存