|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
大家都知道,在现实生活中,我们不只会遇到离散的数字量,像声音电压等连续变化的模拟量也很重要。, A$ r- r1 a# H/ P# b# a
51单片机只能使用符合TTL电平标准的数字量,而在基础款的51单片机中,并没有集成数模转换的功能。那么为了让单片机可以处理这些模拟量,我们势必要借助其他芯片的帮助。
$ N) M2 }2 B2 v借助A/D转换芯片,我们可以将外部的模拟量转化为数字量输入单片机,也可以将单片机的数字量转换为模拟量输出外界。
# [& Z1 p: _. P5 |8 x
( M+ I: U) _1 Q( T9 J/ k一、A/D转换原理
6 |# _& m. h& J6 _4 Q0 eA/D转换常用如下几种方式:
: r* g, ~! v3 z: g+ V9 I3 N1、逐次逼近法6 O7 k+ H( B, q6 ~# g: b! s7 q) [
逐次逼近型A/D转换器应用比较广泛,基本原理就是先将逐次逼近寄存器最高位置1,并送入D/A转换器生成模拟量V0,使用V0与输入的模拟量Vi进行比较,如果V0大于Vi则该位被保留,否则被清除。然后将寄存器次高位 置1,并不断重复上述操作,直到得出输入模拟量所对应的数字量。
) N0 c$ V4 T% {8 f! M3 c9 `2、双积分法1 K7 a/ g5 @% k/ A
基本原理为,对输入模拟电压和参考电压分别进行两次积分,将输入电压平均值变换为与之成正比的时间间隔,然后利用时钟脉冲和计数器测量出时间间隔,由此得到相应的数字量输出。可以看出,这是一种间接A/D转换器,是对输入电压的平均值进行转换,所以具有很强的抗工频干扰能力。
* z+ [6 }9 ]$ d% ]' {0 m! {3、电压频率转换法1 L! S; h& I$ |4 D
当模拟电压Vi加到V/F的输入端,便产生频率F与Vi成正比的脉冲,在一定的时间内对该脉冲信号计数,将统计到计数器的计数值正比于输入电压Vi,完成A/D转换。8 @" C7 K& h/ `' G! C5 a- b
0 O& s7 k' i& [& u9 V二、ADC0809 A/D转换器介绍2 B J( d( x4 P3 V: i& ?8 G
今天我们要了解的ADC0809 A/D转换器就是一款使用逐次逼近法的CMOS芯片,它使用单电源供电,转换时间100us,输入电压范围0V-5V,通过三位地址选择位来处理8路模拟量输入,可与TTL电平兼容。
- b4 U- L$ N" J* H; O
- o' V T- |' [/ f, @
单片机与ADC0809的通信有:查询、中断、延时三种方式。( Y; G+ H5 a( E. u/ c3 n3 f
1.查询方式:单片机使用轮询方式查看EOC引脚状态,低电平说明转换正在进行,高电平证明转换完成,单片机将OE线(读数据允许线)变为高电平,读出数据;3 k1 e5 G/ [+ |2 T
2.中断方式:单片机的外部中断引脚接ADC0809的EOC引脚,在中断程序中进行读数据操作;/ {$ a, g* |( K0 T/ D
3.延时方式:ADC0809转换时间为100us,所以可以使用定时器定时,每间隔一段时间(>100us)就读取一次数据。
/ B6 i5 v: t% ]6 Z5 R2 \这三种方式程序都不困难,特别是查询方式,只需要通过软件的方式进行,无需调用外部中断寄存器与定时器作为辅助。但当然,这种方式缺点也比较大,如果A/D转换器因为硬件软件原因没有工作,整个程序就会卡在循环中无法跳出,无法进行其他操作。# h0 i1 \! x& ^+ b. Y) A/ }
建议大家自行使用ADC0809转换器,并配合之前讲过的LCD1602显示屏,尝试制作一款电压测量仪器,这个项目难度适中,所要注意的是由于ADC0809采用并行方式输出数据,接线比较多,建议按类型将导线归类连接,不要在简单的问题上出错。
, M4 }8 G7 F, O0 H9 d: W( t) r“范例演练”设置了六篇公众号内容,大家能够将前五篇多多练习就可以对51单片机的认识更进一步,甚至可以举一反三,自己设计完成一些实用的小项目。4 S$ u( L: f. w( @. X
在下次也就是最后一次课程中,我们将简单了解一下现在火热的神经网络在单片机中的实现。 |
|