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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

使用單片機+bh1750FVI光強傳感控制燈的開關程序

[復制鏈接]
跳轉到指定樓層
樓主
給GY-30數字光強測量傳感器寫了一個驅動,根據IIC通信協議和GY-30的數據手冊編寫,期間一個問題纏繞我許久:每次接收完數據時,主機向從機發送一個ACK,很必要,要不然測出的數據不準確。我把測出的數據顯示在了LCD1602上,并且可以根據光強值來控制燈的開關。后續我會推出控制燈的亮度的設計。數據手冊和代碼獻上。


單片機源程序如下:
  1. #include "lcd.h"
  2. #include "BH1750FVI.h"

  3. uchar brach[] = {"Lighty Intensity"};
  4. uchar str[] = {"Lx"};
  5. uint dat;
  6. float Light_intensity = 0.0f;
  7. uchar Wr, Qr, Br, Sr, Gr;       //光強值的萬位,千位,百位,十位,個位
  8. //uchar respond =0;                                //IIC調試用

  9. sbit Light = P2^2;

  10. void delay_ms(unsigned int k)
  11. {
  12.         unsigned int i, j;
  13.         for(i = 0; i < k; i++)
  14.         {
  15.                  for(j = 0; j < 121; j++);
  16.         }
  17. }

  18. void Sys_Init(void)
  19. {
  20.         Light = 1;
  21.         LcdInit();
  22.         BH1750_Init();
  23. }

  24. void Set_BH1750(void)
  25. {
  26.         WriteData_to_BH1750(0x01);
  27. //        respond = c;
  28.         WriteData_to_BH1750(0x10);  //設置為高分辨率模式
  29. //        respond        += 0x30;
  30.         delay_ms(180);
  31. }
  32. void datapros(uint Light_intensity)
  33. {
  34.         Wr = Light_intensity / 10000;
  35.         Wr = Wr + 0x30;
  36.         Qr = Light_intensity % 10000 / 1000;
  37.         Qr = Qr + 0x30;
  38.         Br = Light_intensity % 1000 / 100;
  39.         Br = Br + 0x30;
  40.         Sr = Light_intensity % 100 / 10;
  41.         Sr = Sr + 0x30;
  42.         Gr = Light_intensity % 10;
  43.         Gr = Gr + 0x30;       
  44. }
  45. void main(void)
  46. {
  47.         Sys_Init();
  48.         while(1)
  49.         {
  50.                  LcdShowStr(0,0,brach);
  51.                 Set_BH1750();
  52. //                DisplayOneChar(12,1,respond);   IIC調試用
  53.                 RecvData_f_BH1750();          //連續讀數據
  54.                 dat = buff[0];
  55.                 dat = (dat << 8) | buff[1];

  56.                 Light_intensity = (float)dat / 1.2;
  57.                 datapros(Light_intensity);    //數據處理
  58.                 DisplayOneChar(3,1,Wr);
  59.                 DisplayOneChar(4,1,Qr);
  60.                 DisplayOneChar(5,1,Br);
  61.                 DisplayOneChar(6,1,Sr);
  62.                 DisplayOneChar(7,1,Gr);

  63.                 LcdShowStr(9,1,str);

  64.                 if(Light_intensity <= 20)
  65.                         Light = 0;
  66.                 else
  67.                         Light = 1;
  68.         }
  69. }
復制代碼

所有資料51hei提供下載:
數字光強測量計.rar (40.75 KB, 下載次數: 28)
bh1750FVI-中文數據手冊.pdf (1.5 MB, 下載次數: 14)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:523178 發表于 2020-5-10 20:24 | 只看該作者
實際測試中出現了失誤,最大值只測到54612lx,究其原因是換算公式中:Lighty_intensity = (float)dat / 1.2;
回復

使用道具 舉報

板凳
ID:523178 發表于 2020-5-10 20:25 | 只看該作者
將1.2 改為1.0即可
回復

使用道具 舉報

地板
ID:523178 發表于 2020-5-10 20:26 | 只看該作者
實際測試中出現了錯誤,最大值為65535,但只能測到54612lx,究其原因是換算公式有問題:Lighty_intensity = (float)dat / 1.2; 將1.2改為1.0或者刪除即可。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品毛片av一区 | 少妇一级淫片aaaaaaaaa | 手机看片在线播放 | 亚洲一区国产精品 | 99精品久久久 | 国产精品免费一区二区三区四区 | 91色视频在线 | 国产一区二区三区在线 | 91在线免费视频 | 九九久久精品 | 欧美精品一区二区三区四区 在线 | 久久久久久免费毛片精品 | 亚洲一级毛片 | 久久一区 | 亚洲深夜福利 | 久久一区视频 | 国产激情视频网址 | 亚洲精品久久久一区二区三区 | 在线播放国产一区二区三区 | 久久国产精品久久国产精品 | 亚洲天堂久久 | 国产免费一区二区 | 久久这里只有精品首页 | 欧美在线视频免费 | 国产成人精品高清久久 | 男人天堂99 | 免费久久久久久 | 91色网站| 国产精品久久久久久久久 | 国产精品毛片久久久久久久 | 91精品国产91久久久久游泳池 | 伊人免费在线观看 | 人人干人人爽 | 午夜小视频免费观看 | 日韩在线综合网 | 国产第二页 | 亚洲福利一区 | 久久久久久免费毛片精品 | 日韩国产精品一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 在线中文字幕国产 |