找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5559|回复: 0
打印 上一主题 下一主题
收起左侧

基于CC2530的光照传感器程序

[复制链接]
跳转到指定楼层
楼主
ID:268125 发表于 2017-12-28 08:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

单片机源程序如下:
  1. /******************************************************/
  2. //-------------------LED control----------------------//
  3. /*                  Creat By ES                       */
  4. /******************************************************
  5. 实验内容:点亮蓝色的LED,板子上一共有3个LED,分别由3个
  6. 引脚控制,本程序点亮P14控制的蓝色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连接蓝色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. 系统时钟 不分频
  32. 计数时钟 32分频
  33. **************************/
  34. void InitClock(void)
  35. {   
  36.     CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振
  37.     while(CLKCONSTA & 0x40);                     // 等待晶振稳定
  38.     CLKCONCMD &= ~0x47;                          // 设置系统主时钟频率为 32MHZ
  39. }
  40. /****************************************************************
  41. 读取温度传感器 AD 值函数      
  42. ****************************************************************/
  43. float getTemperature(void){
  44.    
  45.    int  value;
  46.    ADCCON3  = (0x30);                  //选择1.25V为参考电压;14位分辨率;对片内温度传感器采样  0011 1110
  47.    ADCCON1 |= 0x30;                    //选择ADC的启动模式为手动0011 0000
  48.    ADCCON1 |= 0x40;                    //启动AD转化  
  49.    while(!(ADCCON1 & 0x80));          //等待 AD 转换完成
  50.    value =  ADCL;                //ADCL 寄存器低 2 位无效
  51.    value |= (((int)ADCH) <<8);     //2047:8196 Yout
  52.    value >>=2;
  53.    return (1.15*value/8196);    //根据 AD 值,计算出实际的温度,芯片手册有错,温度系数应该是4.5 /℃
  54.                                    //进行温度校正,这里减去5℃(不同芯片根据具体情况校正)
  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.    串口初始化函数     
  67. ***********************************************************/
  68. void InitUart()
  69. {
  70.     CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振
  71.     while(CLKCONSTA & 0x40);                     // 等待晶振稳定
  72.     CLKCONCMD &= ~0x47;                          // 设置系统主时钟频率为 32MHZ

  73.     PERCFG = 0x00;        //位置1 P0口
  74.     P0SEL = 0x3c;        //P0_2,P0_3,P0_4,P0_5用作串口,第二功能
  75.     P2DIR &= ~0XC0;      //P0 优先作为UART0 ,优先级

  76.     U0CSR |= 0x80;       //UART 方式
  77.     U0GCR |= 11;         //U0GCR与U0BAUD配合     
  78.     U0BAUD |= 216;       // 波特率设为115200
  79.     UTX0IF = 0;          //UART0 TX 中断标志初始置位1  (收发时候)
  80.     U0CSR |= 0X40;       //允许接收
  81.     IEN0 |= 0x84;        // 开总中断,接收中断   
  82. }

  83. /****************************************************************
  84. 串口发送字符串函数   
  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); //发送完成标志位
  94.     UTX0IF = 0;
  95.   }
  96. }
  97. }


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

  108. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
基于CC2530的光照传感器.rar (28.36 KB, 下载次数: 41)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表