nRf24le1旺哥整理的代码4 - ADC模数转换
作者:星希望(QQ:411057286)
转载请声明出处
涉及代码文件已上传到本站,搜索 “ nRf24le1旺哥整理的代码 ” ,欢迎留言讨论;
创作背景
最近在搞一个RFID的项目,在短距离(0–5米内)识别电子标签,并能读取出标签的ID号;
迫于无源RFID读写距离太近,所以选择了有源RFID;
在查阅相关资料后,芯片锁定为nRf24LE1
在某宝上购买到开发板后,发现卖家给的资料简直一塌糊涂,遂决心自己编写寄存器驱动;
以下代码仅作为模块化参考,读者们在引用过程中需要根据自身情况做适当修改;
第4课 - ADC模数转换
注意引脚与通道号,初始化时设置为输入。
直接贴代码:
文件名:ADC.h
/********************** 分 割 线 **********************/
#ifndef ADC_H
#define ADC_H
#include “sys.h”
void ADC_init(void);
u16 ADC_Read(u8 ch);
#endif
/********************** 分 割 线 **********************/
文件名:ADC.c
/************************************************************************
- ADC驱动(已校验)
- 引脚对应 Page 139
- AIN0 - P00
- AIN1 - P01
- AIN2 - P02
- AIN3 - P03
- AIN4 - P04
- AIN5 - P05
- AIN6 - P06
- AIN7 - P07
- AIN8 - P10
- AIN9 - P11
- AIN10 - P12
- AIN11 - P13
- AIN12 - P14
- AIN13 - P15
- AIN14 - 1/3 VDD
- AIN15 - 2/3 VDD
- 作者:星希望(QQ:411057286)
- 日期:2019年5月8日
************************************************************************/
#include “ADC.h”
/************************************************************************
- 初始化
************************************************************************/
void ADC_init(void)
{
ADCCON2 = 0X00; //设置成单步转换并使能,速度为2ksps
ADCCON3 |= 0XE0; //精度12bit,数据右对齐
ADCDATH &= 0XF0; //转换结果寄存器清0
ADCDATL &= 0X00;
P0DIR |= 0X07; //设置转换的输入通道为0,1,2
P0 &= 0XF8; //端口初始化为低
}
/************************************************************************
- ADC读取
************************************************************************/
u16 ADC_Read(u8 ch)
{
u16 res=0;
ADCCON1 = BIT7 + ( ch<<2 ) + BIT0; //设置转换的通道,设置参考,以及启动
while( !(ADCCON1&BIT6) ); //等待启动
while( (ADCCON1&BIT6) ); //等待完成转换
res = ADCDATL | (ADCDATH & 0X0F) <<8;//读取结果
return res;
}
/********************** 分 割 线 **********************/
文件名:main.c
/************************************************************************
- NRF24LE1
- ADC - 已校验
- 作者:星希望(QQ:411057286)
- 日期:2019年5月8日
************************************************************************/
#include “LED.h”
#include “ADC.h”
#include “delay.h”
#include “uart.h”
#include “Clock.h”
/************************************************************************
-
主函数
************************************************************************/
void main(void)
{
Clock_sel_XOSC_16MHz();
ADC_init();
LED_init();
UART_init();while(1)
{
UART_SendNum(4, ADC_Read(0) );
UART_Send_String("\r\n");
led_0 = ~led_0;
delay_ms(500);
}
}