单片机
到现在为止,相信大家对单片机已经有了一个基本概念,但是我们为什么要学习单片机呢?我们需要找到爱上单片机的一万个理由。
单片机在实际中的应用
单片机在生活中应用非常广泛。各种家电,如洗衣机,电冰箱,电饭煲,电子称,等等,往往会称自己的产品是高科技、全自动、微电脑控制的智能产品……对于没有接触过单片机之类器件的人来说,会感觉真的是很难想象的高科技。而当你学会单片机之后,你的想法就完全不一样了。你可能只是淡淡一笑,然后暗暗的想,人家用的什么单片机?怎么写的程序?要不改天也来自制一个类似的玩玩?当然我并不否认单片机是高科技,我这里也不是有意要冒犯家电厂商,请大家理解o(╯□╰)o。
很多数码产品,像手机,单反,摄像机,一些MP3播放器,包括电脑中的硬盘等零部件往往都用到了单片机。极大丰富了我们的业余生活。
路边各种广告牌,尤其到了晚上的时候,总会发出耀眼的光芒,而那些广告牌,很多都是用单片机来控制的。
单片机在医用设备领域的用途也相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。这些单片机不分昼夜的辛苦工作着,帮助医生们创造一次又一次救死扶伤的奇迹。
汽车甚至飞机的很多部件,也使用了很多单片机来执行各种不同的艰巨任务。单片机为我们的出行保驾护航。
单片机在工业上的应用也相当广泛。流水线上装配各种产品,都离不开单片机的控制,各种数据采集、智能化控制、警报系统等,很多都是以单片机为核心的。
单片机在我们身边的应用
知道了很多单片机的应用,但是似乎和我们的生活并没有什么直接联系。但是事实并非如此。下面我就给大家举些例子。
我小的时候,和很多人一样,特别喜欢玩具车。看到商场上有卖遥控车的,特别想要,但是当时家里条件不好,所以最终还是没买成。我后来也想过自己做个遥控车,但是无奈感觉太难了,始终没有做出来。后来上大学,我接触到了单片机,发现单片机实在太强大了。也是因为兴趣,在几个星期的时间内,我就很轻松做成了一个遥控车。
宿舍常常有人不记得带钥匙,或者出去有事带钥匙不方便,比如说去打篮球。然后几个人一起回来,大眼瞪小眼,都没拿钥匙,门都开不了,只好求助楼管。于是我在宿舍门上装了一个电子密码锁,门外是按键和指示灯,门里面是单片机和电机,电机通过细线可以把门打开。你可能会担心安全问题,实际上完全不用担心。我们的密码锁,只有在单片机工作正常、且输入密码正确的情况下,才会启动电机开门。密码可以任意修改,只要你愿意,可以输入几百位的密码。当然也完全没这必要。连续三次输入密码错误,还会亮起红灯锁定,禁止再次尝试输入密码,要等几分钟才能解锁。所以想把密码试出来也是不太现实的。如果不幸单片机没电了,或者密码锁坏了,也不用担心。它的工作原理决定了,那种情况下,只是不能输入密码开门了,门完全不可能自己被电机打开。所以安全性是毋庸置疑的。
早上如果起得比较早,常常会起不来,参考网上的方案,我设计了一种闹钟,能模拟早晨太阳升起,室内逐渐变亮的过程,在闹铃之前半小时,会慢慢的点亮照明灯。然后由于光线的原因,人就会慢慢醒来。如果到了定时时间,人还没起来按开关确认已经起床,闹铃就开始响。并且可以把开关设置在离床比较远的地方,只有起来才能关闹铃,以免错过起床时间又睡过去了。
类似的小制作还有很多。比如有人制作的“表白神器”心型点阵,是送心仪女生的必备佳品。还有各种非常漂亮的时钟,数码相框,电子蜡烛,光立方等。也有国外牛人,用单片机制作出了各种有趣的小玩意,甚至有用单片机制作的简易电子书阅读器。爱好航模、机器人的读者也可以用单片机去制作这些东西,后期也会对单片机的机电控制进行一些初步讲解。在最后还会介绍几个项目实例,有兴趣的读者也可以试着做一做。
单片机就如同“小强”一样无处不在,给我们的生活带来了巨大的影响……
文章来源:Hainter
从本文开始进入单片机入门篇的学习。入门篇主要介绍各种单片机基础知识概念。
入门篇阅读建议:根据个人已经掌握的知识,有重点的去读。如果介绍到你已经学过的知识,你只需要简单阅读一下,或者直接跳过。如果看后面的文章感觉有些知识掌握的还不好,可以在回来看入门篇相关的介绍。
数字的发明
很久以前,人类发明了数字。自此,人类社会发生了巨大的变化。有了数字,人们解决了很多问题。在数字的帮助下,人们学会了度量和计算,人们发明了温度计,发明了钟表,发明了直尺,发明了算盘……生活中原本模糊的概念,变的不再模糊,而是十分精确。
电的广泛应用和各种电子器件的发明
1870年以后,科学技术的发展突飞猛进,各种新技术、新发明层出不穷,并被迅速应用于工业生产,大大促进了经济的发展。第二次工业革命爆发了。在这次工业革命中,电力得到了广泛的应用。
之后人们发明了各种电子元器件,特别是电子管、晶体管以及后来集成电路的发明对人类社会产生了巨大的影响。图中给大家展示了一些常见的集成电路芯片。
计算机的发明
有句话说,懒人推动社会进步。这句话是有一定道理的。在科技不断发展的过程中,一方面,人们希望制造出一种机器,能帮助我们完成处理现实世界中的各种问题,让我们从重复而繁重的脑力劳动中解放出来;另一方面,往往是在军事上,由于种种原因需要在较短的时间内,完成一些像炮弹轨道计算,密码破译之类的任务,而人类的数字运算能力往往远达不到要求。
最初人们发明了算盘之类的计算工具,又有人发明了一些机械式计算机,通过齿轮传动等原理进行运算。而后,在电子技术飞速发展的情况下,人们发明了电子计算机。早期电子计算机采用大量电子管,十分庞大,需要消耗很多电量,操作也非常复杂。如1946年发明的“埃尼阿克”电子计算机,占地面积170平方米,重达30吨,耗电量高达150千瓦,而运算能力却远不及今天智能手机的CPU,尽管如此,它已经比当时的继电器计算机快一千倍。而随着晶体管、集成电路的出现,计算机技术以惊人的速度发展着,到今天各种计算机设备随处可见,甚至我们很多人每天的生活和工作都已经离不开计算机。
帕斯卡和他的齿轮式加法器
数字计算机发明之前,电子计算机都是模拟计算机。模拟计算机通过内部电子器件的电压、电流大小等来表示一个数字或物理量,进行处理。这种计算机处理问题的精度差,而且结构复杂,也很容易受外界干扰。于是后来人们发明了数字计算机。数字计算机把外界的各种信息转换成数字,然后对数字进行运算,最终得到一个确定的结果。我们人类使用的数字一般为十进制,这是因为我们有十个手指。但是由于很多电子器件都只有两种确定的状态,比如开关的开和关,灯的亮和灭,于是数字计算机使用的是二进制的数字,通过控制器件的开和关来表示数字“1”和“0”,实现各种功能。由于它没有模拟计算机的那些缺陷,发展十分迅速,成为今天计算机的主流。
单片机的发明
在计算机发展的同时,另一种大家相对陌生的东西也在悄悄发展着。在1971年,全球第一个计算机微处理器4004由美国Intel公司推出的同时,一种称之为单片机的技术也逐渐发展并得到广泛应用。单片机全称单片微型计算机,又称为微型控制器,英文名MCU(Micro Control Unit),可以理解为精简版的计算机。单片机相当于将计算机中的各个主要部件,CPU、存储器、IO口、中断系统等封装在一个集成电路芯片中。初学者或许对这些名词很陌生,但是不需要担心,关于他们分别是什么,后面会给大家介绍。下面是一些现在常见的单片机。
从左往右,1、2为51单片机,3、4为AVR单片机,5、6、7为MSP430单片机
为什么要发明单片机呢?这个很好理解。俗话说,杀鸡焉用牛刀。生活中有很多事情不很复杂,并不需要计算机那么庞大的机器来处理,于是我们只需要用精简版的计算机——即单片机来完成任务就好了。
单片机的特点
比起大家熟悉的计算机,单片机的配置可就差多了,简直是低的难以想象。我们常用的笔记本电脑CPU处理速度可以达到2GHz以上,还是双核四核甚至更高级,但是拿一款常见的单片机(STC89C52RC,我们即将以这款单片机开始来进行学习)来对比,它的最高处理速度只有几十MHz(其中1GHz = 1000MHz);笔记本电脑硬盘动辄几百GB乃至几TB,而单片机中相当于硬盘的ROM只有几到几十KB(1TB = 1024GB,1GB = 1024MB,1MB = 1024KB,1KB = 1024B);主流笔记本的内存普遍都有几个GB,单片机中相当于内存的RAM只有可怜的几十字节(即单位B)。但是大家千万不要小瞧这么“低端”的单片机,只要给它写进程序,足以控制一台我们经常看到的所谓“智能洗衣机”之类的电器。而且学习了单片机,也会让你对计算机有更深入的了解。
文章来源: Hainter
笔者利用51单片机制作了一个LED旋转屏,并利用该旋转屏上制作出炫耀独特的数字钟,在把制作过程分享之前,先贴一张效果图。
看完图片之后大家惊奇的发现,上面显示的字居然是浮在空中的!这到底是怎么回事?其实道理很简单:LED旋转屏只采用一排LED,令其高速旋转,利用视觉残留效应,形成高分辨率的点阵屏,可以显示字符、汉字,甚至图案,而且图案看起来还有悬浮于空中的透明效果,非常炫目。下面跟着笔者一起来制作把!
下面给出一张元器件清单供参考。
开始硬件制作
1、制作电路
由于电路板高速旋转,除了要做好平衡,还要尽快地缩小电路板的体积和重量,这样装置比较小,也容易进行高速旋转。
制作电路时,除了少数插件外,全部采用贴片工艺进行制作,为了减小电路板体积,笔者使用双面PCB进行布线,
下面两张是笔者绘制的PCB图,供参考。
PCB正面放置AT89S52、12个LED等,背面主要放置晶振、升压电路,整个电路板尺寸为64 mm ×30mm,读者可以根据这个布局自行画PCB,建议画PCB前先确定整机的装配结构,可以参考图9。手工制作双面PCB需要一定的经验,将Top Layer镜像打印,然后和Bottom Layer对齐,把裁好尺寸、打磨好的双面覆铜板放在两层纸中间,确保对齐后进行热转印。
2、装配结构
笔者确定圆柱型旋转屏的整机结构大致如下图所示。
找一个合适的电脑主机散热器的风扇,一般是12V、0.75A,也有0.15A的,这里最好选0.75A的大功率散热风扇,因为电机负荷比较大,小功率风扇可能带不动,然后把风扇的扇叶剪掉(舍不得剪也可以保留,耗电稍大而已),剩下转子和支架,然后按照图9的结构进行“叠罗汉”。找一块大小合适的硬木板,长度等于旋转屏直径,宽度等于电路板的宽度,按照图9把电路板固定在木板上面,至少用2根1cm长的自攻螺丝进行固定,否则高速旋转时电路板可能甩飞,安装时注意光电门的位置。
然后把木板用强力胶粘在电机上面,这个环节很重要,粘合强度一定要足够高,笔者用热熔胶大面积粘合,效果还可以,用AB胶也不错。
然后把电池座、平衡片固定在木板上面,安装电池座时,一定要连同电池放在里面,这样才能调节平衡,平衡片可以用覆铜板,这个环节最重要的是平衡,不断调节电池座的位置和平衡片,一定要调到最佳平衡状态,这需要耐心和运气。
挡光片的安装比较容易,不过位置要调好,恰好能把光电门的光“切断”,又不能碰到光电门。红外接收头本来是焊接在电路板上面的,笔者后来调试发现,接收头高速旋转会使接收到的信号误码率较高,于是把接收头移到旋转中心,问题有所改善。装配好的整机如图下图所示:
注入灵魂——编写软件
整机装配好后,上电调试,并写一个流水灯的程序并烧写到单片机,如果12个LED确实能“流水”,那恭喜你,硬件制作大体成功了!如果出现问题,检查升压电路是否输出3.3V和5.0V,检查单片机的复位引脚是不是低电平等。程序采用C51进行编写,不建议采用汇编,因为这个系统比较庞大,用C语言更容易开发。
软件编写的基本思想如流程图如下:
软件中要注意几个比较重要的函数的编写。一个是实现字符显示的函数,也是最重要的函数,编程上与点阵接近,不过相对容易一些。首先必须获得字库,如无字模软件,推荐一款LCD汉字取模软件,笔者使用感觉良好,下载地址:
http://dgdz.cic.tsinghua.edu.cn/dgdz/detail.jsp?seq=576&boardid=2601。
另一个是红外遥控解码函数,红外遥控的解码,关键在于了解红外遥控信号的规律,笔者采用KD-29遥控器。
还有,笔者在旋转屏上实现了字符显示后,利用单片机内部定时器编写了一个数字钟,这样一来单片机任务有点多,即使使用了22.1184MHz的晶振,仍然感觉单片机速度不够,表现在显示字符时有抖动现象,这是因为中断函数内部指令稍多,导致延时函数延时不准引起的。
后来笔者用定时器来产生精密延时,效果好了一些,不过仍然有微微抖动,如果用AVR单片机,由于AVR单片机的速度比51单片机快10倍,这个问题就能得到很好地解决了,这也是笔者推荐使用Atmega8进行制作的原因。
这样的一个旋转屏也可以用来显示图案,但因为垂直分辨率不够多,显示普通小图标就可以了,笔者用它来显示静音符号,还有开闹钟的符号。显示图标时有一个小窍门,就是用文字来索引图标,在字库生成软件中,都可以自定义字模,我们把图案用某个用不到汉字来表示,显示的时候,只要显示这个汉字,它对应的图案就显示出来了,十分方便。软件问题智者见智,仁者见仁,读者也可以自行设计软件系统,笔者把源代码全部公开,可以到本刊网站www.radio.com.cn上下载,供读者参考。
结语
这个LED旋转屏的DIY就交流到这里,硬件的制作需要不断提高动手能力才能做得更精致,软件的编写要经历无数调试过程才能达到最终要求,DIY过程是艰辛的,但是收获了成果时的那份喜悦只有经历过才知道,这里再贴几张效果图。
文章来源:无线电杂志
常规上ROM是用来存储固化程序的,RAM是用来存放数据的。由于FLASH ROM比普通的ROM读写速度快,擦写方便,一般用来存储用户程序和需要永久保存的数据。譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在RAM里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到FLASH里。
--ROM存放指令代码和一些固定数值,程序运行后不可改动;RAM用于程序运行中数据的随机存取,掉电后数据消失..
code就是指将数据定义在ROM区域,具只读属性,例如一些LED显示的表头数据就可以定义成code存储在ROM。
ROM:(Read Only Memory)程序存储器
在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、’const’限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。
RAM:(Random Access Memory)随机访问存储器
用来存储程序中用到的变量。凡是整个程序中,所用到的需要被改写的量,都存储在RAM中,“被改变的量”包括全局变量、局部变量、堆栈段。
程序经过编译、汇编、链接后,生成hex文件。用专用的烧录软件,通过烧录器将hex文件烧录到ROM中(究竟是怎样将hex文件传输到MCU内部的ROM中的呢?),因此,这个时候的ROM中,包含所有的程序内容:无论是一行一行的程序代码,函数中用到的局部变量,头文件中所声明的全局变量,const声明的只读常量,都被生成了二进制数据,包含在hex文件中,全部烧录到了ROM里面,此时的ROM,包含了程序的所有信息,正是由于这些信息,“指导”了CPU的所有动作。
可能有人会有疑问,既然所有的数据在ROM中,那RAM中的数据从哪里来?什么时候CPU将数据加载到RAM中?会不会是在烧录的时候,已经将需要放在RAM中数据烧录到了RAM中?
要回答这个问题,首先必须明确一条:ROM是只读存储器,CPU只能从里面读数据,而不能往里面写数据,掉电后数据依然保存在存储器中;RAM是随机存储器,CPU既可以从里面读出数据,又可以往里面写入数据,掉电后数据不保存,这是条永恒的真理,始终记挂在心。
清楚了上面的问题,那么就很容易想到,RAM中的数据不是在烧录的时候写入的,因为烧录完毕后,拔掉电源,当再给MCU上电后,CPU能正常执行动作,RAM中照样有数据,这就说明:RAM中的数据不是在烧录的时候写入的,同时也说明,在CPU运行时,RAM中已经写入了数据。关键就在这里:这个数据不是人为写入的,CPU写入的,那CPU又是什么时候写入的呢?听我娓娓道来。
上回说到,ROM中包含所有的程序内容,在MCU上电时,CPU开始从第1行代码处执行指令。这里所做的工作是为整个程序的顺利运行做好准备,或者说是对RAM的初始化(注:ROM是只读不写的),工作任务有几项:
1、为全局变量分配地址空间---à如果全局变量已赋初值,则将初始值从ROM中拷贝到RAM中,如果没有赋初值,则这个全局变量所对应的地址下的初值为0或者是不确定的。当然,如果已经指定了变量的地址空间,则直接定位到对应的地址就行,那么这里分配地址及定位地址的任务由“连接器”完成。
2、 设置堆栈段的长度及地址---à用C语言开发的单片机程序里面,普遍都没有涉及到堆栈段长度的设置,但这不意味着不用设置。堆栈段主要是用来在中断处理时起“保存现场”及“现场还原”的作用,其重要性不言而喻。而这么重要的内容,也包含在了编译器预设的内容里面,确实省事,可并不一定省心。平时怎么就没发现呢?奇怪。
3、 分配数据段data,常量段const,代码段code的起始地址。代码段与常量段的地址可以不管,它们都是固定在ROM里面的,无论它们怎么排列,都不会对程序产生影响。但是数据段的地址就必须得关心。数据段的数据时要从ROM拷贝到RAM中去的,而在RAM中,既有数据段data,也有堆栈段stack,还有通用的工作寄存器组。通常,工作寄存器组的地址是固定的,这就要求在绝对定址数据段时,不能使数据段覆盖所有的工作寄存器组的地址。必须引起严重关注。
这里所说的“第一行代码处”,并不一定是你自己写的程序代码,绝大部分都是编译器代劳的,或者是编译器自带的demo程序文件。因为,你自己写的程序(C语言程序)里面,并不包含这些内容。高级一点的单片机,这些内容,都是在startup的文件里面。仔细阅读,有好处的。
通常的做法是:普通的flashMCU是在上电时或复位时,PC指针里面的存放的是“0000”,表示CPU从ROM的0000地址开始执行指令,在该地址处放一条跳转指令,使程序跳转到_main函数中,然后根据不同的指令,一条一条的执行,当中断发生时(中断数量也很有限,2~5个中断),按照系统分配的中断向量表地址,在中断向量里面,放置一条跳转到中断服务程序的指令,如此如此,整个程序就跑起来了。决定CPU这样做,是这种ROM结构所造成的。
其实,这里面,C语言编译器作了很多的工作,只是,你不知道而已。如果你仔细阅读编译器自带的help文件就会知道很多的事情,这是对编译器了解最好的途径。
I/O口寄存器:
也是可以被改变的量,它被安排在一个特别的RAM地址,为系统所访问,而不能将其他变量定义在这些位置。
中断向量表:
中断向量表是被固定在MCU内部的ROM地址中,不同的地址对应不同的中断。每次中断产生时,直接调用对应的中断服务子程序,将程序的入口地址放在中断向量表中。
ROM的大小问题:
对于flash类型的MCU,ROM空间的大小通常都是整字节的,即为ak*8bits。这很好理解,一眼就知道,ROM的空间为aK。但是,对于某些OTP类型的单片机,比如holtek或者sonix公司的单片机,经常看到数据手册上写的是“OTP progarming ROM 2k*15bit。。。。。”,可能会产生疑惑,这个“15bit”认为是1个字节有余,2个字节又不足,那这个ROM空间究竟是2k,多于2k,还是4k但是少了一点点呢?
这里要明确两个概念:一个是指令的位宽,另一个是指令的长度。指令的位宽是指一条指令所占的数据位的宽度;有些是8位位宽,有些是15位位宽。指令长度是指每条指令所占的存储空间,有1个字节,有2个字节的,也有3个字节甚至4个字节的指令。这个可以打个形象的比方:我们做广播体操时,有很多动作要做,但是每个复杂的动作都可以分解为几个简单的动作。例如,当做伸展运动时,我们只听到广播里面喊“2、2、3、4、5、6、7、8”,而这里每一个数字都代表一个指令,听到“3”这个指令后,我们的头、手、腰、腿、脚分别作出不同的动作:两眼目视前方,左手叉腰,右手往上抬起,五指伸直自然并拢打开,右腿伸直,左腿成弓步······等等一系列的分解动作,而要做完这些动作的指令只有一个“3”,要执行的动作却又很多,于是将多个分解动作合并成一个指令,而每个分解动作的“位宽”为15bits。实事上也确实如此,当在反汇编或者汇编时,可以看到,复合指令的确是有简单的指令组合起来的。
到此,回答前面那个问题,这个OTP的ROM空间应该是2K,指令位宽为15位。一般的,当指令位宽不是8的倍数时,则说明该MCU的大部分指令长度是一个字节(注:该字节宽度为15位,不是8位),极少数为2个或多个字节,虽然其总的空间少,但是其能容下的空间数据并不少。
文章来源:玩转单片机
1、按理说,一个东西的负载电流,应该是它供给外部的电流,这时候也就是流出时,应该为正。
2、外接电阻一般是上拉,通常情况这种接法输出高电平时,内部输出开关管是截止状态,如果该引脚上有负载的话,负载电流经上拉电阻提供,引脚内部基本上不存在电流出入,(所以低功耗)
3、这么讲下去,当该脚输出低电平时(内部开关管导通,电压接近地),电流经电阻流入内部,这时候应该在单片机的相关技术文档中会详细说明单片机的工作电流,但总的来说,每个端口电流不要超过20毫安,否则容易使得器件损坏。描述为负
。IO口的灌电流最大30ma左右,拉电流更小了
一般来说上拉或下拉电阻的作用是增大电流,加强电路的驱动能力
比如说51的
还有,p0口必须接上拉电阻才可以作为io口使用
上拉和下拉的区别是一个为拉电流,一个为灌电流
一般来说灌电流比拉电流要大
也就是灌电流驱动能力强一些
拉电流与灌电流
51系列单片机的拉电流和灌电流是不同的。根据我的使用经验,标准I/O口的拉电流不大于1mA,灌电流最大约为10mA左右,P0口的驱动能力更差一些。
拉电流和灌电流是衡量电路输出驱动能力的参数,这种说法一般用在数字电路中。由于数字电路的输出只有高、低(0,1)两种电平值,高电平输出时,一般是对负载提供电流,其提供电流的数值叫“拉电流”;低电平输出时,一般是要吸收负载的电流,其吸收电流的数值叫“灌电流”。
文章来源:玩转单片机
1、什么是AD转换
A是模拟信号的意思,D是数字信号的意思,AD转换就是模数转换,顾名思义,就是把模拟信号转换成数字信号,例如把电压值转化为数字信号。
2、为什么要AD转换
单片机(以及其他处理器)只能处理数字信号,当单片机想要获取电路上某一点的电压值时,就得用到AD转换了,如果你直接把单片机的引脚接到电路这个点上,单片机只知道这个点的电压是低电平还是高电平,又怎么能得到他的电压值呢?例如数字式的万用表,它测量电压时,先有一个AD转换电路,把电压值转换成一个数值,然后把这个值送个单片机(当然万用表里的用的处理芯片不是单片机),单片机经过计算处理后,再把这电压值显示到显示到屏幕上。
不过现在有一些比较强的单片机,其内部已经集成了AD转换器,不需要你再外接AD转换芯片。
3、8位16位的ad转换芯片是什么意思
8位,16位就代表了AD转换芯片的转换分辨率,数字越大,分辨率越高,同时也反映了它的精度,数字越大,精度相对也越高。8位算是最低了,有些单片机里集成的AD转换器一般是10位的。12位和16位的芯片价格就比较贵了。
4、分辨率
举个简单的例子,8位芯片只能转换最小到0.01V的电压,而12位的芯片却能转换最小到0.001V的电压,如果一个电压为3.359V,8位芯片转出来后的数值是3.35V,12位芯片转换出来后是3.359V,精度比8位就高一个档次了。(注:这里数值不是正确的数值,举例用,切勿实际使用)
5、采样
采样是AD转换的速度性能指标,通俗的说就是每秒里能采样多少次,采样次数越高芯片性能越好。如果对采样不理解,也可以用另一种方式理解,就是一个AD转换芯把电压值转换成数字值这个过程所需要的时间,时间越短越好。
6、精度
精度是AD芯片的一个重要参数,表示采集到的数据和真实值之间的相差的程度。
文章来源:玩转单片机