CC2530基礎實驗與TI BasicRF 簡單無線點對點通
列表:1.GPIO輸出控制實驗-控制Led亮滅
10.串口通訊--收發字符串
11.串口通訊--串口控制LED
12.AD采集cc2530溫度串口顯示
2.Led閃爍_流水燈
3.按鍵控制LED亮滅
4.按鍵控制LED跑馬燈
5.外部中斷
6.外部中斷控制LED倒流水燈
7.定時器T1-查詢方式
8.定時器T3-中斷方式
9.串口通訊-發送字符串
單片機源程序如下:
- /****************************************************************************
- * 文 件 名: main.c
- * 作 者: Andy
- * 版 本: 1.0
- * 描 述: ADC把芯片溫度通過串口發給電腦,部分芯片誤差較大需校準
- * 手摸芯片溫度有明顯變化
- ****************************************************************************/
- #include <stdio.h>
- #include <string.h>
- #include "UartTimer.h"
- /****************************************************************************
- * 名 稱: InitSensor()
- * 功 能: 溫度傳感器初始化函數
- * 入口參數: 無
- * 出口參數: 無
- ****************************************************************************/
- void InitSensor(void)
- {
- DISABLE_ALL_INTERRUPTS(); //關閉所有中斷
- InitClock(); //設置系統主時鐘為 32M
- TR0=0x01; //設置為1來連接溫度傳感器到SOC_ADC
- ATEST=0x01; //使能溫度傳感
- }
- /****************************************************************************
- * 名 稱: GetTemperature()
- * 功 能: 獲取溫度傳感器 AD 值
- * 入口參數: 無
- * 出口參數: 通過計算返回實際的溫度值
- ****************************************************************************/
- float GetTemperature(void)
- {
- uint value;
-
- ADCCON3 = (0x3E); //選擇1.25V為參考電壓;14位分辨率;對片內溫度傳感器采樣
- ADCCON1 |= 0x30; //選擇ADC的啟動模式為手動
- ADCCON1 |= 0x40; //啟動AD轉化
- while(!(ADCCON1 & 0x80)); //等待 AD 轉換完成
- value = ADCL >> 4; //ADCL 寄存器低 2 位無效,由于他只有12位有效,ADCL寄存器低4位無效。網絡上很多代碼這里都是右移兩位,那是不對的
- value |= (((uint)ADCH) << 4);
-
- return (value-1367.5)/4.5-5; //根據 AD 值,計算出實際的溫度,芯片手冊有錯,溫度系數應該是4.5 /℃
- //進行溫度校正,這里減去5℃(不同芯片根據具體情況校正)
- }
- /****************************************************************************
- * 程序入口函數
- ****************************************************************************/
- void main(void)
- {
- char i;
- float fSum, AvgTemp;
- char strTemp[6];
-
- InitUART(); //初始化串口
- InitSensor(); //初始化 ADC
-
- while(1)
- {
- fSum = 0;
- for (i=0; i<64; i++)
- {
- fSum += GetTemperature(); //取64次溫度總和
- }
- AvgTemp = fSum/64; //取64次溫度平均數
-
- memset(strTemp, 0, 6);
- sprintf(strTemp,"%.02f", AvgTemp);//將浮點數轉成字符串,保留2位小數位
- UartSendString(strTemp, 5); //通過串口發給電腦顯示芯片溫度
- DelayMS(1000); //延時
- }
- }
復制代碼
所有資料51hei提供下載:
第3章 基礎實驗.rar
(8.94 MB, 下載次數: 141)
|