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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6098|回復: 7
收起左側

1602LCD顯示GY-30光強數值

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

使用道具 舉報

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

使用道具 舉報

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

現在LCD可以顯示,但是數據顯示為00000,光強度模塊沒有起到應有的作用,麻煩你看一下
  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];                                   //接收數據緩沖區
  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)    //寫答應信號
  56. {
  57.      sda=ack;                     //寫應答信號
  58.          scl=1;                                 //拉高時鐘線
  59.          delay_us();
  60.          scl=0;
  61.          delay_us();
  62. }
  63. bit get_respons() //接受答應信號
  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總線發送一個字節數據
  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總線接收一個字節數據
  87. {
  88.   uchar j;
  89.   uchar k=0;
  90.   sda=1;       //此時并不知道sda的狀態,說以應該釋放總線
  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;讀取的數據都存在最低位
  97.          scl=0;                   //為下一次更好讀數據,scl拉低
  98.          delay_us();
  99.   }
  100.   return k;
  101. }
  102. void write_add(uchar date)
  103. {
  104.          BH1750_start();
  105.          send_byte(0x46);  //ADD接地,地址默認為0x46
  106.          send_byte(date);   
  107.          BH1750_stop();
  108. }
  109. void read_BH1750(void)         //連續讀出BH1750內部數據
  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的接口設置在P0口
  153.          delay_us();
  154.          lcden=1;
  155.          delay_us();
  156.          lcden=0;
  157. }
  158. void lcd_writebyte(uchar byte)//寫入數據
  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)//設置顯示坐標
  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();       //連續讀出數據,存儲在BUF中
  215.     s=buffer[0];
  216.     s=(s<<8)+buffer[1];//合成數據,即光照數據
  217.    
  218.     result=(float)s/1.2;

  219.     chaizi(result);         //計算數據和顯示
  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'); ////顯示數單位
  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. }
復制代碼
回復

使用道具 舉報

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

使用道具 舉報

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

你們這個搞好了嗎,能發個程序給我不
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一码二码三码在线 | 不卡在线视频 | 一区二区视频在线 | 欧美成人精品欧美一级 | 国产大片一区 | 中文字幕国产高清 | 欧美精品91 | 97综合在线 | 成人在线视频网站 | 精品亚洲一区二区三区 | 精品国产免费一区二区三区演员表 | 酒色成人网 | 免费在线看a| 欧美一区二区三区视频在线 | 色欧美综合 | h视频在线观看免费 | 久久精品视频网站 | 欧美一区二区三区在线观看 | 欧美黄色大片在线观看 | 成人欧美一区二区三区视频xxx | 中文二区 | 日韩成人在线视频 | 亚洲日韩中文字幕一区 | 四虎免费视频 | 91亚洲精品在线 | 99热在线观看精品 | 高清人人天天夜夜曰狠狠狠狠 | 国产精品一区二区无线 | 黄a网站 | 国产精品久久久久久久久久久久久 | 做a视频在线观看 | 亚洲情综合五月天 | 亚洲欧洲精品一区 | 免费精品 | 欧美视频在线播放 | 蜜桃一区| 日韩高清电影 | 欧美xxxx黑人又粗又长 | 精品视频免费在线 | 日韩视频免费看 | 久久久精品影院 |