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

標題: 求助,單片機+LCD1602輸入方向的問題 [打印本頁]

作者: 漸入寒冬    時間: 2020-3-12 16:44
標題: 求助,單片機+LCD1602輸入方向的問題
程序第一個星號注釋的地方   發送0x06,往右輸入   發送0x04,為什么還是往右輸入,不應該往左嗎輸入嗎

程序第二個星號注釋的地方不可以用WriteCmd(0x10);發送0x10使光標向左移嗎    求解答   先感謝大佬

#include<reg52.h>
#include<intrins.h>

#define  uint  unsigned int
#define  uchar  unsigned char
sbit  RW=P2^5;
sbit  RS=P2^6;
sbit  EN=P2^7;

////     延時us   起始延時7.6us   n增加1,延時增加2.2us
//void Delay_us(unsigned char n)
//{
//    while(--n);
//}

//    延時起始為1ms   T加1  增加0.98ms
void   Delay_ms(unsigned int  T)
{
        unsigned  int  x;
        for(;T>0;T--)
        {
                for(x=112;x>0;x--);        
        }
}
//判斷LCD是否處于忙狀態
bit  Text_Busy()
{
        P0=0xff;
        RS=0;
        RW=1;
        EN=0;
        _nop_();
        EN=1;
        return (P0&0x80);
}

void  WriteCmd(uchar Cmd)
{
        while(Text_Busy());
        RS=0;
        RW=0;
        EN=1;
        P0=Cmd;
        _nop_();
        EN=0;

}

void  WriteData(uchar Data)
{
        while(Text_Busy());
        RS=1;
        RW=0;
        EN=1;
        P0=Data;
        _nop_();
        EN=0;
}

//清屏函數
void  ClearShow()
{
        WriteCmd(0x01);
        Delay_ms(5);
}

void WriteAddress(uchar  address)
{
        WriteCmd(address|0x80);
}

void LCD_Init()
{
        WriteCmd(0x38);  //功能設置指令       111000
        Delay_ms(3);
        WriteCmd(0x0c);         //顯示開關控制指令   1100
        Delay_ms(3);
/*************************/
//        WriteCmd(0x06);         //輸入模式設置指令   110
        WriteCmd(0x04);         //輸入模式設置指令   100
/*************************/
        Delay_ms(3);
        ClearShow();
}

int main()
{
        uchar i;
        uchar Date;
        
        LCD_Init();
        while(1)
        {
                WriteAddress(0x09);
                Date=56;
                for(i=0;i<8;i++)
                {
                        WriteData(Date);
                        Date--;
/**************************/
//                        WriteCmd(0x10);
/**************************/
                }
        }
        
        return 0;
}


作者: angmall    時間: 2020-3-12 16:44

進入模式設定命令

該命令設置光標移動方向并顯示開/關。
有4個可能的功能設置命令; 04、05、06和07。此命令通過將地址計數器設置為遞增或遞減來更改光標的移動方向。
此命令非常重要。 如果您不理解它,您可能在液晶顯示屏上看不到任何東西或您真正想要看到的東西。
這里創建了4個GIF動畫,以演示功能設置命令的全部含義。


進入模式設定指令04h


進入模式設定指令04h
遞減地址計數器
顯示移位:關
字串:Dereli

進入模式設定命令05h


進入模式設定命令05h
顯示移位:開
遞減地址計數器
字串:Hakan

進入模式設定指令06h


進入模式設定指令06h
顯示移位:關
增量地址計數器
字串:Dereli


進入模式設定指令07h


進入模式設定指令07h
顯示移位:開
增量地址計數器
字串:Hakan





作者: wulin    時間: 2020-3-12 17:24


作者: 漸入寒冬    時間: 2020-3-13 10:19
angmall 發表于 2020-3-12 19:10
進入模式設定命令

該命令設置光標移動方向并顯示開/關。

我測試了一下  發現是清屏指令的問題   LCD初始化函數中的ClearShow();放在輸入模式設置命令之前就可以執行向左輸入   放在輸入模式設置命令之后就向右輸入    請問一下大佬這個是什么原因            下面是可以執行向左執行的初始化函數
void LCD_Init()
{
        WriteCmd(0x38);  //功能設置指令       111000
        Delay_ms(3);
        WriteCmd(0x0c);         //顯示開關控制指令   1100
        Delay_ms(3);
        ClearShow();
/*************************/
//        WriteCmd(0x06);         //輸入模式設置指令   110
        WriteCmd(0x04);         //輸入模式設置指令   100
/*************************/
        Delay_ms(3);
//        ClearShow();
}
作者: robinsonlin    時間: 2020-3-13 12:52
哈哈,51黑有你更精彩
作者: 漸入寒冬    時間: 2020-3-13 16:46
wulin 發表于 2020-3-12 17:24

我測試了一下  發現是清屏指令的問題   LCD初始化函數中的ClearShow();放在輸入模式設置命令之前就可以執行向左輸入   放在輸入模式設置命令之后就向右輸入    請問一下大佬這個是什么原因            下面是可以執行向左執行的初始化函數
void LCD_Init()
{
        WriteCmd(0x38);  //功能設置指令       111000
        Delay_ms(3);
        WriteCmd(0x0c);         //顯示開關控制指令   1100
        Delay_ms(3);
        ClearShow();
/*************************/
//        WriteCmd(0x06);         //輸入模式設置指令   110
        WriteCmd(0x04);         //輸入模式設置指令   100
/*************************/
        Delay_ms(3);
//        ClearShow();
}
作者: 漸入寒冬    時間: 2020-3-13 16:48
robinsonlin 發表于 2020-3-13 12:52
哈哈,51黑有你更精彩

哈哈     感覺很榮幸  




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