A/D转换

学习使用就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。以下是小编的一些经验:

第一步:数字I/O的使用

使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。要注意的是两个功能使用同一组I/O口,比如LCD和LED例程众都是使用PB这一组的,如果两者结合,会有冲突,达不到预期的效果,建议不同的模块使用不同的IO口。

第二步:定时器的使用

学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。

定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。

第三步:中断

单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。

中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。

第四步:与PC机进行RS232通信

单片机都有USART接口,特别是STM8系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个stm8s105c6芯片进行电平转换。USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!

第五步:学会A/D转换

STM8单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。使用A/D转换功能的简单的例子是设计一个电压表。

第六步:学会PCI、I2C接口和液晶显示器接口

这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。

第七步:学会比较、捕捉、PWM功能

这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。

第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计

学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。

到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大侠了。

转自: 快易购

围观 382

本文向大家介绍低成本的A/D转换的一种方法,只是这种方法成本会更低,而且外部无需使用比较器。此种方法的A/D转换精度不高,只有6~7bit,并且被测电压范围较为有限,但在某些精度要求不高,且被测电压值变化不大的场合也很有实用价值,比如温度测量方面。

其电路如图一所示:

单片机实现低成本A/D转换

其工作原理说明如下:

1、硬件说明:

图一中的R1、R2和C1构成RC充电电路,被测量通过R1、R2对C1充电。N1为单片机,本电路中采用MICROCHIP的PIC12C508A来举例说明。C2为给电源供电用的滤波电路,VD1为保护用稳压二极管,以避免输入电压过高而损坏单片机。

2、A/D转换过程:

首先GP5输出低电平,使电容C1上的电量完全放光,随后GP5即转变为输入状态,此时单片机开始计时,被测电压经过R1、R2电阻对电容C1进行充电,电容C1上的电压会逐渐升高,C1上的电压U满足以下公式:

单片机实现低成本A/D转换

其中U为电容C1上的电压,E为输入电压(被测量),T=(R1+R2)*C1,t为时间。

当C1上的电压U达到单片机I/O脚的门嵌电压时,单片机的GP5由低电平状态转变为高电平状态。记录从充电开始至此时所经过的时间t。

从上式可知,当单片机I/O脚的门嵌电压、R1、R2、C1值都固定不变时,被测量的电压值E与时间t呈一一对应关系。

因此测量输入电压对C1电容充电到门嵌电压的时间,进行查表计算,就可以得到被测电压值,从而实现了A/D转换。

3、A/D转换误差分析及解决办法:

A/D转换的误差主要由以下几个方面决定,分别说明如下:

(1)单片机的电源电压VDD:在该A/D转换中,VDD电压变化较大时有可能造成I/O口的门嵌电压发生变化,不过其影响较小。

(2)单片机内部的定时器对C1电容上电压上升时间的测量偏差:该测量偏差是A/D转换误差的主要因素。

(3)电阻、电容不稳定导致的误差:当电阻R1、R2或电容C1的值发生变化时,也会使C1电容的电压上升至门嵌电压时间发生变化,这也将影响A/D转换结果。

(4)单片机I/O脚的输入阻抗:如果单片机的I/O脚输入阻抗较低,相当于使RC值发生变化,也会影响A/D转换结果。

(5)单片机的门嵌电压:对于不同的单片机,其门嵌电压可能略有相同,这也会导致测量误差。
A/D转换误差的解决办法:

(1)对VDD造成的误差,只能通过提高VDD电压精度来解决,VDD的电压最好能稳定在2%范围内,普通的7805就有2%的稳压精度。

(2)对单片机内部的定时器产生的误差,可以增加RC值,从而使C1电容上电压上升时间延长,计数器测得的值较大,误差会较小。不过R值若太大,受I/O口输入阻抗影响也会较大。

(3)R1、C1选用精度较高较稳定的电阻、电容,或增加一个微调电阻器来解决。

(4)若单片机I/O脚输入阻抗较低,可以减小R1、R2电阻,增加C1电容来解决。

4、A/D转换速度及提高办法:

由于该A/D转换是通过被测值经过一个电阻对电容充电使电压到达门嵌电压后测量充电时间来得到A/D转换值的,因此其A/D转换速度会比较慢,它适用于对A/D转换速度要求不高的产品中,其A/D转换速度取决于以下几个方面:

(1)RC值:当RC值太大时,测量速度会较慢,减小RC值可以提高A/D转换速度,但由于计数时间较短,测量误差会增大。

(2)被测电压值的大小:由于C1上的电压U是由小到大逐渐加大的,当被测电压值较小时,U电压上升到门嵌值的时间就越长,完成A/D转换的速度就越慢。反之被测电压越高,测量速度越快。
由上所述,A/D转换的速度可以通过减小RC值来提高。若单片机带有外部电平变换中断,其A/D转换的精度还可以得到提高。

5、输入电压的测量范围:

A/D转换的输入电压测量范围为单片机门嵌电压至单片机的电源电压(VDD),若需要提高被测电压范围,可将输入电压通过电阻分压后进行测量,但其A/D转换的误差会受分压电阻影响。
6、单片机的A/D转换应用实例:

下图为采用PIC12C508实现A/D转换的应用实例,图中用4个发光二极管来作相应的电压值范围指示。其电压测量范围为1.4V至2.55V,其测量精度为10mV。

单片机实现低成本A/D转换

该应用实例与原程序可参考MICROCHIP公司的单片机应用笔记,该文件可从MICROCHIP网站上下载。

转自: 单片机精讲吴鉴鹰

围观 314
订阅 RSS - A/D转换