导航:首页 > 操作系统 > 51单片机按键程序

51单片机按键程序

发布时间:2022-03-01 15:34:48

Ⅰ 关于51单片机的按键和显示的程序问题

#include <reg51.h>
#define uchar unsigned char
#define uinr unsigned int
#define DATA P2^0

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar idata temp[]={0xff,0xff,0xff}

sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;

sbit led1=P3^2;
sbit led2=P3^3;
sbit led3=P3^4;

void delay(uint t)
{
uint a;
while(t--)
{
for(a=0;a<75;a++)
{;}
}
}
void timer()
{
TMOD=0X01;
TH0=0XFC;
TL0=0X18;
TR0=1;
ET0=1;
EA=1;
}

void display() interrupt 1
{
TH0=0XFC;
TL0=0X18;
led1=1;led2=1;led3=1;
DATA=temp[0];
led1=0;led2=1;led3=1;
DATA=temp[1];
led1=1;led2=0;led3=1;
DATA=temp[2]&0x7f;
led1=1;led2=1;led3=0;
}

void main()
{
uchar number,ks;
timer();
while(1)
{
temp[0]=table[number%10];
temp[0]=table[number%100/10];
temp[0]=table[number%1000/100];
if(k1==0)ks=0;
if(k2==0)ks=1;
switch(ks)
{
case 0:
{
if(k2==0)
{
while(k2==1){;}
number++;
if(number==3)number=2;
}
if(k3==0)
{
while(k2==1){;}
if(number==0)number=1;
number--;
}

}break;
case 1:
{
if(k2==0)
{
while(k2==1){;}
number++;
if(number==19)number=18;
}
if(k3==0)
{
while(k2==1){;}
if(number==0)number=1;
number--;
}

}break;

}
}
}

/*呼,花了我十五分钟,好久没打程序了,注是就不打了,应该看得懂把,不懂再问我拉,我q:745748376 加点分贝,嘿嘿*/

Ⅱ 51单片机独立按键的程序

51单片机独立按键的程序独立按键的程序的话,这个可以从一些一些具体的方面来进行一些查看。

Ⅲ 简单的51单片机键盘C程序

A|=B;
等价于
A=A|B;
是先进行或运算,再把运算结果赋给A,之后的A已经不是原来的A了。
第一个键值判断后,你就键值变量已经被赋予新的值了。
如果正好按的是第一个键则能返回1,
如果不是第一个键按下,但经过
if((keyvalue|=0xfb)!=0xff)这一判断,其中的“keyvalue|=0xfb”就把keyvalue变成0xff了,后面的判断条件自然不会满足。
把这里的一些等于号再去掉试试看。
另外,建议你对于按键扫描程序使用switch
case
语句,这样条理更清晰。
/*按键获取程序*/
unsigned
int
Key()
{
uchar
keyvalue;
keyvalue=P3;
keyvalue|=0xc3;
if((keyvalue|0xc3)==0xff)
{
Delay(10);
if((keyvalue|0xc3)==0xff)
{
return(0);
}
}
else
{
Delay(10);
if((keyvalue|0xc3)!=0xff)
{
if((keyvalue|0xfb)!=0xff)
{
return(1);}
if((keyvalue|0xf7)!=0xff)
{
return(2);}
if((keyvalue|0xef)!=0xff)
{
return(3);}
if((keyvalue|0xdf)!=0xff)
{
return(4);}
}
}
}

Ⅳ 51单片机 C语言按键多功能程序怎么写

长按或短按你可以用定时器来设定时间。时间一到就直接跳出来执行就可以了。想连续按1或2或3次的话你就直接用个变量来当计数器,按一下计数一次就可以了。

Ⅳ 51单片机最有效的按键处理程序

只有更好,没有最好。只有更有效,没有最有效。适合当前项目需要的程序就是合适的程序。针对51单片机,没有一个按键程序是包打天下的。通常的按键扫描程序大致为:
扫描按键 ==>按键去抖(如果去抖过程中按键值变化了就去抖失败,重新扫描按键) ==>得到有效键 ==》可能需要针对长按或重复按键要求做不同处理 ==>等待按键松开

Ⅵ 51单片机独立式按键程序

#include<reg52.h>
unsignedcharID;
sbitk1=P3^7;//定义按键端口
voiddelay()
{
TMOD=0x10;//定时器的工作方式
TH1=0xd8;
TL1=0xf0;
TR1=1;
while(!TF1);//这里错了,是定时器1
TF1=0;
}
voidmain()
{
while(1)
{
if(k1==0)
{
delay();//去抖动
if(k1==0)//检测按键确实按下,进行按键处理
{
ID++;
if(ID==0)
{
ID=0;
}
while(!k1);//这里错了,多余的加了==0
}
}
switch(ID)
{
case0:P1=0x3f;break;
case1:P1=0x06;break;
case2:P1=0x5b;break;
case3:P1=0x4f;break;
case4:P1=0x66;break;
case5:P1=0x6d;break;
case6:P1=0x7d;break;
case7:P1=0x07;break;
case8:P1=0x7f;break;
case9:P1=0x6f;break;
default:break;
}
}
}

Ⅶ 在51单片机中,按一下按键1,执行一个程序功能1,按按键2,执行程序功能2

#include<reg51.h>
#include<intrins.h>
unsigned char fun,led1=0xfe,led2=0x55;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
void t0isr() interrupt 1
{
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
switch(fun)
{
case 1:P0=led1;led=_crol_(led1,1);break;
case 2:P0=led1;led=_cror_(led1,1);break;
case 3:P0=~led2;break;
default: break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(key1==0)
{
while(key1==0);
fun=1;
}

if(key2==0)
{
while(key2==0);
fun=2;
}
if(key3==0)
{
while(key3==0);
fun=3;
}
}
}

Ⅷ 51单片机如何用一个按键控制一段程序的运行与停止

1、创建项目文件。

6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。

Ⅸ 51单片机用四个按键做程序

//假设晶振12MHZ,其余都是假设低电平有效
#include "reg51.h"
sbit KEY1=P1^0;前进键
sbit KEY0=P1^1;后退键
sbit KEYL=P1^2;
sbit KEYR=P1^3;
sbit CON1=P2^0;前进控制
sbit CON0=P2^1;后退控制
sbit CONL=P2^2;
sbit CONR=P2^3;
void main(void)
{
P1=P1 | 0X0F;
P2=P1 | 0X0F;
while(1)
{
if(KEY1==0)
{
CON1=0;
}
else CON1=1;
if(KEY0==0)
{
CON0=0;
}
else CON0=1;
if(KEYL==0)
{
CONL=0;
}
else CONL=1;
if(KEYR==0)
{
CONR=0;
}
else CONR=1;
}
}

Ⅹ 51单片机中按键程序用C怎么写

用一个定时器,先赋值一个num,当num=20的时候,LED亮的时间是1s,当按下键,让num+20(12M的晶振)在定义一个a,判断a是否与num相等。这样试试呢....

阅读全文

与51单片机按键程序相关的资料

热点内容
加密思维币 浏览:686
魅族访客文件夹 浏览:48
添加的文件夹怎么找 浏览:613
程序员涉黄 浏览:698
maven编译resources下的js 浏览:519
ubuntu文件移动命令 浏览:227
安卓i怎么查找苹果手机 浏览:949
云服务器宕机概率 浏览:229
在线买药用什么app知乎 浏览:813
ubuntu解压xz文件 浏览:674
宏杰加密时电脑关机 浏览:388
自己写单片机编译器 浏览:598
单片机按键闪烁 浏览:380
为什么icloud总是显连接服务器失败 浏览:888
如何设置域控服务器 浏览:738
想在上海租房子什么app好 浏览:185
编译程序各部分是必不可少的吗 浏览:886
编程不超过十行 浏览:764
数电编译器的作用 浏览:338
时间算法与现在有什么区别 浏览:164