wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 28048|回復: 24
打印 上一主題 下一主題
收起左側(cè)

為什么1602液晶屏上顯示不出來?什么叫8位轉(zhuǎn)4位?

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:72462 發(fā)表于 2015-1-30 00:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下是我認真對照郭天祥的視頻來寫的!
但就是顯示不出來!!!
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LCD1602_E=P2^7; //使能
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;//低電平時寫指令,高電平時寫數(shù)據(jù)
/*延時函數(shù)*/
void delay_ms(uint xms)
{
uint i,j;
for(i=xms;i>0;i++)
{
  for(j=110;j>0;j--)
  {
   ;
  }
}
}
/*指令子函數(shù)*/
void write_com(uchar com)
{
LCD1602_E=0;
LCD1602_RS=0;//低電平時寫指令
LCD1602_RW=0;//選擇寫入
P0=com;
delay_ms(5);
LCD1602_E=1;//變高電平
delay_ms(5);
LCD1602_E=0;//接受指令完成
}
/*數(shù)據(jù)子函數(shù)*/
void write_data(uchar dat)
{
LCD1602_E=0;
LCD1602_RS=1;//高電平時寫數(shù)據(jù)
LCD1602_RW=0;//選擇寫入
P0=dat;
delay_ms(5);
LCD1602_E=1;//變高電平
delay_ms(5);
LCD1602_E=0;//接受數(shù)據(jù)完成
}
/*初始化子函數(shù)*/
void init()
{
LCD1602_E=0;//使能信號賦低電平,轉(zhuǎn)變高電平時可以接受(數(shù)據(jù))或(指令)
write_com(0x38);//指令 初始化液晶
write_com(0x0f);//指令 光標及閃爍
write_com(0x06);//指令
write_com(0x01);//指令 清屏
write_com(0x80);//指令 數(shù)據(jù)指針初始化  
}
/*主函數(shù)*/
void main()
{
init();
write_data('1');
while(1);
}

為什么1602液晶屏上顯示不出來?還有,我看了例程,例程里有一個8位總線轉(zhuǎn)4位總線,表示不懂,求各路大神詳細解答。一定要詳細解答!!!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:57234 發(fā)表于 2015-1-30 01:43 來自觸屏版 | 只看該作者
我建議你先把光盤里面的hex文件下載進去看看能不能顯示,如果不能顯示的話那就是硬件有問題了。1602一共有兩種接線的方式,一種是使用八個io作為數(shù)據(jù)口,另外一種是使用四個io作為數(shù)據(jù)口。至于八位轉(zhuǎn)四位我覺得很有可能他就是用四位io作為數(shù)據(jù)口來顯示的。我也不太懂,看看能不能幫到你
回復

使用道具 舉報

板凳
ID:71843 發(fā)表于 2015-1-30 09:42 | 只看該作者
我用的就是郭天祥的,你試試這個,我在實驗板上試過了,你的程序有明顯錯誤,我的讓你參考,你在好好檢查一下自己的程序。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num,num1,flay;
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void write_com(uchar com)
{
        lcdrs=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void write_data(uchar date)
{
        lcdrs=1;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;       
}
void init()
{
        dula=0;
        wela=0;
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}
void main()
{
        init();
        while(1)
        {               
                        write_com(0x80);
                        write_data('~');
                        delay(5);
        }
}
回復

使用道具 舉報

地板
ID:72462 發(fā)表于 2015-1-30 12:40 | 只看該作者
dengdaimc 發(fā)表于 2015-1-30 09:42
我用的就是郭天祥的,你試試這個,我在實驗板上試過了,你的程序有明顯錯誤,我的讓你參考,你在好好檢查一 ...

我知道你的這個,我的硬件上是自己插線的,但就是不行
回復

使用道具 舉報

5#
ID:72462 發(fā)表于 2015-1-30 12:47 | 只看該作者
xiaoou 發(fā)表于 2015-1-30 01:43
我建議你先把光盤里面的hex文件下載進去看看能不能顯示,如果不能顯示的話那就是硬件有問題了。1602一共有 ...

光盤里的hex文件可以,但是硬件接口一般都是差不多啊,光盤里的代碼
#include"lcd.h"

lcd.c
/*******************************************************************************
* 函 數(shù) 名         : Lcd1602_Delay1ms
* 函數(shù)功能                   : 延時函數(shù),延時1ms
* 輸    入         : c
* 輸    出         : 無
* 說    名         : 該函數(shù)是在12MHZ晶振下,12分頻單片機的延時。
*******************************************************************************/

void Lcd1602_Delay1ms(uint c)   //誤差 0us
{
    uchar a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}

/*******************************************************************************
* 函 數(shù) 名         : LcdWriteCom
* 函數(shù)功能                   : 向LCD寫入一個字節(jié)的命令
* 輸    入         : com
* 輸    出         : 無
*******************************************************************************/
#ifndef         LCD1602_4PINS         //當沒有定義這個LCD1602_4PINS時
void LcdWriteCom(uchar com)          //寫入命令
{
        LCD1602_E = 0;     //使能
        LCD1602_RS = 0;           //選擇發(fā)送命令
        LCD1602_RW = 0;           //選擇寫入
       
        LCD1602_DATAPINS = com;     //放入命令
        Lcd1602_Delay1ms(1);                //等待數(shù)據(jù)穩(wěn)定

        LCD1602_E = 1;                  //寫入時序
        Lcd1602_Delay1ms(5);          //保持時間
        LCD1602_E = 0;
}
#else
void LcdWriteCom(uchar com)          //寫入命令
{
        LCD1602_E = 0;         //使能清零
        LCD1602_RS = 0;         //選擇寫入命令
        LCD1602_RW = 0;         //選擇寫入

        LCD1602_DATAPINS = com;        //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

//        Lcd1602_Delay1ms(1);
        LCD1602_DATAPINS = com << 4; //發(fā)送低四位
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數(shù) 名         : LcdWriteData
* 函數(shù)功能                   : 向LCD寫入一個字節(jié)的數(shù)據(jù)
* 輸    入         : dat
* 輸    出         : 無
*******************************************************************************/                  
#ifndef         LCD1602_4PINS                  
void LcdWriteData(uchar dat)                        //寫入數(shù)據(jù)
{
        LCD1602_E = 0;        //使能清零
        LCD1602_RS = 1;        //選擇輸入數(shù)據(jù)
        LCD1602_RW = 0;        //選擇寫入

        LCD1602_DATAPINS = dat; //寫入數(shù)據(jù)
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;   //寫入時序
        Lcd1602_Delay1ms(5);   //保持時間
        LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat)                        //寫入數(shù)據(jù)
{
        LCD1602_E = 0;          //使能清零
        LCD1602_RS = 1;          //選擇寫入數(shù)據(jù)
        LCD1602_RW = 0;          //選擇寫入

        LCD1602_DATAPINS = dat;        //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

        LCD1602_DATAPINS = dat << 4; //寫入低四位
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數(shù) 名       : LcdInit()
* 函數(shù)功能                 : 初始化LCD屏
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/                  
#ifndef                LCD1602_4PINS
void LcdInit()                                                  //LCD初始化子程序
{
        LcdWriteCom(0x38);  //開顯示
        LcdWriteCom(0x0c);  //開顯示不顯示光標
        LcdWriteCom(0x06);  //寫一個指針加1
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //設置數(shù)據(jù)指針起點
}
#else
void LcdInit()                                                  //LCD初始化子程序
{
        LcdWriteCom(0x32);         //將8位總線轉(zhuǎn)為4位總線
        LcdWriteCom(0x28);         //在四位線下的初始化
        LcdWriteCom(0x0c);  //開顯示不顯示光標
        LcdWriteCom(0x06);  //寫一個指針加1
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //設置數(shù)據(jù)指針起點
}
#endif


(這個是lcd.h)
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
當使用的是4位數(shù)據(jù)傳輸?shù)臅r候定義,
使用8位取消這個定義
**********************************/
#define LCD1602_4PINS

/**********************************
包含頭文件
**********************************/
#include<reg51.h>

//---重定義關(guān)鍵詞---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint
#define uint unsigned int
#endif

/**********************************
PIN口定義
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;

/**********************************
函數(shù)聲明
**********************************/
/*在51單片機12MHZ時鐘下的延時函數(shù)*/
void Lcd1602_Delay1ms(uint c);   //誤差 0us
/*LCD1602寫入8位命令子函數(shù)*/
void LcdWriteCom(uchar com);
/*LCD1602寫入8位數(shù)據(jù)子函數(shù)*/       
void LcdWriteData(uchar dat)        ;
/*LCD1602初始化子程序*/               
void LcdInit();                                                  

#endif



接下來是主函數(shù)
/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 實 驗 名                 : LCD1602顯示試驗
* 實驗說明       : LCD1602顯示Pechin Science
* 連接方式       : 見連接圖
* 注    意                 :
*******************************************************************************/
#include<reg51.h>       
#include"lcd.h"

//--定義全局變量--//
unsigned char PuZh[]=" Pechin Science ";

/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void main(void)
{
        unsigned char i;
        LcdInit();
        for(i=0;i<16;i++)
        {
                LcdWriteData(PuZh);       
        }
        while(1)
        {
        }                               
}

求指點!!!
回復

使用道具 舉報

6#
ID:72462 發(fā)表于 2015-1-30 12:47 | 只看該作者
xiaoou 發(fā)表于 2015-1-30 01:43
我建議你先把光盤里面的hex文件下載進去看看能不能顯示,如果不能顯示的話那就是硬件有問題了。1602一共有 ...

光盤里的hex文件可以,但是硬件接口一般都是差不多啊,光盤里的代碼
#include"lcd.h"

lcd.c
/*******************************************************************************
* 函 數(shù) 名         : Lcd1602_Delay1ms
* 函數(shù)功能                   : 延時函數(shù),延時1ms
* 輸    入         : c
* 輸    出         : 無
* 說    名         : 該函數(shù)是在12MHZ晶振下,12分頻單片機的延時。
*******************************************************************************/

void Lcd1602_Delay1ms(uint c)   //誤差 0us
{
    uchar a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}

/*******************************************************************************
* 函 數(shù) 名         : LcdWriteCom
* 函數(shù)功能                   : 向LCD寫入一個字節(jié)的命令
* 輸    入         : com
* 輸    出         : 無
*******************************************************************************/
#ifndef         LCD1602_4PINS         //當沒有定義這個LCD1602_4PINS時
void LcdWriteCom(uchar com)          //寫入命令
{
        LCD1602_E = 0;     //使能
        LCD1602_RS = 0;           //選擇發(fā)送命令
        LCD1602_RW = 0;           //選擇寫入
       
        LCD1602_DATAPINS = com;     //放入命令
        Lcd1602_Delay1ms(1);                //等待數(shù)據(jù)穩(wěn)定

        LCD1602_E = 1;                  //寫入時序
        Lcd1602_Delay1ms(5);          //保持時間
        LCD1602_E = 0;
}
#else
void LcdWriteCom(uchar com)          //寫入命令
{
        LCD1602_E = 0;         //使能清零
        LCD1602_RS = 0;         //選擇寫入命令
        LCD1602_RW = 0;         //選擇寫入

        LCD1602_DATAPINS = com;        //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

//        Lcd1602_Delay1ms(1);
        LCD1602_DATAPINS = com << 4; //發(fā)送低四位
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數(shù) 名         : LcdWriteData
* 函數(shù)功能                   : 向LCD寫入一個字節(jié)的數(shù)據(jù)
* 輸    入         : dat
* 輸    出         : 無
*******************************************************************************/                  
#ifndef         LCD1602_4PINS                  
void LcdWriteData(uchar dat)                        //寫入數(shù)據(jù)
{
        LCD1602_E = 0;        //使能清零
        LCD1602_RS = 1;        //選擇輸入數(shù)據(jù)
        LCD1602_RW = 0;        //選擇寫入

        LCD1602_DATAPINS = dat; //寫入數(shù)據(jù)
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;   //寫入時序
        Lcd1602_Delay1ms(5);   //保持時間
        LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat)                        //寫入數(shù)據(jù)
{
        LCD1602_E = 0;          //使能清零
        LCD1602_RS = 1;          //選擇寫入數(shù)據(jù)
        LCD1602_RW = 0;          //選擇寫入

        LCD1602_DATAPINS = dat;        //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;

        LCD1602_DATAPINS = dat << 4; //寫入低四位
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //寫入時序
        Lcd1602_Delay1ms(5);
        LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數(shù) 名       : LcdInit()
* 函數(shù)功能                 : 初始化LCD屏
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/                  
#ifndef                LCD1602_4PINS
void LcdInit()                                                  //LCD初始化子程序
{
        LcdWriteCom(0x38);  //開顯示
        LcdWriteCom(0x0c);  //開顯示不顯示光標
        LcdWriteCom(0x06);  //寫一個指針加1
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //設置數(shù)據(jù)指針起點
}
#else
void LcdInit()                                                  //LCD初始化子程序
{
        LcdWriteCom(0x32);         //將8位總線轉(zhuǎn)為4位總線
        LcdWriteCom(0x28);         //在四位線下的初始化
        LcdWriteCom(0x0c);  //開顯示不顯示光標
        LcdWriteCom(0x06);  //寫一個指針加1
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //設置數(shù)據(jù)指針起點
}
#endif


(這個是lcd.h)
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
當使用的是4位數(shù)據(jù)傳輸?shù)臅r候定義,
使用8位取消這個定義
**********************************/
#define LCD1602_4PINS

/**********************************
包含頭文件
**********************************/
#include<reg51.h>

//---重定義關(guān)鍵詞---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint
#define uint unsigned int
#endif

/**********************************
PIN口定義
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;

/**********************************
函數(shù)聲明
**********************************/
/*在51單片機12MHZ時鐘下的延時函數(shù)*/
void Lcd1602_Delay1ms(uint c);   //誤差 0us
/*LCD1602寫入8位命令子函數(shù)*/
void LcdWriteCom(uchar com);
/*LCD1602寫入8位數(shù)據(jù)子函數(shù)*/       
void LcdWriteData(uchar dat)        ;
/*LCD1602初始化子程序*/               
void LcdInit();                                                  

#endif



接下來是主函數(shù)
/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 實 驗 名                 : LCD1602顯示試驗
* 實驗說明       : LCD1602顯示Pechin Science
* 連接方式       : 見連接圖
* 注    意                 :
*******************************************************************************/
#include<reg51.h>       
#include"lcd.h"

//--定義全局變量--//
unsigned char PuZh[]=" Pechin Science ";

/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void main(void)
{
        unsigned char i;
        LcdInit();
        for(i=0;i<16;i++)
        {
                LcdWriteData(PuZh);       
        }
        while(1)
        {
        }                               
}

求指點!!!
回復

使用道具 舉報

7#
ID:72751 發(fā)表于 2015-1-30 16:55 | 只看該作者
本帖最后由 wind02072107 于 2015-1-30 16:57 編輯

void main() { init();
  write_cmd(字符顯示位置);
  write_data('1');
  while(1);  }
回復

使用道具 舉報

8#
ID:72462 發(fā)表于 2015-2-2 16:11 | 只看該作者
wind02072107 發(fā)表于 2015-1-30 16:55
void main() { init();
  write_cmd(字符顯示位置);
  write_data('1');

好吧,謝謝了,不過還是沒有解決我的問題
回復

使用道具 舉報

9#
ID:73362 發(fā)表于 2015-2-6 22:57 | 只看該作者
樓主,你要顯示的東西你沒有寫吧,例如加上uchar code table[]=" 2015-01-21 Wed";
uchar code table1[]="    15:00:00";然后把初始化函數(shù)里加個變量uchar num;然后從write_com(0x38);改為
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80);
        delay(20);
        write_com(0x80);
        for(num=0;num<15;num++)
        {
                write_date(table[num]);
                delay(5);
        }
       
        write_com(0xc0);
        for(num=0;num<12;num++)
        {
                write_date(table1[num]);
                delay(5);
        }
主函數(shù)的write date('1')去掉
你再試試,感覺你這么寫沒把要表達的數(shù)字1的位寫入程序
回復

使用道具 舉報

10#
ID:72462 發(fā)表于 2015-2-12 21:01 | 只看該作者
Devil 發(fā)表于 2015-2-6 22:57
樓主,你要顯示的東西你沒有寫吧,例如加上uchar code table[]=" 2015-01-21 Wed";
uchar code table1[]=" ...

你的代碼試過了,不行,

但是光盤里的hex文件可以,但是硬件接口一般都是差不多啊,光盤里的代碼如下,你能給我解釋解釋么?

#include"lcd.h"
lcd.c
/*******************************************************************************
* 函 數(shù) 名         : Lcd1602_Delay1ms
* 函數(shù)功能                   : 延時函數(shù),延時1ms
* 輸    入         : c
* 輸    出         : 無
* 說    名         : 該函數(shù)是在12MHZ晶振下,12分頻單片機的延時。
*******************************************************************************/

void Lcd1602_Delay1ms(uint c)   //誤差 0us
{
     uchar a,b;
         for (; c>0; c--)
         {
                  for (b=199;b>0;b--)
                  {
                           for(a=1;a>0;a--);
                  }      
         }
            
}

/*******************************************************************************
* 函 數(shù) 名         : LcdWriteCom
* 函數(shù)功能                   : 向LCD寫入一個字節(jié)的命令
* 輸    入         : com
* 輸    出         : 無
*******************************************************************************/
#ifndef         LCD1602_4PINS         //當沒有定義這個LCD1602_4PINS時
void LcdWriteCom(uchar com)          //寫入命令
{
         LCD1602_E = 0;     //使能
         LCD1602_RS = 0;           //選擇發(fā)送命令
         LCD1602_RW = 0;           //選擇寫入
         
        LCD1602_DATAPINS = com;     //放入命令
         Lcd1602_Delay1ms(1);                //等待數(shù)據(jù)穩(wěn)定

        LCD1602_E = 1;                  //寫入時序
         Lcd1602_Delay1ms(5);          //保持時間
         LCD1602_E = 0;
}
#else
void LcdWriteCom(uchar com)          //寫入命令
{
         LCD1602_E = 0;         //使能清零
         LCD1602_RS = 0;         //選擇寫入命令
         LCD1602_RW = 0;         //選擇寫入

        LCD1602_DATAPINS = com;        //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
         Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //寫入時序
         Lcd1602_Delay1ms(5);
         LCD1602_E = 0;

//        Lcd1602_Delay1ms(1);
         LCD1602_DATAPINS = com << 4; //發(fā)送低四位
         Lcd1602_Delay1ms(1);

        LCD1602_E = 1;         //寫入時序
         Lcd1602_Delay1ms(5);
         LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數(shù) 名         : LcdWriteData
* 函數(shù)功能                   : 向LCD寫入一個字節(jié)的數(shù)據(jù)
* 輸    入         : dat
* 輸    出         : 無
*******************************************************************************/                  
#ifndef         LCD1602_4PINS                  
void LcdWriteData(uchar dat)                        //寫入數(shù)據(jù)
{
         LCD1602_E = 0;        //使能清零
         LCD1602_RS = 1;        //選擇輸入數(shù)據(jù)
         LCD1602_RW = 0;        //選擇寫入

        LCD1602_DATAPINS = dat; //寫入數(shù)據(jù)
         Lcd1602_Delay1ms(1);

        LCD1602_E = 1;   //寫入時序
         Lcd1602_Delay1ms(5);   //保持時間
         LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat)                        //寫入數(shù)據(jù)
{
         LCD1602_E = 0;          //使能清零
         LCD1602_RS = 1;          //選擇寫入數(shù)據(jù)
         LCD1602_RW = 0;          //選擇寫入

        LCD1602_DATAPINS = dat;        //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
         Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //寫入時序
         Lcd1602_Delay1ms(5);
         LCD1602_E = 0;

        LCD1602_DATAPINS = dat << 4; //寫入低四位
         Lcd1602_Delay1ms(1);

        LCD1602_E = 1;          //寫入時序
         Lcd1602_Delay1ms(5);
         LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數(shù) 名       : LcdInit()
* 函數(shù)功能                 : 初始化LCD屏
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/                  
#ifndef                LCD1602_4PINS
void LcdInit()                                                  //LCD初始化子程序
{
         LcdWriteCom(0x38);  //開顯示
         LcdWriteCom(0x0c);  //開顯示不顯示光標
         LcdWriteCom(0x06);  //寫一個指針加1
         LcdWriteCom(0x01);  //清屏
         LcdWriteCom(0x80);  //設置數(shù)據(jù)指針起點
}
#else
void LcdInit()                                                  //LCD初始化子程序
{
         LcdWriteCom(0x32);         //將8位總線轉(zhuǎn)為4位總線
         LcdWriteCom(0x28);         //在四位線下的初始化
         LcdWriteCom(0x0c);  //開顯示不顯示光標
         LcdWriteCom(0x06);  //寫一個指針加1
         LcdWriteCom(0x01);  //清屏
         LcdWriteCom(0x80);  //設置數(shù)據(jù)指針起點
}
#endif


(這個是lcd.h)
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
當使用的是4位數(shù)據(jù)傳輸?shù)臅r候定義,
使用8位取消這個定義
**********************************/
#define LCD1602_4PINS

/**********************************
包含頭文件
**********************************/
#include<reg51.h>

//---重定義關(guān)鍵詞---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint
#define uint unsigned int
#endif

/**********************************
PIN口定義
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;

/**********************************
函數(shù)聲明
**********************************/
/*在51單片機12MHZ時鐘下的延時函數(shù)*/
void Lcd1602_Delay1ms(uint c);   //誤差 0us
/*LCD1602寫入8位命令子函數(shù)*/
void LcdWriteCom(uchar com);
/*LCD1602寫入8位數(shù)據(jù)子函數(shù)*/        
void LcdWriteData(uchar dat)        ;
/*LCD1602初始化子程序*/               
void LcdInit();                                                  

#endif



接下來是主函數(shù)
/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 實 驗 名                 : LCD1602顯示試驗
* 實驗說明       : LCD1602顯示Pechin Science
* 連接方式       : 見連接圖
* 注    意                 :
*******************************************************************************/
#include<reg51.h>        
#include"lcd.h"

//--定義全局變量--//
unsigned char PuZh[]=" Pechin Science ";

/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void main(void)
{
         unsigned char i;
         LcdInit();
         for(i=0;i<16;i++)
         {
                 LcdWriteData(PuZh);        
        }
         while(1)
         {
         }                                
}

求指點!!!
回復

使用道具 舉報

11#
ID:73752 發(fā)表于 2015-2-19 23:54 | 只看該作者
你的延時函數(shù)寫錯了,這一句
for(i=xms;i>0;i++),把i++變成i--就行了。
回復

使用道具 舉報

12#
ID:75466 發(fā)表于 2015-6-28 11:11 | 只看該作者
  會不會你用的液晶不一樣???????????

評分

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

查看全部評分

回復

使用道具 舉報

13#
ID:84178 發(fā)表于 2015-6-28 20:42 | 只看該作者
我這有現(xiàn)成的HEX文件,需要的話可以交流
回復

使用道具 舉報

14#
ID:86179 發(fā)表于 2015-7-19 19:29 | 只看該作者
樓主問題解決了嗎?  我碰到跟你一樣的問題,,求解決方法、、
回復

使用道具 舉報

15#
ID:72462 發(fā)表于 2015-8-12 13:25 | 只看該作者
花花草草 發(fā)表于 2015-7-19 19:29
樓主問題解決了嗎?  我碰到跟你一樣的問題,,求解決方法、、

樓主的問題沒有解決,但是普中的板子是4位轉(zhuǎn)8位的LCD1602,驅(qū)動程序跟別的不一樣,普中的例程里有驅(qū)動程序,就用他的吧
回復

使用道具 舉報

16#
ID:92912 發(fā)表于 2015-10-19 14:08 | 只看該作者
普中用的那個LCD1602是4位的。如果1602是8位的,那么數(shù)據(jù)或者命令用一條指令一次就可以寫入如LCD1602_DATAPINS = 0x80;如果1602是4位的,就需要分兩次寫入數(shù)據(jù)或者命令:先把一個數(shù)據(jù)如0x80(10000000)的高四位(1000)通過D4-D7寫入,就是程序里的這句:LCD1602_DATAPINS = dat;        但只是將0x80的前半部分數(shù)據(jù)(1000)寫入了LCD,后半部分(0000)還沒寫,由于數(shù)據(jù)只能通過LCD的D4-D7的高四位寫入,所以需要將數(shù)據(jù)左移四位,將低四位的數(shù)據(jù)移動到高四位上(高四位由原來的1000變成0000),就是程序里的這句:LCD1602_DATAPINS = dat << 4。然后再寫入。
回復

使用道具 舉報

17#
ID:72462 發(fā)表于 2015-10-22 14:32 | 只看該作者
小冬0606 發(fā)表于 2015-10-19 14:08
普中用的那個LCD1602是4位的。如果1602是8位的,那么數(shù)據(jù)或者命令用一條指令一次就可以寫入如LCD1602_DATAP ...

謝謝啦!
回復

使用道具 舉報

18#
ID:159270 發(fā)表于 2017-1-11 02:03 | 只看該作者
結(jié)果怎樣?
回復

使用道具 舉報

19#
ID:374263 發(fā)表于 2018-7-18 17:05 | 只看該作者
我也遇到了這個問題,最后發(fā)現(xiàn)我的LCD板子是四位的,而不是八位的,所以只能用四位總線去配置,建議你檢查下你的LCD是八位的還是四位的
回復

使用道具 舉報

20#
ID:57570 發(fā)表于 2019-2-10 01:30 來自觸屏版 | 只看該作者
一個是串口一個是并口
回復

使用道具 舉報

21#
ID:619259 發(fā)表于 2020-3-11 22:21 | 只看該作者
先玩八位,如果端口夠用,就用八位吧。理解了再玩四位
回復

使用道具 舉報

22#
ID:86450 發(fā)表于 2020-3-13 08:26 | 只看該作者
結(jié)果怎樣?
回復

使用道具 舉報

23#
ID:739727 發(fā)表于 2020-5-6 11:55 | 只看該作者
14樓說的對,目測是延時那里死循環(huán)了,下次你可以debug,這樣找出問題比較快
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
免费人成年激情视频在线观看 | 桃花岛成人影院| 国产1区二区| 亚洲影院一区二区三区| 艳妇乳肉亭妇荡乳av| 国产一区二区三区在线免费| 成人h猎奇视频网站| 在线a欧美视频| 日本韩国欧美国产| 久久午夜羞羞影院免费观看| 羞羞答答国产精品www一本| 麻豆视频一区| 88xx成人免费观看视频库 | 一本色道久久综合| 免费成人蒂法| 中文一区一区三区高中清不卡免费 | 欧美日韩激情美女| 久久久99久久| 九色porny丨国产精品| 爽成人777777婷婷| 日韩在线精品强乱中文字幕| sis001亚洲原创区| 人操人视频在线观看| 公交车强行挺进岳身体| 亚洲综合小说网| 国产有码在线观看| 日韩一区二区视频在线| www.97视频| 国产精品扒开腿做爽爽| 亚洲天堂av一区二区三区| 国产主播自拍av| 日韩欧美三级电影| 国产a一区二区| 国产精品黄色影片导航在线观看| 久久国产精品久久久久久| 亚洲国产一区自拍| 91精品麻豆日日躁夜夜躁| 欧美午夜女人视频在线| 国产成人一二片| 综合久久2023| 手机在线免费av| 韩国三级在线观看久| 毛片视频免费观看| blackedav金发美女大战黑人| 久久精品视频在线观看榴莲视频| 好吊色一区二区| 亚洲在线视频播放| 精品成人久久久| 欧美国产综合视频| 欧美在线免费观看| 欧美日韩xxx| 麻豆国产va免费精品高清在线| 日韩精品在线观看视频| 亚洲福利影片在线| 亚洲第一福利网站| 日韩av一区在线| 亚洲成人激情在线| 亚洲成人精品视频在线观看| 精品国产一区二区三区忘忧草| 777久久久精品| 欧美一区二区三区不卡| 欧美精品三级日韩久久| 欧美一卡二卡在线| 日韩三级高清在线| 精品久久久影院| 精品国产一区二区三区不卡| 日韩欧美亚洲国产另类| 日韩一区二区三区电影| 亚洲成人三级在线| 亚洲欧美日韩国产精品| 亚洲欧美日韩国产成人| 久久亚洲精品网站| 国模gogo一区二区大胆私拍 | 国产精品久久久毛片| 欧美少妇性生活视频| 你懂的av在线| 精品久久久久久久免费人妻| 欧美黄色性生活| 中文字幕 欧美日韩| 色诱av手机版| 精品人妻一区二区三区视频| 免费看裸体网站| 日韩欧美综合视频| 日韩精品视频免费看| 成年人视频免费| 国产高清在线免费| 在线天堂中文www视软件| 最近中文字幕大全中文字幕免费 | 亚洲精品aaa| 大奶在线精品| 丝袜连裤袜欧美激情日韩| 日韩在线中文| 国产欧美丝祙| 国产精品一区二区果冻传媒| 成人av先锋影音| 国产精品伦一区| 污片在线观看一区二区| 欧美亚洲自拍偷拍| 日韩精品久久久久| 欧美激情视频免费观看| 国产日韩中文在线| 欧美在线播放一区二区| 一区二区三区精品99久久| 亚洲免费电影在线观看| 久久久久久国产精品久久| 国产精品久久久久久久久久小说| 国产精品国模大尺度私拍| 日韩电影天堂视频一区二区| 欧美在线观看www| 最新国产精品自拍| 懂色av蜜臀av粉嫩av永久| 国产视频91在线| 亚洲女人18毛片水真多| 黄色免费网站观看| 国产精品一级伦理| 电影久久久久久| 欧美一级精品| 蜜桃av一区二区三区| 国产日韩欧美精品在线| 色伊人久久综合中文字幕| 精品网站999www| 日本精品一区二区三区在线播放视频 | 免费在线一级视频| 色偷偷色偷偷色偷偷在线视频| 日韩成人18| 伊人成人在线| 99国产欧美久久久精品| 亚州成人在线电影| 亚洲欧美国产精品专区久久| 国产精品视频26uuu| 亚洲国产一区二区三区在线播| 亚洲视频在线观看一区二区三区| 国产毛片欧美毛片久久久| 91视频久久久| 中国jizz妇女jizz妇女| 欧美18xxxxx| 懂色aⅴ精品一区二区三区| 久久精品高清| 成人国产精品免费观看| 黑人精品xxx一区| 中文亚洲视频在线| 91蜜桃网站免费观看| 久在线观看视频| 国新精品乱码一区二区三区18| 中国成人在线视频| 中文字幕第六页| 久久久久久久久影院| 激情综合丝袜美女一区二区| 好男人社区在线视频| av手机在线观看| 天天超碰亚洲| 久久色.com| 欧美白人最猛性xxxxx69交| 国产91露脸中文字幕在线| 手机看片日韩国产| 美女100%无挡| 蜜桃久久一区二区三区| 免费观看v片在线观看| jizz免费一区二区三区| 中文国产一区| 亚洲国产视频一区二区| www.亚洲免费视频| 神马影院我不卡| 在线观看日韩精品视频| 亚洲乱色熟女一区二区三区| eeuss一区| 欧美影院视频| 国产一区二区剧情av在线| 在线免费视频一区二区| 96精品视频在线| 精品国产一区二区三区无码| 青花影视在线观看免费高清| 久草国产视频| 久久久久黄久久免费漫画| 亚洲老妇激情| 亚洲精品一二三区| 欧美劲爆第一页| 狠狠97人人婷婷五月| 日韩不卡视频在线| av免费播放| 在线视频亚洲欧美中文| 福利91精品一区二区三区| 欧美大片一区二区三区| 成人一区二区在线| 精品夜夜澡人妻无码av| 欧美另类videos黑人极品| 日本在线视频网址| 亚洲人妖在线| 欧美在线|欧美| 91色在线视频| 一本色道综合久久欧美日韩精品| 特黄视频在线观看| 黄色成人影院| 亚洲视频www| 欧美亚洲国产怡红院影院| 91九色国产在线| 国产精品无码专区| 亚洲线精品久久一区二区三区| 国产天堂在线播放视频| 天堂精品中文字幕在线| 在线成人av网站| 精品网站在线看| 99成人在线观看| 天天看天天操| 欧美成人一区在线观看| 亚洲欧洲日本在线| 欧美资源在线观看| 911亚洲精选| 在线观看免费的av| 嫩草影院一区二区| 久久99亚洲网美利坚合众国| 性感少妇一区| 亚洲国产天堂久久综合| 91麻豆天美传媒在线| aaa在线视频| 日韩偷拍自拍| 136国产福利精品导航网址| 欧美日韩国产电影| 欧美精品欧美精品| 国产亚洲精品av| 在线观影网站| 中文字幕一区二区三区乱码图片| 色综合亚洲欧洲| 久久99精品国产一区二区三区| 亚洲成人生活片| 992tv在线观看免费进| 亚洲人成免费网站| 欧美日本一区二区在线观看| 日韩久久在线| www.com亚洲| av在线播放国产| 国产麻豆精品在线| 久热精品视频在线| 巨乳女教师的诱惑| 尤物视频网址| 日韩激情毛片| 色综合天天视频在线观看| 六十路精品视频| 男人天堂2024| 怡红院在线观看| 不卡的av在线播放| 78色国产精品| 亚洲久久久久久久| 特级全黄一级毛片| 亚洲精品激情| 亚洲欧美日韩国产中文专区| 9久久婷婷国产综合精品性色| 91ts人妖另类精品系列| 特黄特色大片免费视频大全| 欧美日韩三级| 亚洲精品国产综合区久久久久久久| 无码粉嫩虎白一线天在线观看 | 成人观看网址| 99久久婷婷国产精品综合| 97视频在线观看免费高清完整版在线观看| 国产精久久久久| 成人xxx免费视频播放| 欧美日本国产| 亚洲欧美国产精品| 日本中文字幕精品| 91国内视频| 一本色道久久精品| 久久精品小视频| 国产精品福利导航| 美臀av在线| 紧缚捆绑精品一区二区| 26uuu另类亚洲欧美日本一| 一二三四在线观看视频| 你懂的免费在线观看视频网站| 国产一区二区在线视频| 97超级碰碰碰久久久| 操她视频在线观看| 免费黄网在线观看| 久久综合999| 99久久99久久| 中文字幕理论片| 97久久中文字幕| 欧美亚一区二区| 亚洲中文字幕无码不卡电影| 免费91视频| 韩国欧美一区| 欧美精品激情视频| 精品少妇theporn| 午夜欧美激情| 天天射综合影视| 久久久久久久久久久99| 日本色七七影院| 国产精品日韩| 欧美怡春院一区二区三区| 欧美日韩成人免费观看| 免费不卡av| 亚洲自拍偷拍麻豆| 菠萝蜜视频在线观看入口| 国产精选在线视频拍拍拍| 永久亚洲成a人片777777| 久久亚洲电影天堂| 久久亚洲av午夜福利精品一区| 天堂中文在线播放| 婷婷综合另类小说色区| 丰满少妇久久久| 成人免费淫片免费观看| 久久99最新地址| 成人字幕网zmw| 国产夫妻在线观看| 亚洲制服欧美另类| 亚洲一区二区精品| 91免费在线看片| 欧美性xxx| 欧美日本在线一区| 国产大学生视频| 黄网站在线免费看| 天天射综合影视| 亚洲成人福利在线| 理论视频在线| 亚洲精品日日夜夜| 久久人妻精品白浆国产 | 国产成一区二区| 国产精品无码久久av| 亚洲va久久久噜噜噜久久| 国产一区二区三区欧美| 性少妇xx生活| av免费在线一区| 日韩三级视频在线观看| www亚洲色图| 暖暖成人免费视频| 精品少妇一区二区三区日产乱码 | 国产美女网站在线观看| 91人人网站| 国产亚洲va综合人人澡精品| 日本福利视频在线观看| 日本18视频网站| 国产精品视频麻豆| 国产女大学生av| 欧美一区二区少妇| 一个色综合网站| 成人综合久久网| 成人区精品一区二区不卡| 欧美性猛交xxxx黑人| 成人做爰www看视频软件| 黑人玩欧美人三根一起进| 欧美日韩免费视频| 日韩女同一区二区三区 | 伊人开心综合网| 91香蕉视频导航| 日日夜夜精品一区| 精品视频在线看| 五月激情四射婷婷| 电影中文字幕一区二区| 最近2019中文字幕大全第二页 | 熟女俱乐部一区二区视频在线| 在线观看特色大片免费视频| 日韩精品一区二区三区在线观看| 国产中文字幕久久| 9l亚洲国产成人精品一区二三| 久久成人免费视频| www.精品视频| 一本综合久久| 日本不卡在线播放| y4480在线8影院| 欧美性猛交xxxx免费看| 丰满少妇高潮一区二区| 99亚洲乱人伦aⅴ精品| 2024亚洲男人天堂| 欧美性活一级视频| 成人av在线资源网站| 久久精品国产精品亚洲色婷婷| 成年人视频在线看| 日韩视频一区在线观看| 久草视频手机在线观看| 国产亚洲欧美日韩在线观看一区二区 | 国产欧美日韩不卡免费| 少妇网站在线观看| 亚洲啊v在线| 日日狠狠久久偷偷四色综合免费| 国产免费的av| 日本不卡的三区四区五区| 91在线观看免费网站| 2023国产在线观看| 国产偷国产偷精品高清尤物| wwwwwxxxx日本| 高清亚洲高清| 久久久久久亚洲精品不卡| 先锋资源中文字幕| 91视频免费播放| 精品国产午夜福利在线观看| 狠狠久久综合| 1769国内精品视频在线播放| 国产娇喘精品一区二区三区图片| 久久免费电影网| www.啪啪.com| 香蕉久久99| 精品日本一区二区| 天堂网www中文在线| 欧美一级日韩不卡播放免费| 国产女主播喷水视频在线观看| 久久一区亚洲| 亚洲 高清 成人 动漫| 中文字幕色婷婷在线视频| 久久久久久久亚洲精品| 日本黄色小网站|