【PIC单片机】-- ADC相关知识
2022-07-25 来源:csdn
00 写在前面
该系列的文章,源自于担任过PIC单片机课程的助教,主要向学弟们讲解了几节实验课的内容。在此记录上课的一些知识。
本系列文章主要介绍的内容:
实验1–介绍和基本I/O–按钮和LED(学习嵌入式的第一步就是点一个灯,就像学习编程语言的第一步都是写一个“hello world”代码)
实验2–MPLAB+PICkit 3+LCD+I/O(这次主要是介绍液晶显示屏的使用,很多时候我们系统的调试都需要用到,比如做一个测温系统,那我们就可以通过液晶显示屏,显示传感器采集的数值,然后再通过软件来做进一步的处理)
实验3–ADC(这个是模数转化实验,就是之前模数电学习那些知识的一个综合运用)
实验4–串行通信–UART
实验5–串行通信–I2C
实验6–计时器和中断(这一部分也是很重要的知识点,在很多的嵌入式系统中都会用到,比如用单片机再加几个传感器就可以搭出智能车,智能车就会用到计时器、中断这些内容)
01 ADC相关知识补充
今天我们讲的新内容就是ADC模块,就是把模拟信号转化成数字信号的模块,这个大家应该也不陌生,之前模电课上有学过这个原理,但是今天我们不讲底层原理,而是教大家如何用,也就是如何利用单片机实现AD转换;
PIC中很多都是采用逐次逼近型,这两张图就是它的内部原理图,之前模数电学过,大家课后可以再思考一遍。
接下来咱们讲一下AD转换的主要技术指标:转换时间(转换速率)、分辨率、转换精度;
转换精度通常用分辨率和转换误差来表示,同样这个在数电课本有讲到。
02 芯片手册如何查看?
大家打开原理图,The PIC16F877A has an on-board 8 channel 10 bit Analog-to-Digital Converter module.对应的引脚是这几位:
这里我再给大家讲一下芯片手册怎么看,之前有同学问我芯片手册都是英文,不是很好理解?
那我教一下大家,就是先根据目录找到相应模块,比如,咱们今天的AD模块,就是这里第十一章,然后里面内容,大家重点关注寄存器,就是寄存器的每个位它到底是什么意思,你如果记不住,那只能通过芯片手册查呀!
另外在每个章节的后面都有一个寄存器总结,它会将与该模块相关的寄存器进行一个归纳和总结。
03 ADC有关的寄存器
接下来就是重头戏了,与ADC有关的寄存器,同样的,你把这几个寄存器配置好,就可以进行启动单片机进行AD转换了。
(那配置寄存器其实就是弄清楚寄存器每一位代表的含义,哪里有讲这个东西
1、芯片手册;
2、你们发的教材,教材也有讲, 那教材其实就是帮大家翻译一下芯片手册,这个对初学者确实挺有用的,但是之后大家熟悉了之后,看芯片手册就会了。
那我今天讲的话还是按芯片手册讲。)
04 ADC有关的寄存器
1、AD控制寄存器0,ADCON0
2、AD控制寄存器1,ADCON1
3、ADRESH and ADRESL寄存器,这两个寄存器是用来存储AD转换后的数字信号,刚才我们已经介绍过,PIC转后的位数是10位,而ADRESH和ADRESL分别为8位寄存器(各自存放这高八位和低八位),所以总和是16位,那16-10=6,还有6位是不需要的,就直接用0填充就行。
那10位的放置方法就有两种,一种是左对齐、另外一种是右对齐,这个就是通过ADCON1的第七位来控制的。
4、方向控制寄存器
主要是设置这个模拟端口的引脚,包含RE和RA
05 几个名词
采样时间:就是单片机从外部引脚读到模拟信号的时间;(PIC大概是19.72us)
那我们肯定是模拟信号读到后,才能开始进行AD转换,模拟信号都没有,转换个锤子。所以在启动AD转换之前要有一个延时,这个延时要大于19.72us,通常是50~100us。
AD转换时钟要求:
没有中断的AD转换有7步。