找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7194|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

為什么LCD1602的數(shù)字時鐘顯示不出來 大神們

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80172 發(fā)表于 2015-5-21 20:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這是程序#include<reg51.h>#define LCD_data P0
sbit RS=P2^0;
sbit RW=P2^1;
sbit LCDE=P2^2;
unsigned char m,miao,fen=12,shi=10;
unsigned char line1[16]={"  BEIJING TIME  "};
unsigned char line2[16]={"15-5-22  :  :  "};
unsigned char line3[16]={"Study LCD1602-)"};
unsigned char line4[16]={"Design by DWJ"};
unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9'};
void delay(unsigned int t)
{
  unsigned int i,j;
  for(i=t;i>0;i--)
   for(j=200;j>0;j--);
   }
void wr_com(unsigned char comm)
{
   LCDE=0;
   RS=0;
   RW=0;
   LCDE=1;
   LCD_data=comm;
   LCDE=0;
   }
void wr_data(unsigned char dat)
{
    LCDE=0;
        RW=0;
        RS=1;
        LCDE=1;
        LCD_data=dat;
        LCDE=0;
        }
unsigned char rd_bf(void)
{
unsigned char bflag;
LCDE=0;
RS=0;
RW=1;
LCDE=1;
bflag=LCD_data&0x80;
LCDE=0;
return(bflag);}
void Init_1602(void)
{
  wr_com(0x38);
  delay(10);
  wr_com(0x01);
  delay(10);
  wr_com(0x06);
  delay(10);
  wr_com(0x38);
  delay(10);
  wr_com(0x0c);
}
void display_1602(void)
{
  unsigned char i;
  wr_com(0x80);
  delay(1);
  for(i=0;i<16;i++)
  {wr_data(line1[i]);
  delay(1);
  while(rd_bf());}
  wr_com(0xc0);
  for(i=0;i<16;i++)
  {wr_data(line2[i]);
  delay(1);
  while(rd_bf());}
  }
  void main()
  {   TMOD=0x01;
      TH0=0x3c;
          TL0=0x0B0;
          EA=1;ET0=1;TR0=0;
        Init_1602();
        while(1)
{ line2[15]=tab[miao%10];line2[14]=tab[miao/10];
   line2[12]=tab[fen%10];line2[11]=tab[fen/10];
   line2[9]=tab[shi%10];line2[8]=tab[shi/10];
   delay(5);
   display_1602();}}
   void t0(void) interrupt 1
   {
        TH0=0x3c;
        TL0=0x0B0;
        m++;
        if(m==20)
        { m=0;
          miao=miao+1;
          if(miao==60){miao=0;fen=fen+1;}
          if(fen==60){fen=0;shi=shi+1;}
          if(shi==24){shi=0;}
          }
          }

QQ截圖20150521201751.png (6.87 KB, 下載次數(shù): 130)

QQ截圖20150521201751.png

QQ截圖20150521201758.png (3.19 KB, 下載次數(shù): 115)

QQ截圖20150521201758.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:80407 發(fā)表于 2015-5-21 22:35 | 只看該作者
同問!
回復(fù)

使用道具 舉報

板凳
ID:69240 發(fā)表于 2015-5-22 10:50 | 只看該作者
我自己是焊了個LCD1602的時鐘,就是不想看代碼,代碼風(fēng)格不一樣,很腦大的。我把我的LCD1602.c貼出來,宋老師的風(fēng)格,功能模塊化,好查錯,你對比分析一下吧,這個.c是一定沒問題的。

#include<reg52.h>
#define lcdDB P0
sbit lcdRS = P1^0;
sbit lcdRW = P1^1;
sbit lcdE = P1^5;

void lcdready()     //探忙
{
  unsigned char sta;
        lcdDB = 0xFF;
        lcdRS = 0;
        lcdRW = 1;
        do{
                lcdE = 1;
                sta = lcdDB;
                lcdE = 0;
        }while(sta & 0x80);
}

void lcdwritecmd(unsigned char cmd)      //寫入命令
{
  lcdready();
        lcdRS = 0;
        lcdRW = 0;
        lcdDB = cmd;
        lcdE = 1;
        lcdE = 0;
}

void lcdwritedat(unsigned char dat)      //寫入數(shù)據(jù)
{
  lcdready();
        lcdRS = 1;
        lcdRW = 0;
        lcdDB = dat;
        lcdE = 1;
        lcdE = 0;
}

void lcdsetaddr(unsigned char x, unsigned char y)      //設(shè)置顯示位置
{
  unsigned char addr;
        if(y == 0)
                addr = 0x00 + x;
        else
                addr = 0x40 + x;
        lcdwritecmd(addr | 0x80);
}

void lcdshowstr(unsigned char x, unsigned char y, unsigned char *str)     //顯示內(nèi)容
{
  lcdsetaddr(x, y);
  while(*str != '\0')
        {
          lcdwritedat(*str++);
        }               
}

/***********************************************************
void lcdareaclear(unsigned char x, unsigned char y, unsigned char len)    //局部清除
{
  lcdsetaddr(x, y);
        while(len--)
        {
          lcdwritedat(' ');
        }
}

void lcdfullclear()     //整屏清除
{
  lcdwritecmd(0x01);
}
**********************************************************************/

void lcdgbss(unsigned char x, unsigned char y, bit gb)     //光標(biāo)閃爍:1開0關(guān)
{
        if(gb == 1)
                lcdwritecmd(0x0F);
        else
                lcdwritecmd(0x0C);
        lcdsetaddr(x, y);
}

void initlcd()        //初始化
{
  lcdwritecmd(0x38);
        lcdwritecmd(0x0C);
        lcdwritecmd(0x06);
        lcdwritecmd(0x01);       
}




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:76853 發(fā)表于 2015-5-24 10:42 | 只看該作者
TR0=0,未進(jìn)入中斷函數(shù)

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:80172 發(fā)表于 2015-5-24 21:09 | 只看該作者
wanglu071912 發(fā)表于 2015-5-24 10:42
TR0=0,未進(jìn)入中斷函數(shù)

對哦 謝謝哈
回復(fù)

使用道具 舉報

6#
ID:78515 發(fā)表于 2015-5-25 09:38 | 只看該作者
寫數(shù)據(jù)之前要查看LCD1602忙嗎,你程序沒有的

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

7#
ID:138194 發(fā)表于 2016-9-29 15:51 | 只看該作者
為什么要探忙,能解釋下嗎
回復(fù)

使用道具 舉報

8#
ID:140642 發(fā)表于 2016-9-29 16:56 | 只看該作者
對于任何外設(shè)訪問都要探忙,但是好像跟你這個顯示的沒關(guān)系,你不能把程序模塊化了嗎,寫的很亂,到最后自己都不好改。
回復(fù)

使用道具 舉報

9#
ID:19568 發(fā)表于 2017-5-6 23:16 | 只看該作者
初始化很重要
回復(fù)

使用道具 舉報

10#
ID:197554 發(fā)表于 2017-5-6 23:42 來自觸屏版 | 只看該作者
你的延時太多了  不用探忙的
回復(fù)

使用道具 舉報

11#
ID:197560 發(fā)表于 2017-5-6 23:49 | 只看該作者

TR0=0,未進(jìn)入中斷函數(shù)
回復(fù)

使用道具 舉報

12#
ID:196174 發(fā)表于 2017-5-7 00:16 | 只看該作者
我寫的程序也是顯示亂碼。。。。。
回復(fù)

使用道具 舉報

13#
ID:129350 發(fā)表于 2017-5-7 08:28 | 只看該作者
TR0=0,未進(jìn)入中斷函數(shù)
回復(fù)

使用道具 舉報

14#
ID:197635 發(fā)表于 2017-5-7 11:06 | 只看該作者
你看看你的接口順序?qū)?/td>
回復(fù)

使用道具 舉報

15#
ID:197635 發(fā)表于 2017-5-7 11:06 | 只看該作者
同問求大佬茲磁
回復(fù)

使用道具 舉報

16#
ID:111634 發(fā)表于 2017-5-7 11:34 | 只看該作者
本帖最后由 zl2168 于 2017-5-7 14:43 編輯

實例91  具有校正功能的時鐘1302(LCD1602顯示)
先Proteus仿真,確認(rèn)有效。
實例91 帶校正時鐘1302(LCD1602顯示).rar (52.68 KB, 下載次數(shù): 19)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計實例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,書中電路和程序設(shè)計有詳細(xì)說明,程序語句條條有注解。
仿真電路和Hex文件能在清華出版社網(wǎng)站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。


回復(fù)

使用道具 舉報

17#
ID:197655 發(fā)表于 2017-5-7 11:44 | 只看該作者
跪求,感覺好難!
回復(fù)

使用道具 舉報

18#
ID:116078 發(fā)表于 2017-5-7 12:27 | 只看該作者
其實不用查忙的,延時就行,忙這個條件有點苛刻
回復(fù)

使用道具 舉報

19#
ID:116078 發(fā)表于 2017-5-7 12:28 | 只看該作者
仿真是不用查忙的,實物中需要。因為仿真中單片機(jī)速度沒有1602反應(yīng)快
回復(fù)

使用道具 舉報

20#
ID:116078 發(fā)表于 2017-5-7 12:29 | 只看該作者
仿真不用查忙
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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