导航:首页 > 操作系统 > 单片机按键检测电路

单片机按键检测电路

发布时间:2023-05-30 18:31:28

❶ 51单片机3键键盘电路图[只有三个按键,链接pc的]

同学你好,我来帮你,你可以使用串口啊,比如:1:给你一个从PC发给单片机数据后,单片机再原样发给PC的参考代码:2:将51某一个(引脚)按键0,1状态,发给PC;

1::::::::::::::
#include <REG52.H>
bit Flag;
unsigned int R_D,S_D;
unsigned char i;
void usart_init(void); ///串口初始化

void main (void) {
usart_init(void); ///串口初始化

while(1)
{
if (Flag==1)
{
SBUF = S_D; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特数据传送(TI发送中断标志)
TI = 0;// 清除数据传送标志
Flag=0;
}
}
}

}

void ser_int (void) interrupt 4 using 1
{
if(RI == 1) //RI接受中断标志
{
RI = 0; //清除RI接受中断标志
R_D = SBUF; //SUBF接受/发送缓冲器
S_D=R_D;///////返回PC发送
Flag=1;
}
}
void usart_init(void)///串口初始化
{
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
TH1 = 0xF3;// //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
}
2:::::::::::::

#include <REG52.H>

sbit p34=P3^4;////////定义一个按键

bit Flag=1;

unsigned int S_D;
unsigned char i;
void usart_init(void); ///串口初始化
void delay (unsigned int Z) ; //延时程序 Z倍 MS

void key_p34(void) ; /////按键检

void main (void) {
usart_init(void); ///串口初始化
key_p34(void) ; ////上电后检测一次按键的状态
if (Flag==1)//上电后发送一次按键的状态
{
SBUF =1; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特数据传送(TI发送中断标志)
TI = 0;// 清除数据传送标志
}
else
{
SBUF =0; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特数据传送(TI发送中断标志)
TI = 0;// 清除数据传送标志
}

while(1)
{

key_p34(void) ;
if (Flag==1)
{
SBUF =1; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特数据传送(TI发送中断标志)
TI = 0;// 清除数据传送标志
}
else
{
SBUF =0; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI);// 等特数据传送(TI发送中断标志)
TI = 0;// 清除数据传送标志
}

}

}

void usart_init(void)///串口初始化
{
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
TH1 = 0xF3;// //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
}
void delay (unsigned int Z)//延时程序 Z倍 MS
{
unsigned int x,y;
for(x=Z;x>0;x--)
for(y=110;y>0;y--) ;
}
void key_p34(void) /////按键检测
{
if(p34==0)
{ delay(10);
if(p34==0)
{
while(!p34) ;/////等待按键松手
Flag=0;
}
}

}

❷ C8051F330单片机设计按键检测程序。。。急求大神指点!

P1MDIN是配置输入模式的,置0为模拟输入,置1位数字输入,按键应销梁选择置1,单片机岁答复位后引脚的缺省值是数字输入,所以程序不需要更改.P0MOUT是配置输出方式的,置0是开漏输出,置1是推挽输出,按键用不到所以不需要配置.C8051f330内部有弱上拉,按键不加上拉电阻也可以正亏雀运常使用

❸ 请教各位大神一个问题,电路图如下,单片机3个IO口检6个按键,还能检到S1和S6同时按下状态,IO内部上拉。

实际上就是通过电流方向来检测的,为什么这么说,请看下文

用3个IO口扫描识别16个按键的方法

话不多说,先看原理图,如下:

欢迎评论交流,也欢迎大家关注我:单片机嵌入式爱好者。会有源源不断的干货分享,能真正快速帮大家解决实际工作中遇到的问题哦!

❹ 单片机在检测按钮是否按下时,需要注意什么问题如果要解决应如何处理

检测按键是否按下,一要注意是”消抖“;二要注意按键的”抬起“和按下状态。前者一般加几十毫秒延时。后者看程序要求,是确定按下后,等待抬起才退出键盘检测,还是直接退出。

❺ 单片机独立按键的电路图

可以,原理图不是PCB布板,不是非得把器件用线连上才算连接的。原理图上只要有同样的网络编号原理上就是连通的。同样的道理,这些电阻你都可以放到一边,只要打上对应管脚一样的网络标号就行

❻ 51单片机按键检测问题

三个二极管、一个电阻,确实是一个与门。

电阻的计算公式,正确。
二极管的导通电压、电流,选择的基本合理。

可以进行实际电路的安装、测试。

实际上,现在的二极管,发光效率,逐年的提高,已经不用 6mA,就很醒目了。
不同颜色的二极管,导通电压,也有差异,选用较小的,才利于触发中断。
得进行反复实验,才能完成设计。

在程序中,注意不要使 P3.2 输出低电平,否则,会有较大的灌电流出现。

❼ 为51单片机设计一个上拉输入和下拉输入的按键电路并分析其工作原理

按键一般是上拉,单片机的IO通过电阻上拉高电平,按键正常高电平当按键按下短路,把IO变成低电平,单片机检测到低电平表示有按键按下,按键下拉一般是把单片机IO通电阻接到GND,按键正常是低电平,当按键按下把IO拉高,单片机检测到高电平表示有按键按下。

❽ AVR单片机独立按键检测

你的WHILE循环 temp!=0xff 这个条件永远不会出现的
为什么呢,猛肆你的PD口设置为输出是不枝拿轿对的,要设置成输入
初始化程序中敏带的DDRD=0XFF 改为00就可以了

❾ 单片机按键检测程序

P3=0xfe; //P3=0b1111 1110,令P3.0=0,同时令高四位为高电平,作好读端口准备(51IO特点)
temp=P3; //读回P3口的状态
temp=temp&0xf0; //temp&1111 0000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高四位对应的端口状态读进来。
while(temp!=0xf0) //上步处理后,高四为不全为1,说明有按键按下(结合矩阵键盘的电路结构才能理解,这里不方便上图)
{
delay(5);
temp=P3;
temp=temp&0xf0;//这三句跟上面重复,功能是软件消抖
while(temp!=0xf0) //延时一段时间后判断还有按键按下,说明是真有按键按下,进入按键扫描与键值的判断,否则可能是意外抖动引起的,就不进行按键扫描。
{
temp=P3;
switch(temp).....

我想注释完应该能读懂,关键是要理解矩阵键盘的扫描原理。

❿ 51单片机键盘电路的两种方式,各自的优缺点

独立按键优点:可以直接读取,检测占用时间较少,不受其他因素影响
缺点:占用IO口资源较多,每一个按键都独占一个IO口。
矩阵键盘优点:占用IO口资源较少。
缺点:必须扫描检测按键情况,程序复杂,占用时间较多。

阅读全文

与单片机按键检测电路相关的资料

热点内容
吃鸡怎么解压最快 浏览:966
linux网络编程基础 浏览:217
产研是程序员吗 浏览:592
程序员的法律 浏览:967
编程第四关用冰雪火焰闪现通关 浏览:754
批处理当前文件夹参数 浏览:183
鸿蒙安卓如何下载 浏览:902
开3389命令 浏览:540
程序员大都单纯吗 浏览:913
APP如何实现下载功能 浏览:214
通达信源码怎样放到桌面 浏览:643
程序员的脑袋会秃吗 浏览:453
为什么eve登录启动不进去服务器 浏览:270
微信招生app哪个好用 浏览:233
宝可梦剑盾启动文件在哪个文件夹 浏览:765
压缩机比容 浏览:117
python自动化测试面试 浏览:949
买便宜点的鞋子去哪个app买 浏览:890
android中个人页面 浏览:711
程序员那么可爱逸城前女友 浏览:577