1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: LCD1602問題,數據位用不同的IO口,屏幕不顯示 [打印本頁]

作者: 渴望壯大    時間: 2017-9-8 14:51
標題: LCD1602問題,數據位用不同的IO口,屏幕不顯示
一、下面是LCD1602在單片機上的IO口位置定義
#define   LCDEN      FP13   //使能位
#define   LCDRW     FP12
#define   LCDRS      FP54
#define   LCDDAT0   FP20  //數據位0 在io口P20上
#define   LCDDAT1   FP21  //數據位1 在io口P21上
#define   LCDDAT2   FP22  //數據位2 在io口P22上
#define   LCDDAT3   FP23  //數據位3 在io口P23上
#define   LCDDAT4   FP24  //數據位4 在io口P24上
#define   LCDDAT5   FP25  //數據位5 在io口P25上
#define   LCDDAT6   FP00  //數據位6 在io口P00上
#define   LCDDAT7   FP10  //數據位7 在io口P10上

二、下面是我的程序
void Read_state(void)
{       
        P2 = 0x3f;
        P0 = 0x01;
        P1 = 0x02;
        LCDRS = 0;
        LCDRW = 1;
        do
        {
                LCDEN = 1;
                LCDEN = 0;
        }
        while(LCDDAT7);
}
void Writer_Cmd(uchar cmd)
{
        Read_state();
        LCDRS = 0;
        LCDRW = 0;
        P2 = cmd & 0x3f;
        P0 = (cmd & 0x40) >> 6;
        P1 = (cmd & 0x80) >> 7;
        LCDEN = 1;
        LCDEN = 0;
}
void Writer_Dat(uchar dat)
{
        Read_state();
        LCDRS = 1;
        LCDRW = 0;
        P2 = dat & 0x3f;
        P0 = (dat & 0x40) >> 6;
        P1 = (dat & 0x80) >> 7;
        LCDEN = 1;
        LCDEN = 0;
}
void LCD_Init(void)
{
        Writer_Cmd(0x38);  
        Writer_Cmd(0x0f);  
        Writer_Cmd(0x01);  
        Writer_Cmd(0x06);  
        Writer_Cmd(0x80|0x06);  
}
void main(void)
{
        LCD_Init();
        Writer_Dat('a');
        while(1);
}



作者: wulin    時間: 2017-9-8 15:42
本帖最后由 wulin 于 2017-9-8 16:04 編輯

這是我在4*4矩陣鍵盤上用的異組端口組成的8位數據讀/寫程序,同樣適合驅動數碼管、液晶屏。你試試。另外你寫的讀/寫程序中要按照時序要求加入適當的延時,否則時序不符合要求也不能正常顯示。
sbit code0=P2^0;                //端口定義
sbit code1=P2^1;
sbit code2=P2^2;
sbit code3=P2^3;
sbit code4=P2^4;
sbit code5=P2^5;
sbit code6=P0^0;
sbit code7=P1^0;

void PX(unsigned char i)        //寫8位數據
{   
    code0=i&0x01;i>>=1;        
    code1=i&0x01;i>>=1;
    code2=i&0x01;i>>=1;
    code3=i&0x01;i>>=1;
    code4=i&0x01;i>>=1;
    code5=i&0x01;i>>=1;
    code6=i&0x01;i>>=1;
    code7=i&0x01;
}
unsigned char PD()                                //讀8位數據
{
        uchar i;
        i=code7;
        i=(i<<1)|code6;
        i=(i<<1)|code5;
        i=(i<<1)|code4;
        i=(i<<1)|code3;
        i=(i<<1)|code2;
        i=(i<<1)|code1;
        i=(i<<1)|code0;
        return i;
}
作者: 無名無姓    時間: 2017-9-9 11:36
每一個IO口置高,再置低,一步一步測試,確定IO口沒有錯。然后再按照規格書,對一對指令。
作者: 渴望壯大    時間: 2017-9-14 08:46
無名無姓 發表于 2017-9-9 11:36
每一個IO口置高,再置低,一步一步測試,確定IO口沒有錯。然后再按照規格書,對一對指令。

指令沒有錯啊,只是單片機不一樣,會不會是單片機指令周期和晶振頻率不一樣引起來的?
作者: 渴望壯大    時間: 2017-9-14 08:49
wulin 發表于 2017-9-8 15:42
這是我在4*4矩陣鍵盤上用的異組端口組成的8位數據讀/寫程序,同樣適合驅動數碼管、液晶屏。你試試。另外你 ...

那可能是時序問題,我當時用的51單片機可以,現在用的松翰的,然后移植過來,只是數據線不在同一IO口上,就不顯示
作者: dingruiye    時間: 2017-9-14 13:12
這種一般看下時序可以解決,還有就是注意IO口有沒有復用功能。
作者: mengzhixinheng    時間: 2017-9-14 16:51
        P2 = dat & 0x3f;
         P0 = (dat & 0x40) >> 6;
         P1 = (dat & 0x80) >> 7;
這個是在干什么?這款單片機支持位操作嗎?如果你是為了把其他口獨立出來
       P2 |= dat & 0x3f;
         P0| = (dat & 0x40) >> 6;
         P1 |= (dat & 0x80) >> 7;
不然其他口在這里被清零
作者: mengzhixinheng    時間: 2017-9-14 16:55
還有把忙檢測改成延時試試
作者: 渴望壯大    時間: 2017-9-18 16:27
mengzhixinheng 發表于 2017-9-14 16:51
P2 = dat & 0x3f;
         P0 = (dat & 0x40) >> 6;
         P1 = (dat & 0x80) >> 7;

這些IO口都用上了
作者: 渴望壯大    時間: 2017-9-18 16:28
mengzhixinheng 發表于 2017-9-14 16:55
還有把忙檢測改成延時試試

其他寫指令等等也要延時吧?
作者: xiayudhtfghy198    時間: 2024-1-16 15:44
P1=0X01,第一個串口,而不是0X02。
作者: 597329015    時間: 2024-1-20 11:06
如果你的LCD1602屏幕沒有顯示任何內容,可能有以下幾個可能的原因:  引腳連接錯誤:請確保LCD1602的各個引腳正確連接到單片機的IO口上,確認每個數據位和控制引腳連接的IO口是否與你提供的定義一致。  電源問題:確保LCD1602正常供電。檢查電源線是否正確連接并提供適當的電壓。  初始化過程錯誤:請再次確認你的初始化代碼是否正確。在 LCD_Init() 函數中發送了一系列的初始化命令,確保這些命令按照正確的順序和參數發送給LCD1602。如果初始化過程有誤,LCD1602可能無法正常工作。  忙狀態檢測錯誤:在 Read_state() 函數中,你使用了忙狀態檢測來等待LCD1602完成之前的操作。請確保你的忙狀態檢測代碼正確,并且等待足夠的時間讓LCD1602完成操作。  數據寫入錯誤:請檢查你使用的 Writer_Dat() 函數,確保它正確設置了數據位以及控制引腳的狀態,并且在寫入數據之前等待LCD1602完成之前的操作。  如果你檢查了以上問題仍然無法解決,可以嘗試調試代碼或使用示波器等工具來觀察信號線上的波形,以確定是否正確發送了數據和命令。  希望這些提示能夠幫助你解決問題。如果你需要進一步的幫助,請提供更多細節或代碼片段,我將盡力協助你。




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