当前位置:首页 > 51单片机
  • 回眸:当年的51单片机

    回眸:当年的51单片机

    网站:bbs.21ic.com 现在提到51单片机,似乎给人一种技术落后跟不上潮流的感觉,而在我上学的时代,它可引领先的弄潮儿。在那时,进行实验所用的还是单板机,外观有些像是手提式数字电路试验仪,人机交互的手段则是数码管和按键。编写程序则是按机器地址,逐个键入机器码。要是有个跳转指令,所需的偏移量都是纯手工计算。后来是系主任费力很大的力量才购进个9台51单片机,其外观是将整个开发板放置在一个有机玻璃的盒子里,使用时要通过单独配置的一个5V稳压电源为其供电。至于程序设计是从那时起才真正进入汇编时代,无需再通过查指令表来设计程序。程序代码也不再单纯的用手敲,而是可以通过串口来下载了! 至于该单片机的结构也与现在所用的单片机有很大的不同,如今的单片机才真无愧于单片机的称号,因为对于一个最小系统来说,配上一套开发工具软件,外挂一个串口通讯模块就可以开始编程了,电源也可以从USB口获得。那是由于CPU是不带Flash存储器的,因此尽管是一个最小系统,那也是要三总线(数据总线、地址总线、控制总线)样样齐全。CPU周围除了晶振和复位电路外,首先连接的是一个地址锁存器,以形成数据总线和地址总线。其次就是要配上一个3-8译码器,来向各个外围器件提供片选信号以划分他们势力范围(寻址空间)。由于没有Flash存储器,下载的程序是被存放到EEPROM中,要想存放数据则要另外配置RAM存储器。当然为了进行人机交互,数码管和阵列式按键也是不可或缺的。 如今在一些单片机的CPU中已集成了A/D转换器等,那时要扩展I/O口则要借助8255或是8155,要进行键显处理则需要8279,要进行A/D转换则需要AD0809,D/A转换则需要DAC0832。那时要想做一个即使再小的项目,没有一块比手掌大的板子也是休想的事。几十年的变化,单片机真的梦想成真了! 尽管自己从十年前已开始学习和使用ARM,但对51单片机的情怀却并未改变,那时用一段青春所做的追求,也是技术成长与跨越的桥。尽管做一些功能要求比较高的项目让单片机直接来做稍显吃力,但随着功能模块化的出现,由51单片机来充当管家还是比较方便的,例如自己曾用51单片机做个一个音乐点播装置,就是用单片机与MP3音乐播放模块来实现,做起来很简单。如果换成是ARM似乎也不是件容易的事。所以搞设计不要只追求时髦,这样使设计的效果最好,性价比最高才是好的设计。仅以此文纪念那逝去的青春和当年我对51单片机的狂热追求!

    时间:2021-02-24 关键词: 51单片机 单片机

  • 使用Keil C进行51单片机延时程序编写的几点心得

    应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动 DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: 51 单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0, #09h需要2个极其周期,djnz也需要2个极其周期。那么存在r0里的数就是(20-2)/2。用这种方法,可以非常方便的实现256us以下时间的延时。如果需要更长时间,可以使用两层嵌套。而且精度可以达到2us,一般来说,这已经足够了。 现在,应用更广泛的毫无疑问是Keil的C编译器。相对汇编来说,C固然有很多优点,比如程序易维护,便于理解,适合大的项目。但缺点(我觉得这是C的唯一一个缺点了)就是实时性没有保证,无法预测代码执行的指令周期。因而在实时性要求高的场合,还需要汇编和C的联合应用。但是是不是这样一个延时程序,也需要用汇编来实现呢?为了找到这个答案,我做了一个实验。 用C语言实现延时程序,首先想到的就是C常用的循环语句。下面这段代码是我经常在网上看到的:\ 到底这段代码能达到多高的精度呢?为了直接衡量这段代码的效果,我把 Keil C 根据这段代码产生的汇编代码找了出来: 真是不看不知道~~~一看才知道这个延时程序是多么的不准点~~~光看主要的那四条语句,就需要6个机器周期。也就是说,它的精度顶多也就是6us而已,这还没算上一条 lcall 和一条 ret。如果我们把调用函数时赋的i值根延时长度列一个表的话,就是: 因为函数的调用需要2个时钟周期的lcall,所以delay time比从函数代码的执行时间多2。顺便提一下,有的朋友写的是这样的代码: 可能有人认为这会生成更长的汇编代码来,但是事实证明: 其生成的代码是一样的。不过这的确不是什么好的习惯。因为这里实在没有必要再引入多余的变量。我们继续讨论正题。有的朋友为了得当更长的延时,甚至用了这样的代码: 这段代码产生的汇编代码是什么样子的?其实不用想也知道它是如何恐怖的$#^%&%$.。..。.让我们看一看: 呵呵,这倒是的确可以延迟很长时间~~~但是毫无精度可言了。 那么,用C到底能不能实现精确的延时呢?我把代码稍微改了一下: 因为根据经验,越简洁的C代码往往也能得出越简洁的机器代码。那这样结果如何呢?把它生成的汇编代码拿出来看一看就知道了。满怀希望的我按下了“Build target”键,结果打击是巨大的: 虽说生成的代码跟用for语句是不大一样,不过我可以毫无疑问的说,这两种方法的效率是一样的。似乎到此为止了,因为我实在想不出来源程序还有什么简化的余地。看来我就要得出来这个结论了:“如果需要us级的延时精度,需要时用汇编语言。”但是真的是这样吗?我还是不甘心。因为我不相信大名鼎鼎的 Keil C 编译器居然连 djnz 都不会用???因为实际上程序体里只需要一句 loop:djnz r7, loop。近乎绝望之际(往往人在这种情况下确可以爆发出来,哦呵呵呵~~~),我随手改了一下: 心不在焉的编译,看源码: 天~~~奇迹出现了。..。..我想这个程序应该已经可以满足一般情况下的需要了。如果列个表格的话: 计算延时时间时,已经算上了调用函数的lcall语句所花的2个时钟周期的时间。 终于,结果已经明了了。只要合理的运用,C还是可以达到意想不到的效果。很多朋友抱怨C效率比汇编差了很多,其实如果对Keil C的编译原理有一个较深入的理解,是可以通过恰当的语法运用,让生成的C代码达到最优化。即使这看起来不大可能,但还是有一些简单的原则可循的: 1.尽量使用unsigned 型的数据结构。 2.尽量使用char型,实在不够用再用int,然后才是long。 3.如果有可能,不要用浮点型。 4.使用简洁的代码,因为按照经验,简洁的C代码往往可以生成简洁的目标代码(虽说不是在所有的情况下都成立)。 END 版权归原作者所有,如有侵权,请联系删除。 ▍ 推荐阅读 树莓派Pico:仅4美元的MCU 嵌入式Linux开发板裸机程序烧写方法总结 国产16位MCU的痛点,可以用这款物美价廉产品 →点关注,不迷路← 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-02-23 关键词: 编程 51单片机

  • 一文看懂STM32单片机和51单片机区别

    一文看懂STM32单片机和51单片机区别

    01 前言 单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已。 02 51单片机简介 应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。 51单片机之所以成为经典,成为易上手的单片机主要有以下特点: AD、EEPROM等功能需要靠扩展,增加了硬件和软件负担。 虽然I/O脚使用简单,但高电平时无输出能力,这也是51系列单片机的最大软肋。 运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利。 51保护能力很差,很容易烧坏芯片。 目前在教学场合和对性能要求不高的场合大量被采用。 使用最多的器件:8051、80C51 03 STM32单片机简介 由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名…其强大的功能主要表现在: 内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周期乘法和硬件除法。 存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。 时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。 调试模式:串行调试(SWD)和JTAG接口。最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口。 使用最多的器件:STM32F103系列、STM32 L1系列、STM32W系列。 04 51单片机和STM32单片机的区别 51单片机是对所有兼容Intel8031指令系统的单片机的统称,这一系列的单片机的始祖是Intel的8031单片机,后来随着flash ROM技术的发展,8031单片机取得了长足的进展成为了应用最广泛的8bit单片机之一,他的代表型号就是ATMEL公司的AT89系列。 STM32单片机则是ST(意法半导体)公司使用arm公司的cortex-M3为核心生产的32bit系列的单片机,他的内部资源(寄存器和外设功能)较8051、AVR和PIC都要多的多,基本上接近于计算机的CPU了,适用于手机、路由器等等。 本文来源于网络,如有侵权,请联系删除 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-21 关键词: STM32 51单片机 单片机

  • wifi神器ESP8266自动下载电路设计

    前言 使用过51单片机的朋友会清楚:51单片机在烧写程序的时候需要断一下电再上电;使用过STM32单片机的朋友会清楚:烧写程序时需要设置Boot模式。ESP8266在烧写程序时也需要手动设置模式,STM32的ISP自动下载电路都有了,那么ESP8266有没有自动下载电路呢?答案是有的。下面来分析。 自动下载电路设计 ESP8266下载过程中发现每次都需要去设置GPIO0的状态,如何实现自动给实现GPIO0电平状态的切换呢?看下面的电路。 可以看到这个下载电路相对于普通的CH340G下载电路,这个电路是把CH340G芯片中的DTR和RTS引脚引出到两个S8050的三极管上,去控制nRST和GPIO0的电平。 ESP8266下载模式 根据ESP8266芯片资料要求的下载流程,必须在GPIO0为低电平的状态下,复位芯片,才会进入USART下载模式。 我们看看该自动下载电路是怎么实现这个流程时序的,首先我们还是得从核心器件CH340G分析入手。 核心器件CH340系列 CH340G 是一个USB转串口的集成芯片,关键性能参数如下: 可以看到数据手册中的引脚描述:DTR#引脚是MODEM联络输出信号,数据终端就绪,低(高)有效,在USB配置完成之前作为配置输入引脚,可以外接4.7KΩ的下拉电阻在USB枚举期间产生默认的低电平。RTS#引脚MODEM联络输出信号,请求发送,低(高)有效。这两个MODEM联络信号是由计算机应用程序控制并定义其用途的,在软件下发点击下载按钮后,通常会给DTR#拉低、RTS拉高,然后延时一段时间后,拉高DTR#,RTS#恢复到低电平。 注意: 新设计的电路板可以选用CH340C,内置晶振,无需外接晶振。 从原理图中可以看到这个两个引脚连接的逻辑电路如下: 端口真值表 根据该电路,可以知道当 DTR为1, RTS为0时, nRST复位引脚拉低,反之,GPIO0 引脚拉低,得到的逻辑关系图如下: 这样的化,在点击下载按钮后,CH340G芯片的DTR处于低电平,RTS处于高电平,此时ESP8266的GPIO0被拉低,复位RST信号为高,ESP8266进入下载模式,CH340G的DTR和RTS电平翻转后,RST为0,GPIO0变1,ESP8266进入Flash运行模式,程序正常运行。这样就实现了ESP8266自动下载。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-21 关键词: Wi-Fi ESP8266 51单片机

  • 怎么开始学习STM32以及入门的答疑解惑

    ‍ ‍首先我们需要了解什么是STM32,以及为什么选择STM32,需要哪些准备,学会之后的目的是什么,将这些都搞懂之后才会知道自己想要做什么,应该怎么做,以及做了之后的预期收获。我假设读这篇文章的人都是小白,啥都不会。 首先基本上会了解到STM32的人都是电子专业的学生,包括但不局限于电力电子,电子信息工程,电子信息科学与技术,电气自动化等等,每个学校的叫法不一样,可能这些学生在大学会学习模电,数电,电路,电工,单片机,信号与系统等等,会从51单片机开始学习。 接触到的知识非常多而且杂,而且大学生的我们哪里知道这些有什么用,只知道学校教什么,我们便学习什么,因为大学的教育就是如此,需要教授电子这个专业比较全面的知识点,但是却并不够深刻,因为本科以上还有研究生,博士等等,本科所学习到的知识点其实是很粗浅的,老师或者说课堂上教授的知识点只是给你打开了这扇门,具体需要怎么学习还得看个人。 因为从事电子这方面工作的人很多很多,行业也分的特别细,譬如电工,焊工,电源设计,PCB设计,嵌入式开发等等,人的时间精力有限,不可能所有的行业都去涉及,不可能即当老师,又当护士,又当警察,不可能即会焊板子,又会砌墙,又会开飞机,又会开高铁,又会动手术。同理,我们之所以要学习STM32,基本是要从事嵌入式的开发,所以我们要有一个目标,那就是我们的目的是要成为一个STM32的嵌入式工程师,当然,假如你的志向不在于此的话,那么就可以不继续往下看了。 目的知道了,我们要成为STM32嵌入式工程师。那么STM32是什么呢,就好像我们用的电脑的CPU,酷睿I3I5I7是微软发布的一系列名称。其实STM32是ST这个公司发布的一系列单片机的名称,下图为ST公司发布的选型手册,我们首先要选择一款单片机当做我们的学习目标,可以简单地理解为要学习微软的I3 I5 I7的使用。 但是光有一个芯片我们学习不了啊,所以我们基本都是用开发板来学习,那么什么是开发板呢,图片如下:基本都是一个主要芯片,STM32的单片机,然后引出各种外设,像led,蜂鸣器,按键开关,马达,液晶屏,等等。 上面列出来的是正点原子和野火的开发板,为什么列这两家的开发板主要是因为口碑相对比较好,资料也比较齐全,其实STM32之所以在国内市场这么大,也是因为它的活动做得比较多,资料比较开源,学生时代用的人多,到了社会参加工作也就顺手在项目中使用了。 经过这么多年的发展和积累形成了这么大的市场,至于说选哪一家,其实都差不多,就好像问“我应该选北大还是清华”,我只能回答,先把视频资料看完在考虑这个问题吧,问再多不如实打实尝试一遍,纸上得来终觉浅,绝知此事要躬行,下图附上我在B站找到的视频长度,所以说电子人的一生都是要孜孜不倦的学习的,加油~ 那么我们学习STM32学习的其实是什么呢,那就要看官方提供的芯片介绍了,学习STM32,其实就是学习芯片里面的这些功能。而学习这些实验就可以芯片的各个功能都学习了解到,做项目的时候也可以直接借用。     ‍ 附上基本的STM32一些资料,一起学习,当然这些资料肯定是不够的,模电数电,C语言都是深水,要保持谦逊的心去一直学习。 ‍ 请点击“阅读原文”下载 END 本文系21ic论坛作者王小琪原创 版权归原作者所有,如有侵权,请联系删除。 ▍ 推荐阅读 国内MCU能替代国外产品吗?MCU的未来又将如何? STM32价格疯长下,盘点STM32的国产替代者 选微处理器MPU,还是单片机MCU?两者区别详解 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-19 关键词: STM32 51单片机

  • 大佬带你深入了解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单片机 单片机

  • 51单片机时钟电路原理

    时钟电路就是一个振荡器,给单片机提供一个节拍,单片机执行各种操作必须在这个节拍的控制下才能进行。因此单片机没有时钟电路是不会正常工作的。时钟电路本身是不会控制什么东西,而是你通过程序让单片机根据时钟来做相应的工作。 在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式,如图1所示。 (a)内部方式时钟电路 (b)外接时钟电路 图1时钟电路 内部时钟原理图 (就是一个自激振荡电路) 在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2一般取30pF,晶振的频率取值在1.2MHz~12MHz之间。对于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12MHz即可。 晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号P1和P2供单片机使用。时钟信号的周期称为状态时间S,它是振荡周期的2倍,P1信号在每个状态的前半周期有效,在每个状态的后半周期P2信号有效。CPU就是以两相时钟P1和P2为基本节拍协调单片机各部分有效工作的。 -END- | 整理文章为传播相关技术,版权归原作者所有 | | 如有侵权,请联系删除 | 【1】天天在用的ADC,内部原理你了解吗? 【2】一文看懂亚太四大半导体市场的崛起 【3】CQC开关电源性能认证标准正式发布 【4】电为啥要分交流、直流?这回明白了! 【5】太惊艳!热卖的创意电子产品 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2020-09-21 关键词: 电源设计 51单片机

  • 51单片机ULN2003驱动步进电机的典型应用电路图解

    51单片机ULN2003驱动步进电机的典型应用电路图解

      ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成,每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。   51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。   51单片机ULN2003驱动步进电机的典型应用电路图解   51单片机ULN2003驱动步进电机-_典型应用电路图。该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。 采用51驱动ULN2003的方法进行驱动。      这款步进电机的驱动电压12V,步进角为 7.5度 。 一圈 360 度 , 需要 48 个脉冲完成。      ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。

    时间:2020-08-06 关键词: uln2003 51单片机

  • sim900a程序,基于51单片机与sim900a相连接程序

      51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。   SIM900A模块是一款尺寸紧凑的GSM/GPRS模块,采用SMT封装,基于STE的单芯片案,采用ARM926EJ-S架构,性能强大,可以内置客户应用程序。可广泛应用于车载跟踪、车队管理、无线POS、手持PDA、智能抄表与电力监控等众多方向。   程序说明:   本程序运行后如果gprs模块找到服务商信号,就拨打指定电话。   1.将自己的51单片机的串口1连接到GSM的tx rx gnd   2.找到程序中前面的#define处,根据说明修改好自己的单片机配置,编译程序   3.下载程序   4.按下模块复位键,启动模块,等待信号灯闪烁变慢,复位单片机4.等待发送成功   基于51单片机与sim900a相连接程序   #include 《REGX52.H》   #define uchar unsigned char   #define uint unsigned int   //以下是板子上LED的配置,把Px_x改成自己对应的脚。   #define LED1_ON P1_0 = 0   #define LED1_OFF P1_0 = 1   #define LED2_ON P1_1 = 0   #define LED2_OFF P1_1 = 1   #define LED3_ON P1_2 = 0   #define LED3_OFF P1_2 = 1   #define LED4_ON P1_3 = 0   #define LED4_OFF P1_3 = 1   //以下是你的51单片机的晶振大小   #define FOSC_110592M   //#define FOSC_12M   //以下是开机后发送到手机的内容,发送的号码在程序中修改。   uchar sms_text[] = “123”;   //注意,无论接收到信号还是发送完信号,都会进中断服务程序的   /*初始化程序(必须使用,否则无法收发),次程序将会使用定时器1*/   void SerialInTI()//初始化程序(必须使用,否则无法收发)   {   TMOD=0x20;//定时器1操作模式2:8位自动重载定时器   #ifdef FOSC_12M //在这里根据晶振大小设置不同的数值初始化串口   TH1=0xf3;//装入初值,波特率2400   TL1=0xf3;   #else   TH1=0xfd;//装入初值,波特率9600   TL1=0xfd;   #endif //end of SOC_12M   TR1=1;//打开定时器   SM0=0;//设置串行通讯工作模式,(10为一部发送,波特率可变,由定时器1的溢出率控制)   SM1=1;//(同上)在此模式下,定时器溢出一次就发送一个位的数据   REN=1;//串行接收允许位(要先设置sm0sm1再开串行允许)   EA=1;//开总中断   ES=1;//开串行口中断   }   /*串行通讯中断,收发完成将进入该中断*/   void Serial_interrupt() interrupt 4   {   // a=SBUF;   P2=SBUF;   RI=0;//接收中断信号清零,表示将继续接收   // flag=1;//进入中断的标志符号   }   void Uart1Send(uchar c)   {   SBUF=c;   while(!TI);//等待发送完成信号(TI=1)出现   TI=0;   }//串行口连续发送char型数组,遇到终止号/0将停止   void Uart1Sends(uchar *str)   {   while(*str!=‘’)   {   SBUF=*str;   while(!TI);//等待发送完成信号(TI=1)出现   TI=0;   str++;   }   }   //延时函数大概是1s钟,不过延时大的话不准。。。   void DelaySec(int sec)   {   uint i , j= 0;   for(i=0; i《sec; i++)   {   for(j=0; j《65535; j++)   {   }   }   }   void main()   {   uchar i = 0;   LED1_OFF;   LED2_OFF;   LED3_OFF;   LED4_OFF;   SerialInti();   while(1)   {   LED1_ON;   LED2_OFF;   Uart1Sends(“AT+CMGF=1 ”);   DelaySec(3);//延时3秒   Uart1Sends(“AT+CSCS=”GSM“ ”);   DelaySec(3);//延时3秒   Uart1Sends(“AT+CSMP=17,167,0,250 ”);//设备短信模式(手机自动保存模式)   // Uart1Sends(“AT+CSMP=17,167,0,240 ”);//设备短信模式(手机非自动保存模式)   DelaySec(3);//延时3秒   Uart1Sends(“AT+CMGS=”18332563682“ ”);   DelaySec(5);//延时3秒   Uart1Sends(sms_text);   Uart1Send(0x1a);   LED2_ON;   LED1_OFF;   DelaySec(15);//延时20秒   }   }

    时间:2020-08-06 关键词: sim900 51单片机

  • 基于51单片机控制的以太网通讯实现

    基于51单片机控制的以太网通讯实现

      摘要:介绍以太网的帧协议和以太网控制芯片RTL8019AS的结构特性;介绍51单片机控制RTL8019AS实现以太网通讯的硬件设计方案;采用C51语言实现ARP协议(地址解析协议),并进行了系统的调试与验证。   互联网络硬件、软件的迅猛发展,使得网络用户呈指数增长,在使用计算机进行网络互联的同时,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备在逐步地走向网络化,以便共享网络中庞大的信息资源。在电子设备日趋网络化的背景下,利用廉价的51单片机来控制RTL8019AS实现以太网通讯具有十分重要的意义。   1 以太网(Ethernet)协议

    时间:2020-08-06 关键词: 以太网 通讯协议 51单片机

  • 基于51单片机的UART串口通信

    基于51单片机的UART串口通信

      51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。   UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。   计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。它是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。   作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。   可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。接下来我们一起了解一下基于51单片机的UART串口通信。   51串行口结构   51单片机的UART串行通信是基于其串行口的可编程硬件结构,只要用正确的程序代码通过初始化串行口对应寄存器的形式将其串行硬件结构初始化,再编写符合此串行口通信的程序代码便能够实现串行通信,其硬件结构决定了编程机制( 当然还要靠51芯片内CPU等机制 )。   此结构具有UART( 通用异步收发器 )的全部功能,能同时进行数据的发送和接收,也可作为同步移位寄存器使用。此结构集成于单片机内部。   

    时间:2020-08-05 关键词: uart 51单片机

  • 51单片机连接ESP8266串口WiFi模块

      I2C简介   I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。   I2C工作原理   SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容.而线路中电容会影响总线传输速度.当电容过大时,有可能造成传输错误.所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。   主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。   2C总线特点   (1)在硬件上,12C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺.因此I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为12C芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用IC可以很容易形成标准化和模块化,便于重复利用。   (2)I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。   (3)I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试,故障可以立即被寻址,软件也利于标准化和模块化,缩短开发时问。   (4)连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。   (5)总线具有极低的电流消耗.抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽。

    时间:2020-08-05 关键词: Wi-Fi 51单片机 单片机

  • 485通讯协议程序怎么写(51单片机的485通信程序案例)

    485通讯协议程序怎么写(51单片机的485通信程序案例)

    RS-485总线接口是一种常用的串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检测到低达200mv的电压,可靠通信的传输距离可达数千米。使用RS-485总线组网,只需一对双绞线就可实现多系统联网构成分布式系统、设备简单、价格低廉、通信距离长。 51单片机的485通信程序 #ifndef __485_C__ #define __485_C__ #include 《reg51.h》 #include 《string.h》 #define unsigned char uchar #define unsigned int uint /* 通信命令 */ #define __ACTIVE_ 0x01 // 主机询问从机是否存在 #define __GETDATA_ 0x02 // 主机发送读设备请求 #define __OK_ 0x03 // 从机应答 #define __STATUS_ 0x04 // 从机发送设备状态信息 #define __MAXSIZE 0x08 // 缓冲区长度 #define __ERRLEN 12 // 任何通信帧长度超过12则表示出错 uchar dbuf[__MAXSIZE]; // 该缓冲区用于保存设备状态信息 uchar dev; // 该字节用于保存本机设备号 sbit M_DE = P1^0; // 驱动器使能,1有效 sbit M_RE = P1^1; // 接收器使能,0有效 void get_status(); // 调用该函数获得设备状态信息,函数代码未给出 void send_data(uchar type, uchar len, uchar *buf); // 发送数据帧 bit recv_cmd(uchar *type); // 接收主机命令,主机请求仅包含命令信息 void send_byte(uchar da); // 该函数发送一帧数据中的一个字节,由send_data()函数调用 void main() { uchar type; uchar len; /* 系统初始化 */ P1 = 0xff; // 读取本机设备号 dev = (P1》》2); TMOD = 0x20; // 定时器T1使用工作方式2 TH1 = 250; // 设置初值 TL1 = 250; TR1 = 1; // 开始计时 PCON = 0x80; // SMOD = 1 SCON = 0x50; // 工作方式1,波特率9600bps,允许接收 ES = 0; // 关闭串口中断 IT0 = 0; // 外部中断0使用电平触发模式 EX0 = 1; // 开启外部中断0 EA = 1; // 开启中断 /* 主程序流程 */ while(1) // 主循环 { if(recv_cmd(&type) == 0) // 发生帧错误或帧地址与本机地址不符,丢弃当前帧后返回 conTInue; switch(type) { case __ACTIVE_: // 主机询问从机是否存在 send_data(__OK_, 0, dbuf); // 发送应答信息,这里buf的内容并未用到 break; case __GETDATA_: len = strlen(dbuf); send_data(__STATUS_, len, dbuf); // 发送设备状态信息 break; default: break; // 命令类型错误,丢弃当前帧后返回 } } } void READSTATUS() interrupt 0 using 1 // 产生外部中断0时表示设备状态发生改变,该函数使用寄存器组1 { get_status(); // 获得设备状态信息,并将其存入dbuf指向的存储区,数据最后一字节置0表示数据结束 } /* 该函数接收一帧数据并进行检测,无论该帧是否错误,函数均会返回 * 函数参数type保存接收到的命令字 * 当接收到数据帧错误或其地址位不为0时(非主机发送帧),函数返回0,反之返回1 */ bit recv_cmd(uchar *type) { bit db = 0; // 当接收到的上一个字节为0xdb时,该位置位 bit c0 = 0; // 当接收到的上一个字节为0xc0时,该位置位 uchar data_buf[__ERRLEN]; // 保存接收到的帧

    时间:2020-07-28 关键词: rs485 通讯协议 51单片机

  • 基于区块链技术打造的众享充设计方案解析

    基于区块链技术打造的众享充设计方案解析

    众享充共享经济平台作为连接供需双方的纽带,是基于区块链技术和共享经济为核心,整合人、车、桩资源,打造生态智能的快速充电共享平台。在区块链技术的基础下建立一套安全可靠、技术可信的账本体系,利用区块链体系中的优势,众享充平台供方与需求方可以不需要了解对方基本信息的情况进行自动交易,真正实现了“无需信任的信任”,改变了传统模式中以第三方为中心的信任模式。大大的降低了成本,简化了流程,降低一些不必要的交易成本及制度性成本。改善当前低迷的经济环境更有现实意义。为当前盛行的充电共享经济网络进行技术支撑,将传统的充电共享上升到一个新的高度。 众享充平台是由众享充技术研发团队发起的项目,联合了国内外充电行业、区块链行业的技术资源、资本和人脉资源,计划打造一个完全由国人研发的基于区块链技术的快速充电共享经济平台。项目立项之初,咨询了国内外知名的专家、学者、企业家以及电力行业和传统的共享充电平台人士。我们认为,基于区块链的充电共享平台具有无穷的应用场景、广阔的发展空间。因此, 特制定此白皮书,希望招纳一帮志同道合的伙伴,为这个中国快充共享经济网络项目贡献力量! 众享充设计方案 1 设计基础 众享充基于区块链技术和共享经济为基础,结合当前充电桩痛点和传统充电桩共享平台的弊端,运用区块链、物联网、云计算、移动互联网、大数据、等新一代信息技术,创新提供高效、可靠、便捷、共享经济解决方案。 2 设计原则 众享充是将用户私人充电桩纳入到平台中。把充电桩闲置时间进行共享盈利,每个用户即是“桩主”也是“消费者”,通过众享充实现资源共享共用,消费者通过手机软件搜索到可共享的充电桩,并根据“桩主”设置共享时间来预约充电,用户充电直接支付桩主,桩主立即获取共享收益。 3 技术核心 众享充技术核心是基于区块链具有分布式点对点、去中心化、共识信任机制、信息不可篡改、开放性、匿名性等特点。区块链技术特征与充电桩共享的应用需求具有很好的结合点,可以避免中心化平台带来的弊端。基于区块链技术可以构建运行生态化、认证公平化、合约智能化、信息透明化的应用系统。然而,区块链技术在处理能力、时效性、存贮效率等方面存在的局限性,阻碍了其在更多领域中应用。满足了交易处理能力和数据容量的需求,适合于高频交易场景需求。实现去中心化、安全、高效的充电桩共享经济。 系统架构 为满足不同的业务需要,众享充平台采用四层架构: 钱包(Decentration Wallet):采用区块链的去中心化技术,负责采用分布式方式记录交易数据; 云端系统(Cloud System):负责提供数据给APP、调度充电资源、管理充电流程 移动APP(ApplicaTIon):负责展示充电资源、与云端交互充电流程; 充电设备平台(Embedded Recharge Platform):负责管控充电设备、与云端交互充电流程。 1 钱包 传统在线交易项目实施过程中经常遇到的如下痛点: 1、数据容易被开发人员或黑客为达到某种目的而进行人为篡改; 2、交易记录不可回溯,只能依赖有可能被篡改的中间服务器记录; 3、用户对交易过程、结果等记录不信任。 针对这3个痛点,基于区块链技术的去中心化钱包应运而生。去中心化,顾名思义,不再像传统的交易平台那样一切基于交易平台这一个“中心”。而所有的交易记录全部由多个节点同时记录,例如一次交易同时有100个节点确认。这样首先从根本上避免了技术人员恶意篡改,进而大大增加了黑客攻击的成本,需攻破51个节点才能篡改数据。而没有一个“中心”的平台的技术架构,本身也让用户更信任交易记录的权威性。 去中心化钱包有如下三个特点: 1.个人财富是隐私的,在自己不愿公开的情况下不应该被随便知晓。 2.个人财富不会因通货膨胀而缩水,所以货币不应该再增发而导致通货膨胀; 3.个人拥有自己财富的话语权,这个话语权是指中心化的机构不能掌控,也不能篡改,更不能抢走。 而钱包作为虚拟币“妈妈”一般的存在,是加密数字货币最底层的工具应用,几乎和token并生,比交易所的出现更早。它的作用就是让那串产生在链上的代码收益显性化,变成大众可识别、可计量的数字符号。一般的基于区块链技术的钱包从交易方式上划分,可分为On-chain和Off-chain,从字面意思理解,前者就是链上交易,所有交易记录均可在链上查询到,后者为链下钱包,交易不经过链上,快速方便。系统钱包采用链上的方式,保证所有记录都存储与链上,方便可查。 另外,私钥作为一个“人”的唯一地址标识,在区块链的技术上不可或缺,系统中私钥从存储方式上有热钱包和冷钱包两种,两者各有特点。 冷钱包: 适合大额资金的钱包,钱包的公私钥对离线生成,用户可以生成任何一个所喜欢的密钥对,密钥选定后,即可提供以 G 开始的公钥接受大额资金,自己托管保管好以 S 开始的私钥信息。 热钱包: 热钱包适合小额快速交易场景,热钱包密钥采用托管方式,当用户注册钱包账户时,将采用用户的支付密码对生成的私钥在用户电脑本地通过 3DES 加密,并将加密结果通过 SSL协议托管在钱包云端。即在网络上传输和云端存储的热钱包密钥信息是用户加密后的数据,除钱包用户外,任何人无法获取到私钥的原始内容。当用户需要签署交易时,将从钱包云端服务器获取托管的私钥,并由用户输入支付密码对内容在用户本地电脑进行解密,解密成功后,钱包本地程序将以私钥签署交易信息,并提交到超级区块链网络进行交易。 系统采用热钱包的方案,优先保证交易迅速快捷。私钥的生成方式采用了确定性钱包的方案,在保证用户私钥的安全性,方便钱包的管理、备份以及导入。 考虑到系统前期运营成本与稳定性,钱包的去中心化方案上我们选择了轻钱包(SPV)的方式,即通过 Web 方式访问钱包。钱包采用 SSL 协议,支持赛门铁克 CA 证书。同时,钱包可支持冷钱包和热钱包。 2 云端系统 云端系统是整个系统的核心部分(Core Component)。包含了整个流程控制、记录、与钱包交互、与设备交互、与APP交互的桥梁作用。 系统采用SpringMVC+MybaTIs+Redis+Oracle的核心架构。基于最新的Web3.1技术,基于分布式敏捷开发系统架构,提供整套公共服务模块:集中权限管理(SSO单点登录)、消息队列、WebService接口、内容管理(CMS)、支付中心(Payment Center)、用户管理、存储系统、配置中心、日志分析、任务和通知等。 Spring MVC是目前最通用的Java平台框架,广泛应用与金融、贸易、B2B、政府管理等各大领域。有丰富的扩展功能,优秀的执行逻辑,高可用的代码架构等特点。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术:JavaServer Pages(JSP)技术、Velocity、TIles、iText和POI等。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。 同时为了针对高并发的场景,云端系统采用nginx集群部署方式,使用Redis缓存集群管理缓存提升访问效率,使用Oracle数据库集群减少数据库读写瓶颈。 3 移动APP 采用IOS+Android双移动端方案,对接地图服务和定位服务,实时显示附近的充电资源,管理充电进程,管理支付等,最大限度的减少用户使用成本。 预约充电功能,使用户足不出户即可预约充电资源,防止高峰期使用时遇到的抢不到资源问题。 充电后支付,支付通过虚拟币,一键即可完成,最大限度的提升使用效率,减少对用户的时间浪费,提升产品的用户体验。 钱包浏览器功能,用户可随时随地回溯自己的虚拟币交易记录,充电交易记录,且交易记录的数据不可篡改,增加用户的信任感。 4 充电设备平台 采用物联网(Internet of Things)的理念,使用物联网的DDS(Data DistribuTIon Service for Real-Time Systems)数据交换协议,保证数据交互时的实时性和准确性。 DDS是面向实时系统的数据分布服务,由权威通讯协议组装OMG提出,主要适用分布式高可靠性、实时传输设备数据通信。目前DDS已经广泛应用于国防、民航、工业控制等领域。 平台使用嵌入式技术控制设备,使设备具备与云端交互的功能。主要负责对设备的硬件级控制和与云端交互。 可控制智能开关,在用户选择充电之后开始供电充电,充电完成时自动断电,完全智能化/程序化控制。可接收云端的控制指令,根据云端指示完成对设备的控制。同时可将控制日志/设备消息等信息发送到云端,完成交互流程。 读写器采用51单片机作为中央处理器,51单片机具备IO口读写功能,支持串口协议,SPI协议,IIC协议,可扩展,编程简单,成本价格低,低功耗等显著的特点。读写器将采集到的传感器数据上传到中继器,也可以从中继器中获取数据来控制这些传感器。读写器将通过传感器采集到的模拟信号转换成数字信号,然后封装可发送的包数据,也可以直接发送给基站。传输数据的物理条件用两种方案:通过串口线用485总线协议实现对数据的实时传输,这种方案传输效率高,数据稳定,成本高,不方便扩展。485总线的好处在于可以实现底层组网功能,自带RCC校验;也可以通过无线电磁波去传输采集到的传感器数据,硬件可以选择RF射频芯片去发送无线数据。 智能开关采用轻量级的工控标准实现,采用标准323或485串口总线协议,接收客户端发出的指令并控制充电电路的开闭。并及时回馈客户端控制指令是否成功准确执行,若发生命令执行问题,应及时通知客户端,并由客户端发起通知信息到云端,执行对出错日志记录与处理。 客户端加密后数据可以通过加密后的https通信发送给服务端,由于需要传输可靠的数据,系统中的客户端与云端交互选择高加密规范的https协议。并且在请求中,对所有的数据进行加密处理,最大限度的防止对云端的黑客攻击。 项目优势 1 共享资源创造价值 众享充平台作为连接供需双方的纽带,以智能合约技术构建区块链生态系统,实现去中心化、安全、高效和自动的充电桩点对点共享。让私人充电桩主在满足自用外,可以通过平台把充电桩大量闲置时间共享,让私人充电桩桩主与用户通过充电桩共享资源进行交易,私人桩主在共享益资源时从中获得收益。 2 去信任化交易 去中心化交易是众享充的核心。事实上,在共享经济模式下,交易双方建立直接支付通道的情形并不多见。陌生的交易双方往往需要借助中间人构建间接支付通道网络。区块链的自信任主要体现于分布于区块链中的用户无须信任交易的另一方,实现桩主与用户之间在不需要互信的情况下进行去中心化交易。 3 去中心化即时支付 消费者在众享充平台充电成功后用数字货币完成即时支付,桩主实时地收到了对应金额(扣除一定手续费)的法币。 4 信息公开透明 系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。 5 数据安全高不可篡改 一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。 6 物联网智能充电桩 物联网充电桩采用自主研发的车联网充电桩标识模块,可连接由该中心研发的车联网云平台,实现对充电桩群的车联网管理和APP预约充电。同时该模块集成无线认证技术,实现桩位与车位的互联互通。 7 建立强大社群体系 充电桩主与电动车主形成庞大社群,维系社群中点对点信任是可持续发展的关键。 8 降低独有权需求 基于区块链技术,建设成熟、稳定、可靠的共享经济模式,利用共享资源可以降低独自拥有充电桩的需求。 发行计划 为研发、推广和运营众享充项目,众享充团队计划向社会公开募集研发、推广和运营资金,以支持项目的快速发展。经过众享充团队跟律师事务所、评估机构多次沟通,决定发行12亿的众享充代币(AS),并承诺众享充代币AS 永不增发。 众享充代币(AS)从投资价值、稳定性、安全性能等方面考虑,最终决定代币的兑换选用以太坊(ETH)进行,因为以太坊具有长期上涨态势,众享充团队也注重价值投资,也提倡价值投资,所以很鼓励使用以太坊作为兑换币。众享充将在 众筹 后 30 天内完成发放和交易所的上线交易工作。同时众享充团队将和各交易所保持良好的沟通,以保证代币届时登陆多家大型主流交易所。更好彰显众享充(AS)价值和魅力。

    时间:2020-06-30 关键词: 物联网 信息技术 区块链 以太坊 51单片机

  • 51单片机的学习方法,你真的会吗?

    51单片机的学习方法,你真的会吗?

    什么是51单片机?应该如何学习?作为一名入门级的工程师,万事开头难,只要知道学习51单片机需要学习哪些知识点就万事大吉了。然后再系统的将知识点全部掌握即可。那么我们一起看看吧,到底要学习哪些呢? 实际上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。设备上,一般是建议购买一个仿真器,例如,的“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。还有,一般光有仿真器是不行,还得有一个实际的电路,即学习板,如图,即为,单片机最小系统。 学习板以强大的接口为主,单片机的学习分两方面,一方面是单片机的原理及内部结构,另一方面是单片机的接口技术。这些都是需要平时多积累,多动手,多思考,这样才能学好单片机技术。 单片机学习的4个阶段 一、整体了解 要知道 单片机是什么?单片机有何用?如何系统学习单片机?单片机系统设计的流程是怎样的,需要掌握哪些辅助软件? 了解这些之后,我们的学习就有了目标和方向。 二、揭秘 单片机很难学,是因为其内部结构、编程语言抽象,且实际应用中与其他电子技术和元器件知识相互关联,需结合起来一起设计开发产品。所以,第二阶段要了解单片机的内部结构是怎样的?单片机开发经常会用到哪些电子技术和元器件知识?如何将一条条编程指令组合成一段段有效的程序? 三、解密 之所以单片机能成为控制核心,设计出包罗万象的应用系统来,是因为开发者利用了单片机提供的种种功能及各种外设。所以,第三阶段我们要掌握单片机的各种功能,再加上诸如传感器、模数转换、扫描显示、串行、中断的应用思维,结合更多的元器件、电子电路知识,逐个学习、体会实际的单片机系统的秘密。 四、远航 通过以上三个阶段,读者基本就可掌握单片机的应用了。但要设计出丰富的单片机系统,解决复杂的实际问题,还需要了解更多的外设知识及其与单片机的联系(如电动机、各类 存储器、继电器、红外管等)。这些需要不断的学习和积累。有时候,接到一些开发任务,就需要你针对这个任务自觉地去搜集、学习相关知识,在实践中不断学习和提高。以上就是51单片机的学习方法解析,希望能给大家帮助。

    时间:2020-05-13 关键词: C语言 嵌入式芯片 51单片机

  • 51单片机编程,你真的了解吗?

    51单片机编程,你真的了解吗?

    什么是51单片机?它有什么注意事项?编程也好设计也罢,都要有遵循的规则。可以发挥自己的创新但是要顾全大局,不能随意的编程。下面分享关于51单片机编程的一些规则,希望能帮到大家,避免大家四处碰壁。 编程首要是要考虑程序的可行性,然后是可读性、可移植性、健壮性以及可测试性,这是总则。但是很多人忽略了可读性、可移植性和健壮性(可调试的方法可能歌不相同),这是不对的。 1.当项目比较大时,最好分模块编程,一个模块一个程序,很方便修改,也便于重用和便于阅读。 2.每个文件的开头应该写明这个文件是哪个项目里的哪个模块,是在什么编译环境下编译的,编程者(/修改者)和编程日期,值得注意的是一定不要忘了编程日期,因为以后你再看文件时,会知道大概是什么时候编写的,有些什么功能,并且可能知道类似模块之间的差异(有时同一模块所用的资源不同,和单片机相连的方法也不同,或者只是在原有的模块上加以改进)。 3.一个C源文件配置一个h头文件或者整个项目的C文件配置一个h头文件,我自己采用整个项目的C文件配置一个h头文件的方法,并且使用#ifndef/#define/#endif的宏来防止重复定义,方便各模块之间相互调用。 4.一些常量(如圆周率PI)或者常需要在调试时修改的参数最好用#define定义,但要注意宏定义只是简单的替换,因此有些括号不可少。 5.不要轻易调用某些库函数,因为有些库函数代码很长(我是反对使用printf之类的库函数的,但是是一家之言,并不勉强各位)。 6.书写代码时要注意括号对齐,固定缩进,一个{}各占一行,我本人采用缩进4个字符,应该还是比较合适的,if/for/while/do等语句各占一行,执行语句不得紧跟其后,无论执行语句多少都要加{},千万不要写成如下格式: for(i=0;i<100;i++){fun1();fun2();} for(i=0;i<100;i++){ fun1(); fun2(); } 而应该写成: for(i=0;i<100;i++) { fun1(); fun2(); } 7.一行只实现一个功能,比如: a=2;b=3;c=4;宜改成: a=2; b=3; c=4; 8.重要难懂的代码要写注释,每个函数要写注释,每个全局变量要写注释,一些局部变量也要写注释。注释写在代码的上方或者右方,千万不要写在下方(相信没有人写在左方吧)。 9.对各运算符的优先级右所了解,记不得没关系,加括号就是,千万不要自作聪明说自己记得很牢。 10.不管有没有无效分支,switch函数一定要defaut这个分支。一来让阅读者知道程序员并没有遗忘default,并且防止程序运行过程中出现的意外(健壮性)。 11.变量和函数的命名最好能做到望文生义。不要命名什么x,y,z,a,sdrf之类的名字。 12.函数的参数和返回值没有的话最好使用void。 13.goto语句:从汇编转型成C的人很喜欢用goto,但goto是C语言的大忌,但是老实说,程序出错是程序员自己造成的,不是goto的过错;本人只推荐一种情况下使用goto语句,即从多层循环体中跳出。 14.指针是C语言的精华,但是在C51中我个人认为少用为妙,一来有时反而要花费多的空间,还有在对片外数据进行操作时会出错(可能是时序的问题)。 15.一些常数和表格之类的应该放到code去中以节省RAM。 16.程序编完编译看有多少code多少data,注意不要使堆栈为难。 17.程序应该要能方便的进行测试,其实这也与编程的思维有关;一般有三种:一种是自上而下先整体再局部;一种是自下而上先局部再整体;还有一种是结合两者往中间凑。我的做法是现大概规划一下整个编程,然后一个模块模块独立编程,每个模块调试成功再拼凑在一块调试。我建议:如果程序不大,可以直接用一个文件直接编,如果程序很大,宜采用自上而下的方式,但更多的是那种处在中间的情况,宜采用自下而上或者结合的方式。以上就是51单片机的解析,希望能给大家帮助。

    时间:2020-05-08 关键词: 编程 语言 51单片机

  • pic单片机解惑篇,pic单片机、51单片机,谁更易于上手

    pic单片机解惑篇,pic单片机、51单片机,谁更易于上手

    pic单片机是学单片机人士必须掌握的一款单片机,对于pic单片机,小编层带来诸多介绍。如果你对pic单片机很感兴趣,不妨翻阅往期文章。本文对pic单片机的介绍内容为:pic单片机与51单片机,二者谁更易于学习,一起来了解下吧。 一、概述 51好学一些,但是PIC也没比51难多少。首先,PIC比51多个配置位,这个基本上看看就懂了。然后,PIC的端口要配置成输入或者输出,51单片机则不用。PIC的中断没有优先级,需要软件判断。最后,PIC比51多许多寄存器,你要使用PIC的各种功能,都需要去初始化寄存器。 再说说PIC相比与51单片机有哪些优点: 1:相同的晶振情况下,PIC比51速度快,PIC4个时钟周期为一个指令周期,51是12个。 2:PIC比51功能强大许多,比如自带AD转换,自带PWM,内置弱上拉(需设置)LCD接口等。。这样,你在用到许多功能的时候就很方便啦,不用去接很多外围电路。 3:PIC的驱动能力比51强,PIC可直接驱动数码管,51有些吃力哦。 4:PIC的抗干扰能力比51好,这个我们公司做过试验的。 综合上述,小编建议学习PIC。 二、51单片机详述 51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flashrom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。 51单片机的主要功能 ·8位CPU·4kbytes程序存储器(ROM)(52为8K) ·256bytes的数据存储器(RAM)(52有384bytes的RAM) ·21个专用寄存器 ·2个可编程定时/计数器·5个中断源,2个优先级(52有6个) ·一个全双工串行通信口 ·外部数据存储器寻址空间为64kB ·外部程序存储器寻址空间为64kB ·逻辑操作位寻址功能·双列直插40PinDIP封装 ·单一+5V电源供电 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可用作输出; T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。 三、PIC单片机特点或优势 1)PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,使用起来也不方便。PIC系列从低到高有几十个型号,可以满足各种需要。其中,PIC12C508单片机仅有8个引脚,是世界上最小的单片机。 该型号有512字节ROM、25字节RAM、一个8位定时器、一根输入线、5根I/O线,市面售价在3-6元人人民币。这样一款单片机在象摩托车点火器这样的应用无疑是非常适合。PIC的高档型号,如PIC16C74(尚不是最高档型号)有40个引脚,其内部资源为ROM共4K、192字节RAM、8路A/D、3个8位定时器、2个CCP模块、三个串行口、1个并行口、11个中断源、33个I/O脚。这样一个型号可以和其它品牌的高档型号媲美。 2)精简指令使其执行效率大为提高。PIC系列8位CMOS单片机具有独特的RISC结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。 3)产品上市零等待(Zerotimetomarket)。采用PIC的低价OTP型芯片,可使单片机在其应用程序开发完成后立刻使该产品上市。 4)PIC有优越开发环境。OTP单片机开发系统的实时性是一个重要的指标,象普通51单片机的开发系统大都采用高档型号仿真低档型号,其实时性不尽理想。PIC在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。就我个人的经验看,还没有出现过仿真结果与实际运行结果不同的情况。 5)其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。 6)彻底的保密性。PIC以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,PIC采用熔丝深埋工艺,恢复熔丝的可能性极小。 7)自带看门狗定时器,可以用来提高程序运行的可靠性。 8)睡眠和低功耗模式。虽然PIC在这方面已不能与新型的TI-MSP430相比,但在大多数应用场合还是能满足需要的。 以上便是此次小编带来的“pic单片机”相关内容,通过本文,希望大家pic单片机、51单片机的优点有所了解,并对二者谁更易于学习具备一个自己的答案。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2019-12-30 关键词: pic单片机 51单片机 单片机

  • 51单片机的基本信息

    51单片机的基本信息

    单片机的应用很广泛,种类也很多,本篇文章主要来聊聊51单片机标号信息、封装类型及外部引脚。 目前单片机很多,有8051、PIC、MS430、AVR等。单片机虽然型号不同,但是芯片内部的资源种类都差不多,而且这些资源的使用方法也大同小异。可以说学会一种,其他种类融会贯通。8051系列是老型号,这种单片机虽不是目前功能最强大,但却是用得最广泛的,教案资源最多,软件支持和硬件开发都很成熟。世界上不同国家的很多芯片厂商都生产各种单片机,以51单片机为例,如表1-1-1所示。 由于厂商及芯片型号比较多,我们不能一一举出,以上所提到的都是51内核扩展出来的单片机,即通常我们所说的51单片机。 1.标号信息  每一块单片机上都会标有型号说明。下面我们以如图1-1-2所示Atmel公司生产的AT89S52—24PC 0314 芯片为例,对单片机的标号信息解释如下。 图1-1-2  AT89S52—24PC 0314 芯片  AT89系列单片机型号由三个部分组成,它们分别是前缀、型号、后缀,其格式为:AT89C(LV、S)XXXX—XXXX。 AT—前缀,表示该芯片为Atmel公司生产的产品。  89S52—型号,型号由89SXXXX或89CXXXX或89LVXXXX表示。其中,8—表示该芯片为8052内核芯片。        9—表示芯片内部含Flash存储器。  S—表示该芯片含有可串行下载功能的Flash存储器,即具有ISP可在线偏程功能。C—表示该器件为CMOS产品。LV—表示该芯片为低电压产品(通常为3.3V电压供电)。  5—固定不变。  2—表示该芯片内部程序存储空间的大小。1为4KB,2为8KB,3为12KB,即该数乘上4KB就是该芯片内部的程序存储空间大小。程序空间大小决定了一个芯片所能装入执行代码的多少。一般来说,程序存储空间越大,芯片价格也越高,所以我们在选择芯片时要根据自己硬件设备实现功能所需代码的大小来选择价格合适的芯片,只要程序能装得下,同类芯片的不同型号不会影响其功能。  24PC—后缀。后缀由“XXXX”四个参数组成,与产品型号间用“—”隔开。  后缀中第一个参数“X”表示速度。其中,X=12,表示速度为12MHz。        X=20,表示速度为20MHz。        X=24,表示速度为24MHz。  后缀中第二个参数“X”表示封装。其中,X=P,表示塑料直插双列DIP封装。        X=J,表示带引线J的塑料芯片封装。  后缀中第三个参数“X”表示温度范围。  其中, X=C,表示商业用产品,温度范围为0°C~+70°C。        X=I,表示工业用产品,温度范围为-40°C~+85°C。        X=A,表示汽车用产品,温度范围为-40°C~+125°C。        X=M,表示军用产品,温度范围为-55°C~+150°C。  后缀中第四个参数“X”表示产品的处理情况。其中,X为空,表示处理工艺是标准工艺。        X=/883,表示处理工艺采用MIL-STD-883标准。  则单片机型号为“AT89S52—24PC 0314”,表示该单片机是Atmel公司生产的,含有可串行下载功能的Flash存储器,速度为24MHz,封装为塑料直插双列DIP,是商业用产品,按标准处理工艺生产。另外“0314”表示本批芯片生产日期为03年的第14周。   关于芯片上的标号,其他厂商大同小异,若大家还想详细了解,请上网搜索相关资料。 2.封装类型  (1)DIP(DualIn-line Package)双列直插式封装  DIP是指采用双列直插式封装的集成电路芯片,绝大多数中小规模集成电路(IC)均采用这种封装形式,其引脚数一般不超过100个。采用DIP封装的CPU芯片有两排引脚,需要插入到具有DIP结构的芯片插座上。当然,也可以直接插在有相同焊孔数和几何排列的电路板上进行焊接,如图1-1-3所示。  图1-1-3  DIP封装 图1-1-4  PLCC封装 (2)PLCC(Plastic Leaded Chip Carrier)带引线的塑料芯片封装      PLCC指带引线的塑料芯片封装载体,它是表面贴型封装之一,外形呈现正方形,引脚从封装的四个侧面引出,呈丁字形,是塑料制品,外形尺寸比DIP封装小得多。PLCC封装适合用SMT表面安装技术在PCB上安装布线,具有外形尺寸小、可靠性高的优点,如图1-1-4所示。 (3)QFP(Quad Flat Package)塑料方型扁平式封装和PFP(Plastic Flat Package)塑料扁平组件式封装 QFP与PFP两者可统一为PQFP(Plastic Quad Flat Package),QFP封装的芯片引脚之间距离很小,引脚很细,一般大规模或超大规模集成电路都采用这种封装形式,其引脚数一般在100个以上。用这种形式封装的芯片必须采用SMD(表面安装设备技术)将芯片与主板焊接起来。采用SMD安装的芯片不必在主板上打孔,一般在主板表面上有设计好的相应引脚的焊点。PFP封装的芯片与QFP方式基本相同,它们唯一的区别是QFP一般为正方形,而PFP既可以是正方形,也可以是长方形,如图1-1-5所示。 图1-1-5  PQFP封装 3.外部引脚  图1-1-6(a)、1-1-6(b)所示分别是AT89S52单片机的实物图和引脚图。  图1-1-6  AT89S52单片机实物与引脚图  由图1-1-6可知,AT89S52的DIP封装芯片共有40个引脚,采用引脚复用技术(即一个引脚可有两种功能,一个称为第一功能,另一个称为第二功能),满足单片机引脚数目不够而功能较多的需要。40个引脚我们按其功能类别将它们分成三类。 (1)电源和时钟引脚。如VCC、GND、XTAL1、XTAL2。 VCC(40脚)、GND(20脚):单片机电源引脚。不同型号单片机接入对应电源电压,常压为+5V,低压为+3. 3V,大家在使用时要查看其芯片的对应文档。   XTAL1(19脚)、XTAL2(18脚):外接时钟引脚。XTAL1为片内振荡电路的输入端,XTAL2为片内振荡电路的输出端。 8051的时钟有两种方式,一种是片内时钟振荡方式,需在这两个引脚外接石英晶体和振荡电容,振荡电容的值一般取10P~30P,如图1-1-7所示。另一种是外部时钟方式,即XTAL2将接地,外部时钟信号从XTAL1脚输入,如图1-1-8所示。这种方式主要用于解决单片机系统中的同步问题。 图1-1-7  片内时钟振荡方式 图1-1-8  外部时钟方式 (2)I/O口引脚。如P0、P1、P2、P3,4组8位I/O口。  P0口(P0.0~P0.7):双向8位三态I/O口,每个口可独立控制。第一功能作为基本输入/输出,内部没有上拉电阻,为高阻状态,所以不能正常地输出高低电平,因此该组I/O口在使用时务必要外接上拉电阻,一般我们选择接入10kΩ的上拉电阻。第二功能是为扩展系统分时提供数据总线和低8位地址总线。 P1口(P1.0~P1.7):准双向8位I/O口,内带上拉电阻,每个口可独立控制。第一功能作为基本输入/输出,这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。因为该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号,也就是要使其先有个“准”备的过程,所以才称为准双向口。对52单片机P1.0引脚的第二功能为T2定时器/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。 P2口(P2.0~P2.7):准双向8位I/O口,内带上拉电阻,每个口可独立控制。第一功能作为基本输入/输出,与P1口相似。第二功能是在系统扩展时作为高位地址线使用。  P3口(P3.0~P3.7):准双向8位I/O口,内带上拉电阻,每个口可独立控制。第一功能作为基本输入/输出,与P1口相似。作为第二功能使用时,各引脚的定义如表1-1-2所示。值得注意的是,P3口的第一个引脚均可独立定义为第一功能的输入/输出或第二功能。    表1-1-2  P3口各引脚第二功能定义 (3)I编程控制引脚。如RST、PSEN、ALE/PROG、EA/VPP。  RST:单片机的复位引脚。当在该引脚上出现连续两个机器周期以上的高电平时,单片机进入复位状态,完成初始化操作。 PSEN:外部程序存储器选通信号。当访问片外扩展ROM时,只有该引脚为低电平时才为有效信号,才能选通片外程序存储器对其进行读操作。由于现在我们使用的单片机内部已经有足够大的ROM,所以几乎没有人再去扩展外部ROM,因此这个引脚大家只需了解即可。  ALE/PROG:地址锁存控制/片内ROM编程脉冲输入信号。在访问外部程序存储器时,P0口作业地址/数据复用口,ALE用于锁存低8位地址。即ALE为高电平时P0口上的住处为低8位地址,在ALE下降沿时将P0口上的低8位地址送地址锁存器锁存起来,在ALE为低电平期间P0口上的住处为指令或数据信息,以此实现低位地址与数据的分离。该引脚的第二功能PROG作为编程脉冲的输入端。单片机内部有程序存储器(ROM),它的作用是用来存放用户需要执行的程序,那么我们怎样才能将写好的程序存入这个ROM中呢?实际上,我们是通过编程脉冲输入才写进去的,这个脉冲的输入端口就是PROG。现在很多单片机都已经不需要编程脉冲引脚往内部写程序了,比如我们用的AT单片机,它可以直接通过串口往里面写程序,只需要三条线与计算机相边即可。而且现在的单片机内部都已经带有丰富的RAM,所以也不需要再扩展RAM了,因此 ALE/PROG这个引脚的用处已经不太大。    EA/VPP:访问外部程序存储器控制信号/片内Flash ROM编程电源输入。当EA接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完内部ROM后自动读取外部ROM。EA接低电平时,单片机直接读取外部ROM。8031单片机内部是没有ROM的,所以在使用8031单片机时,这个引脚是一直接低电平的。8751单片机烧写内部EPROM时,利用此引脚输入21V的烧写电压。因为现在我们用的单片机都有内部ROM,所以在设计电路是此引脚始终接高电平。  

    时间:2019-11-13 关键词: 标号信息 封装类型 51单片机

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

技术子站

更多

项目外包