找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6231|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于CC2530的光照傳感器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:268125 發(fā)表于 2017-12-28 08:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

單片機(jī)源程序如下:
  1. /******************************************************/
  2. //-------------------LED control----------------------//
  3. /*                  Creat By ES                       */
  4. /******************************************************
  5. 實(shí)驗(yàn)內(nèi)容:點(diǎn)亮藍(lán)色的LED,板子上一共有3個(gè)LED,分別由3個(gè)
  6. 引腳控制,本程序點(diǎn)亮P14控制的藍(lán)色LED
  7. ******************************************************/


  8. #include <ioCC2530.h>

  9. #define KEY1 P1_1      //KEY1為P1.1口控制
  10. #define KEY2 P1_2      //
  11. #define KEY3 P1_3      //

  12. #define LED1    P1_0    //P10連接紅色LED1
  13. #define LED2    P1_1    //P11連接黃色LED2
  14. #define LED3    P1_4    //P14連接藍(lán)色LED3
  15. char a[8];
  16. char temp=0;

  17. void IO_Init(void)
  18. {
  19.   P1DIR |= 0xff;     //P1定義為輸出
  20.   P1 = 0x10; //按鍵使能,所有LED不亮
  21.   APCFG=0x01;
  22.   P0SEL=0x01;
  23. }
  24. void Delay(int ms)
  25. {
  26.   int i,j;
  27.   for(i=0;i<300;i++)
  28.     for(j=0;j<ms;j++);
  29. }
  30. /**************************
  31. 系統(tǒng)時(shí)鐘 不分頻
  32. 計(jì)數(shù)時(shí)鐘 32分頻
  33. **************************/
  34. void InitClock(void)
  35. {   
  36.     CLKCONCMD &= ~0x40; // 設(shè)置系統(tǒng)時(shí)鐘源為 32MHZ晶振
  37.     while(CLKCONSTA & 0x40);                     // 等待晶振穩(wěn)定
  38.     CLKCONCMD &= ~0x47;                          // 設(shè)置系統(tǒng)主時(shí)鐘頻率為 32MHZ
  39. }
  40. /****************************************************************
  41. 讀取溫度傳感器 AD 值函數(shù)      
  42. ****************************************************************/
  43. float getTemperature(void){
  44.    
  45.    int  value;
  46.    ADCCON3  = (0x30);                  //選擇1.25V為參考電壓;14位分辨率;對(duì)片內(nèi)溫度傳感器采樣  0011 1110
  47.    ADCCON1 |= 0x30;                    //選擇ADC的啟動(dòng)模式為手動(dòng)0011 0000
  48.    ADCCON1 |= 0x40;                    //啟動(dòng)AD轉(zhuǎn)化  
  49.    while(!(ADCCON1 & 0x80));          //等待 AD 轉(zhuǎn)換完成
  50.    value =  ADCL;                //ADCL 寄存器低 2 位無(wú)效
  51.    value |= (((int)ADCH) <<8);     //2047:8196 Yout
  52.    value >>=2;
  53.    return (1.15*value/8196);    //根據(jù) AD 值,計(jì)算出實(shí)際的溫度,芯片手冊(cè)有錯(cuò),溫度系數(shù)應(yīng)該是4.5 /℃
  54.                                    //進(jìn)行溫度校正,這里減去5℃(不同芯片根據(jù)具體情況校正)
  55. }



  56. void getnum(float result)
  57. {
  58.   
  59.   a[0]=(char)result%10+48;
  60.   a[1]='.';
  61.   a[2]=(char)(result*10)%10+48;
  62.   a[3]=(char)(result*100)%10+48;
  63.   a[4]=10;
  64. }

  65. /****************************************************************
  66.    串口初始化函數(shù)     
  67. ***********************************************************/
  68. void InitUart()
  69. {
  70.     CLKCONCMD &= ~0x40; // 設(shè)置系統(tǒng)時(shí)鐘源為 32MHZ晶振
  71.     while(CLKCONSTA & 0x40);                     // 等待晶振穩(wěn)定
  72.     CLKCONCMD &= ~0x47;                          // 設(shè)置系統(tǒng)主時(shí)鐘頻率為 32MHZ

  73.     PERCFG = 0x00;        //位置1 P0口
  74.     P0SEL = 0x3c;        //P0_2,P0_3,P0_4,P0_5用作串口,第二功能
  75.     P2DIR &= ~0XC0;      //P0 優(yōu)先作為UART0 ,優(yōu)先級(jí)

  76.     U0CSR |= 0x80;       //UART 方式
  77.     U0GCR |= 11;         //U0GCR與U0BAUD配合     
  78.     U0BAUD |= 216;       // 波特率設(shè)為115200
  79.     UTX0IF = 0;          //UART0 TX 中斷標(biāo)志初始置位1  (收發(fā)時(shí)候)
  80.     U0CSR |= 0X40;       //允許接收
  81.     IEN0 |= 0x84;        // 開(kāi)總中斷,接收中斷   
  82. }

  83. /****************************************************************
  84. 串口發(fā)送字符串函數(shù)   
  85. ****************************************************************/
  86. void Uart_Send_String(char *Data,int len)
  87. {
  88. {
  89.   int j;
  90.   for(j=0;j<len;j++)
  91.   {
  92.     U0DBUF = *Data++;
  93.     while(UTX0IF == 0); //發(fā)送完成標(biāo)志位
  94.     UTX0IF = 0;
  95.   }
  96. }
  97. }


  98. void main(void)
  99. {   
  100.    
  101.     float result;
  102.     IO_Init();      //調(diào)用初始e化程序
  103.     InitClock();
  104.     InitUart();
  105.    while(1)
  106.     {   
  107. ……………………

  108. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
基于CC2530的光照傳感器.rar (28.36 KB, 下載次數(shù): 41)


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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表