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

標(biāo)題: LCD1602問(wèn)題,數(shù)據(jù)位用不同的IO口,屏幕不顯示 [打印本頁(yè)]

作者: 渴望壯大    時(shí)間: 2017-9-8 14:51
標(biāo)題: LCD1602問(wèn)題,數(shù)據(jù)位用不同的IO口,屏幕不顯示
一、下面是LCD1602在單片機(jī)上的IO口位置定義
#define   LCDEN      FP13   //使能位
#define   LCDRW     FP12
#define   LCDRS      FP54
#define   LCDDAT0   FP20  //數(shù)據(jù)位0 在io口P20上
#define   LCDDAT1   FP21  //數(shù)據(jù)位1 在io口P21上
#define   LCDDAT2   FP22  //數(shù)據(jù)位2 在io口P22上
#define   LCDDAT3   FP23  //數(shù)據(jù)位3 在io口P23上
#define   LCDDAT4   FP24  //數(shù)據(jù)位4 在io口P24上
#define   LCDDAT5   FP25  //數(shù)據(jù)位5 在io口P25上
#define   LCDDAT6   FP00  //數(shù)據(jù)位6 在io口P00上
#define   LCDDAT7   FP10  //數(shù)據(jù)位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    時(shí)間: 2017-9-8 15:42
本帖最后由 wulin 于 2017-9-8 16:04 編輯

這是我在4*4矩陣鍵盤(pán)上用的異組端口組成的8位數(shù)據(jù)讀/寫(xiě)程序,同樣適合驅(qū)動(dòng)數(shù)碼管、液晶屏。你試試。另外你寫(xiě)的讀/寫(xiě)程序中要按照時(shí)序要求加入適當(dāng)?shù)难訒r(shí),否則時(shí)序不符合要求也不能正常顯示。
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)        //寫(xiě)8位數(shù)據(jù)
{   
    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位數(shù)據(jù)
{
        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;
}
作者: 無(wú)名無(wú)姓    時(shí)間: 2017-9-9 11:36
每一個(gè)IO口置高,再置低,一步一步測(cè)試,確定IO口沒(méi)有錯(cuò)。然后再按照規(guī)格書(shū),對(duì)一對(duì)指令。
作者: 渴望壯大    時(shí)間: 2017-9-14 08:46
無(wú)名無(wú)姓 發(fā)表于 2017-9-9 11:36
每一個(gè)IO口置高,再置低,一步一步測(cè)試,確定IO口沒(méi)有錯(cuò)。然后再按照規(guī)格書(shū),對(duì)一對(duì)指令。

指令沒(méi)有錯(cuò)啊,只是單片機(jī)不一樣,會(huì)不會(huì)是單片機(jī)指令周期和晶振頻率不一樣引起來(lái)的?
作者: 渴望壯大    時(shí)間: 2017-9-14 08:49
wulin 發(fā)表于 2017-9-8 15:42
這是我在4*4矩陣鍵盤(pán)上用的異組端口組成的8位數(shù)據(jù)讀/寫(xiě)程序,同樣適合驅(qū)動(dòng)數(shù)碼管、液晶屏。你試試。另外你 ...

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

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

其他寫(xiě)指令等等也要延時(shí)吧?
作者: xiayudhtfghy198    時(shí)間: 2024-1-16 15:44
P1=0X01,第一個(gè)串口,而不是0X02。
作者: 597329015    時(shí)間: 2024-1-20 11:06
如果你的LCD1602屏幕沒(méi)有顯示任何內(nèi)容,可能有以下幾個(gè)可能的原因:  引腳連接錯(cuò)誤:請(qǐng)確保LCD1602的各個(gè)引腳正確連接到單片機(jī)的IO口上,確認(rèn)每個(gè)數(shù)據(jù)位和控制引腳連接的IO口是否與你提供的定義一致。  電源問(wèn)題:確保LCD1602正常供電。檢查電源線是否正確連接并提供適當(dāng)?shù)碾妷骸?nbsp; 初始化過(guò)程錯(cuò)誤:請(qǐng)?jiān)俅未_認(rèn)你的初始化代碼是否正確。在 LCD_Init() 函數(shù)中發(fā)送了一系列的初始化命令,確保這些命令按照正確的順序和參數(shù)發(fā)送給LCD1602。如果初始化過(guò)程有誤,LCD1602可能無(wú)法正常工作。  忙狀態(tài)檢測(cè)錯(cuò)誤:在 Read_state() 函數(shù)中,你使用了忙狀態(tài)檢測(cè)來(lái)等待LCD1602完成之前的操作。請(qǐng)確保你的忙狀態(tài)檢測(cè)代碼正確,并且等待足夠的時(shí)間讓LCD1602完成操作。  數(shù)據(jù)寫(xiě)入錯(cuò)誤:請(qǐng)檢查你使用的 Writer_Dat() 函數(shù),確保它正確設(shè)置了數(shù)據(jù)位以及控制引腳的狀態(tài),并且在寫(xiě)入數(shù)據(jù)之前等待LCD1602完成之前的操作。  如果你檢查了以上問(wèn)題仍然無(wú)法解決,可以嘗試調(diào)試代碼或使用示波器等工具來(lái)觀察信號(hào)線上的波形,以確定是否正確發(fā)送了數(shù)據(jù)和命令。  希望這些提示能夠幫助你解決問(wèn)題。如果你需要進(jìn)一步的幫助,請(qǐng)?zhí)峁└嗉?xì)節(jié)或代碼片段,我將盡力協(xié)助你。




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