CC2530 ADC
采用 ZigBee 模块和温度/光照传感模块,ADC 在不同的分辨率、单端、差动输入不同
的条件下,测量温度/光照传感模块上的电位器(VR1)的变化电压、地和电源电压。并得
出 CC2530 单片机 ADC 支持位数,如何配置,ADC 转换数据存储格式等。
第一步,采用单端输入方式。将 ZigBee 模块和温度/光照传感模块都固定在 NEWLab
平台上,用导线把 ZigBee 模块上 ADC0 和温度/光照传感模块上的电位器分压端(J10)连
接起来。由电路限制,J10 端的电压范围 0.275V~3.025V。
第二步,编程 ADC 测量程序。暂不进行 ADC 值换算,只要 ADC 测量的值。并将 ADC
测量的值在串口调试软件上显示。
1. #include <ioCC2530.h>
2. char data[ ]="ADC 不同配置的测试!\n";
3. unsigned int value;
4. unsigned int adcvalue;
5. //*********************************************************************************
6. void delay(unsigned int i)
7. { unsigned int j,k;
8. for(k=0;k<i;k++)
9. { for(j=0;j<500;j++); }}
10. //*********************************************************************************
11. void initial_AD()
12. { APCFG |= 0X01; //设置 P0.0 为模拟端口
13. P0SEL |= (1 << (0)); //设置 P0.0 为外设功能
14. P0DIR |= ~(1 << (0)); //设置 P0.0 为输入方向
15. ADCCON3 = 0xB0; //13 位分辨率,选择 AIN0 通道,参考电压 3.3V,启动转换
16. // ADCCON3 = 0xA0; //11 位分辨率,选择 AIN0 通道,参考电压 3.3V,启动转
换
17. // ADCCON3 = 0x90; //9 位分辨率,选择 AIN0 通道,参考电压 3.3V,启动转换
18. // ADCCON3 = 0x80; //7 位分辨率,选择 AIN0 通道,参考电压 3.3V,启动转换
19. }
20. //*********************************************************************************
21. void initial_usart()
22. { CLKCONCMD &= ~0X7F; //晶振设置为 32MHz
23. while(CLKCONSTA & 0X40); //等待晶振稳定
24. CLKCONCMD &= ~0X47; //设置系统主时钟频率为 32MHz
25. PERCFG = 0X00; //usart0 使用备用位置 1 TX-P0.3 RX-P0.2
26. P0SEL |=0X3C; //P0.2 P0.3 P0.4 P0.5 用于外设功能
27. P2DIR &= ~0xC0; //P0 优先作为 UART 方式