AD转换 PIC 单片机之AD转换
让我们先看看R1和R2。R2是一个可调电阻器。如果我们让R2变大,引脚RA1上的电压就会变大。R2越小,此引脚RA1上的电压越小。怎么知道电压变化?这需要AD转换。就是把模拟量转换成数字量。
文章图片
如何用单片机表示电压
PIC用十位二进制数表示电压,即0~1023的值表示电压。例如,这个数字是400。这代表什么电压?这是根据参考电压确定的。
例如,我们将正参考电压设置为3.3V,当输入电压为0时,该值为0。当输入电压为3.3V时,数值为1023。如果输入电压为1.2V,代表多少电压?
首先计算3.3V除以1023大约是0.003V多少电压.
那么,1.2V除以0.003V等于400。这表明400代表1.2v。
如下图所示,可以看到AN0~AN7。这些端口可以配置为模拟输入。只有这些引脚可以作为AD转换的端口。
文章图片
示例说明:
例如,如果我们看第一个原理图,从RA0/AN0引脚输入一个模拟量。如果电压大于1.2v,则开启,否则LED熄灭。
广告的设置步骤:
1、设置端口
将RA0端口设为输入TRISA = 0x01;
设置RA0端口模拟ANSELA = 0x01
2.配置模数转换器模块
选择模数转换器的转换时钟。
如何选择转换时钟取决于当前的时钟频率。您可以根据数据表中的表格进行选择。
我们将单片机的时钟频率设置为32MHZ,选择ADC周期时不选择阴影部分。在32MHz这一列,我们随机选择了ADC时钟周期1us,对应的时钟源是Fosc/32。、和ADC
文章图片
配置参考电压
这里,我们将正参考电压配置为电压。Adpref
配置左/右对齐
AD转换后的值是10位二进制,但我们只用8位单片机,所以PIC单片机用两个8位寄存器存储AD值,ADRESH用来存储高位结果,ADRESL用来存储低位结果。但是ADRESH和ADRESL加起来是十六。那么这十个数字怎么放进去呢?这是通过左右对齐来设置的。
如果是右对齐,则低8位放在ADRESL中,其余两位放在ADRESH中。
如果是左对齐,则高八位放在ADRESH中,其余两位放在ADRESL中。见下文
文章图片
我们在这里选择正确的对齐方式,因此ad控制寄存器1的1 ADCON1 = 1
文章图片
以上描述了ADCON1寄存器的配置。先说ADCON0
选择模数转换器输入通道
只有一个AD转换模块,而AD输入通道有八个AN0~AN7。所以不可能同时进行AD转换。我们会根据硬件把AD转换模块分配给AN0。
因此,ADCON0的CHS
打开模数转换器模块
模数转换器模块开启,ADON=1,模数转换器0 = 1,只有模数转换器模块开启。AD转换未启动。如果不使用ADC模块,建议关闭。可以省电!!!
文章图片
3开始AD转换
ADCON0的GO/DONE=1开启AD转换。
4等待AD转换结束
5阅读结果
一般我们不把AD转换的值取一次。而是多次后取平均值。这确保了转换的准确性。有很多地方没有说明为什么要配置ADC模块,因为很多配置其实是相当随机的。没那么绝对。你必须选择哪一个。当然,实际的配置应该基于您的项目需求。
推荐阅读
- 上菜咯!年夜饭半成品“硬菜”集合,你pick哪一款?
- 《梦幻西游》手游:子女资质转换系统全服开启
- 粥、蒜、饭、面……万物皆可腊八?这些节日美食你pick哪一款
- Epic 部分玩家无法登录《永劫无间》,官方征集日志排查原因
- 今日小寒!此节气是一年中阴阳转换的时候,要格外注意防寒养生
- 【千问千寻大运河】宁津大柳面:5种卤子24种菜码 总有你的pick!
- 中国青梅之乡 优品寿乡 梅香四溢 为诏安青梅打call 赶快pick
- 有氧运动的6大好处,你pick哪一个?
- 宝宝便便后如何处理?“水洗派”vs“纸擦派”,你更pick哪一个
- 寻味浙江直播过半,快来PICK你心中的美食C位!