|
給GY-30數(shù)字光強測量傳感器寫了一個驅(qū)動,根據(jù)IIC通信協(xié)議和GY-30的數(shù)據(jù)手冊編寫,期間一個問題纏繞我許久:每次接收完數(shù)據(jù)時,主機向從機發(fā)送一個ACK,很必要,要不然測出的數(shù)據(jù)不準(zhǔn)確。我把測出的數(shù)據(jù)顯示在了LCD1602上,并且可以根據(jù)光強值來控制燈的開關(guān)。后續(xù)我會推出控制燈的亮度的設(shè)計。數(shù)據(jù)手冊和代碼獻上。
IMG20200504174044.jpg (4.08 MB, 下載次數(shù): 40)
下載附件
2020-5-4 18:00 上傳
單片機源程序如下:
- #include "lcd.h"
- #include "BH1750FVI.h"
- uchar brach[] = {"Lighty Intensity"};
- uchar str[] = {"Lx"};
- uint dat;
- float Light_intensity = 0.0f;
- uchar Wr, Qr, Br, Sr, Gr; //光強值的萬位,千位,百位,十位,個位
- //uchar respond =0; //IIC調(diào)試用
- sbit Light = P2^2;
- void delay_ms(unsigned int k)
- {
- unsigned int i, j;
- for(i = 0; i < k; i++)
- {
- for(j = 0; j < 121; j++);
- }
- }
- void Sys_Init(void)
- {
- Light = 1;
- LcdInit();
- BH1750_Init();
- }
- void Set_BH1750(void)
- {
- WriteData_to_BH1750(0x01);
- // respond = c;
- WriteData_to_BH1750(0x10); //設(shè)置為高分辨率模式
- // respond += 0x30;
- delay_ms(180);
- }
- void datapros(uint Light_intensity)
- {
- Wr = Light_intensity / 10000;
- Wr = Wr + 0x30;
- Qr = Light_intensity % 10000 / 1000;
- Qr = Qr + 0x30;
- Br = Light_intensity % 1000 / 100;
- Br = Br + 0x30;
- Sr = Light_intensity % 100 / 10;
- Sr = Sr + 0x30;
- Gr = Light_intensity % 10;
- Gr = Gr + 0x30;
- }
- void main(void)
- {
- Sys_Init();
- while(1)
- {
- LcdShowStr(0,0,brach);
- Set_BH1750();
- // DisplayOneChar(12,1,respond); IIC調(diào)試用
- RecvData_f_BH1750(); //連續(xù)讀數(shù)據(jù)
- dat = buff[0];
- dat = (dat << 8) | buff[1];
- Light_intensity = (float)dat / 1.2;
- datapros(Light_intensity); //數(shù)據(jù)處理
- DisplayOneChar(3,1,Wr);
- DisplayOneChar(4,1,Qr);
- DisplayOneChar(5,1,Br);
- DisplayOneChar(6,1,Sr);
- DisplayOneChar(7,1,Gr);
- LcdShowStr(9,1,str);
- if(Light_intensity <= 20)
- Light = 0;
- else
- Light = 1;
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
數(shù)字光強測量計.rar
(40.75 KB, 下載次數(shù): 28)
2020-5-4 18:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
bh1750FVI-中文數(shù)據(jù)手冊.pdf
(1.5 MB, 下載次數(shù): 14)
2020-5-4 18:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|