欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 為什么LCD1602的數字時鐘顯示不出來 大神們 [打印本頁]

作者: 不會玩    時間: 2015-5-21 20:21
標題: 為什么LCD1602的數字時鐘顯示不出來 大神們
這是程序#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, 下載次數: 130)

QQ截圖20150521201751.png

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

QQ截圖20150521201758.png

作者: 13682060295    時間: 2015-5-21 22:35
同問!
作者: sglf0201    時間: 2015-5-22 10:50
我自己是焊了個LCD1602的時鐘,就是不想看代碼,代碼風格不一樣,很腦大的。我把我的LCD1602.c貼出來,宋老師的風格,功能模塊化,好查錯,你對比分析一下吧,這個.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)      //寫入數據
{
  lcdready();
        lcdRS = 1;
        lcdRW = 0;
        lcdDB = dat;
        lcdE = 1;
        lcdE = 0;
}

void lcdsetaddr(unsigned char x, unsigned char y)      //設置顯示位置
{
  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)     //顯示內容
{
  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)     //光標閃爍:1開0關
{
        if(gb == 1)
                lcdwritecmd(0x0F);
        else
                lcdwritecmd(0x0C);
        lcdsetaddr(x, y);
}

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





作者: wanglu071912    時間: 2015-5-24 10:42
TR0=0,未進入中斷函數
作者: 不會玩    時間: 2015-5-24 21:09
wanglu071912 發表于 2015-5-24 10:42
TR0=0,未進入中斷函數

對哦 謝謝哈
作者: 安陽市新世紀    時間: 2015-5-25 09:38
寫數據之前要查看LCD1602忙嗎,你程序沒有的
作者: 龔紅    時間: 2016-9-29 15:51
為什么要探忙,能解釋下嗎

作者: zhujiales    時間: 2016-9-29 16:56
對于任何外設訪問都要探忙,但是好像跟你這個顯示的沒關系,你不能把程序模塊化了嗎,寫的很亂,到最后自己都不好改。
作者: yulinyong    時間: 2017-5-6 23:16
初始化很重要
作者: a135587    時間: 2017-5-6 23:42
你的延時太多了  不用探忙的
作者: zhangjiayue    時間: 2017-5-6 23:49

TR0=0,未進入中斷函數
作者: 1311638554    時間: 2017-5-7 00:16
我寫的程序也是顯示亂碼。。。。。
作者: 1131710634    時間: 2017-5-7 08:28
TR0=0,未進入中斷函數
作者: Ghroth    時間: 2017-5-7 11:06
你看看你的接口順序對嗎
作者: Ghroth    時間: 2017-5-7 11:06
同問求大佬茲磁
作者: zl2168    時間: 2017-5-7 11:34
本帖最后由 zl2168 于 2017-5-7 14:43 編輯

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

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



作者: ljm126    時間: 2017-5-7 11:44
跪求,感覺好難!
作者: 1573104943    時間: 2017-5-7 12:27
其實不用查忙的,延時就行,忙這個條件有點苛刻
作者: 1573104943    時間: 2017-5-7 12:28
仿真是不用查忙的,實物中需要。因為仿真中單片機速度沒有1602反應快
作者: 1573104943    時間: 2017-5-7 12:29
仿真不用查忙




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1