2019年 12月 28日 星期六
您的位置: 威廉希尔主页 > 单片机技术 >

AVR单片机教程——数字输入

来源:未知     作者:威廉希尔     发布时间:2019-12-28 09:27         

  我们已习了如何使用按键和拨动开关,不知你有没有好奇button_down和switch_status等函数是如何实现的。本篇教程带你一探究竟,让我们从按键的原理开始。

  符号很简单,就是两个触点上方有一个动片,当按下时与两个触点接触。实际上按键内部的机械结构大体上就是这样,实现的功能是,没有按下时两端断,按下时两端短。

  但是我们的开发板上的按键有4个引脚,这是怎么回事呢?其实两个和下面两个分别是连通的,相当于只有两个:

  从开发板可以看到拨动开关有3个引脚。拨到上方时,两个导通;拨到下方时,下面两个导通。

  然而,光知道这些原理还不够。任何IC,包括单片机,与打交道的唯一途径是引脚。单片机要知道按键状态,必须由我们搭建合适的电,把按键和开关的信息转换为电平,连接到单片机上。

  先说按键吧。按键按下时,两引脚之间导通,如果一端接在某一极(电源或地)上,另一端的电平就是确定的。然而,如果不连接其他器件,当没有按下时,这一端是浮空的,电压可能高也可能低,是无效的。而我们希望不按下时检测到的是另一种电平,因此我们可以在按键一端和另一极之间接一个电:

  按键接到地,电阻接到电源,这是一种很常见的接法,其中的电阻称为上拉电阻,取值几千欧到几十千欧都没啥问题。这个电阻可以在单片机内部,也可以是一个的元件。在我们的开发板上,4个按键(以及4个开关,后面会提到)是通过排阻上拉的。

  为什么把按键接在地上用上拉,而不是接在正电源上用下拉?这是个很复杂的问题。尽管在布尔代数中0和1是完全对称的,但电子毕竟是电子而空穴是电子的缺失,由于某些很复杂的原因,导致上拉比下拉更加常见(得多)。事实上,AVR单片机的引脚可以配置的上拉电阻,但是没有下拉电阻可选(部分新型号中有)。

  这种接法不需要额外的元器件,听起来很妙。然而,虽然可行,这是一种不好的方法。万一两个触点之间短了怎么办?整块开发板都短了。尽管短听起来安全,但即使起来,在解决短问题之前,开发板还是不能用的。还有一种情况,我真的碰到过,就是单片机上两个相邻的读取开关的引脚因为焊接时的疏忽短了,导致一旦这两个开关状态不一样就会触发短。总之,这种接法不提倡。

  利用这两种电,我们成功地将按键不按下与按下分别转换成高电平和低电平,把开关位于下方和上方分别转换成低电平和高电平。那么,单片机怎么读取电平呢?库提供了pin_read函数,定义在中。我们还是通过一个例子来学习其使用方法:保持黄灯和蓝灯的状态分别与按键2和开关2的电平相同。

  当程序涉及端口操作时,为了能在硬件连接改变时方便地修改程序,用宏或常量建立设备与引脚之间的映射关系。这样在修改时就只有这个映射关系需要改动了,总比程序每一处调用都修改要方便得多。

  值得一提的是,尽管今天的教程介绍了更底层的知识,但这仍不是我们能达到的最底层的地方。在几篇教程之后,你就可以抛弃库函数了。

  本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

  基于AVR单片机的语音识别系统设计,系统以AVR单片机为控制核心,实现对人的语音的识别控制。系统采用的主控芯片为Atreel公司的ATMEGAl28,语音识别功能采用ICR oute公司的单芯片LD3320。LD3320内部集成语音识别算法,无需外部FLASH,RAM资源,可以很好地完成非特定人的语音识别任务。同时该芯片内部集成了MP3播放功能,支持MPEG等格式,可实现语音提示或MP3歌曲的播放功能。由于内部含有16位A/D、D/A转换器和功放电,所以不需要外接功放电就可以产生清晰的声音。该系统已经预留好各种接口,具有良好的扩展性。控制器电控制器选用Atmel公司生产的ATMEGA128芯片,采用先进的RISC

  的金属框远离仪表机壳,实测结果电容效应几乎为零。从而乱码和花屏现象不再出现。2.6外部看门狗与外部时钟看门狗也称程序定时器。尽管 AVR单片机系统内也有该功能的设置,但在应用实践中发现当干扰严重时该功能会失效,即系统死机后单片机内部的看门狗也无法复位。故有必要在单片机外部单独设计看门狗电。如图 5所示,由 MC4060芯片及外围电构成一个看门狗电。MC4060是一个带外接振荡的 14分频定时计数器,R18和 C2时间决定振荡频率。采用如图 5所示的参数时,该振荡频率经过 2秒左右时间后 14分频计数器将被记满,Q14由低电平变高电平经三极管 Q3构成的反相器使输出变为低电平,M16单片机被复位。程序正常运行时,会在

  高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以的必要条件。早期 单片机 主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。AVR 单片机 的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作

  。这种方式单片机介入电源工作最多。第三种方式是最彻底的 单片机 控制开关电源,但对单片机的要求也最高。要求单片机运算速度快,而且能够输出足够高频率的PWM波。这样的单片机显然价格也高。DSP类 单片机 速度够高,但目前价格也很高,从成本考虑,占电源成本的比例太大,不宜采用。廉价 单片机 中,AVR系列最快,具有PWM输出,可以考虑采用。但AVR单片机的工作频率仍不够高,只能是勉强使用。下面我们具体计算一下AVR单片机直接控制开关电源工作可以达到什么水平。AVR 单片机 中,时钟频率最高为16MHz。如果PWM分辨率为10位,那么PWM波的频率也就是开关电源的工作频率为16000000/1024=15625(Hz),开关电源工作在这个频率

  * Code adapted fromAtmelAVR ApplICation Note AVR306* PolLEDmode driver forUART, this is the similar to the* library deult putchar() and getchar() in ICCAVR*/#include#include#include “uart.h”/* iniTIalize UART */void InitUART( unsigned char baudrate ){UBRR = baudrate; /* set the baud rate */UCR

  本文采用AVR单片机ATmegal28作为核心控制器,结合10位串行D/A芯片TLC5615、功率运放THS3092、可编程增益运放AD603以及其他相关电,构成了可预置程控宽带直流功率放大电。该电系统增益调节范围为O~60 dB,步进间距为1 dB,频带为DC~10 MHz,输出电压有效值为10 V,矩阵键盘预置增益值步进,点阵液晶显示实时电压有效值,人机界面友好,操作简单方便。1 系统总体方案若采用可编程放大的思想,将输入的信号作为高速D/A转换器的基准电压,那么D/A转换器作为一个程控衰减器,对速度的要求很高。同时,为了实现O~60 dB增益可调,势必需要D/A转换器输出衰减最少60 dB以上。假设信号源

  【1月14日 技术直播】工程师请就位,Keysight计量专家开讲啦 ~电子仪器计量校准基础知识与校准周期探讨

  有直播:ADI在中国能源互联网应用中的技术及产品 1月8日上午10:00-11:30 准时!

  STM32MP1系列通用型MPU, 集成双 Arm® Cortex®-A7和 Cortex®-M4 内核

  STM32MP1系列通用型MPU, 集成双 Arm® Cortex®-A7和 Cortex®-M4 内核

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

      威廉希尔