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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2952|回復: 3
收起左側

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

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

單片機源程序如下:
  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)

評分

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

查看全部評分

回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区二区三区在线 | 99热电影| 国产高清精品一区二区三区 | 日本黄色大片免费 | 国产 欧美 日韩 一区 | 欧美一区二区三区视频 | 毛片一区二区三区 | 国产精品久久久久久久 | 国产成人在线播放 | 国产一区不卡 | 久久999 | 久久青青 | 综合二区 | 中文在线www | 国产不卡一区在线观看 | 伊人久操 | 中文字幕av一区二区三区 | 天天射美女| 噜久寡妇噜噜久久寡妇 | 亚洲午夜精品久久久久久app | 91在线网站| 欧美日韩综合一区 | 国产高清视频在线观看 | 又爽又黄axxx片免费观看 | 国产69精品久久99不卡免费版 | 一区二区三区视频在线观看 | 狠狠亚洲 | 日韩视频在线观看 | 欧美一级大片 | 国产精品久久av | 日日夜夜天天 | 精品视频一二区 | 老头搡老女人毛片视频在线看 | 欧美精品成人一区二区三区四区 | 亚洲精品乱码久久久久久久久 | 国产精品久久久久一区二区三区 | 国产综合久久久久久鬼色 | 亚洲vs天堂 | 999久久久精品 | 99精品欧美一区二区蜜桃免费 | 成人av免费看 |