zoukankan      html  css  js  c++  java
  • 嵌入式成长轨迹48 【Zigbee项目】【CC2430基础实验】【AVDD】

    将AD的源设为电源电压,AD参考电压为AV D D ,并将转换得到温度通过串口送至电脑。开始转换黄灯亮绿灯暗,转换完毕绿灯亮黄灯暗。


    void InitialAD(void);
    函数原型:

     1 void InitialAD(void) 
     2 { 
     3  //P1 out 
     4   P1DIR = 0x03;      //P1 控制LED 
     5  led1 = 1; 
     6  led2 = 1;  //关LED 
     7  
     8   ADCH &= 0X00;    // 清EOC标志  
     9  ADCCON3=0xbf;  //单次转换, 参考电压为电源电压,对 1/3 AVDD进行A/D 转换 
    10       //14位分辨率 
    11   ADCCON1 = 0X30;    // 停止A/D 
    12  
    13  ADCCON1 |= 0X40; //启动A/D 
    14 } 

    函数功能:设 P10,P11 设为输出控制 LED 灯,将 AD转换源设为电源电压,参考电压为电源电压,ADC结果分辨率设为14 位(最高精度),AD模式为单次转换,启动ADC转换。

      1 //main.c
      2 #include "ioCC2430.h"
      3 #define uint unsigned int
      4 
      5 #define ConversionNum 20
      6 //定义控制灯的端口
      7 #define led1 P1_0
      8 #define led2 P1_1
      9 
     10 void Delay(uint);
     11 void initUARTtest(void);
     12 void InitialAD(void);
     13 void UartTX_Send_String(char *Data,int len);
     14 
     15 char adcdata[]=" 0.0V ";
     16 
     17 /****************************************************************
     18 *函数功能 :延时                        *
     19 *入口参数 :定性延时                        *
     20 *返 回 值 :无                            *
     21 *说    明 :                            *
     22 ****************************************************************/
     23 void Delay(uint n)
     24 {
     25     uint i;
     26     for(i=0;i<n;i++);
     27     for(i=0;i<n;i++);
     28     for(i=0;i<n;i++);
     29     for(i=0;i<n;i++);
     30     for(i=0;i<n;i++);
     31 }
     32 
     33 /****************************************************************
     34 *函数功能 :初始化串口1                        *
     35 *入口参数 :无                            *
     36 *返 回 值 :无                            *
     37 *说    明 :57600-8-n-1                        *
     38 ****************************************************************/
     39 void initUARTtest(void)
     40 {
     41     CLKCON &= ~0x40;              //晶振
     42     while(!(SLEEP & 0x40));      //等待晶振稳定
     43     CLKCON &= ~0x47;             //TICHSPD128分频,CLKSPD不分频
     44     SLEEP |= 0x04;                  //关闭不用的RC振荡器
     45 
     46     PERCFG = 0x00;                //位置1 P0口
     47     P0SEL = 0x3c;                //P0用作串口
     48 
     49     U0CSR |= 0x80;                //UART方式
     50     U0GCR |= 10;                //baud_e = 10;
     51     U0BAUD |= 216;                //波特率设为57600
     52     UTX0IF = 1;
     53 
     54     U0CSR |= 0X40;                //允许接收
     55     IEN0 |= 0x84;                //开总中断,接收中断
     56 }
     57     
     58 
     59 /****************************************************************
     60 *函数功能 :初始化ADC                        *
     61 *入口参数 :无                                *
     62 *返 回 值 :无                            *
     63 *说    明 :参考电压AVDD,转换对象是1/3AVDD            *
     64 ****************************************************************/
     65 void InitialAD(void)
     66 {
     67     //P1 out
     68     P1DIR = 0x03;         //P1控制LED
     69     led1 = 1;
     70     led2 = 1;        //关LED
     71 
     72     ADCH &= 0X00;        //清EOC标志    
     73     ADCCON3=0xbd;        //单次转换,参考电压为电源电压,AVDD进行A/D转换
     74                         //14位分辨率
     75     ADCCON1 = 0X30;        //停止A/D
     76 
     77     ADCCON1 |= 0X40;    //启动A/D
     78 
     79 }
     80 
     81 /****************************************************************
     82 *函数功能 :串口发送字符串函数                    *
     83 *入口参数 : data:数据                        *
     84 *        len :数据长度                        *
     85 *返 回 值 :无                                *
     86 *说    明 :                            *
     87 ****************************************************************/
     88 void UartTX_Send_String(char *Data,int len)
     89 {
     90   int j;
     91   for(j=0;j<len;j++)
     92   {
     93     U0DBUF = *Data++;
     94     while(UTX0IF == 0);
     95     UTX0IF = 0;
     96   }
     97 }
     98 
     99 
    100 /****************************************************************
    101 *函数功能 :主函数                        *
    102 *入口参数 :无                            *
    103 *返 回 值 :无                            *
    104 *说    明 :无                            *
    105 ****************************************************************/
    106 void main(void)
    107 {    
    108     char temp[2];
    109         float num;
    110     initUARTtest();                                 //初始化串口
    111     InitialAD();                                    //初始化ADC
    112 
    113     led1 = 1;
    114         led2 = 0;
    115     while(1)
    116     {
    117         if(ADCCON1>=0x80)
    118         {
    119                         led2 = 0;
    120             led1 = 1;              //转换完毕指示
    121             temp[1] = ADCL;
    122             temp[0] = ADCH;
    123             ADCCON1 |= 0x40;          //开始下一转换
    124 
    125                         temp[1] = temp[1]>>2;           //数据处理
    126             temp[1] |= temp[0]<<6;
    127 
    128                         temp[0] = temp[0]>>2;    
    129                         temp[0] &= 0x3f;
    130 
    131                         num = (temp[0]*256+temp[1])*3.3/2047;
    132                         //定参考电压为3.3V。12位精确度
    133                         adcdata[1] = (char)(num)%10+48;
    134                         //adcdata[2] = '.';
    135                         adcdata[3] = (char)(num*10)%10+48;
    136     
    137             UartTX_Send_String(adcdata,6);    //串口送数
    138                                                         //包括空格
    139 
    140             Delay(30000);
    141                         led2 = 1;
    142                         led1 = 0;                       //完成数据处理
    143                         Delay(30000);      
    144                 }
    145     }
    146 }
  • 相关阅读:
    12-factor应用和微服务架构应用的区别
    SAP云平台里Global Account和Sub Account的关系
    SAP成都研究院李三郎:SCP Application Router简介
    介绍两个好玩的和Github相关的Chrome扩展
    Java,JavaScript和ABAP通过代码取得当前代码的调用栈Callstack
    SAP CRM和C4C的内容管理(Content Management)
    CRM WebClient UI的浏览器打印实现
    通过ABAP代码判断当前系统类型,BYD还是S4 OP还是S4 Cloud
    使用ABAP批量下载Markdown源文件里的图片到本地
    ABAP下载的病毒扫描Virus Scan
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2666927.html
Copyright © 2011-2022 走看看