久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 不懂就問:這個是一個lcd1602的重新請問這個dx和dx是什么東西? [打印本頁]

作者: 延仔kiwi    時間: 2019-9-26 14:42
標題: 不懂就問:這個是一個lcd1602的重新請問這個dx和dx是什么東西?
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit wxLE=P2^6;
sbit dxLE=P2^7;
sbit RS=P1^3;
sbit RW=P1^4;
sbit EN=P1^5;
uint i;
uchar code table[]="I LOVE YOU !";
uchar code table1[]="1314520 ! ^_^";
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=114;y>0;y--);
}
bit LCD_Check_Busy()
{
        P0=0xff;
        RS=0;
        RW=1;
        EN=0;
        _nop_();
        EN=1;
        return (bit)(P0&0x80);
}
void LCD_Write_Com(uchar com)
{
        while(LCD_Check_Busy());
        RS=0;
        RW=0;
        EN=1;
        P0=com;
        _nop_();
        EN=0;
}
void LCD_Write_Data(uchar Data)
{
        while(LCD_Check_Busy());
        RS=1;
        RW=0;
        EN=1;
        P0=Data;
        _nop_();
        EN=0;
}
void main()
{
        wxLE=1;
        P0=0;
        wxLE=0;
        dxLE=1;
        P0=0;
        dxLE=0;
        LCD_Write_Com(0x38);//顯示模式設(shè)置
        LCD_Write_Com(0x01);//清屏,地址計數(shù)器清零,光標復(fù)位,顯示緩沖區(qū)DDRAM的內(nèi)容全部寫入空格
        LCD_Write_Com(0x0c);//顯示開啟,不顯示光標,光標不閃爍
        LCD_Write_Com(0x06);//讀寫一個字符過后,地址指針加1,光標加1


        while(1)
        {
                LCD_Write_Com(0x80);
                delay(10);
                for(i=0;i<12;i++)
                {
                        LCD_Write_Data(table[i]);
                        delay(10);
                }
                LCD_Write_Com(0xc0);
                delay(10);
                for(i=0;i<13;i++)
                {
                        LCD_Write_Data(table1[i]);
                        delay(10);
                }
                /*for(i=0;i<16;i++) //循環(huán)左移顯示,此時不需要加下面的while(1)語句
                {
                        LCD_Write_Com(0x18);
                        delay(300);
                }*/
                while(1);//保持顯示穩(wěn)定,不要改語句后,程序從頭開始執(zhí)行會間斷的顯示
        }
}



作者: 如癡百感生    時間: 2019-9-26 16:56
段選口還是位選口  和數(shù)碼管差不多  你看一下
作者: tyrl800    時間: 2019-9-26 17:47
問題都沒說清楚呀,哪有dx?不濕dxLE和wxLE嗎?
作者: csmyldl    時間: 2019-9-26 18:07
wxLE和dxLE是液晶屏的左右半屏選通信號
作者: 楊雪飛    時間: 2019-9-26 18:13
這一定是某個開發(fā)板的例程,DX  WX是他們寫的段選和位選的首拼。此程序點亮LCD1602這兩個玩意兒毫無用處,不參與LCD1602的運行,

while(1)
        {
                LCD_Write_Com(0x80);      這行指定位置第一行第一位
                delay(10);
                for(i=0;i<12;i++)
                {
                        LCD_Write_Data(table[i]);
                        delay(10);
                }    上邊這幾行是依次在第一位第二位直到第十二位的顯示" I LOVE YOU !"

                LCD_Write_Com(0xc0);  第二行第一位0XC0,你可以嘗試改成0XC1   0XC2你就知道這是干啥的了
                delay(10);
                for(i=0;i<13;i++)
                {
                        LCD_Write_Data(table1[i]);
                        delay(10);
                }
                /*for(i=0;i<16;i++) //循環(huán)左移顯示,此時不需要加下面的while(1)語句
                {
                        LCD_Write_Com(0x18);
                        delay(300);
                }*/
作者: angmall    時間: 2019-9-26 18:52
這種引腳定義,不是固定的標準,每個人寫程序都可以隨便定義引腳名的,你隨便拿兩個變量名來問,沒有一點意義,那個人就這么定義的,表示什么腳,他自己明白就行。來這問別人沒有用。這本來就是隨便定義的,沒有什么明文規(guī)定的。不過,是可以根據(jù)程序的前后語句分析出來的。

根據(jù)程序的前后語句分析出來,是六位共陰數(shù)碼管, 由P0連接兩個鎖存器 wxLE控制位選和dxLE控制段選。

作者: wulin    時間: 2019-9-26 19:29
由于學(xué)習(xí)板上的MCU端口都是重復(fù)使用的,在使用LCD1602時因與數(shù)碼管共用P0,所以在程序初始化時把數(shù)碼管位碼wxLE和段碼dxLE鎖存器全部清0后鎖存,以免P0給LCD1602傳輸信號時數(shù)碼管亂閃。
作者: 楊雪飛    時間: 2019-9-26 19:36
1602的驅(qū)動:

第一步、定義驅(qū)動引腳:   RW   EN   RS三個引腳,分別定義到單片的IO口(引腳)上,P0   P1  P2  P3自己定,定好了自己在下邊的程序里記得保持一致。

第二步、定義初始化函數(shù),你的原來程序中把這部寫到主函數(shù)里了,一般正經(jīng)程序不會把這段寫進主函數(shù)。
  void lcdinit()
{
  LCD_Write_Com(0x38);//顯示模式設(shè)置
  LCD_Write_Com(0x01);//清屏,地址計數(shù)器清零,光標復(fù)位,顯示緩沖區(qū)DDRAM的內(nèi)容全部寫入空格
  LCD_Write_Com(0x0c);//顯示開啟,不顯示光標,光標不閃爍
  LCD_Write_Com(0x06);//讀
}

第三步、定義寫命令函數(shù)

void LCD_Write_Com(uchar com)
{
        while(LCD_Check_Busy());
        RS=0;
        RW=0;
        EN=1;
        P0=com;      看這里的P0 = com;這個就是把單片機P0 IO口的八個腳接在LD1602的八個數(shù)據(jù)口D0--D7,P0^0 ----P0^7。
        _nop_();
        EN=0;
}

第四步、定義寫數(shù)據(jù)函數(shù)

void LCD_Write_Data(uchar Data)
{
        while(LCD_Check_Busy());  判斷忙不忙1602很少需要判斷,甚至下邊那個NOP延時都不需要寫,現(xiàn)在的單片機速度夠快,不寫一般也不會出問題。
        RS=1;
        RW=0;
        EN=1;
        P0=Data;
        _nop_();
        EN=0;
}

第五步、主函數(shù)

void main()
{

先初始化LCD

lcdinit();

然后寫命令(位置)

然后寫數(shù)據(jù)(顯示的內(nèi)容)先寫一個下邊這樣的主函數(shù)試一下,第一行第一位顯示“A”
        {
                LCD_Write_Com(0x80);
                        LCD_Write_Data(“A”);
                        
           
}


建議扔掉你的開發(fā)板,用最小系統(tǒng)加模塊自己連線找合適的教程學(xué),跟著開發(fā)板的教程將讓你花費很多不必要的時間和精力,不想詆毀任何錄教程的買開發(fā)板的,反正跟他們學(xué)的一塌糊涂,最后自己從基礎(chǔ)的東西開始看才找到門,跟著教程學(xué)了八年,越學(xué)越糊涂。





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩性生活网 | 在线播放中文字幕 | 狠狠操电影 | 亚洲人在线播放 | 国产精品免费福利 | 国产欧美精品一区二区三区 | 国产成人亚洲精品自产在线 | 日韩一二区 | 草草草网站 | 国产精品不卡 | 羞羞的视频免费看 | 国产在线观看一区二区三区 | 亚洲精品av在线 | 欧美在线视频一区二区 | 亚洲精品一区二区网址 | 欧美一级特黄aaa大片在线观看 | 狠狠干天天干 | 久色| 国产日韩一区二区三区 | 婷婷久久五月天 | 99精品电影| 自拍偷拍欧美 | 中文字幕国产 | 亚洲精久久久 | 亚洲精品一区二区三区四区高清 | 久久久久久久一区 | 色狠狠一区 | 精品久久一区二区 | 欧美极品在线视频 | 搞av.com | 日本精品一区二区三区在线观看 | 亚洲激情综合网 | 国产精品2 | 国产精品99久 | 欧美性猛片aaaaaaa做受 | 欧美中文一区 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品国产三级国产aⅴ无密码 | 日韩精品无码一区二区三区 | 在线a视频网站 | 中文字幕第49页 |