查看: 2717|回复: 3

[原创] 【学习LPC1768】之PM2.5/PM10显示

[复制链接]
  • TA的每日心情
    开心
    2019-7-20 09:11
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    30

    主题

    104

    帖子

    0

    高级会员

    Rank: 4

    积分
    642
    最后登录
    2019-12-2
    发表于 2019-8-7 17:31:58 | 显示全部楼层 |阅读模式

    PM2.5/PM10传感器是串口接口,通信协议处理简单。协议处理如下图所示,传感器0.8~1.2s之间会主动发送7个字节数据,数据格式为:0xAA(头),PM2.5H,PM2.5L,PM10H,PM10L,checkdata,oxff(尾)。不需要主机去获取,传感器有个使能接口,高电平使能,低电平关闭。

    1. void HLPM025K3_Init(void){
    2.            
    3.       uint32_t Fdiv;
    4.                          LPC_SC->PCONP|=(1<<24);//打开串口2功率外设
    5.                         LPC_PINCON->PINSEL0 |= (1<<20);  //设置P0.10 串口功能管脚                     
    6.                         LPC_PINCON->PINSEL0 |= (1<<22);   //设置P0.11 串口功能管脚                  
    7.                         LPC_UART2->LCR = 0x83;            // 8 bits, 无校验, 1 个停止位
    8.                         Fdiv =  (25000000/16)/ 9600 ; // 设置波特, Fpclk: 18MHz
    9.                         LPC_UART2->DLM = Fdiv/256;                                                                                             
    10.                         LPC_UART2->DLL = (Fdiv%256)+1;
    11.                         LPC_UART2->LCR = 0x03;   //  锁定波特率
    12.                         LPC_UART2->FCR = 0x07;    //使能TX与 RX 并初始化FIFO. */
    13.             LPC_UART2->IER = 0x01; //使能接收中断
    14.             NVIC_EnableIRQ(UART2_IRQn);//使能中断

    15.         
    16. }
    复制代码
    1. //协议数据处理
    2. void get_data(void){
    3.         
    4.         uint16_t PM25=0,PM10=0;
    5.           if(data_length>6){
    6.         if((rx_buffer[0] == 0xAA)&&(rx_buffer[6] == 0xFF))//判断头和尾是否为0XAA,0XFF
    7.     {
    8.        //判断校验值  checkdata=PM2.5H+PM2.5L+PM10H+PM10L
    9.       if(rx_buffer[5] == ((rx_buffer[1] + rx_buffer[2] + rx_buffer[3] + rx_buffer[4])&0xFF))
    10.       {
    11.        PM25=((rx_buffer[1]<<8) | rx_buffer[2]);  
    12.                               
    13.        PM10=((rx_buffer[3]<<8) | rx_buffer[4]);  
    14.                                 PM25_show(PM25,PM10);
    15.                           Clear();//清空缓冲
    16.                                 
    17.                   }
    18.                 }        
    19.         
    20.          

    21.     }

    22. }
    复制代码




    944100328.jpg
    【12】LPC1768_PM2_5PM10显示.rar (112.24 KB, 下载次数: 4)
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    379

    帖子

    0

    高级会员

    Rank: 4

    积分
    805
    最后登录
    2020-9-5
    发表于 2019-8-8 11:01:15 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    379

    帖子

    0

    高级会员

    Rank: 4

    积分
    805
    最后登录
    2020-9-5
    发表于 2019-8-16 14:15:09 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    379

    帖子

    0

    高级会员

    Rank: 4

    积分
    805
    最后登录
    2020-9-5
    发表于 2019-9-17 11:41:56 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 23:57 , Processed in 0.090525 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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