A. 为51单片机设计一个上拉输入和下拉输入的按键电路并分析其工作原理
按键一般是上拉,单片机的IO通过电阻上拉高电平,按键正常高电平当按键按下短路,把IO变成低电平,单片机检测到低电平表示有按键按下,按键下拉一般是把单片机IO通电阻接到GND,按键正常是低电平,当按键按下把IO拉高,单片机检测到高电平表示有按键按下。
B. 51单片机键盘的原理图中只有两个引脚,平面图形,在实物电路连接中键盘是四个引脚的,那要怎么连接电路
你把那个四角的微动开关反过来看
中间有一个矩形框
在矩形框同一边的两个脚是相连的图中1,4内部相连2.3内部相连
所以你要是用两个脚就一个连1一个连2就好了
当然如果你有万用表一测就出来了
C. 51单片机“上电/按键复位电路”的原理及其电容C的作用
简单来讲电容在这里只起到了一个启动的作用,就是按键按下后立即释放电容内部的电荷,直接连接到单片机的复位端给复位端强行输入一个电位使单片机复位~~
D. 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;
}
}
}
E. 51单片机键盘电路的两种方式,各自的优缺点
独立按键优点:可以直接读取,检测占用时间较少,不受其他因素影响
缺点:占用IO口资源较多,每一个按键都独占一个IO口。
矩阵键盘优点:占用IO口资源较少。
缺点:必须扫描检测按键情况,程序复杂,占用时间较多。
F. 51单片机键盘编程 小弟一点也不懂,好心的大侠帮个忙!
JNZ K1,K11
JNZ K2 ,K22
JNZ K3,K33
JNZ K4,K44
K11: SETB P1.0
;延时一下
clr p1.0
其它的你就自己编了就是输入几个电平就是了
G. 单片机键盘显示电路设计的程序要求输入64个按键,8个LED显示
一种是采用8行8列组成的按键就可以了,实际上是16个开关,但可以实现64个按键。具体的看看网上的4*4键盘是什么原理。基础要自己想。
第二种是采用8255或8155扩展,具体的要自己去看去学。