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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5925|回復(fù): 7
收起左側(cè)

1602LCD顯示GY-30光強數(shù)值

[復(fù)制鏈接]
ID:183779 發(fā)表于 2017-5-2 08:12 | 顯示全部樓層 |閱讀模式
買回來的GY-30用商家提供的程序燒錄進去單片機,單片機的LCD無任何顯示,我感覺是商家LCD程序的問題,請各位壇友幫忙看看,我提供了兩個程序一個是商家下載的,一個是Easy Board 51單片機自帶的LCD時鐘程序(可用)。
回復(fù)

使用道具 舉報

ID:82765 發(fā)表于 2017-5-2 18:00 | 顯示全部樓層
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

ID:183779 發(fā)表于 2017-5-2 19:52 | 顯示全部樓層
cjjcjj1 發(fā)表于 2017-5-2 18:00
你好!你的兩個程序呢?發(fā)上來幫你看看

現(xiàn)在LCD可以顯示,但是數(shù)據(jù)顯示為00000,光強度模塊沒有起到應(yīng)有的作用,麻煩你看一下
  1. #include<reg52.h>
  2. #include<math.h>
  3. #include<stdio.h>
  4. #include<intrins.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. sbit lcden=P2^4;
  8. sbit lcdrs=P2^5;
  9. sbit lcdwr=P2^6;
  10. sbit sda=P1^1;
  11. sbit scl=P1^0;
  12. uchar ge,shi,bai,qian,wan;           //顯示變量
  13. uchar buffer[8];                                   //接收數(shù)據(jù)緩沖區(qū)
  14. int s;                        //變量
  15. void chaizi(uint temp)     //拆字程序
  16. {
  17.         wan=temp/10000+0x30 ;
  18.     temp=temp%10000;   //取余運算
  19.         qian=temp/1000+0x30 ;
  20.     temp=temp%1000;    //取余運算
  21.     bai=temp/100+0x30;
  22.     temp=temp%100;     //取余運算
  23.     shi=temp/10+0x30;
  24.     temp=temp%10;      //取余運算
  25.     ge=temp+0x30;         
  26. }
  27. void delay_us()     //延時5us
  28. {;;}
  29. void delay_ms(uint t)     //延時t毫秒
  30. {
  31.   uchar i,j;
  32.   for(i=0;i<t;i++)
  33.   {
  34.   for(j=0;j<121;j++)
  35.   {;}};
  36. }

  37. /************I2C總線通訊************/
  38. void BH1750_start() //開始信號
  39. {
  40.     sda=1;
  41.         scl=1;
  42.         delay_us();
  43.         sda=0;
  44.         delay_us();
  45.         scl=0;
  46. }
  47. void BH1750_stop()                 //停止信號
  48. {
  49.         sda=0;
  50.         scl=1;
  51.         delay_us();
  52.         sda=1;
  53.         delay_us();
  54. }
  55. void send_respons(bit ack)    //寫答應(yīng)信號
  56. {
  57.      sda=ack;                     //寫應(yīng)答信號
  58.          scl=1;                                 //拉高時鐘線
  59.          delay_us();
  60.          scl=0;
  61.          delay_us();
  62. }
  63. bit get_respons() //接受答應(yīng)信號
  64. {
  65.      scl=1;
  66.          delay_us();
  67.          CY=sda;
  68.          scl=0;
  69.          delay_us();
  70.          return CY;
  71. }

  72. void send_byte(uchar date)    //向IIC總線發(fā)送一個字節(jié)數(shù)據(jù)
  73. {
  74.   uchar i;
  75.   for(i=0;i<8;i++)
  76.   {
  77.            date<<=1;
  78.          sda=CY;           //CY為PWS的最高位
  79.          scl=1;
  80.          delay_us();
  81.          scl=0;
  82.          delay_us();
  83.   }
  84.    get_respons();

  85. }
  86. uchar get_byte()  //從IIC總線接收一個字節(jié)數(shù)據(jù)
  87. {
  88.   uchar j;
  89.   uchar k=0;
  90.   sda=1;       //此時并不知道sda的狀態(tài),說以應(yīng)該釋放總線
  91.   for(j=0;j<8;j++)
  92.   {        
  93.      k<<=1;
  94.      scl=1;
  95.          delay_us();
  96.          k|=sda; //k左移一位,與sda位或;不管sda是0還是1;讀取的數(shù)據(jù)都存在最低位
  97.          scl=0;                   //為下一次更好讀數(shù)據(jù),scl拉低
  98.          delay_us();
  99.   }
  100.   return k;
  101. }
  102. void write_add(uchar date)
  103. {
  104.          BH1750_start();
  105.          send_byte(0x46);  //ADD接地,地址默認(rèn)為0x46
  106.          send_byte(date);   
  107.          BH1750_stop();
  108. }
  109. void read_BH1750(void)         //連續(xù)讀出BH1750內(nèi)部數(shù)據(jù)
  110. {
  111.      uchar i;
  112.          BH1750_start();
  113.          send_byte(0x46+1);
  114.          for(i=0;i<3;i++)
  115.          {
  116.              buffer[i]=get_byte();
  117.                  if(i == 3)                 
  118.                     {
  119.                          send_respons(1);
  120.                          }                 
  121.                  else
  122.                     {
  123.                      send_respons(0);
  124.                          }
  125.          }
  126.           BH1750_stop();
  127.             delay_ms(5);
  128. }
  129. void BH1750_init()
  130. {
  131.    write_add(0x01);
  132. }
  133. /************LCD顯示************/
  134. void wait_enable(void)
  135. {
  136.    P0=0xff;
  137.    lcdrs=0;
  138.    lcdwr=1;
  139.    delay_us();
  140.    lcden=1;
  141.     delay_us();
  142.    while(P0&0x80);
  143.    lcden=0;
  144. }
  145. void lcd_command(uchar command,uchar shuxin)//寫入指令
  146. {
  147.    if(shuxin)
  148.      wait_enable();
  149.      lcdrs=0;
  150.          lcdwr=0;
  151.          delay_us();
  152.          P0=command;//單片機上lcd的接口設(shè)置在P0口
  153.          delay_us();
  154.          lcden=1;
  155.          delay_us();
  156.          lcden=0;
  157. }
  158. void lcd_writebyte(uchar byte)//寫入數(shù)據(jù)
  159. {
  160.          wait_enable();
  161.          lcdrs=1;
  162.          lcdwr=0;
  163.          delay_us();
  164.          P0=byte;
  165.          delay_us();
  166.          lcden=1;
  167.      delay_us();
  168.          lcden=0;

  169. }
  170. /*void lcd_set_xy(uchar x,uchar y)//設(shè)置顯示坐標(biāo)
  171. {
  172.      uchar address;
  173.      if(y==0)       //判斷是是否為第一行
  174.         address=0x80+x;
  175.      else
  176.         address=0xc0+x;
  177.         lcd_command(address);
  178. }*/                                       
  179. void lcd_display(uchar x,uchar y,uchar h)     //lcd字符顯示
  180. {
  181.    y&=1;                                                
  182.    x&=15;                                                
  183.    if(y)x|=0x40;                                       
  184.    x|=0x80;                        
  185.     lcd_command(x,0);               
  186.     lcd_writebyte(h);
  187. }
  188. /*void lcd_clean()      //lcd清屏
  189. {
  190.      lcd_command(0x01);
  191.          delay_us();
  192. }*/
  193. void lcd1602_init()
  194. {
  195.          lcd_command(0x38,1);
  196.          lcd_command(0x08,1);
  197.          lcd_command(0x01,1);
  198.          lcd_command(0x06,1);
  199.          lcd_command(0x0c,1);
  200. }

  201. void main()
  202. {
  203.      
  204.      float result;
  205.          delay_ms(100);
  206.          
  207.          BH1750_init();        
  208.          lcd1602_init();
  209. while(1)
  210.      {
  211.          write_add(0x01);   
  212.      write_add(0x10);   

  213.      delay_ms(180);              //延時180ms
  214.     read_BH1750();       //連續(xù)讀出數(shù)據(jù),存儲在BUF中
  215.     s=buffer[0];
  216.     s=(s<<8)+buffer[1];//合成數(shù)據(jù),即光照數(shù)據(jù)
  217.    
  218.     result=(float)s/1.2;

  219.     chaizi(result);         //計算數(shù)據(jù)和顯示
  220.         lcd_display(0,0,'L');
  221.         lcd_display(1,0,'i');
  222.         lcd_display(2,0,'g');
  223.         lcd_display(3,0,'h');
  224.         lcd_display(4,0,'t');
  225.     lcd_display(5,0,':');
  226.    
  227.         lcd_display(7,0,wan);
  228.     lcd_display(8,0,qian);  
  229.     lcd_display(9,0,bai);
  230.     lcd_display(10,0,shi);
  231.         lcd_display(11,0,ge);

  232.         lcd_display(13,0,'l'); ////顯示數(shù)單位
  233.         lcd_display(14,0,'x');

  234.     lcd_display(0,1,'s');  
  235.     lcd_display(1,1,'u');
  236.         lcd_display(2,1,'n');
  237.         lcd_display(3,1,'>');
  238.         lcd_display(4,1,'2');
  239.         lcd_display(5,1,'0');

  240.         lcd_display(9,1,'m');
  241.         lcd_display(10,1,'o');
  242.         lcd_display(11,1,'o');
  243.         lcd_display(12,1,'n');
  244.     lcd_display(13,1,'<');
  245.         lcd_display(14,1,'2');
  246.         lcd_display(15,1,'0');      
  247.          }
  248. }
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:251922 發(fā)表于 2017-12-5 22:36 | 顯示全部樓層
你們搞好了嗎?
回復(fù)

使用道具 舉報

ID:251922 發(fā)表于 2017-12-5 22:41 | 顯示全部樓層
非黃騰達 發(fā)表于 2017-5-2 19:52
現(xiàn)在LCD可以顯示,但是數(shù)據(jù)顯示為00000,光強度模塊沒有起到應(yīng)有的作用,麻煩你看一下

你們這個搞好了嗎,能發(fā)個程序給我不
回復(fù)

使用道具 舉報

ID:351969 發(fā)表于 2018-10-30 19:45 | 顯示全部樓層
你的程序好了么i
回復(fù)

使用道具 舉報

ID:351969 發(fā)表于 2018-10-30 19:45 | 顯示全部樓層
程序搞好了么?我也遇到難得地方
回復(fù)

使用道具 舉報

ID:540270 發(fā)表于 2019-5-26 19:11 | 顯示全部樓層
樓主弄好了嗎,我也是一樣的問題啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久99久久99精品免视看婷婷 | 最新av中文字幕 | 国产在线视频一区二区 | 亚洲精品色| 亚洲一区二区在线播放 | 日本福利视频免费观看 | 91精品久久久久久久久久 | 国产视频日韩 | www.久久久久久久久 | 99爱在线视频| 中文字幕1区2区 | 久久久99精品免费观看 | 国产区精品在线观看 | 91av在线视频观看 | www.国产 | 国产欧美一区二区三区在线播放 | 午夜视频精品 | 久久久www成人免费无遮挡大片 | 欧美不卡一区二区三区 | 成人黄色在线观看 | 国产精品免费看 | 韩日视频在线观看 | 亚洲精品v| 在线欧美一区 | 国产精品欧美一区二区三区 | 在线男人天堂 | 中文字幕在线观看一区 | 国产91在线 | 中日 | 欧美精品一区在线 | 精品一区视频 | 亚洲国产精品一区二区久久 | 久久久久精 | 日本视频中文字幕 | 亚洲人精品午夜 | 操射视频 | 久久99蜜桃综合影院免费观看 | 欧美一级全黄 | 一级在线免费观看 | 精品国产乱码久久久久久丨区2区 | 欧美一级久久 | 麻豆视频在线免费观看 |