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