导航:首页 > 操作系统 > 单片机按键代码

单片机按键代码

发布时间:2024-09-02 06:21:36

‘壹’ 单片机编程 四个按键 K1=p1.1 K2=p1.2 k3=p1.3 k4=p1.4 p5 p6输出(k1 k3 控制p5,k2k4控制p6)

#include"reg51.h" // 试试

sbitk1=P1^0;//按键1

sbitk2=P1^1;//按键2

sbitk3=P1^2;//按键3

sbitk4=P1^3;//按键4

sbitp5=P1^5;//输出1

sbitp6=P1^6;//输出2

bit t1,t2;

voidmain(void)

{

while(1)

{

if(k1==0&&t1==0){t1=1;p5=1;}

if(k2==0&&t1==0){t1=1;p5=0;}

if(k1==1&&k2==1){t1=0;}

if(k3==0&&t2==0){t2=1;p6=1;}

if(k4==0&&t2==0){t2=1;p6=0;}

if(k3==1&&k4==1){t2=0;}

}}

‘贰’ 请问单片机怎么用独立按键按一下实现一个功能,按另一个按键实现另一个功能 这个代码要怎么写啊

如果这两个功能都是一个死循环,可以考虑用中断,这样就不必在两个独立的功能中插入按键检测了
while(1)
{
while(flag==1){死循环1}
while(flag==2){死循环2}
}
如果这两个功能不是死循环,就 简单了
while(1)
{
if(key1==0) {延时消抖 功能1}
if(key2==0) {延时消抖 功能2}
}

‘叁’ 单片机按下按键1,灯亮,按下按键2,灯灭,按下按键3,灯闪烁,求代码

主要程序如下:
flag是用来记忆按键状态,按下key3,flag置1,程序中检测到flag是1才闪烁,松手后LED仍然闪烁,同时下一轮还可以检测另外两个按键
while(1)
{
if(key1==0)//判断按键是否按下
{
Delay1ms(10);//延时消抖
if(key1==0)
{
while(key1==0);//等待按键抬起
LED=1;
flag=0;
}
}
if(key2==0)//判断按键是否按下
{
Delay1ms(10);//延时消抖
if(key2==0)
{
while(key2==0);//等待按键抬起
LED=0;
flag=0;
}
}
if(key3==0)//判断按键是否按下及是否在走时
{
Delay1ms(10);//延时消抖
if(key3==0)
{
while(key3==0);//等待按键抬起
flag=1;
}
if(flag==1)
{
LED=!LED;
Delay1ms(200);
}
}

‘肆’ 单片机c51的按键0~f的代码

#include <reg52.h>

#include <intrins.h>


#define uchar unsigned char

#define uint unsigned int



uchar key;


unsigned char code disp_code[]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


unsigned char code key_code[]={

0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,

0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77 };


/**********************************************************


延时子函数


**********************************************************/

void delayms(uint ms)

{

uchar t;

while(ms--)

{

for(t = 0; t < 120; t++);

}

}



/**********************************************************


键盘扫描子函数


**********************************************************/

uchar keyscan()

{

uchar scan1,scan2,keycode,j;


P3=0xf0;

scan1=P3;

if((scan1&0xf0)!=0xf0) //判键是否按下

{

delayms(30); //延时30ms

scan1=P3;

if((scan1&0xf0)!=0xf0) //二次判键是否按下

{

P3=0x0f;

scan2=P3;

keycode=scan1|scan2; //组合成键编码


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

{

if(keycode== key_code[j]) //查表得键值

{

key=j;

return(key);

}

}

}

}

else P3=0xff;


return (16);

}


/**********************************************************


判键是否按下子函数


**********************************************************/

void keydown()

{

P3=0x0f;

if((P3&0x0f)!=0x0f)

{

keyscan();

P0=disp_code[key];

beep();

}

}


/**********************************************************


主函数


**********************************************************/

main()

{

P0 = 0xbf;

P2 = 0x7f; //数码管显示"-"

P3 = 0xff;

while(1)

{

keydown();

}

}

‘伍’ 51单片机按键调节参数值并保存的程序代码

uchar a=50;//假设a的可调范围是1到100;
uint time=0;
eepromEraseSector (0X2800);//擦除EPROM一个扇区
while(time<5000)//不足5s
{
if(s1==0)//S1按下
{ delay_ms(20);
if(s1==0){ while(s1==0);a-- ; time=0; if(a==0)a=100;}
}
if(s2==0)//S2按下

{ delay_ms(20);
if(s2==0){ while(s2==0);a++; time=0; if(a>100)a=0; };
//一旦按键按下,time就清0
}
delay_ms(100);
time+=100;
}
eepromWrite(0x2800, a);//写入 EPROM

阅读全文

与单片机按键代码相关的资料

热点内容
联想驱动怎么解压 浏览:264
程序员进化论解说 浏览:871
怎么设置个性化文件夹图标 浏览:390
基金投资与入门技巧pdf 浏览:891
十六进制文件反编译成c语言 浏览:579
程序员手术裸辞 浏览:251
编译生成错误是什么原因 浏览:965
我命令你停下用英语怎么说 浏览:75
rtk文件夹不正确怎么办 浏览:926
java方法签名 浏览:83
java程序员加薪申请书 浏览:600
女孩子如何嫁给程序员 浏览:657
安卓的动画响应为什么卡 浏览:835
怎么把axure放到服务器上 浏览:847
元柱体的钢材理论重量的便捷算法 浏览:467
地平线4如何加密 浏览:277
淘宝游戏解压神器 浏览:706
androidurl视频 浏览:842
app什么播放器好 浏览:13
网络机顶盒服务器地址 浏览:568