找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 6048|回復(fù): 7
收起左側(cè)

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

[復(fù)制鏈接]
ID:183779 發(fā)表于 2017-5-2 08:12 | 顯示全部樓層 |閱讀模式
買回來(lái)的GY-30用商家提供的程序燒錄進(jìn)去單片機(jī),單片機(jī)的LCD無(wú)任何顯示,我感覺(jué)是商家LCD程序的問(wèn)題,請(qǐng)各位壇友幫忙看看,我提供了兩個(gè)程序一個(gè)是商家下載的,一個(gè)是Easy�。拢铮幔颍洹。担眴纹瑱C(jī)自帶的LCD時(shí)鐘程序(可用)。

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

現(xiàn)在LCD可以顯示,但是數(shù)據(jù)顯示為00000,光強(qiáng)度模塊沒(méi)有起到應(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;   //取余運(yùn)算
  19.         qian=temp/1000+0x30 ;
  20.     temp=temp%1000;    //取余運(yùn)算
  21.     bai=temp/100+0x30;
  22.     temp=temp%100;     //取余運(yùn)算
  23.     shi=temp/10+0x30;
  24.     temp=temp%10;      //取余運(yùn)算
  25.     ge=temp+0x30;         
  26. }
  27. void delay_us()     //延時(shí)5us
  28. {;;}
  29. void delay_ms(uint t)     //延時(shí)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() //開始信號(hào)
  39. {
  40.     sda=1;
  41.         scl=1;
  42.         delay_us();
  43.         sda=0;
  44.         delay_us();
  45.         scl=0;
  46. }
  47. void BH1750_stop()                 //停止信號(hào)
  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)信號(hào)
  56. {
  57.      sda=ack;                     //寫應(yīng)答信號(hào)
  58.          scl=1;                                 //拉高時(shí)鐘線
  59.          delay_us();
  60.          scl=0;
  61.          delay_us();
  62. }
  63. bit get_respons() //接受答應(yīng)信號(hào)
  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ā)送一個(gè)字節(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總線接收一個(gè)字節(jié)數(shù)據(jù)
  87. {
  88.   uchar j;
  89.   uchar k=0;
  90.   sda=1;       //此時(shí)并不知道sda的狀態(tài),說(shuō)以應(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;//單片機(jī)上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);              //延時(shí)180ms
  214.     read_BH1750();       //連續(xù)讀出數(shù)據(jù),存儲(chǔ)在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);         //計(jì)算數(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ù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表