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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32單片機BH1750_OLED動態顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:651755 發表于 2022-3-27 17:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "bh1750.h"
  5. #include "oled.h"


  6. int main(void)
  7. {               
  8.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  9.         delay_init();                     //延時函數初始化         
  10.         uart_init(115200);         //串口初始化為115200
  11.         Light_Init();
  12.         bh_data_send(BHPowOn);   
  13.         bh_data_send(BHReset);
  14.         bh_data_send(BHModeH1); //選擇的是分辨率是4lx,測量時間是16ms的
  15.         delay_ms(100);
  16.          
  17.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  18. //        NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級         LED_Init();                             //LED端口初始化
  19. //        delay_ms(8000);
  20.                
  21.         OLED_Clear();
  22.         OLED_Init();                        //初始化OLED  
  23.   while(1)
  24.         {
  25. //                OLED_Clear();
  26.                 printf("%d \n",bh_data_read());
  27.                 OLED_SHOW_BH1750();                //OLED動態顯示BH1750光照數值

  28.         }
  29. }
復制代碼

  1. #include "delay.h"
  2. #include "bh1750.h"
  3. #include "oled.h"


  4. typedef   unsigned char BYTE;
  5. //BYTE    BUF[8];                         //接收數據緩存區   
  6. //iic接口初始化

  7. void Single_Write_BH1750(uchar REG_Address)
  8. {
  9.    IIC_Start();                  //起始信號
  10.    IIC_Send_Byte(BHAddWrite);   //發送設備地址+寫信號
  11.    IIC_Send_Byte(REG_Address);    //內部寄存器地址,
  12.   //  BH1750_SendByte(REG_data);       //內部寄存器數據,
  13.    IIC_Stop();                   //發送停止信號
  14. }

  15. void Light_Init(void)
  16. {
  17.         GPIO_InitTypeDef  GPIO_InitStructure;
  18.        

  19.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         //使能A端口時鐘
  20.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;         
  21.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  22.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
  23.         GPIO_Init(GPIOB, &GPIO_InitStructure);          //初始化GPIOB10,11
  24.         GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);       

  25.         Single_Write_BH1750(0x01);
  26. }


  27. /*************************************************************************************/
  28. void bh_data_send(u8 command)
  29. {
  30.     do{
  31.     IIC_Start();                      //iic起始信號
  32.     IIC_Send_Byte(BHAddWrite);       //發送器件地址
  33.     }while(IIC_Wait_Ack());           //等待從機應答
  34.     IIC_Send_Byte(command);          //發送指令
  35.     IIC_Wait_Ack();                   //等待從機應答
  36.     IIC_Stop();                       //iic停止信號
  37. }

  38. u16 bh_data_read(void)
  39. {
  40.         u16 buf;
  41.         IIC_Start();                       //iic起始信號
  42.         IIC_Send_Byte(BHAddRead);         //發送器件地址+讀標志位
  43.         IIC_Wait_Ack();                     //等待從機應答
  44.         buf=IIC_Read_Byte(1);              //讀取數據
  45.         buf=buf<<8;                        //讀取并保存高八位數據
  46.         buf+=0x00ff&IIC_Read_Byte(0);      //讀取并保存第八位數據
  47.         IIC_Stop();                        //發送停止信號
  48.         return buf;
  49. }

  50. void OLED_SHOW_BH1750(void)
  51. {
  52.                 OLED_ShowChar(0,0,'L',16);
  53.                 OLED_ShowChar(8,0,'U',16);
  54.                 OLED_ShowChar(18,0,'X',16);
  55.                 OLED_ShowChar(25,0,':',16);
  56.                
  57.                 if(bh_data_read() > 65200)
  58.                 {       
  59.                         OLED_ShowChar(32,0,'E',16);
  60.                         OLED_ShowChar(40,0,'R',16);
  61.                         OLED_ShowChar(48,0,'R',16);
  62.                         OLED_ShowChar(56,0,'O',16);
  63.                         OLED_ShowChar(64,0,'R',16);
  64.                         delay_ms(500);
  65.                         OLED_Clear();
  66.                 }
  67.                 else if(bh_data_read() > 10000 && bh_data_read() < 65200)       
  68.                 {       
  69.                         OLED_ShowNum(32,0,bh_data_read() % 100000 / 10000,1,16);
  70.                         OLED_ShowNum(40,0,bh_data_read() % 10000  / 1000 ,1,16);
  71.                         OLED_ShowNum(48,0,bh_data_read() % 1000   / 100  ,1,16);
  72.                         OLED_ShowNum(56,0,bh_data_read() % 100    / 10   ,1,16);
  73.                         OLED_ShowNum(64,0,bh_data_read() % 10            ,1,16);
  74.                 }
  75.                
  76.                 else if(bh_data_read() > 1000 && bh_data_read() < 10000)       
  77.                 {       
  78.                         OLED_ShowChar(32,0,' ',16);
  79.                         OLED_ShowNum(40,0,bh_data_read() % 10000  / 1000 ,1,16);
  80.                         OLED_ShowNum(48,0,bh_data_read() % 1000   / 100  ,1,16);
  81.                         OLED_ShowNum(56,0,bh_data_read() % 100    / 10   ,1,16);
  82.                         OLED_ShowNum(64,0,bh_data_read() % 10            ,1,16);
  83.                 }
  84.                 else if(bh_data_read() > 100 && bh_data_read() < 1000)       
  85.                 {       
  86.                         OLED_ShowChar(32,0,' ',16);
  87.                         OLED_ShowChar(40,0,' ',16);
  88.                         OLED_ShowNum(48,0,bh_data_read() % 1000   / 100  ,1,16);
  89.                         OLED_ShowNum(56,0,bh_data_read() % 100    / 10   ,1,16);
  90.                         OLED_ShowNum(64,0,bh_data_read() % 10            ,1,16);
  91.                 }
  92.                 else if(bh_data_read() > 10 && bh_data_read() < 100)       
  93.                 {       
  94.                         OLED_ShowChar(32,0,' ',16);
  95.                         OLED_ShowChar(40,0,' ',16);
  96.                         OLED_ShowChar(48,0,' ',16);
  97.                         OLED_ShowNum(56,0,bh_data_read() % 100    / 10   ,1,16);
  98.                         OLED_ShowNum(64,0,bh_data_read() % 10            ,1,16);
  99.                 }
  100.                 else if(bh_data_read()  < 10)       
  101.                 {       
  102.                         OLED_ShowChar(32,0,' ',16);
  103.                         OLED_ShowChar(40,0,' ',16);
  104.                         OLED_ShowChar(48,0,' ',16);
  105.                         OLED_ShowChar(56,0,' ',16);
  106.                         OLED_ShowNum(64,0,bh_data_read() % 10            ,1,16);
  107.                 }
  108. //                else break;
  109.                
  110.                
  111.                 delay_ms(100);
  112. }
復制代碼


Keil代碼下載: STM32_BH1750_OLED動態顯示.7z (192.77 KB, 下載次數: 48)

評分

參與人數 1黑幣 +10 收起 理由
admin + 10 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲精品美女久久久久久久久久 | 国产日韩欧美在线观看 | 男女免费观看在线爽爽爽视频 | 精品国产区 | 日韩黄色小视频 | 在线播放国产一区二区三区 | 国产精品视频偷伦精品视频 | 97日韩精品 | 久久99精品久久久久久噜噜 | 欧美日韩在线一区二区 | 欧美精品网站 | 一片毛片 | 人人99| 一区二区三区高清 | xxxxx免费视频 | 欧美精品一区在线发布 | 天天拍天天操 | 国产精品视频久久久 | 91久久久精品国产一区二区蜜臀 | 日本免费在线观看视频 | 亚洲一级淫片 | 日干夜干 | 欧美亚洲在线视频 | 一区二区中文字幕 | 免费日韩网站 | www天天操| 毛片.com | 九九精品久久久 | 精品国产免费人成在线观看 | 97成人免费| 欧美综合久久 | 天天干天天操天天看 | 精品国产乱码久久久久久图片 | 黄久久久 | 成人免费精品 | 91精品久久久久久久久99蜜臂 | 亚洲精品v日韩精品 | 久久高清免费视频 | 久久精品色欧美aⅴ一区二区 | 久久久久国产一区二区三区四区 | 国产精品久久久 |