nRf24le1旺哥整理的代码4 - ADC模数转换

nRf24le1旺哥整理的代码4 - ADC模数转换

  • 创作背景
  • 第4课 - ADC模数转换
  • 文件名:ADC.h
  • 文件名:ADC.c
  • 文件名:main.c
  • 工程截图如下:

作者:星希望(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);
    }
    }

工程截图如下:

nRf24le1旺哥整理的代码4 - ADC模数转换_第1张图片

你可能感兴趣的:(无线射频)