PIC单片机模/数转换器ADC模块的设计思路及电路设计
发布时间:2008/11/25 0:00:00 访问次数:1252
pic16f877单片机的adc内部结构如图1所示。40引脚封装芯片与28引脚封装芯片的区别主要在于模拟口的数量不同,28引脚封装芯片没有an5~an7模拟量输入通道,其他各部分的功能和组成关系相同。pic16f877单片机的adc内部结构图如图2所示。
图1 主程序及中断程序流程
图2 pic16f877单片机的adc内部结构图
pic16f877单片机内部嵌入的adc模块具有10位数字量精度,共有8个模拟通道,与ado模块有关的寄存器共有11个,其专用的4个寄存器分别为:adccon0、adccon1、adresh及adresl。
源阻抗(rs)和内部采样开关(rss)阻抗直接影响所要求的充电电容chold的时间,采样开关(rss)阻抗在单片机电压上的变化,源阻抗在模拟输入时影响偏移电压(由于引脚漏电流)。所推荐的最大模拟源阻抗是101kω,在模块输入通道被选择后转换可以开始之前采集必须通过。
a/d转换器时间每位定义为tad,a/d转换器每10位转换要求12tad,a/d转换器时钟源是可以通过软件设定的,tad的4种可能选择是:
· 2tosc;
· 8tosc;
· 32tosc;
· 内部rc振荡器。
对于正确的a/d转换,a/d转换时钟(tad)必须被选择以保证1.6μs的最小tad时间。
adcon1、trisa和trise寄存器控制a/d端口引脚的操作。这个作为模拟输入的端口引脚必须有它们的相应位tris置1(输入)。如果tris位清0(输出),数字输出电平(voh或vol)将被转换。a/d操作是独立于(chs(2∶0))位和tris位的状态之外的。
在睡眠期间a/d模块可以工作,这种a/d时钟要求对rc置1,(arcs(1:0)=11), 当选择rc时钟源时,a/d模块在开始转换之前等待一个指令周期。这种允许执行的睡眠指令,可以消除在转换中产生的所有数字开关噪声。
当转换完成时,go/done位将被清0,和转换结果一块装入adres寄存器,如果a/d中断使能,单片机将从睡眠中唤醒,如果a/d中断不使能,尽管adon位仍保持置1,a/d模块仍将被关闭。
如果a/d时钟源是另一种时针选择(不是rc),尽管adin位仍保持1,睡眠指令将导致目前的转换中断和a/d模块被关闭。关闭a/d,把a/d模块放到它的最低电流消耗状态。
单片机复位强制所有寄存器复位到它们的复位状态,强制关闭a/d转换模块和进行的转换。在adresh、adresl寄存器的值在上电复位时不变,adresh、adresl寄存器在上电复位之后将包含未知数据。
1. 设计思路
将ra2引脚作为模拟电压输入,模拟量为连接在ra2引脚上的微调电阻提供,借此可以提供一个连续变化的模拟电压。端口d连接8个led作为数据输出显示,并设置一个报警值。
本程序中将报警值设为2.5v,经a/d转换后对应十六进制数值为0x200h,当a/d转换的值未达到警戒值(0x200h)时,点亮8个发光二极管的低4个,表明系统运行正常;当a/d转换的值达到或超过警戒值(0x200h)时,发出报警信号,点亮与d口相连的led显示报警信息。
2. 电路设计
单片机与led的接口原理如图3所示。
图3 pic16f877与led的接线
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
pic16f877单片机的adc内部结构如图1所示。40引脚封装芯片与28引脚封装芯片的区别主要在于模拟口的数量不同,28引脚封装芯片没有an5~an7模拟量输入通道,其他各部分的功能和组成关系相同。pic16f877单片机的adc内部结构图如图2所示。
图1 主程序及中断程序流程
图2 pic16f877单片机的adc内部结构图
pic16f877单片机内部嵌入的adc模块具有10位数字量精度,共有8个模拟通道,与ado模块有关的寄存器共有11个,其专用的4个寄存器分别为:adccon0、adccon1、adresh及adresl。
源阻抗(rs)和内部采样开关(rss)阻抗直接影响所要求的充电电容chold的时间,采样开关(rss)阻抗在单片机电压上的变化,源阻抗在模拟输入时影响偏移电压(由于引脚漏电流)。所推荐的最大模拟源阻抗是101kω,在模块输入通道被选择后转换可以开始之前采集必须通过。
a/d转换器时间每位定义为tad,a/d转换器每10位转换要求12tad,a/d转换器时钟源是可以通过软件设定的,tad的4种可能选择是:
· 2tosc;
· 8tosc;
· 32tosc;
· 内部rc振荡器。
对于正确的a/d转换,a/d转换时钟(tad)必须被选择以保证1.6μs的最小tad时间。
adcon1、trisa和trise寄存器控制a/d端口引脚的操作。这个作为模拟输入的端口引脚必须有它们的相应位tris置1(输入)。如果tris位清0(输出),数字输出电平(voh或vol)将被转换。a/d操作是独立于(chs(2∶0))位和tris位的状态之外的。
在睡眠期间a/d模块可以工作,这种a/d时钟要求对rc置1,(arcs(1:0)=11), 当选择rc时钟源时,a/d模块在开始转换之前等待一个指令周期。这种允许执行的睡眠指令,可以消除在转换中产生的所有数字开关噪声。
当转换完成时,go/done位将被清0,和转换结果一块装入adres寄存器,如果a/d中断使能,单片机将从睡眠中唤醒,如果a/d中断不使能,尽管adon位仍保持置1,a/d模块仍将被关闭。
如果a/d时钟源是另一种时针选择(不是rc),尽管adin位仍保持1,睡眠指令将导致目前的转换中断和a/d模块被关闭。关闭a/d,把a/d模块放到它的最低电流消耗状态。
单片机复位强制所有寄存器复位到它们的复位状态,强制关闭a/d转换模块和进行的转换。在adresh、adresl寄存器的值在上电复位时不变,adresh、adresl寄存器在上电复位之后将包含未知数据。
1. 设计思路
将ra2引脚作为模拟电压输入,模拟量为连接在ra2引脚上的微调电阻提供,借此可以提供一个连续变化的模拟电压。端口d连接8个led作为数据输出显示,并设置一个报警值。
本程序中将报警值设为2.5v,经a/d转换后对应十六进制数值为0x200h,当a/d转换的值未达到警戒值(0x200h)时,点亮8个发光二极管的低4个,表明系统运行正常;当a/d转换的值达到或超过警戒值(0x200h)时,发出报警信号,点亮与d口相连的led显示报警信息。
2. 电路设计
单片机与led的接口原理如图3所示。
图3 pic16f877与led的接线
欢迎转载,信息来源维库电子市场网(www.dzsc.com)