51单片机按键电路
简单51单片机开发板的电路设计

简单51单片机开发板的电路设计51单片机开发板电路设计详细步骤及说明如下:一、准备工作1.定义开发板功能需求:根据具体需求确定开发板所需的功能模块,如AD转换、LCD显示、键盘输入等。
2.确定系统时钟源:选择合适的晶振,并确定时钟源用于驱动单片机。
二、电源设计1.选择适当的电源电压:根据单片机的工作电压范围选择合适的电源电压,并设计电源电路。
2.设计稳压电路:根据电源要求设计合适的稳压电路,保证单片机工作时电压稳定。
三、时钟电路设计1.选择合适的晶振:根据系统时钟需求选择合适的晶振,并设计相应的晶振电路。
2.设计时钟源电路:根据晶振的工作参数设计合适的时钟源电路,确保时钟信号稳定且频率准确。
四、复位电路设计1.根据单片机复位要求设计复位电路,保证单片机正常复位。
2.设计复位延时电路:根据需要设计复位延时电路,保证单片机复位后稳定运行。
五、外部IO电路设计1.根据开发板需求,设计并布局合适的IO接口电路,如LED指示灯、按键输入接口等。
2.设计并连接AD转换电路:根据需求设计和连接AD转换电路,实现模拟信号的采集和处理。
六、通信接口电路设计1.根据需求设计并连接串口接口电路,实现与其他设备的通信。
2.根据需要设计并连接其他通信接口电路,如SPI、I2C等。
七、存储器电路设计1.根据需求设计并连接存储器电路,如RAM、ROM等。
2.根据需要设计和连接外部存储器接口电路,实现扩展存储器的功能。
八、电路调试与优化1.完成电路设计后,进行电路连线、焊接等工作,并检查和修正可能存在的错误。
2.进行电路测试并优化,确保电路正常工作,并根据需要进行性能优化。
九、布局设计与外壳制作1.进行电路板的布局设计,合理安排各个模块的位置。
2.制作外壳和连接线,并进行电路板的安装。
最后,完成电路设计之后,可以进行软件编程和调试,将单片机与外设模块进行连接和通信,实现开发板的各项功能。
51单片机按键控制电路设计内容总结

51单片机按键控制电路设计内容总结一、引言在现代电子产品中,按键控制是一种常见的操作方式。
通过按下不同的按键,可以实现不同的功能。
而在电子设备的控制电路中,需要一种可靠的方式来检测按键的状态,并根据按键的状态来进行相应的操作。
本文将介绍基于51单片机的按键控制电路设计。
二、按键控制电路的基本原理按键控制电路的基本原理是通过检测按键的状态来确定按键是否被按下。
当按键被按下时,按键的状态会发生改变,通过检测这种状态的改变,可以触发相应的操作。
在51单片机中,可以通过外部中断来实现对按键状态的检测。
当按键被按下时,会触发外部中断,从而通知单片机按键的状态发生了改变。
三、按键控制电路的设计步骤1. 硬件设计在按键控制电路的硬件设计中,需要确定使用的按键数量,并选择合适的按键类型。
常见的按键类型有机械按键和触摸按键。
根据实际需求,选择合适的按键类型,并将其连接到51单片机的外部中断引脚上。
2. 软件设计在按键控制电路的软件设计中,需要编写相应的程序来实现对按键状态的检测和相应操作的执行。
在51单片机中,可以通过中断服务程序来实现对外部中断的响应。
当外部中断触发时,中断服务程序会被执行,并根据按键的状态来执行相应的操作。
四、案例分析下面以一个简单的案例来说明按键控制电路的设计。
假设我们需要设计一个LED灯的开关控制电路,通过按下按键可以控制LED灯的开关状态。
1. 硬件设计选择一个机械按键作为控制按键,并将其连接到51单片机的外部中断引脚上。
同时,将一个LED灯连接到51单片机的IO口上。
2. 软件设计编写相应的程序来实现按键状态的检测和LED灯开关状态的控制。
当按键被按下时,外部中断触发,中断服务程序被执行。
在中断服务程序中,通过读取按键的状态来确定按键是否被按下,并根据按键的状态来控制LED灯的开关状态。
五、总结通过本文的介绍,我们了解了按键控制电路的基本原理和设计步骤。
在51单片机中,可以通过外部中断来实现对按键状态的检测。
51单片机智能小车按键调速前进程序源代码、电路原理图和电路器件表

51单片机智能小车按键调速前进程序源代码、电路原理图、电路器件表智能小车PWM调速是通过设置pwmval_left_init的和pwmval_right_init这2个变量的值来实现的,需要通过修改程序代码中这2个变量的值,这2个变量的值设置好后,在程序运行的过程中是不能修改的。
而智能小车的按键调速通过按键达到修改这2个变量的值,从而达到对智能小车调速的目的。
每按下K3按键一次,变量pwmval_left_init和pwmval_right_init减1,智能小车减速。
每按下K4按键一次,变量pwmval_left_init和pwmval_right_init加1,智能小车加速。
具体实现方法见下文的程序源代码。
下文主要提供了智能小车按键调速前进完整程序原代码、电路原理图以及电路器件表。
智能小车核心板原理图STC15W4K56S4智能小车核心板器件(BOM)表实物图060306030603PIN插针PIN2x1406030603直插LQFP7x7-48 STC15W4K56S4智能小车核心板正面STC15W4K56S4智能小车核心板背面智能小车驱动板原理图51单片机(STC15W4K56S4)智能小车驱动板器件(BOM)表实物图直插直插直插直插直插直插直插直插直插直插PIN与PIN之间的间隔2.54mm插电池盒PIN与PIN间隔2.54mm,插电机3PIN插针,针与针间隔2.54mm插舵机红色插针和黑色插针3.3V红色插针、GND黑色插针PIN红色插针和黑色插针5V PIN红色插针和黑色插针VINPIN与PIN之间的间隔2.54mm 插MQ2模块针与针间隔2.54mm插GP2Y1014AU模块针与针间隔2.54mm语音播报实验时,串口4插语音播报模块针与针间隔2.54mmIO扩展用,没有必要不要焊接针与针间隔2.54mm插DHT11模块用4PIN插针,针与针间隔2.54mm用杜邦线连接超声波模块针与针间隔2.54mm插蓝牙模块(要原厂原装的)用8PIN插针,针与针间隔2.54mm杜邦线连接红外循迹避障模块用4PIN插针,针与针间隔2.54mm用杜邦线连接测速模块针与针间隔2.54mm插5V的LCD1602液晶MPU6050不要焊接。
51单片机独立按键工作原理

51单片机独立按键工作原理
51单片机独立按键是单片机常用的一种输入方式,其工作原理主要包
括按键输入、按键扫描和按键判断三个部分。
一、按键输入
在51单片机独立按键的输入中,按键一般都是使用电子开关实现的。
当按下按键时,电子开关会闭合,形成一条通路。
通路中的电流会使
得连接在单片机输入引脚上的电容充电,使得电容电压迅速上升。
二、按键扫描
在51单片机独立按键的输入过程中,按键的状态需要被单片机不断地
进行扫描。
为了使得扫描的速度变快,通常会将扫描的引脚定义为优
先级较高的中断引脚。
因此,当按键按下的时候,单片机会处理中断
请求,并在相应的寄存器中保存按键的状态。
三、按键判断
在51单片机独立按键输入的最后一步,就是根据按键的状态来判断其
具体的操作。
这个判断过程需要我们设置一个合适的延迟时间,以保
证扫描程序不会出现错误。
总之,51单片机独立按键的工作原理包括按键输入、按键扫描和按键
判断三个部分。
这个过程中,电子开关的闭合和断开会形成一条通路,将电容充电,引脚定义为中断引脚,优先级较高。
最后,根据按键的
状态进行相应的判断来完成各种不同的操作。
51单片机开发板电路原理图

4.7K
J-JDQ J-JDQ
1
2
A K
D1 4007
3
VCC JDQ JDQ
VCC
VCC
2
JDQ4001 1
3 2 1
6
5
R5 470
中断/独立按键
INT0 INT0
D/A转换
U3 VCCC8 104 D0 D1 D2 D3 D4 D5 D6 D7 DA_CS 1 P36 2 18 19 17 7 6 5 4 16 15 14 13 10 3 ~CS ~WR1 ~WR2 ILE ~XFER DI0 DI1 DI2 DI3 DI4 DI5 DI6 DI7 GND GND VDD VCC Jout J-out 20 1 2 3 4
VCC 16 2 6 15 10 9 C4 104 C6 104 C7 104 P31 P30 C2 30p C1 30p VCC CRY1 12M
电源
R11
VCC
扩展插针接口
P23 P22 P21 P20 P37 P36 VCC VCC
470 A
VCC
6 5 4 3 2 1
AT89S52 20 VCC 40
4*4矩阵键
VCC 0 SDA D LCD_RS 4 LCD_RW 8 LCD_E C SCL 2 1 D E F 1 LEDJDQ LED 2 9 A B 5 6 7 INT0 1 PS2DATA 2 P16 3 P17 VCC PS2DATA JPS2 1 2 3 4 5 6 PS/2
1 2
C10 104
ADC0831
DAC0832 DAC0832
AT24C02
VCC
LED彩灯
LED1 LCD_RS LED2 LCD_RW LED3 LCD_E LED4 BELL SCL LED5 SDA
51单片机原理图

2.3 51单片机增强型学习系统各组成部份原理图及功能简介2.3.1 共阴极数码管动态扫描控制图2.2 51单片机增强型学习系统的四位共阴极数码管动态扫描硬件连接原理图AT89S51单片机P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上接电阻。
AT89S51单片机P2口是一个带有内部上拉电阻的8位双向I/O 口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX @Ri 指令)时,P2口线上的内容(也即特殊功能寄存器SFR 区中P2寄存器的内容),在整个访问期间不改变。
Flash 编程或校验时,P2亦接收高位地址和其它控制信号。
在上面的硬件连接原理图里,我们用到的是P0和P2口控制四位数码管显示的。
四位数码管显示的方式是动态扫描显示,动态扫描显示是单片机中应用最为广泛的一种显示方式之一。
其接口电路如上图是把所有显示器的8个笔划段a-h同名端连在一起由单51单片机增强型学习系统片机的P0.0~P0.7控制,而每一个数码管的公共极(阴极)是各自独立地受单片机P2.7~P2.4控制。
CPU向字段输出口P0口送出字形码时,所有数码管接收到相同的字形码,但究竟是那个数码管亮则取决于P2.7~P2.4的输入结果,所以我们就可以自行决定何时显示哪一位了。
51单片机按键使用及注意事项

51单片机按键使用及注意事项如下:
1.按键工作原理:按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开
关断开。
在开发板上使用的按键及内部简易图按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态,如果按键按下,初始导通状态变为断开,初始断开状态变为导通。
2.按键电路接法:上拉是为了让引脚默认是高电平,但是上拉的力量扛不住接地,所以按键没有按
下时上拉的力量保证了IO引脚输入为1,而按下后绝对为0。
3.按键抖动:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械点的弹性
作用,按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合和断开的瞬间均伴随着一连串的抖动。
抖动时间的长短由按键的机械特性决定的,一般为5ms到10ms。
4.按键消抖:有两种方式,一种是硬件消抖,另一种是软件消抖。
5.注意事项:CPU通过监测按键连接的IO引脚的电平输入是1还是0来得知外部有没有人按下
这个按键。
CPU在按键被按下的一瞬间检测到的信号是很多次的忽高忽低的电平信号,这种信号是不稳定
的。
因此,需要使用按键消抖的算法使单片机获取到正常稳定的信号。
总的来说,51单片机按键使用需要注意按键的电路接法、抖动以及消抖等问题。
在使用过程中,需要遵循相应的原理和注意事项,以确保按键的正常工作。
51单片机实验报告按钮开关精品文档6页

单片机实验制作实验题目:按钮开关应用实验完成时间:2013年5月31日系别:班级:姓名:学号:按钮开关应用实验一、实验目的1.掌握七段LED数码管的结构及工作原理;2.掌握共阳极LED数码管连接方法、及其静态和动态显示方法;3.进一步掌握并行接口芯片8255A的使用方法;4.掌握独立式按键的控制方法的设计。
二、实验器材七段LED数码管 89S51单片机三个按钮开关 30pF的两个微电容 1个0.1uF电容晶振限流电阻(220欧7个、10千欧2个、100千欧1个)导线若干三、实验说明1.按一下PB1按钮,LED数码管会显示一个数字1,再按一下会显示数字2,就这样连续按,数字将会从1依次变到9。
2.按一下PB0按钮(复位键),LED数码管上的数字将会从9归零。
3.按一下PB2按钮,LED数码管上的数字将从0变到9,连续按数字将会从9逐一的变到0。
4.所以此按钮开关的运用可以通过PB1按钮和PB2按钮以及PB0按钮的控制来进行简单的计数功能。
四、实验原理1.七段LED数码管的组成如图1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。
通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。
LED 数码管中的发光二极管共有两种连接方法:共阳极接法:把发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V。
这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
常用的七段LED数码管尺寸与引脚配置图七段LED数码管的七个LED组合图如图12.七段LED数码管的显示代码把发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V。
这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。
七段发光二极管,再加上一个小数点位,共计八段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机键盘接口电路(含源程序)
键盘是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,用户能通过键盘向计算机输入指令、地址和数据。
一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。
按钮开关的抖动问题
组成键盘的按钮有触点式和非触点式两种,单片机中应用的一般是由机械触点组成的。
在下图中,当开
<键盘结构图>
图
1
图2
关S未被按下时,P1。
0输入为高电平,S闭合后,P1。
0输入为低电平。
由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动,P1。
0输入端的波形如图2所示。
这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。
前面我们讲到中断时曾有个问题,就是说按钮有时灵,有时不灵,其实就是这个原因,你只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。
为使CPU能正确地读出P1口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:硬件办法和软件办法。
单片机中常用软件法,因此,对于硬件办法我们不介绍。
软件法其实很简单,就是在单片机获得P1。
0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1。
0口,如果仍为低,说明S1的确按下了,这实际上是避开了按钮按下时的抖动时间。
而在检测到按钮释放后(P1。
0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。
不过一般情况下,我们常常不对按钮释放的后沿进行处理,实践证明,也能满足一定的要求。
当然,实际应用中,对按钮的要求也是千差万别,要根据不一样的需要来编制处理程序,但以上是消除键抖动的原则。
键盘与单片机的连接
<
键盘连接>
图3
<单片机与键盘接口图>
图4
利用AT89C51单片机制作的按键次数计数器
该计数器用于对按键次数的计算,比如鼠标中的微按钮或其它按钮做QC测试用.该程序为汇编延时程序,用了取两次定时中断的键值做比较以达到简单防抖动和取健值的目的.本计数器的计数范围为0-999999,最大的频率为50Hz.
该电路的主要核心电路是用AT89C51组成的按键取值电路,S3S4分别控制计数值的加减.3906控制数码管使用的是共阳极.
程序如下:
#include <AT89X51.H>
#define Key_UP P3_6 //上调
#define Key_DOWN P3_7 //下调
#define LED P0
#define LED1 P2_2 //LED控制
#define LED2 P2_3 //LED控制
#define LED3 P2_4 //LED控制
#define LED4 P2_5 //LED控制
#define LED5 P2_6 //LED控制
#define LED6 P2_7 //LED控制
unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳0-9的LED笔划
static unsigned char bdata Key; //可位寻址的状态寄存器
sbit NewKeyUP = Key ^ 0;
sbit NewKeyDOWN = Key ^ 1;
sbit OldKeyUP = Key ^ 2;
sbit OldKeyDOWN = Key ^ 3;
static unsigned long data Count;
static unsigned char LEDN[6];
void main(void)
{
void Delay_510(void);
Count = 0; //初始化变量
Key = 0;
EA = 1; //允许CPU中断
ET0 = 1; //定时器0中断打开
TMOD = 0x1; //设定时器0为模式1,16位模式
TH0=0xB1;
TL0=0xDF; //设定时值为20000us(20ms)
TR0 = 1; //开始定时
while(1);
}
//定时器0中断外理中键扫描和显示
void KeyAndDis_Time0(void) interrupt 1 using 2
{
TH0=0xB1;
TL0=0xDF; //设定时值为20000us(20ms)
NewKeyUP = Key_UP; //取新的键值
NewKeyDOWN = Key_DOWN;
if (!OldKeyUP && NewKeyUP) //键放开时,这里的中断为20ms左右(定时值非自动装载所以多于20ms)
Count++;
if (!OldKeyDOWN && NewKeyDOWN)
Count--; //这里Conut为int 没有做负数等处理,有需要自行加上
if (Count>999999)
Count = 999999;
LEDN[5]=Count/100000;
LEDN[4] = (Count-100000*(long)LEDN[5])/10000;
LEDN[3] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4])/1000;
LEDN[2] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4]-1000*(long)LEDN[3])/1 00;
LEDN[1] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4]-1000*(long)LEDN[3]-10 0*(long)LEDN[2])/10;
LEDN[0] = (Count-100000*(long)LEDN[5]-10000*(long)LEDN[4]-1000*(long)LEDN[3]-10 0*(long)LEDN[2]-10*(long)LEDN[1]);
LED=LEDDis[LEDN[5]];
LED6 = 0;
Delay_510();
LED6 = 1;
LED=LEDDis[LEDN[4]];
LED5 = 0;
Delay_510();
LED5 = 1;
LED=LEDDis[LEDN[3]];
LED4 = 0;
Delay_510();
LED4 = 1;
LED=LEDDis[LEDN[2]];
LED3 = 0;
Delay_510();
LED3 = 1;
LED=LEDDis[LEDN[1]];
LED2 = 0;
Delay_510();
LED2 = 1;
LED=LEDDis[LEDN[0]];
LED1 = 0;
Delay_510();
LED1 = 1;
OldKeyUP = NewKeyUP;
OldKeyDOWN = NewKeyDOWN;
}
void Delay_510(void) //延时510微秒
{
#pragma asm
MOV R0,#7DH
MOV R1,#02H
TSR1:
DJNZ R0,TSR1
MOV R0,#7DH
DJNZ R1,TSR1
#pragma endasm
}
(可以自行修改调整程序以适合自己的电路.)。