当前位置:首页 > 单片机
  • 你知道吗,为什么很多单片机的工作电压是5V?

    5V来自于TTL电平,5为True,0即为False,之后用了压降更低的PN节,衍生出了3.3这个电平。 12V和24V来自于汽车电瓶,早年乘用车又12V和24V两个系统,现在一般小型车12V,商用车24V,再究其由来应该是铅酸电池。 所以3v3和5v一般出现在信号电路或者单片机等vcc供电,而12v/24v一般出现在低压动力电,例如主板、显卡、轴流风机、监控器。 硬件决定系统基础,如果锂电池早点应用的话估计还会有3.7/7.4这个系统。 为什么很多单片机的工作电压是5v? 因为大多数芯片都是5V的TTL电平,要做到电平兼容,电平匹配,避免要电平转换操作,所有很多单片机的工作电压都是5V。 早期(196x)的晶体管电路(TTL)单管的压降是0.7v, 一个电路里经常有多个晶体管串联,比如4管串联,电源至少保证0.7x4=2.8v才能保证电路正常工作。 所以最早有3v、5v等标准,后来LM7805(197x)电源IC出来以后,5V成了事实标准。 TTL指的是TTL电平,0~5V之间,小于0.2V输出低电平,高于3.4V输出高电平, 全称Transistor-Transistor Logic,即BJT-BJT逻辑门电路,是数字电子技术中常用的一种逻辑门电路,应用较早,技术已比较成熟。 TTL主要有BJT(Bipolar Junction Transistor 即双极结型晶体管,晶体三极管)和电阻构成,具有速度快的特点。 最早的TTL门电路是74系列,后来出现了74H系列、74L系列、74LS、74AS、74ALS等系列, 但是由于TTL功耗大等缺点,正逐渐被CMOS电路取代。 为什么很多都是5V,而且有大量电源芯片支持的也是5V, 电压浮动为5%,而电压标准,在A/D当中使用,标准应该是5.12V。 因为512是2的N次方,这样A/D的每一个字都是一个整数,当作为无符号计算的时候,更简单,但是没见到哪个成品用这个电压的,大部分都是5V,为什么不用呢? 因为做5.12的标准电压的成本会成倍增长,5V与5.12V精度差别在百倍,小数点后0.12V,基本很难做到高精度标准电压,市场通用电压为5V,上浮一定百分比。 2008年11月发布的STC12系列单片机数据手册中,STC12C系列的单片机电压范围是3.3~5.5V;STC12L系列的单片机电压范围是2.2~3.6V。 如果选择STC12C系列的单片机,只要单片机的工作频率不是太高,使用3.7V供电是没有任何顾虑的,官方声称单片机的抗干扰能力可以达到4000V,但实际应用说法不一。 大多数单片机都是 TTL 电平,各自的高低电平定义不一样; 当电源电压为5V时:51,avr单片机是5V; 当电源电压为3.3V时:51,avr单片机高电平是3.3v; arm如lpc2138,电源电压只能为3.3v,io输出高电平为3.3V,但io口可承受5V电压。 现在单片机工作电压主要有两种:一种工作在3.3V,一种工作在5V。 -END- 来源 | 巧学数模电单片机 | 整理文章为传播相关技术,版权归原作者所有 | | 如有侵权,请联系删除 | 【1】PCB设计中避免出现电磁问题的6个技巧 【2】PCB叠层设计,就这么做! 【3】七大步骤教你确定PCB布局和布线! 【4】看呆!技术宅在家这么玩PCB! 【5】必看!什么是PCB回流?又该如何解决? 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-28 关键词: 电压 单片机

  • 单片机编程时如何分析芯片的时序图?

    时序对于数字电路而言非常重要,可以说时序是数字电路正常工作的基础。说到时序,一般是指可编程器件的编程方法,在单片机编程时,需要根据被控芯片的时序去写程序,把芯片手册上规定好的时序用代码来实现,放可以实现单片机和芯片之间的通讯。下面以几种常用芯片的时序来简单介绍一下如何看懂时序。 IIC通讯的开始/结 束时序 IIC是常用的芯片间的通讯方式,也叫I2C,适合于PCB板内近距离的通讯,总共具有两跟线,可挂接不同地址的多个设备,其硬件连线如下图所示。 IIC在通讯时需要首先发送一个开始信号,数据结束时需要发送结束信号,开始和结束就在器件手册上就给出了时序图,在编程时就需要用C语言代码去实现开始和结束的时序,时序图如下所示。 SCL是IIC的时钟线,SDA是数据线,SDA数据如何传输需要在特定的SCL时序上。从图中可以看出,在开始时,必须SCL是高电平,而SDA是下降沿,这就是开始的时序。在发送结束信号时,必须让SCL为高电平,让SDA是上升沿,这就构成了结束信号。用C语言代码所实现的结束信号如下所示。 IIC数据传输时的时序 IIC在发送完开始信号后,就要开始发送数据,发送数据的过程也必须得遵守IIC的时序,IIC数据传输的时序如下图所示。 从时序图上,可以看出,在SCL为高电平期间是不允许SDA数据发生变化的,如果要改变SDA数据必须发在SCL为低电平期间。这就是这个时序图的含义。单片机在编程时要遵循这个规则才可以。 时序图是编程的依据,在写代码时必须要严格按照芯片手册上的时序图,否则通讯失败。所以,时序图这个东西要多看,多写代码。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 单片机工程师是高薪岗位,按照这个步骤学习才能快速入门获得高薪

    现在的电子产品,随便拿来一个拆开,都能看到单片机的身影,单片机在电子产品中已经成了标配。因为现在的电子产品都是以单片机为核心,根据不同的需求加以不同的外设电路,再做一些认证相关的设计工作,都是这个构架。以智能手环为例,可以实现步数统计、心率检测、液晶显示、与手机蓝牙通讯、手机来电振动等功能,这些功能通过选用相关的传感器、元器件来实现,最后单片机做数据处理和逻辑处理,核心还是单片机,功能框图如下所示。 1-以单片机为核心的智能手环电路框图 如今,各种家电、智能穿戴设备、各种数码产品层出不穷,需求量越来越大,这也使得单片机工程师这个岗位需求量巨大,在不同的公司中,这个岗位有不同的称呼,如单片机工程师、电子工程师、硬件工程师、数电工程师等。相对于互联网程序员,单片机工程师低调的多,因为硬件是一个平台,是幕后,所有的效果、界面都是由代码呈现的,所以程序员成了台上的明星。平台可能只有一个,但是明星却有很多,这就要求你这个平台够硬。可以单片机工程师的重要性并不亚于程序员,而单片机工程师的待遇也不会很差,前提是你要坚持住。 2-华为体脂秤的国产单片机,来自芯海科技 所以,单片机是一门很有用的技术,学会单片机可以找一份很好的研发岗工作,享受很好的工资待遇。但是万事开头难,在初学入门阶段可能摸不着头脑无从下手毫无头绪,如果有了比较好的学习方法,单片机学习起来也是很有趣、很容易的。和大家分享一下单片机以及单片机C语言编程的学习方法。 1.选择一块合适的单片机开发板 单片机开发板集成了各种常用的外设资源,并有详细的配套例程和教程,大大方便了初学者的学习。不管你是从51单片机开始,还是直接从STM32、AVR开始,建议选购一块单片机开发板。大家在选择开发板的时候,可以按照以下几个方面认真筛选: 硬件资源的丰富程度,开发板配套的硬件资源越多,那初学者所接触的内容也就越多,所涉及的知识面也就越广,在后期扩展学习时也就越方便。 配套程序的丰富程度,开发板还配备了和硬件资源相关的例程,在前期需要根据例程学习单片机寄存器的配置方式、要学习软件控制硬件的原理,所以例程丰富利于初学者学习。 是否有及时的技术支持,在初学阶段会碰到各种各样的问题,问题可能很简单但是需要别人的指点,如果有技术支持与之对接那就很容易解决在学习过程中遇到的各种问题,事半功倍。 头文件不要选择修过的,较大的开发板厂商都修改了单片机的头文件,这么做的目的是为了统一自己的风格,跟其他竞争对手区分开来,也保护了自己的消费群体,从短期来看这可能方便了初学者的学习,但是却不推荐这么做。因为用久了他们的头文件,就会生疏原始的头文件,如果换了另一种品牌的单片机可能很不习惯,甚至都不知道怎么去使用原始的头文件。我们学习的是单片机,并不是开发板厂商提供的平台。 3-单片机开发板实物图 2.先从GPIO口的配置开始学习 GPIO口是单片机最基本、最重要的资源,所有的外设资源都是通过连接GPIO口来实现的,单片机开发板也配套了很多与GPIO相关的硬件资源,例如流水灯控制、按键输入检测、蜂鸣器控制、继电器控制、数码管显示、液晶显示等,这些都是通过GPIO的输入或者输出功能来实现的。几乎每一个初学者都是把流水灯作为入手单片机的第一个项目。通过这些基本的操作,初学者能学到单片机GPIO口的基本概念、配置方式还有相关硬件电路的设计原理,为后面的继续学习打下坚实的基础。 下面是典型按键输入检测电路和蜂鸣器驱动电路,通过这两个电路可以学会很多基本的电路设计知识和程序设计知识。 4-基本的输入输出电路 图中按键输入检测电路中的的电阻R75叫做上拉电阻,在按键没有按下的时候单片机检测到高电平,按键按下后检测到低电平,这个电阻可以防止因引脚悬空所带来的误检测。蜂鸣器 驱动电路中是通过三极管来控制蜂鸣器,电阻R76用作限流保护蜂鸣器,电阻R78用于下拉防止误动作,这个电路中三级管工作在截止和饱和状态。当单片机输出高电平1时三极管饱和导通蜂鸣器发声,当单片机输出低电平0时三极管截止蜂鸣器不工作。 3.学习单片机重要的片上资源 单片机的功能之所以强大,是因为集成了很多片上资源,常见的如定时器功能、AD采样功能、外部中断资源、PWM功能等,合理的利用这些资源可以提高电路的设计效率、降低电路的设计难度,使技术方案更加优化、产品成本更低、性能更稳定。所以学习这些片上资源非常重要。 定时器/计数器功能,定时器可以实现计时功能,实现精确的定时、延时功能;而计数器可以实现外部时钟源、脉冲源的计数功能,可以统计脉冲信号的个数,实现频率/周期的计算等功能。 AD采用功能,这个功能可以实现模拟信号向数字信号的转化功能,将模拟信号量化为数字信号,方便单片机处理。该功能在传感器产品中应用比较多,比如温度采集、电流采集等。配合相关元器件/敏感探头的使用可以将环境中连续的物理量转化为数字量,单片机处理后可以精确的得到实时的物理量的值。 中断资源,所谓中断就是优先级较高的事件把正在进行的事件打断,中断事件处理完毕后再接着处理刚才的事件,使用中断资源可以节省单片机的资源,提高单片机的执行效率。 5-NTC温度检测电路 上图是一个简单的温度检测电路,感温元器件使用具有负温度系数的热敏电阻NTC来实现,当环境温度升高时NTC的阻值减小,那么NTC两端的电压就变小,单片机通过AD采样功能采集NTC两端的电压值,通过该电压值反推出当前NTC的电阻值,再根据NTC电阻值和温度的对应关系计算出当前环境的温度值,从而实现了温度传感器的功能。 4.学习单片机的通讯功能 单片机带有通讯功能,常用的通讯功能有UART、IIC、SPI、CAN、USB等,UART即可以实现通讯功能,又能实现单片机程序的下载功能,所以UART基本是单片机的标配资源。UART配合其他电平转换芯片可以衍生出多种通信方式,如通过MAX232芯片可以RS232的通讯、通过MAX485可以实现RS485总线的通讯功能、通过42675可以CAN总线通讯等功能。除此之外,还可以通过UART实现wifi无线传输、蓝牙无线传输和RF射频等无线通讯功能。 6-RS485接口典型电路 上图是通过MAX3845所实现的RS485接口电路,电平转化芯片通过UART和单片机连接,实现数据的透传功能,图中的三极管用于通讯时的数据方向的切换。 按照以上步骤学习完,你应该对单片机掌握了一大半了,对常见的外设电路了解的也差不多了,接下来需要实战一下。 5.参与/主导单片机项目 学习单片机的目的就是为了以后能够用单片机设计出方案合理、性能稳定、成本占优的产品,所以要抓住参与项目的机会,在项目中锻炼实践动手能力,学会项目的开发流程。开发产品中会涉及到需求的分析、技术方案的制订、芯片的选型、技术原理的实现、功能调试、各中认证等工作,最后才是产品的量产。同时,要学会和项目同事打交道,提升自己的项目领导能力。 7-产品开发流程 6.以动手为主,看书为辅 经常有朋友问我,让我给推荐学习单片机的书籍。单片机不是一门偏重理论的课程,而是重在动手实践。不建议大家以看书为主,在早些年的时候我也看过很多关于单片机教学的书籍,但是看多了就发现了问题,市面上很多关于单片机相关的书籍都是塑成形的基本内容大同小异,而且都是以单片机的数据手册内容为主,或者是直接翻译过去的,或者是直接摘录的。任何一种芯片,最权威的资料永远都是官网发布的数据手册,现在单片机厂商都很注重资料的分享和学习笔记的分享,甚至很多单片机厂商为了推广单片机都做了各种技术方案挂在网站上。所以,大家在使用单片机的过程中遇到了问题首先要去翻阅数据手册和官网的学习笔记,这是最直接有效的方法。 以上就是关于学习单片机的几点建议,希望对大家起到一定的启发作用。 关注微信公众号『玩转嵌入式』,后台回复“128”获取干货资料汇总,回复“256”加入技术交流群。 精彩技术文章推荐 01 |为什么4-20mA直流电流是标准信号? 02 |模拟量传感器如何抗干扰,有哪些措施? 03 |传感器和变送器的区别 04 |科普文:霍尔电流传感器的测量原理是什么 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 单片机程序下载方式讲解

    对于单片机项目,编完程序后要将hex文件下载到单片机中,程序才能够执行,才能实现相应的功能。单片机程序的下载方式有多种,下面介绍几种常用的下载方式:ISP(串口下载),SW,JTAG。所涉及到的单片机有STC51、LPC11C14、STM32F103C8T6等。这三种单片机都可以用ISP方式下载,LPC11C14可以用SW方式下载,STM32F103C8T6可以用JTAG方式下载。 ISP下载方式     ISP下载也就是所说的串口下载,所需要的工具为USB/TTL,USB/TTL模块在淘宝上卖的非常多,也很便宜,最贵才3.5元左右。ISP下载要用到单片机的串口(UART),电路非常简单。 要注意的是USB/TTL和单片机的接口要交差连接,即: 还要注意,USB/TTL和单片机不能同时供电,如果用USB/TTL供电那单片机就不要接外接电源,否则USB/TTL容易烧坏。 LPC11C14的ISP下载电路有6个脚: 3.3V     --------电源正 PIO0_3--------高电平:通过串口下载;低电平:通过CAN下载 BOOT0--------低电平:进入ISP下载模式 GND    ---------电源负 TXD     ---------接USB/TTL的RXD RXD    ----------接USB/TTL的TXD STM32F103C8T6的ISP下载要注意BOOT0、BOOT1的状态: 2. SW下载方式 SW可以实现在线调试,所使用的工具为JLINK,只有两条线,电路非常简单。LPC11C14的SW接口如图所示。 SWDIO-----------接LPC11C14的PIO1.3 SWCLK----------接LPC11C14的PIO0_10 RST      -----------接LPC11C14的PIO0_0 3. JTAG下载方式 JTAG可以实现在线调试,所使用的工具为JLINK,电路非常简单。STM32F103C8T6的JTAG接口如图所示。 JTRST---------PB4 JTDI    ---------PA15 JTMS  ---------PA13 JTCK  ---------PA14 JTDO  ---------PB3 NRST  ---------第7脚NRST 人人都是电子设计的分享者,长按二维码关注。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 一篇文章教你学会数码管的操作

    数码管我们并不陌生,它是一种常用的显示器件,在生活中也经常见,比如说电子万年历,洗衣机的数显等。 1. 什么是数码管 数码管是由多个发光二极管组成的一种显示器件,按字段多少可以分为七段管、八段管、米字管等;按工作方式分又可分为共阳数码管和共阴数码管;按位数分又可分为1位、2位、3位、4位等;按颜色分还有红色、绿色、蓝色等,按大小还可分为0.28寸、0.30寸、0.36寸等。 2. 数码管字段划分 以八段管为例介绍其字段,八段管如下图所示。 它的八个字段分别为:a,b,c,d,e,f,g,h。如果要显示“7”字,只需要将a,b,c三个字段点亮即可,如下图所示: 这样来理解的话,要点亮一个数码管是不是很容易?数码管该怎么点亮,答案就是给高低电平,高低电平怎么给,这就涉及到数码管是共阳的还是共阴的。 3. 数码管工作原理详解 数码管的共阳工作方式和共阴工作方式对初学者而言可能不太好理解,为了加强理解下面把数码管简化,如下图所示: 上图中的DP就是前边图中的h,也就是小数点,图中的数字是数码管的引脚, 这里主要看字母。从图中可以看出数码管其实就是多个发光二极管的集合体。 共阴数码管:将发光二极管的阴极共同连接在一起; 共阳数码管:将发光二极管的阳极共同连接在一起; 对共阳数码管而言,如果要显示“7”字,公共端给高电平,a,b,c给低电平,d,e,f,g,h给高电平就可以了。 将数码管的字段表做成表格,如下所示。 从表格中可以看出,要共阳数码管显示“7”,只要给数码管0xF8就可以了。共阴数码管正好相反,如下: 从表格中可以看出,要共阴数码管显示“7”,只要给数码管0x07就可以了,和共阳管正好互补。 在程序中怎样控制呢?既然知道了数码管的点亮方式,那就可以将要显示的数字做成数组字段。共阳、共阴数码管0-9的字段为: 关注 微信公众号『玩转嵌入式』,后台回复“128”获取干货资料汇总,回复“520”了解我。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 数码管 单片机

  • 单片机:明明是一门动手实践课程,却硬生生学成了理论课

    学习单片机的现状是:明明是一门动手实践的课程,却硬生生学成了理论课。还记得大学学习单片机的时候,老师在讲台上热情激昂的讲着51单片机的汇编指令,却只字不提单片机的编程环境,整个学期结束唯一记住的就是110条汇编指令。你肯定理解错了,这里记住的其实是数字110,那些指令一条也没有记住。 工作了这么多年,总结下来:学习单片机的第一步就是先了解单片机的编程环境和烧录工具。 可编程类芯片,如单片机、DSP、FPGA等,在写完程序后,需要编译成可执行文件烧录到芯片中,芯片才能按照所设定的逻辑去执行任务。不同芯片所使用的烧录软件、编程器都是不同的,烧录过程其实并不复杂。在需要用到一款可编程芯片时,要先准备编程环境IDE、烧录软件以及编程器。下面介绍几款单片机的编程环境以及烧录方法。 1 51单片机的烧录软件、工具以及烧录方法 这里所说的51单片机主要是指国产的STC单片机,STC单片机可以用keil C51版本来编写程序,程序编译完成后会生成hex文件,可以使用STC-ISP软件来烧录,所用到的硬件烧录器为USB/TLL串口工具。烧录软件的界面如下图所示。 1 51单片机烧录软件STC-ISP界面 STC51单片机在烧写时用的是USB/TTL,其实就是通过单片机的UART来实现的,需要用到四根线:VCC、TXD、RXD、GND。两者的VCC、GND对应相连,TXD和RXD要交叉连接。烧录软件需要注意的是,要正确选择单片机型号、串口号、选择加载hex文件,点击下载/编程后,需要给单片机断一下电再上电,这时就会看到下载过程。烧录成功会有提示。 2 STM系列单片机的烧录软件、工具以及烧录方法 STM具有8位和32位两个版本,STM8可以用IAR for STM8来编程,用STVP来烧录,所用到的工具为STLINK,烧录软件的使用基本上大同小异。STVP在烧录STM8时,需要配置硬件工具,选择STLINK,编程方式选择SWIM,然后选择型号。如下图所示。 2 STLink配置界面 需要需要烧录的HEX或者S19文件。再选择烧录即可。STM32还可以使用MCUISP来烧录,要用到USB/TTL,需要选择串口、文件等,界面如下图所示。 3 MCUISP界面 除了使用独立的烧录软件以外,编程环境还可以支持在线烧录,比如keil使用JLINK实现程序的在线仿真。 总之,烧录软件有多种,不同型号的芯片烧录软件、工具都不一样,可以在确定了芯片型号后具体查看。知道了编程环境,有了烧录工具,后面就是勤劳动手了。 确定好单片机的型号之后,可以去官网下载单片机的数据手册、了解编程环境以及烧录工具。有了这些内容,学习单片机就事半功倍了。 精彩文章推荐: 单片机为什么那么喜欢11.0592M的晶振 单片机编程如何查看版本之间代码的不同:代码比较工具 单片机是如何工作的?单片机内部结构原理,让你豁然开朗! 新手如何学习单片机?看完本文不再迷惘,按部就班成为单片机大牛! 新手自学单片机,用什么样的开发板比较好? 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 如何查看你写的单片机程序有多大?

    单片机我们都用过,我们知道单片机的FLASH有4K的,有8K的,单片机程序我们也写过,但是我们写好的程序有多大,你知道吗? 程序写好并编译后生成hex文件,这个hex文件就是要下载到单片机里的文件,这个文件的大小不能超过单片机的FLASH大小,否则就要优化程序或者选用更大FLASH的单片机。 如下图所示,就是一个编译好的hex文件: 我们发现他后边的大小是9KB,这个是程序的大小吗?其实这是错误的,程序的大小要在这里看见: Code:表示所要执行的代码,程序中所有的函数都位于此处。 RO-data: 表示只读数据,程序中所定义的全局常量数据和字符串都位于此处。 RW-data:表示已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。 ZI-data:表示未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。 通过上面的描述就可以看出: 下载到单片机FLASH的程序是:Code+RO-data+RW-data; 运行在RAM中的数据是:RW-data+ZI-data; 好了,从今天起你就要知道你所写的程序有多大该怎么看了,另外程序的大小还可以在工程目录下的.map文件中看到: 找到.map文件,用记事本打开,拉到最后就可以看到了。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 大佬带你深入了解51单片机,51单片机、AVR、PIC单片机IO口操作

    大佬带你深入了解51单片机,51单片机、AVR、PIC单片机IO口操作

    51单片机使用广泛,不论是学生还是开发人员,对51单片机均有所热爱。51单片机同其它单片机相同,均存在IO口操作。为帮助大家更好了解51单片机,本文将对51单片机以及AVR、PIC单片机的IO口操作予以介绍。如果你对51单片机具有兴趣,不妨继续往下阅读哦。 51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的目的是让单片机的管脚输出逻辑电平和读取单片机管脚的逻辑电平。 一.51单片机IO口的操作 51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起来是所有单片机里最简单的,可以直接进行总线操作也可以直接进行位操作,这也是51单片机之所以成为经典的原因之一。下例的运行坏境为Keil软件,器件为AT89S52。 #i nclude sbit bv=P2^0;//定义位变量,关联P2.0管脚。sbit是C51编译器特有的数据类型 int main(void) { unsigned char pv; //位操作,以P2口的第0位为例: bv=0;//直接对P2口的第0位管脚输出低电平 bv=1;// 直接对P2口的第0位管脚输出高电平 //总线操作输出数据,以P2口为例: P2=0xaa;//直接赋值,P2口输出数据0xaa //总线操作读取数据,以P2口为例: pv=P2;//直接读取P2口的数据放到pv变量 return 0; } 二.AVR单片机IO口的操作 AVR单片机IO口的结构比较复杂,每个IO由三个寄存器组成:IO口数据寄存器POTx、IO口方向寄存器DDRx和IO口输入引脚寄存器PINx。AVR单片机IO口操作相当麻烦,需要设置IO口的方向,而且只能进行总线操作,如果进行位操作还需要掌握编程技巧---通过逻辑运算来实现位操作。下例的运行坏境为ICCAVR软件,器件为ATMEGA16。 #i nclude int main(void) { unsigned char pv; //总线操作输出数据,以D口为例: DDRD=0xff;//先设置D口的方向为输出方式(相应位设0为输入,设1为输出) PORTD=0xaa;//赋值,D口输出数据0xaa //总线操作读取数据,以D口为例: DDRD=0x00//先设置D口的方向为输入方式(相应位设0为输入,设1为输出) PORTD=0xff;//再设置D口为带上拉电阻(相应位设0为无上拉,设1为有上拉),才能准确读取数据 pv=PIND;//读取D口的PIND寄存器的数据放到pv变量 //位操作,以D口的第0位为例: DDRD|=0x01;//先设置D口第0位的方向为输出方式,其他位的方向不变 PORTD|=0x01;//D口的第0位输出高电平,技巧:使用位或运算,其他位不变 PORTD&=~0x01;//D口的第0位输出低电平,技巧:使用取反位与运算,其他位不变 return 0; } 三.PIC单片机IO口的操作 PIC单片机IO口的结构也比较复杂,每个IO由两个寄存器组成:IO口数据寄存器PORTx、和IO口方向寄存器TRISx。操作起来比AVR单片机简单一些,同样需要设置IO的方向,可以进行总线操作也可以进行位操作。下例的运行坏境为MPLAB IDE软件,器件为PIC16F877。 #i nclude __CONFIG(0x3B32); int main(void) { unsigned char pv; //总线操作输出数据,以B口为例: TRISB=0x00;//先设置B口的方向为输出方式(相应位设0为输出,设1为输入) PORTB=0xaa;//赋值,B口输出数据0xaa //总线操作读取数据,以B口为例: TRISB=0xff;//先设置B口的方向为输入方式(相应位设0为输出,设1为输入) pv=PORTB;//读取B口的数据放到pv变量 //位操作,以B口的第0位为例: TRISB=0xfe;//先设置B口的第0位(RB0)的方向为输出方式(相应位设0为输出,设1为输入) RB0=1;//B口的第0位输出高电平 RB0=0;//B口的第0位输出低电平 return 0; } 经过比较这三种单片机IO口的操作,我们知道,51单片机IO口结构简单,操作简单,但没有高电平大电流驱动能力;AVR和PIC单片机IO 口结构复杂,操作麻烦,但具备高电平大电流驱动能力。换句话说,单片机的IO口的功能越强大结构越复杂操作越繁琐。 以上便是此次小编带来的“51单片机”相关内容,通过本文,希望大家对51单片机IO口操作以及AVR、PIC单片机的IO口操作具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-10-27 关键词: 51单片机 指数 单片机

  • 51单片机/AVR单片机有何区别?51单片机/STM32如何选择?

    51单片机/AVR单片机有何区别?51单片机/STM32如何选择?

    51单片机作为常用单片机之一,自是广受欢迎。本文中,小编将对比51单片机与其它类型单片机予以比较,如51单片机与AVR单片机有何区别、51单片机与STM32如何选择。如果你对51单片机具有兴趣,不妨继续往下阅读哦。 一、51单片机/AVR单片机区别 DDRX为端口方向寄存器,当DDRX的某一位置1时,相应端口的引脚作为输出使用;当DDRX的某一位清0 时,对应端口的引脚作为输入使用。PORTX为端口数据寄存器,当引脚为输出使用,PORTX的数据由相应引脚输出;当引脚作为输入使用时,PORTX的数据决定相应端口的引脚是否打开上拉功能。PINX为相应端口的输入引脚地址,如果希望读取相应引脚的逻辑电平值,一定要读取PINX而不能读取PORTX 51单片机定时/计数器有两个基本用法,即以晶振频率的十二分频信号作为输入的定时器工作方式,或以外部引脚INT0、INT1 上输入信号的计数器工作方式。AVR的定时/计数器用作定时器时,其输入信号可选为晶振品率的某一个分频信号,分频比为1、8 、64 、256 、1024五种,作为计数器使用时,即可上升沿触发也可下降沿触发。 51单片机有6个中断源(5个中断入口地址),分为两个优先级,并且是通过IE寄存器控制中断的使能,通过IP控制中断的优先等级,而AVR根据不同单片机有不同数量的中断源。 51单片机川口通讯的波特率发生需要使用一个定时器,而且支持的波特率也比较低,AVR单片机可以有较高的波特率,最高可达115200bps.而且有专用的波特率发生器。 二、51单片机/ STM32如何选择 在设计产品时,能实现功能的方案可能有很多、芯片也有很多选择,主要从功能需求、物料成本、供应商关系、供应周期等一系列因素去综合考虑。题目是想用单片机来设计电压检测系统,单纯的从这一个单一的需求考虑,不会对单片机的选型造成困扰,因为单片机都能实现这个功能。 电压检测电路,从简单了讲就是通过多个电阻串联分压,用单片机采集精密电阻两端的电压然后根据比例关系计算所要采集的电压。只要单片机具有AD采样端口,那么这个功能都是可以实现。早期的51单片机没有AD功能,需要外挂一颗AD采样芯片。但是现在的51单片机也是具有AD采样功能的。所以,STM32和51单片机都能实现这个功能。 在选择单片机时,可能需要考虑如下几个方面: 1.功能需求&片上资源 电路的设计来源于需求,需求决定了技术方案、实现原理以及芯片的选型。有些需求可能用到单片机的片上资源,比如采集脉冲,会用到单片机的CCP功能;采样电压信号,需要用到单片机的AD功能;实现通讯功能,需要用到单片机的UART串口。所以,需求是决定选型因素之一。 2.物料成本决定了选型 设计产品时,成本越低那么所能获取利润的空间也就越大。在满足需求的前体现,选择成本低的物料永远是正确的。 3.供应商关系以及采购周期 这个在做产品时非常重要,公司都有自己的供应商花名册,和供应商关系的好坏决定了采购成本、供货周期等问题。你可能会说,关系不好换一家就可以了,但是很多大公司都有系统供应商,不能随便更换或者新增供应商,所以会有一批专门做供应商管理的岗位。 4.技术资料的丰富程度 如果是个人做个板子实现功能的话,这个很重要,资料越多越容易入手。但是从公司层面,除了行业内的头部公司,技术往往不是限制产品量产的因素。 就设计电压检测系统而言,用51或者STM32都是可以的。如果有很多功能的话,优先选择STM32吧。 以上便是此次小编带来的“51单片机”相关内容,通过本文,希望大家对51单片机和AVR单片机的区别以及51单片机和STM32的选择问题具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-10-27 关键词: 51单片机 指数 单片机

  • 什么是51单片机?又该如何自学51单片机?

    什么是51单片机?又该如何自学51单片机?

    51单片机是目前使用最多的单片机之一,那么什么是51单片机呢?作为新手,又该如何自学51单片机?为帮助大家更好的学习51单片机,本文将对这两个问题予以阐述。如果你对51单片机具有兴趣,不妨继续往下阅读哦。 一、何为51单片机 51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flashrom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。 二、51单片机入门自学建议 作为一个初学者,如何51单片机入门? 实际上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。设备上,一般是建议购买一个仿真器,例如,的“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。还有,一般光有仿真器是不行,还得有一个实际的电路,即学习板,如图,即为,单片机最小系统。 学习板以强大的接口为主,单片机的学习分两方面,一方面是单片机的原理及内部结构,另一方面是单片机的接口技术。这些都是需要平时多积累,多动手,多思考,这样才能学好单片机技术。 注:“双功能下载线”在百度文库里有详细的使用说明,并且上位机会定期更新以支持更多的单片机。 单片机学习的4个阶段: (一)整体了解 要知道 单片机是什么?单片机有何用?如何系统学习单片机?单片机系统设计的流程是怎样的,需要掌握哪些辅助软件? 了解这些之后,我们的学习就有了目标和方向。 (二)揭秘 单片机很难学,是因为其内部结构、编程语言抽象,且实际应用中与其他电子技术和元器件知识相互关联,需结合起来一起设计开发产品。所以,第二阶段要了解单片机的内部结构是怎样的?单片机开发经常会用到哪些电子技术和元器件知识?如何将一条条编程指令组合成一段段有效的程序? (三)解密 之所以单片机能成为控制核心,设计出包罗万象的应用系统来,是因为开发者利用了单片机提供的种种功能及各种外设。所以,第三阶段我们要掌握单片机的各种功能,再加上诸如传感器、模数转换、扫描显示、串行、中断的应用思维,结合更多的元器件、电子电路知识,逐个学习、体会实际的单片机系统的秘密。 (四)远航 通过以上三个阶段,读者基本就可掌握单片机的应用了。但要设计出丰富的单片机系统,解决复杂的实际问题,还需要了解更多的外设知识及其与单片机的联系(如电动机、各类存储器、继电器、红外管等)。这些需要不断的学习和积累。有时候,接到一些开发任务,就需要你针对这个任务自觉地去搜集、学习相关知识,在实践中不断学习和提高。 最后推荐几本经典图书: 《实例解读51单片机完全学习与应用(配教学视频)》,杨欣编著(他写过多本很有口碑的电子读物,风格独特),电子工业出版社出版。 《爱上单片机》,杜洋著,全新风格,使用面包板入门,人民邮电出版社。 《手把手教你学51单片机》,宋雪松编著(很经典),清华大学出版社出版。 以上便是此次小编带来的“51单片机”相关内容,通过本文,希望大家对什么是51单片机以及51单片机的自学建议具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-10-27 关键词: 51单片机 指数 单片机

  • 单片机编程如何查看版本之间代码的不同:代码比较工具

    程序员多数都用过版本管理工具SVN,该软件具有代码的比较功能,既能很好的管理不同版本的代码,又能比较版本的更改,是一个很好用的软件工具。除此之外,还有哪些代码比较工具呢?和大家分享一下。 俗话说:三句不离本行,对于程序员这个可爱的群体来说也是一样,即使面对无休无止的编程工作,程序员们依旧任劳任怨的埋头苦干,梦想着用自己码下的代码改变世界。工欲善其事,必先利其器,每一位程序员都有自己私藏的编程必备工具,接下来就给大家推荐5款程序员最佳的代码比较工具。 一、Beyond Compare Beyond Compare可以很方便地对比出两份源代码文件之间的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比。 Beyond Compare选择最好的方法来突出不同之处,文本文件可以用语法高亮和设置比较规则的方法进行查看和编辑,适用于用于文档、源代码和HTML。 二、Diffuse Diffuse在命令行中的速度是相当快的,支持像 C++、Python、Java、XML 等语言的语法高亮显示。可视化比较,非常直观,支持两相比较和三相比较。这就是说,使用 Diffuse 你可以同时比较两个或三个文本文件。 支持常见的版本控制工具,包括 CVS、subversion、git、mercurial 等,你可以通过 Diffuse 直接从版本控制系统获取源代码,以便对其进行比较和合并。 三、WinMerge 一款运行于Windows系统下的文件比较和合并工具,使用它可以非常方便地比较多个文档内容,适合程序员或者经常需要撰写文稿的朋友使用。 WinMerge会将两个文件内容做对比,并在相异之处以高亮度的方式显示,让使用者可以很快的查知;可以直接让左方的文件内容直接覆盖至右方,或者反过来也可以覆盖。 四、Code Compare Code Compare是一款用于程序代码文件的比较工具,目前Code Compare支持的对比语言有:C#、C++、CSS、HTML、Java、JavaScrip等代码语言。 Visual Studio环境源代码比较是一个方便,易于使用的工具,独特的Visual Studio集成,可以帮助你同时在一个环境内,使所有的方便程序开发设计。 五、AptDiff AptDiff是一个文件比较工具,可以对文本和二进制文件进行比较和合并,适用于软件开发、网络设计和其它的专业领域。 它使用方便,支持键盘快捷键,可以同步进行横向和纵向卷动,支持Unicode格式和大于4GB的文件,可以生成HTML格式的比较报告。 精彩推荐:编程相关 单片机是如何识别程序代码的? 你在编程时,都是怎样控制程序版本的呢? 单片机编程时如何分析芯片的时序图? 根据时序编程,单片机驱动74HC595实现数码管显示 数码管编程:"/"和“%”是如何实现数据分离的 对于程序员来说写代码并不是最难的事情! 如何查看你写的单片机程序有多大? 文章部分章节来源于网络 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 单片机是如何工作的?单片机内部结构原理,让你豁然开朗!

    一、单片机内部结构分析 我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗? 原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。二、几个基本概念 1、数的本质和物理现象 我们知道,计算机可以进行数学运算,这令我们非常难以理解,计算机吗,我们虽不了解它的组成,但它们只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢? 为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:请大家自己写上3盏灯的情况000 001 010 011 100 101 110 111我们来看,这个000,001,101 不就是我们学过的的二进制数吗?本来,灯的亮和灭只是一种物理现象,可当我们把它们按一定的顺序排好后,灯的亮和灭就代表了数字了。让我们再抽象一步,灯为什么会亮呢?是因为输出电路输出高电平,给灯通了电。因此,灯亮和灭就可以用电路的输出是高电平还是低电平来替代了。这样,数字就和电平的高、低联系上了。(请想一下,我们还看到过什么样的类似的例子呢?(海军之)灯语、旗语,电报,甚至红、绿灯)。 2、位的含义 通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,可以代表两种状态:0和1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。 3、字节的含义 一根线可以表示0和1,两根线可以表达00,01,10,11四种状态,也就是可以表达0到3,而三根可以表达0~7,计算机中通常用8根线放在一起,同时计数,就可以表示0-255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。存储器的工作原理1、存储器构造 存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的吗。如上图左所示:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你可以把电线想象成水管,小格子里的电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。有了这么一个构造,我们就可以开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看上图右)。可是问题出来了,看上图右,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看上图右,在每个单元上有个控制线,我想要把数据放进哪个单元,就把一个信号给这个单元的控制线,这个控制线就把开关打开,这样电荷就可以自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不同单元的控制线,就可以向各单元写入不同的数据了,同样,如果要从某个单元中取数据,也只要打开相应的控制开关就行了。2、存储器译码那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种方法称这为译码,简单介绍一下:一根线可以代表2种状态,2根线可以代表4种状态,3根线可以代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就可以代表了。3、存储器的选片及总线的概念至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的引脚进来后,不直接接到各单元去,中间再加一组开关就行了。平时我们让开关打开着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。读和写信号同时还接入到另一个存储器,但是由于片选端不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不同时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。从上面的介绍中我们已经看到,用来传递数据的八根线并不是专用的,而是很多器件大家共用的,所以我们称之为数据总线,总线英文名为BUS,总即公交车道,谁也可以走。而十六根地址线也是连在一起的,称之为地址总线。 精彩推荐:单片机入门文章: 51单片机入门之一:点亮一个发光二极管 51单片机入门之二:流水灯 51单片机入门之三:蜂鸣器 51单片机入门之四:静态数码管 51单片机入门之五:数码管(动态) 51单片机入门之六:1602液晶显示 51单片机入门之七:按键检测 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 新手自学单片机,用什么样的开发板比较好?

    开发板是用来学习单片机最有用的工具,上面集成了常用的单片机外设电路,可以让初学者很方便的学习硬件电路的设计方法、控制方法和单片机寄存器、片上资源的编程。 拥有一块合适自己的开发板,学习单片机时可以起到事半功倍的效果。 下面介绍一下如何选择单片机开发板。 1 选择合适自己的单片机型号 单片机开发板的核心就是单片机,单片机种类、型号众多,选择一颗适合自己的最重要。 如何选择呢? 学习单片机时会遇到很多问题,最好身边有人可以讨论。 可以看一下周围什么型号的单片机用的最多,方便后期讨论。 如果是带着项目学习单片机的话,就要买项目中用到的特定型号,这样可以保证例程和资源能直接应用,带来便利。 如果没有型号参照的话,就选择比较热门的单片机,用的人越多,网上的教程也就越多。 2 选择外设资源多的开发板 现在的单片机开发板同质化比较严重,外设资源基本类似,如流水灯、按键输入、继电器、蜂鸣器、数码管、IIC存储、红外、点阵、电机等。 要根据自己的侧重点选择外设电路或者根据项目需求选择特定的外设电路。 在学习的时候,外设资源越多越好,所以要选择外设资源多的开发板。 3 选择例程多、注释详细的开发板 卖家在介绍开发板的时候,都会展示配套的例程。 学习单片机,80%的内容是在学习如何编程。 那么程序越多、越简洁、注释越多,也就最适合初学者。 初学者第一次接触单片机编程,自然有很多疑问,如果注释内容较多的话,就可以解决自己的疑惑。 4 选择教程资料多的开发板 所谓教程资料,是指硬件原理图、程序等必备资料之外的内容。 教程可以是图文资料、也可以是视频资料。 能够有效的指导初学者循序渐进、按部就班的学习单片机,内容要细、知识点要简洁、处处都是干货。 5 选择原生头文件的开发板 什么是原生头文件? 就是厂家的头文件,没有被修改过。 现在市面上很多单片机的头文件都被开发板厂商改写过,改写后有了厂家自己的风格,区分度较高,更容易让初学者学习理解。 但是改写后所带来的问题,就是让初学者失去了面对原生头文件的机会,厂家的例程有了更大的粘性度,离不开厂家的工程模板。 如果换了单片机型号的话,初学者会感觉到无所适从。 所以,建议选择原生头文件的开发板。 以上就是开发板选择的几点建议。 如果建议有用,就请关注我,给我点个赞吧。 谢谢。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 开发板 单片机

  • 单片机是如何识别程序代码的?

    最近读到这样一篇文章,从底层硬件角度出发剖析了一下CPU对代码的识别和读取,内容之精彩,读完感觉学到的很多东西瞬间联系起来了,分享给猿们。 首先要开始这个话题要先说一下半导体。啥叫半导体? 半导体其实就是介于导体和绝缘体中间的一种东西,比如二极管。 电流可以从A端流向C端,但反过来则不行。你可以把它理解成一种防止电流逆流的东西。 当C端10V,A端0V,二极管可以视为断开。 当C端0V,A端10V,二极管可以视为导线,结果就是A端的电流源源不断的流向C端,导致最后的结果就是A端=C端=10V 等等,不是说好的C端0V,A端10V么?咋就变成结果是A端=C端=10V了? 你可以把这个理解成初始状态,当最后稳定下来之后就会变成A端=C端=10V。 文科的童鞋们对不住了,实在不懂问高中物理老师吧。反正你不能理解的话就记住这种情况下它相当于导线就行了。 利用半导体,我们可以制作一些有趣的电路,比如【与门】 此时A端B端只要有一个是0V,那Y端就会和0V地方直接导通,导致Y端也变成0V。只有AB两端都是10V,Y和AB之间才没有电流流动,Y端也才是10V。 我们把这个装置成为【与门】,把有电压的地方计为1,0电压的地方计为0。至于具体几V电压,那不重要。 也就是AB必须同时输入1,输出端Y才是1;AB有一个是0,输出端Y就是0。 其他还有【或门】【非门】和【异或门】,跟这个都差不多,或门就是输入有一个是1输出就是1,输入00则输入0。 非门也好理解,就是输入1输出0,输入0输出1。 异或门难理解一些,不过也就那么回事,输入01或者10则输出1,输入00或者11则输出0。(即输入两个一样的值则输出0,输入两个不一样的值则输出1)。 这几种门都可以用二极管做出来,具体怎么做就不演示了,有兴趣的童鞋可以自己试试。每次都画二极管也是个麻烦,我们就把门电路简化成下面几个符号。 然后我们就可以用门电路来做CPU了。当然做CPU还是挺难的,我们先从简单的开始:加法器。 加法器顾名思义,就是一种用来算加法的电路,最简单的就是下面这种。 AB只能输入0或者1,也就是这个加法器能算0+0,1+0或者1+1。 输出端S是结果,而C则代表是不是发生进位了,二进制1+1=10嘛。这个时候C=1,S=0 费了大半天的力气,算个1+1是不是特别有成就感? 那再进一步算个1+2吧(二进制01+10),然后我们就发现了一个新的问题:第二位需要处理第一位有可能进位的问题,所以我们还得设计一个全加法器。 每次都这么画实在太麻烦了,我们简化一下 也就是有3个输入2个输出,分别输入要相加的两个数和上一位的进位,然后输入结果和是否进位。 然后我们把这个全加法器串起来 我们就有了一个4位加法器,可以计算4位数的加法也就是15+15,已经达到了幼儿园中班水平,是不是特别给力? 做完加法器我们再做个乘法器吧,当然乘任意10进制数是有点麻烦的,我们先做个乘2的吧。 乘2就很简单了,对于一个2进制数数我们在后面加个0就算是乘2了 比如: 5=101(2) 10=1010(2) 所以我们只要把输入都往前移动一位,再在最低位上补个零就算是乘2了。具体逻辑电路图我就不画,你们知道咋回事就行了。 那乘3呢?简单,先位移一次(乘2)再加一次。乘5呢?先位移两次(乘4)再加一次。 所以一般简单的CPU是没有乘法的,而乘法则是通过位移和加算的组合来通过软件来实现的。这说的有点远了,我们还是继续做CPU吧。 现在假设你有8位加法器了,也有一个位移1位的模块了。串起来你就能算了! (A+B)X2 激动人心,已经差不多到了准小学生水平。 那我要是想算呢? AX2+B 简单,你把加法器模块和位移模块的接线改一下就行了,改成输入A先过位移模块,再进加法器就可以了。 啥????你说啥???你的意思是我改个程序还得重新接线? 所以你以为呢?编程就是把线来回插啊。 惊喜不惊喜?意外不意外? 早期的计算机就是这样编程的,几分钟就算完了但插线好几天。而且插线是个细致且需要耐心的工作,所以那个时候的程序员都是清一色的漂亮女孩子,穿制服的那种,就像照片上这样。是不是有种生不逢时的感觉? 虽然和美女作伴是个快乐的事,但插线也是个累死人的工作。所以我们需要改进一下,让CPU可以根据指令来相加或者乘2。 这里再引入两个模块,一个叫flip-flop,简称FF,中文好像叫触发器。 这个模块的作用是存储1bit数据。比如上面这个RS型的FF,R是Reset,输入1则清零。S是Set,输入1则保存1。RS都输入0的时候,会一直输出刚才保存的内容。 我们用FF来保存计算的中间数据(也可以是中间状态或者别的什么),1bit肯定是不够的,不过我们可以并联嘛,用4个或者8个来保存4位或者8位数据。这种我们称之为寄存器(Register)。 另外一个叫MUX,中文叫选择器。 这个就简单了,sel输入0则输出i0的数据,i0是什么就输出什么,01皆可。同理sel如果输入1则输出i1的数据。当然选择器可以做的很长,比如这种四进一出的 具体原理不细说了,其实看看逻辑图琢磨一下就懂了,知道有这个东西就行了。 有这个东西我们就可以给加法器和乘2模块(位移)设计一个激活针脚。 这个激活针脚输入1则激活这个模块,输入0则不激活。这样我们就可以控制数据是流入加法器还是位移模块了。 于是我们给CPU先设计8个输入针脚,4位指令,4位数据。 我们再设计3个指令: 0100,数据读入寄存器 0001,数据与寄存器相加,结果保存到寄存器 0010,寄存器数据向左位移一位(乘2) 为什么这么设计呢,刚才也说了,我们可以为每个模块设计一个激活针脚。然后我们可以分别用指令输入的第二第三第四个针脚连接寄存器,加法器和位移器的激活针脚。 这样我们输入0100这个指令的时候,寄存器输入被激活,其他模块都是0没有激活,数据就存入寄存器了。同理,如果我们输入0001这个指令,则加法器开始工作,我们就可以执行相加这个操作了。 这里就可以简单回答这个问题的第一个小问题了: 那cpu 是为什么能看懂这些二级制的数呢? 为什么CPU能看懂,因为CPU里面的线就是这么接的呗。你输入一个二进制数,就像开关一样激活CPU里面若干个指定的模块以及改变这些模块的连同方式,最终得出结果。 几个可能会被问道的问题 Q:CPU里面可能有成千上万个小模块,一个32位/64位的指令能控制那么多吗? A:我们举例子的CPU里面只有3个模块,就直接接了。真正的CPU里会有一个解码器(decoder),把指令翻译成需要的形式。 Q:你举例子的简单CPU,如果我输入指令0011会怎么样? A:当然是同时激活了加法器和位移器从而产生不可预料的后果,简单的说因为你使用了没有设计的指令,所以后果自负呗。(在真正的CPU上这么干大概率就是崩溃呗,当然肯定会有各种保护性的设计,死也就死当前进程) 细心的小伙伴可能发现一个问题:你设计的指令 【0001,数据与寄存器相加,结果保存到寄存器】 这个一步做不出来吧?毕竟还有一个回写的过程,实际上确实是这样。我们设计的简易CPU执行一个指令差不多得三步,读取指令,执行指令,写寄存器。 经典的RISC设计则是分5步:读取指令(IF),解码指令(ID),执行指令(EX),内存操作(MEM),写寄存器(WB)。我们平常用的x86的CPU有的指令可能要分将近20个步骤。 你可以理解有这么一个开关,我们啪的按一下,CPU就走一步,你按的越快CPU就走的越快。咦?听说你有个想法?少年,你这个想法很危险啊,姑且不说你有没有麒麟臂,能不能按那么快(现代的CPU也就2GHz多,大概也就一秒按个20亿下左右吧) 就算你能按那么快,虽然速度是上去了,但功耗会大大增加,发热上升稳定性下降。江湖上确实有这种玩法,名曰超频,不过新手不推荐你尝试哈。 那CPU怎么知道自己走到哪一步了呢?前面不是介绍了FF么,这个不光可以用来存中间数据,也可以用来存中间状态,也就是走到哪了。 具体的设计涉及到FSM(finite-state machine),也就是有限状态机理论,以及怎么用FF实装。这个也是很重要的一块,考试必考哈,只不过跟题目关系不大,这里就不展开讲了。 我们再继续刚才的讲,现在我们有3个指令了。我们来试试算个(1+4)X2+3吧。 0100 0001 ;寄存器存入1 0001 0100 ;寄存器的数字加4 0010 0000 ;乘2 0001 0011 ;再加三 太棒了,靠这台计算机我们应该可以打败所有的幼儿园小朋友,称霸大班了。而且现在我们用的是4位的,如果换成8位的CPU完全可以吊打低年级小学生了! 实际上用程序控制CPU是个挺高级的想法,再此之前计算机(器)的CPU都是单独设计的。 1969年一家日本公司BUSICOM想搞程控的计算器,而负责设计CPU的美国公司也觉得每次都重新设计CPU是个挺傻X的事,于是双方一拍即合,于1970年推出一种划时代的产品,世界上第一款微处理器4004。 这个架构改变了世界,那家负责设计CPU的美国公司也一步一步成为了业界巨头。哦对了,它叫Intel,对,就是噔噔噔噔的那个。 我们把刚才的程序整理一下, 01000001000101000010000000010011 你来把它输入CPU,我去准备一下去幼儿园大班踢馆的工作。神马?等我们输完了人家小朋友掰手指都能算出来了?? 没办法机器语言就是这么反人类。哦,忘记说了,这种只有01组成的语言被称之为机器语言(机器码),是CPU唯一可以理解的语言。不过你把机器语言让人读,绝对一秒变典韦,这谁也受不了。 文章来源:电子工程专辑 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 如何零基础学习单片机?

    这是一个老生常谈的问题,每天都会有新的初学者,所以,零基础如何入门,这个问题永远都不会老。 学习单片机需要具备一定的电路基础、数字电路、模拟电路、信号系统、C语言编程等相关的基础知识。单片机的学习包括硬件设计和编程设计,早期单片机用汇编编程的人比较多,现在越来越多的人用C语言进行编程。下面和大家分享一下如何快速有效的学习单片机。 1 从51单片机开始学习编程 很多人建议可以直接从STM32、ARV、MSP430等单片机开始,在做产品的时候大家可以根据具体需求选择这类单片机。但是从零基础入门的角度考虑,我还是建议单片机从51单片机开始。因为51系列单片机进入中国最早、使用人数较多、资料较多,最关键的寄存器配置比较简单。 有了数模电基础、C语言基础后,就可以买一块51单片机学习编程了。在学习编程的时候要有顺序,先从操作单片机的GPIO口开始,再学习定时器、中断、AD采样、PWM输出,最后再学习UART、IIC、SPI等通讯方式,经过上述步骤之后,对单片机就有了基本的认识。 2 学习硬件的设计 单片机编程是基于硬件基础之上的,了解了编程之后,再来学习一下单片机硬件的设计。目前的电子产品,基本都是以单片机为核心,再根据不通的需求,围绕单片机搭建不通的外设电路。在设计电路时,就要考虑好方案是不是利于编程。硬件的学习,也要从基本的电路开始,如LED灯电路的设计、继电器电路的设计、蜂鸣器电路的设计、数码管电路的设计、RS232/RS485电路的设计等,虽然都是独立的模块,但是可以通过编程联系到一起,这也是先学编程后学习设计电路的原因。 3 学习做项目 学习单片机是为了做产品。在学习阶段可能没有参与项目的机会。可以根据自己的想法去提炼一些需求,最终设计电路、写程序去实现。或者自己试着去实现一块单片机开发板,学习单片机的过程是要花钱的。如果身边有参与项目的机会,一定要把握。在项目中实践自己的所学,在项目中扩大自己的知识面。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 不知道单片机的拉电流和灌电流?本文告诉你答案

    电子类专业的学生在大学时都学过51单片机和微机原理,上面都提到过单片机的灌电流和拉电流,在当时是不是一头雾水,听不懂? 那时候我记得老师在讲单片机的时候,只讲汇编指令,讲了一个 学期,什么是单片机没讲,单片机的开发环境没讲,单片机的下载方式没讲。 现在想想,真想穿越回去,抽他两个嘴巴子。 单片机的拉电流和灌电流都是对单片机的输出而言的,是单片机驱动能力的具体体现。 灌电流 如上图所示,当单片机输出低电平时,允许电路向单片机引脚内灌入电流,这个电流就叫做“灌电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“灌电流负载”。 拉电流 如上图所示,当单片机输出高电平时,允许电路从单片机的引脚拉出电流,这个电流就叫做“拉电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“拉电流负载”。 那拉电流和灌电流的大小是多少? 这就涉及到单片机的驱动能力了,在微机原理与接口里我们知道,评价单片机的驱动能力的时候都会讲到,每个引脚可以带动多少个TTL。 一般来说单片机的灌电流能力要大于拉电流能力,也就是在点灯时,建议第一图(单片机输出低电平)。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 嵌入式 单片机

  • 选微处理器MPU,还是单片机MCU?两者区别详解

    每项新应用设计都需要一个单片机或微处理器。当在两者之间选择其一时,需要考虑一些因素。以下是微处理器、单片机的概述和对比。 考虑选择微处理器(MPU)或者单片机(MCU)时,应用类型通常是关键因素。另一方面,最终选择取决于诸如操作系统和内存之类的因素。不过,有时可以将微处理器和单片机内核结合使用,这称作异构架构。 操作系统 对于一些基于Linux或安卓等操作系统的计算机密集型工业和消费类应用,需要大量高速连接或功能范围广泛的用户接口,微处理器就是最佳选择。这是因为大多数单片机都没有操作系统,而只有裸机程序,借助于顺序处理循环和状态机,几乎无需任何人工干预即可运行程序。然而,许多高性能单片机可以支持诸如FreeRTOS之类的实时操作系统(RTOS),从而以确定性方式实时响应需要硬实时行为的应用程序。 作为具有许多免费软件、广泛硬件支持和不断发展的生态系统的通用操作系统,嵌入式Linux取得了巨大的成功。它的另一个优点就是没有用户或授权许可费用。不过,与嵌入式Linux一起运行的应用程序至少需要300至400 DMIPS(ARM-Dhrystone MIPS)性能,因此较适合使用微处理器。单片机没有足够的计算能力和内存来应付此类应用。 如果是用于复杂或对实时性要求高的控制系统, RTOS则很有用,但至少要配合50 DMIPS的高性能单片机。这比嵌入式Linux所需的性能要求要少得多。传统的RTOS设计精简,因此可以在单片机上运行。针对实时计算硬件时,这是合理的,例如用于车辆的防抱死系统,若响应时间过长会带来致命的后果。即使必须支持大量的功能、中断源和标准通信接口,也建议使用带有RTOS的单片机。 内 存 微处理器与单片机之间的另一个主要区别是,微处理器依赖外部存储器来保存和执行程序,而单片机则依赖嵌入式闪存。在微处理器中,程序通常存储在非易失性存储器中,例如eMMC或串行闪存。在启动过程中,将其加载到外部DRAM中并在此执行启动程序。DRAM和非易失性存储器都可以具有几百兆甚至几千兆字节容量,这意味着微处理器几乎从来不受存储容量限制。但有一个潜在缺点:外部存储器或许会使得PCB布局的设计变得更加复杂。 即使是当前的高性能单片机,例如由意法半导体(STMicroelectronics)生产的STM32H7,最多也仅提供2 MB程序内存,对于许多需要操作系统的应用而言可能不足。由于程序位于片上内存中,因此其优点是执行启动和重置过程的速度明显更快。 计算能力 计算能力是典型的选择因素。不过,在这方面,微处理机与单片机之间的界线变得模糊了。例如,如果你将ARM体系结构视为单片机和微处理器市场中分布最广泛的体系结构之一,这就变得显而易见了。ARM提供了不同的处理器体系结构以满足各种要求: Cortex-A提供了最高性能,并且已经针对综合操作系统进行了优化。它们主要部署在功能强大的设备中,比如智能手机或服务器。 Cortex-M较小,具有更多的片上外设,但是能耗较低,并且针对嵌入式应用进行了优化。 Dhrystone是比较不同处理器性能的测试基准。根据该基准,普通平价单片机具有30 DMIPS,而当前性能最高的单片机(包括嵌入式程序闪存)与这些平价单片机的差距高达1027 DMIPS。相比之下,微处理器的起步点约为1000 DMIPS。 能 耗 单片机在能耗方面表现出色,要比微处理器低很多。尽管微处理器具有节能模式,但其能耗仍然比典型的单片机高得多。而且,微处理器使用外部存储器,因此较难切换到节能模式。对于需要较长的电池运行时间,并且很少使用或没有用户接口的超低功耗应用,单片机是更好的选择,尤其是对于消费类电子产品或智能电表来说。 连接性 大多数单片机和微处理器都配备了所有常规外围设备接口。但是,如果用户需要的是超高速外围设备,在单片机里是找不到例如千兆以太网这种相关接口的。尽管这实际上已成为微处理器中的标准功能单片机。这是十分合理的,因为单片机几乎无法处理这些高速接口所产生的数据量。一个关键问题是:是否有足够的带宽和通道来处理爆发的数据量? 实时表现 当实时性能是最重要的考虑因素时,单片机绝对是首选。凭借处理器内核、嵌入式闪存和软件(RTOS或裸机OS),单片机可以出色地完成实时任务。因为Cortex-A微处理器使用高性能的流水线,用户可以看到在跳转和中断期间,随着流水线的深度不断增加,延迟时间也随之升高。由于OS与微处理器一起执行多任务,因此很难实现硬实时操作。 系统基础IC 由于电源已经集成在单片机中,因此它们仅需要一个单电平电源。另一方面,微处理器需要许多不同电压的电源来为内核和其它组件供电,所以通常需要一个特殊配置的电源管理IC(即所谓的系统基础芯片)来进行供电管理。 结 语 很难说微处理器或单片机哪个才是更好的选择,但经验法则是,你应该始终权衡各种利弊条件。以下几点可以用作大致指导: 单片机非常适合以能耗为主要关注点,且价格较低的移动应用以及具有实时需求的应用。 微处理器则非常适合与操作系统一起运行并需要高速接口的密集计算应用。游戏和其他图形密集型应用使用特殊的微处理器进行联网处理。 -END- | 整理文章为传播相关技术,版权归原作者所有 | | 如有侵权,请联系删除 | 【1】知名半导体MCU大厂软件开发C代码规范 【2】工业项目,用MCU还是PLC? 【3】为什么嵌入式工程师会对8位MCU有误解? 【4】RGB 接口和 MCU 接口有什么不一样? 【5】8位微控制器(MCU)的隐形成本 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-27 关键词: 微处理器 单片机

  • 测量ATMEGA8单片机IO口的输入输出内阻

    01背景 在 电子小帮手电路中电源开关电路分析 中介绍测量模块电路实验原理的时候,对于ATmega系列的 单片机的输出端口进行了内部描述 。特别是对于端口做为IO输出口的时候,它可以等效为通过电阻19Ω和22Ω分别上拉到VCC,或者下拉的GND。 那么就会出现一个新的问题,对于ATmega单片机,这个IO口的内阻究竟有多大呢? 通过实验来确定单片机输出IO口的实际电阻阻值,这为将来使用单片机进行测量工作提供数据基础。 利用在 ATMEGA8 DIP-28面包板实验 中可以下载程序的实验方式,对于ATmega8单片机搭建在面包板上的测试芯片。通过实验来测量对应的IO端口在作为输出端时相对于GND,VCC的电阻阻抗。 02测量方案 1.测量端口电阻 测量电阻阻抗的方式可以通过以下三种方式来进行: 通过V-A方法检测,也就是通过测量IO口输入、输出电流一项相对应的IO口电压的变化,来获得端口的等效串联电阻。 使用万用表直接测量; 使用手持LCR表来测。 2.测量过程 通过软件编程,使得单片机的PB4,PB3,PB2,PB1分别处于输出高电平,和输出低电平的情况,然后按照上面三种方法来测量对于端口的内部等效阻抗。 03测量数据 1.使用V-A方法测量IO内阻 (1) IO低电平内阻 使用在 低价电阻箱-阻值测试 中的9999Ω电阻箱,分别改变IO端口的输出负载,记录不同电阻下输出端口的电压,进而可以进行获得内部电阻。 Current(mA) 3.068900 1.900500 1.376000 1.078700 0.889500 0.754900 0.655700 0.579500 0.519100 Current(mA) 3.068900 1.900500 1.376000 1.078700 0.889500 0.754900 0.655700 0.579500 0.519100 Voltage(V) 0.086651 0.055485 0.041959 0.034435 0.029279 0.025946 0.023526 0.021161 0.019959 通过线性拟合,可以建立输入电流(i,单位mA)与端口电压 之间的线性关系。 通过上述线性方程,可以得到端口的输入电阻。 (2) IO高电平内阻 测量不同输出电流下输出电压的变化。 Current(mA) 3.066000 1.897700 1.373900 1.077000 0.888000 0.753500 0.654500 0.578400 0.518200 Current(mA) 3.066000 1.897700 1.373900 1.077000 0.888000 0.753500 0.654500 0.578400 0.518200 Voltage(V) 0.077972 0.050410 0.038025 0.031065 0.026657 0.023490 0.021160 0.019415 0.018024 对上述电压电流线性拟合,由此可以得到单片机高电平下输出内阻。 通过实际测量,可以看到ATmega的IO口在输出状态下,内阻分别是26.15Ω(低电平)以及23.56Ω(高电平)。 2.使用万用表测量IO内阻 使用DM3068数字万用表,直接测量ATmega的输出低电平的IO对GND之间的电阻: 测量ATmega8输出高电平的IO对VCC(+5V)之间的直流电阻: 注意:由于存在输出静态电压,不能够测量输出高电平的IO对GND之间的电阻,或者输出低电平IO对VCC之间的电阻。 3.使用LCR表测量IO内阻 为了避免单片机端口的静态电压对于LCR表的测量影响,使用100uF的电解电容进行隔直之后,然后在使用Smart Tweezers进行测量相应端口的内阻。 ※ 结论 单片机的IO如果作为输出端口,它可以等效一个内部穿有内阻的电压源。由于它内部是通过MOS管完成IO端口与VCC,GND的相连,所以内阻实际上是这些MOS管导通内阻。 通过对ATmega8单片机端口的内阻测量,可以看到这些内阻的大小在20欧姆到30欧姆之间。这与它的数据手册上相关的数值基本上是在同一数量级之内。 上文中使用了三种方法测量单片机IO口的内阻,它们的取值基本相似。因此上,在未来实际上应用中,可以根据具体情况来选择相应的测量方式。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-26 关键词: 嵌入式 单片机

  • 别人都说51单片机很容易入门,为什么我学起来那么难,学了很久还没入门?

    相对于STM32、ARV等,51单片机入门是相对容易的,寄存器配置比较简单,IO口为准双向口不需要配置方向。而且51单片机出现比较早,资料比较多,很多学习都开设51单片机的课程。学习单片机可以按照如下几个步骤去学习。 1. 入手开发板,勤动手 单片机是一门偏重于动手的技术,需要多动手,不要一直抱着书看,有的单片机类书籍讲的比较杂或者是从数据手册翻译过来的,正本书看完了说不定都不知道单片机使用什么开发环境去编程、使用什么工具去烧写程序。所以,如果要学51单片机就去买一块51单片机开发板,卖家会把编程环境、烧写工具、进阶步骤、各种学习资料都给配齐的。 2.看原理图,学习硬件设计 单片机开发板比较方便的地方就是就成了各种常用的外设电路,方便了初学者学习。在拿到开发板后,先看一下说明资料,有哪些功能电路,各种接口,再认知研究一下硬件原理图。硬件原理图与后面的编程密切相关,这些常用的电路,以后都可能会用到。 3.看配套例程,学习程序设计 原理图了解的差不多后,就可以编程了,先跑一遍例程,再看一下别人的程序是怎么写的,再新建自己的工程去实现功能,一般来说按照如下步骤去学习单片机的各种资源 GPIO口的配置,这是最基本的操作,与之相关的电路有:流水灯、控制蜂鸣器、控制继电器、按键输入、数码管显示等。通过这些功能,学习GPIO口的配置方法和硬件电路的控制方法。 定时器、中断、AD采样等,这类资源都是单片机的基本资源,通过例程学习这些资源的基本概念、工作原理、寄存器的配置方式等,可以结合前边的外设,实现自己想要的效果。 UART、RS232、RS485等通讯功能,借助例程学习各种通讯接口的含义、了解通讯协议。单片机的各类通讯基本都可以通过UART来扩展,记住常用的电平转换芯片和使用方法,学习如何配置相关的寄存器。 自己组合功能, 通过上边的学习之后,就可以实现自己的功能了,根据外设资源自己组合功能,并编程实现。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-26 关键词: 嵌入式 单片机

  • 单片机如何静态点亮数码管?

    数码管是学习单片机过程中很有必要经历的,今天就来应用一下单片机点亮数码管,用程序如何控制数码管数字,由于是做简单的展示用,所以电路和程序的执行效率就先不考究了,这一点还望大神门谅解。 电路只驱动一个数码管,该数码管为共阴管,公共端接地,段管直连到单片机的P2口,所用单片机为AT89C52,电路图如下所示: 对于数码管的工作原理,可以参考今天所推送的第四篇文章: 《一篇文章,教你学会数码管的操作》 ,我们知道如果要点亮一个共阴型的数码管,只需要把公共端连到低电平,段管给高电平就可以,如下图所示。 所以看程序: 第4行:共阴数码管的字段表; 第17行:for循环,循环10次,控制数码管的显示内容; 第19行:将所要显示的内容送给数码管;   本次的内容很简单,希望对初学者有个借鉴作用,明天小编要出差,在慢悠悠的火车上度过23个小时,所以让小编早点睡吧,谢谢各位的支持。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-10-26 关键词: 数码管 单片机

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站

更多

项目外包