百摩网
当前位置: 首页 生活百科

proteus仿真51单片机原理图(基于proteus的51单片机开发实例)

时间:2023-07-18 作者: 小编 阅读量: 2 栏目名: 生活百科

发光二极管可以看作是51单片机最基础、最典型的输出控制实现,而按键可以作为51单片机最典型的输入检测功能实现。通过检测按键被按下时,LED发光;按键松开后,LED熄灭。从而完美实现本实例的目的。而输出则是通过给端口施加高电平或者低电平来控制外电路的工作状态。LED控制电路中,LED通过单片机的P1.7控制,采用灌电流的驱动方式。

1. 基于proteus的51单片机开发实例(7)--按键的检测

1.1. 实验目的

图1是本实例的电路图。

图1 独立按键检测电路

本实例我们来了解如何使用51单片机检测按键。在之前的实例中我们已经了解过,通过发光二极管和按键几乎可以把51单片机的大部分功能模拟实现。发光二极管可以看作是51单片机最基础、最典型的输出控制实现,而按键可以作为51单片机最典型的输入检测功能实现。

通过本实例,了解到如何编程实现51单片机如何检测按键的状态,但是程序毕竟是看不见摸不着的东西。如何直观地提示大家按键是被按下了还是松开了呢?我们通过发光二极管的亮灭来指示,这样就简单、直观的实现了按键状态的检测。

1.2. 设计思路

本例实现的功能是通过编程实现51单片机检测按键的状态。为了能够直观的观察程序运行的正确性,我们又加入了一个LED。

通过检测按键被按下时,LED发光;按键松开后,LED熄灭。从而完美实现本实例的目的。

1.3. 基础知识

1.3.1. 51单片机端口的输入和输出

简单来说,在端口作为通用I/O口时,输入主要用以检测端口的状态,通过识别端口是处于高电平还是低电平来判断外电路的工作状态。而输出则是通过给端口施加高电平或者低电平来控制外电路的工作状态。

1.3.2. 按键的检测方法

图2是按键的实物图。可以看到,按键有4个引脚,如果我们用万用表测量的话,会发现这4个管脚实际分为两组,每组2个引脚,在按键未被按下时。这两个引脚始终处于“常闭”状态,也就是说,每组的两个引脚始终是导通的,而在这两组引脚之间是断开的,当按键按下后,这两组引脚之间就“导通了”。

图2 独立按键实物图

我们先来做一个实验,在proteus中,先按照图1所示的电路图建立一个项目,然后输入下面一段程序,然后开始仿真,看看当我们按动、松开按键时,LED灯的变换情况。

#include <AT89X52.h>//头文件sbit S1 = P3^0;//定义按键引脚sbit LED0 = P1^7;//定义LED引脚void main(void){LED0 = 1;//程序运行后,先将LED熄灭while(1){if(S1 == 0)//检测按键是否按下{LED0 = !LED0;//LED状态翻转}}}

程序中想要实现按键每按下一次,LED的状态翻转一次,但是当我们仿真时,发现LED的状态并不如我们预期的那样,有时候按键按下LED会闪烁不止一次。仿真效果如下面视频所示。

通过上面这个延时,我们了解到一个问题,按键的检测并不是如我们想象的这么简单,那么问题出在哪里呢?

事实上,我们用到的这种按键一般是由机械触点构成的,当触点闭合、断开时都会有抖动,这种抖动可以从图3中看出来。从图中可以看出,当按键抖动时,会在极短的时间内反复出现电平的高低变化,这个时间很短,一般是在毫秒级别,这种抖动对于我们直观是很难觉察到的,但是单片机不一样,例如51单片机,假如其时钟是12MHz,那么它的指令周期就是12/12MHz=1us,也就是说,51单片机每执行一条指令只需要1微秒,微秒对毫秒,这个差别就很明显了,所以单片机在按键抖动期间,是会检测到多次按键状态变化的。

既然存在这个问题,那么该怎么解决呢?

有两种解决办法,一是硬件消抖,二是软件消抖。

1、硬件防抖

硬件消抖电路如图4、图5所示。

图4 硬件消抖电路1

在图4中,当按键断开时,电源电压经典组对电容充电,电容上电压与电源电压相等,当按键按下,由于按键内阻很小,电容通过按键迅速放电,按键两端电压迅速降到接近0V,单片机输入端为低电平,在按键按下时,由于抖动导致按键会短时断开,电源电压经电阻对电容充电,由于电阻的阻值较大,短时间内电容充电量很少,所以电容两端电压基本不变,单片机输入端的电平也基本保持不变,从而保证了按键抖动时仍可以使单片机输入端保持稳定的低电平信号。图5所示电路的接法与图4刚好相反,在此不再赘述。

图5 硬件消抖电路2

选择硬件防抖电路时,电阻值和电容值的选取是很关键的。具体怎么选取电阻和电容的值呢,可以参考以下公式。

t<0.357*RC

这个公式中,t是按键抖动的时间,一般按键抖动时间是10~20ms,如果选取电阻阻值为10k,那么电容的值可以在2.5~5.6微法之间选取。通常选择3.3微法。

需要说明的是,考虑到按键按下时的功耗,一般电阻值选择要大一些。

2、软件防抖

用硬件防抖电路稳定性好、可靠性高,但是有一个缺点:增加电路中元器件,造成成本的提高。而软件防抖只是在程序中进行处理,不会增加元器件,所以相对来说,不会增加成本(毕竟软件成本相对很低)。

软件防抖的基本原理是:在单片机第一次检测到按键按下时,立即运行一短延时程序,在延时程序运行期间,不检测端口的电平状态,延时时间过后,按键的状态已经稳定了,这时单片机再检测按键的状态,这样可以避开按键的抖动期,从而从单片机端口得到稳定的按键状态。

软件防抖的延时时间一般选择10~20ms。这样也会有一个缺点:影响程序的执行效率。

1.1. 电路设计

本实例中电路有两部分:按键检测电路、LED控制电路。

按键检测电路中,按键的一端接到单片机的一个端口P3.0,另一端接地,按键端口接一个上拉电阻,按键未按下时,单片机端口处于高电平,按键按下后,单片机端口变为低电平。

LED控制电路中,LED通过单片机的P1.7控制,采用灌电流的驱动方式。

1.2. 程序设计

如下是本实例的程序代码。

#include <AT89X52.h>//头文件sbit S1 = P3^0;//定义按键引脚sbit LED0 = P1^7;//定义LED引脚void main(void){unsigned char i,j;LED0 = 1;//程序运行后,先将LED熄灭while(1){if(S1 == 0)//检测到按键按下{for(i = 0;i < 200;i) //延时一段时间for(j = 0;j < 200;j);if(S1 == 0)//再次检测到按键按下{LED0 = !LED0;//LED状态翻转}}}}

本实例中按键检测电路采用的是软件消抖方式,具体实现方法是,当程序中检测到按键端口P3.0按下时,立即延时一段时间,再次判断按键的状态,如果P3.0仍处于低电平,则认为按键确实被按下了,此时将LED控制端口P1.7的输出电平翻转。

1.3. 实例仿真

程序编写完毕后,编译生成HEX文件,将HEX文件载入proteus电路中的单片机,然后开始仿真,就可以看到每次按键按下,LED的状态会稳定的翻转一次。

1.4. 总结

通过本实例,我们掌握了单片机按键检测电路,了解了按键的抖动以及如何从电路和程序两种途径消除这种抖动。

至此,我们已经掌握了单片机学习过程中最简单、最经典的两种元器件:输出控制指示元件LED,输入检测元件按键。这对我们接下来的学习有极大的帮助。

    推荐阅读
  • ps标尺怎么调出来(一起来了解一下)

    接下来我们就一起去研究一下吧!ps标尺怎么调出来首先打开PS软件,然后在弹出的页面中选择“新建”。然后选择自己需要的画布大小,点击“创建”。标尺工具的使用方法直接用鼠标左键在画布上拉取即可。

  • 装修前可以看看的几条建议(装修有哪些建议)

    装修有哪些建议装修过来人总结的80条实用建议,参考一下吧!!一、整体建议1.提前预留出20%备用金,预防后期超预算2.提前做个预算表,装修时你就知道那个项目该花多少钱,把钱花在刀刃上,参考硬装:家具家电:软装比例:。

  • 处理器的作用是什么 手机处理器的作用是什么

    CPU包含运算逻辑部件、寄存器部件和控制部件等,并具有处理指令、执行操作、控制时间、处理数据等功能。寄存器部件,包括通用寄存器、专用寄存器和控制寄存器。通用寄存器是中央处理器的重要组成部分,大多数指令都要访问到通用寄存器。通用寄存器的宽度决定计算机内部的数据通路宽度,其端口数目往往可影响内部操作的并行性。

  • 卵巢不好有什么症状 卵巢不正常表现有哪些

    一般来说,痛经有原发性和继发性两种,原发性痛经的发生与子宫内膜和血液中前列腺素含量增高有关;而激发性痛经则与盆腔炎,卵巢囊肿,或子宫内膜异位有关。痛经与卵巢囊肿关系非常亲密,月经期间如果经血不能顺利流出,就会产生逆流,逆行到卵巢中,子宫内膜组织在卵巢中长期不能排出,就会产生囊肿,在来月经的时候,会导致下腹疼痛明显。莫名潮热多汗潮热出汗是卵巢功能衰退的典型症状之一,是由于神经,内分泌失调所致。

  • 5天减脂计划(减脂打卡挑战45天4.5kg)

    速度较2015快了一些,是正常慢跑的速度了。关于饮食,我戒掉了零食、饮料、油炸类及所有高热量垃圾食品。关于睡眠,每天尽量保证八小时睡眠。减肥也是很不容易的事情,有数据统计,82%的人减肥以失败告终。这个目标要切合实际,科学健康,经过努力做得到。二是要有具体的计划,这个计划要可操作性强,努努力能够做得到。三是要有执行的决心。减肥不是请客吃饭,敲敲锣打打鼓,吃吃饭喝喝酒就能实现的。

  • 在家就可以做出美味的烤肉(自从学会这个做法)

    自从学会这个做法冬天吃烤肉串真的太幸福啦这个配方是我去朋友家吃饭跟她爸爸学的之前我分享过烤肉很多人跟着做了都说好吃按步骤来就行绝对不踩雷这次用了1斤五花肉洋葱是灵魂一定要放✔️做法1⃣️五花肉切块放盐鸡精少许2勺生抽。

  • 猪胰子怎么做好吃(猪胰子如何做好吃)

    猪胰子怎么做好吃食材:猪胰子300克、青椒200克、油10克、葱4克、姜5克、香菜少许、盐5克、料酒10克、醋5克。猪胰子斜刀切成条状,凉水下锅,放入适量料酒去腥,大火烧开后捞出,凉水冲洗干净备用。给锅中倒入油,待油热放入葱姜,花椒爆香后,放入处理好的猪胰子煸炒。待猪胰子与葱姜翻炒均匀后,继续炒两分钟,放入盐,醋,料酒调味。

  • 迷你世界中骨粉怎么获得(迷你世界骨粉在哪里)

    有着非常方便快捷的多人联机模式,只要有网络就能和各个地方的小伙伴们一起玩,没有等级和规则限制,没有规定的玩法,只有随心所欲的破坏和天马行空的创造。

  • 猪价经过持续一周的回调终于见涨 猪价持续上涨

    幅度在-0.11至0.30元/公斤之间。天津市、浙江省、黑龙江省上涨前三。新疆、宁夏、山西省下跌排前。除了港澳台西藏外,全国外三元均价最高省份为贵州省19.95元/公斤,最低省份为新疆17.64元/公斤。