久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2785|回復: 0
打印 上一主題 下一主題
收起左側

基于CC2530的溫濕度ADC源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:261999 發表于 2018-1-1 15:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. /*

  2. 本程序講解AD控制(片內溫度計)

  3. 主講  王加輝

  4. */

  5. #include<iocc2530.h>

  6. #include"stdio.h"

  7. #define uchar  unsigned char

  8. #define uint   unsigned int

  9. void init_UART0(void)/*初始化串口*/

  10. {

  11.    P0SEL|=0X3C;/*這里我們是選擇P0_2,P0_3,P0_4,P0_5最為串口通信的I/O口*/

  12.    P2DIR&=~0XC0;/*在這里我們設置串口0的優先級大于串口1,也就是設置使用串口0*/

  13.    PERCFG=0X00;/*PERCFG是接口控制寄存器,這里我們選擇串口0位置1,就是選擇P0-2和P0-3為串口通信接口*/

  14.    

  15.    U0CSR|=0X80;/*選擇串口的工作方式,我們選擇為異步通信*/

  16.    U0GCR|=11;/*結合U0BAUD設置波特率為115200,請各位查找手冊*/

  17.    U0BAUD|=216;

  18.    UTX0IF=0;/*UTX0IF為串口0發送中斷標志位,我們將其置零*/

  19. }


  20. float recieve_AD(void)/*AD轉換,讀取片內溫度計實時電壓*/

  21. {

  22.    uint value=0;/*無符號整型變量,用來儲存AD轉換值*/

  23.    ADCCON1|=0X30;/*選擇AD轉換啟動的方式為手動啟動*/

  24.    ADCCON3=0X3E;/*設置AD轉換的信息源為片內溫度傳感器、選擇內部參考電壓為1.25V,設置單通道AD轉換的分辨率為512dec,12位,此處要對照AD寄存器手冊查看*/

  25.    ADCCON1|=0X40;/*手動啟動AD轉換*/

  26.    while(!(ADCCON1&0X80));/*等待AD一次轉換完成*/

  27.    value=ADCL>>4;/*CC2530的AD轉換數據是由高到低存儲的,ADCL低4位無效,所以我們要向右移動去掉無效四位,

  28.                         這我也是在CC2430學校視頻上看到的,暫時我不能給出確切解釋,有懂得請補充一下,謝謝*/

  29.    value|=(uint)ADCH<<4;/*視頻上解釋高位數據向左移動4位是為了和低位對應,然后相加,我無法做出準確解釋,我找到相關資料再做補充解釋*/

  30.    return value*0.06229-303.3-4;/*溫度的計算公式為:溫度=((測量電壓-某一電壓)/溫度系數)-溫度的誤差值*/

  31. }


  32. void init_tempurature()/*初始化溫度傳感器*/

  33. {

  34.     IEN0=IEN1=IEN2=0;/*因為AD轉換會產生中斷,所以此處我們先關掉所用中斷,對于AD中斷的使用大家可以參考手冊,查看其中斷源*/

  35.     CLKCONCMD&=~0X40;/*設置時鐘頻率,在前面的串口通信中我們也曾講過*/

  36.     while(CLKCONSTA&0X40);

  37.     CLKCONCMD&=~0X47;

  38.     TR0=0X01;/*這里我讓AD和溫度傳感器相連*/

  39.     ATEST=0X01;/*啟動溫度傳感器*/

  40. }


  41. void data_UART0(char *character,int length)/*串口數據輸出函數*/

  42. {

  43.     int i;

  44.     for(i=0;i<length;i++)

  45.     {

  46.        U0DBUF=*character++;

  47.        while(UTX0IF==0);/*每次發送數據完成后串口發送中斷位硬件自動置一*/

  48.        UTX0IF=0;/*這里我們要軟件將其置一*/

  49.     }

  50.     U0DBUF=0X0A;/*這句是在串口中輸出一個換行,大家可以試試*/

  51.     while(UTX0IF==0);

  52.     UTX0IF=0;

  53. }

  54. /*告訴大家一個在串口通信中將數字轉換成字符輸出的簡單方法,就是在數字后面加0x30,大家可以嘗試*/

  55. void delay_ms(int ti)/*延遲函數*/

  56. {

  57.    int x,y;

  58.    for(x=0;x<ti;x++)

  59.      for(y=0;y<526;y++);

  60. }

  61. void main()

  62. {

  63.    int turn=0;

  64.    float ADTEMP=0;

  65.    char temp[6]={0};

  66.    init_tempurature();//初始化溫度傳感器

  67.    init_UART0();//初始化串口通信

  68.    while(1)

  69.    {

  70.        for(turn=0;turn<60;turn++)/*累計60次的溫度*/

  71.           ADTEMP+=recieve_AD();

  72.        ADTEMP=ADTEMP/60;/*求60次溫度的平均值*/

  73.        temp[0]=(uchar)(ADTEMP)/10+48;/*將溫度的數值存入數組temp中*/

  74.        temp[1]=(uchar)(ADTEMP)%10+48;

  75.        temp[2]='.';

  76.        temp[3]=(uchar)(ADTEMP*10)%10+48;

  77.        temp[4]=(uchar)(ADTEMP*100)%10+48;

  78.        data_UART0(temp,5);//串口輸出溫度值

  79.        delay_ms(2000);//控制每次輸出的時間間隔

  80.    }

  81. }

  82. /*zigbee cc2530的AD控制(片內溫度計)祝大家學的愉快*/


復制代碼

所有資料51hei提供下載:
cc2530溫濕度.doc (19.5 KB, 下載次數: 13)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91资源在线 | av男人的天堂av | 日韩成人在线播放 | 91麻豆精品国产91久久久更新资源速度超快 | 久久毛片 | 色综合色综合色综合 | 国产成人91视频 | 精品久久久久久红码专区 | 免费人成在线观看网站 | 91精品国产91久久久久久最新 | 国产一区在线免费 | 国产aⅴ爽av久久久久久久 | 免费看一区二区三区 | 欧美a区 | 精品国产一区二区国模嫣然 | 国产蜜臀97一区二区三区 | 日韩欧美理论片 | 中文字幕在线免费观看 | 日日躁狠狠躁aaaaxxxx | 国产区免费视频 | 国产丝袜一区二区三区免费视频 | 涩爱av一区二区三区 | 人人鲁人人莫人人爱精品 | 国产伦精品一区二区三区照片91 | 啪啪免费 | 成人一区二区在线 | 亚洲一区二区精品 | 国产精品夜间视频香蕉 | 国内精品久久久久久影视8 最新黄色在线观看 | 免费一区二区三区 | 91www在线观看 | 亚洲成人精品久久久 | 日韩高清一区 | 一区二区三区高清在线观看 | 国产激情片在线观看 | 全免费a级毛片免费看视频免 | 国产精品一码二码三码在线 | 成人黄色电影在线播放 | 欧美一区二区在线 | av av在线| 日韩欧美中文字幕在线观看 |