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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3254|回復: 7
打印 上一主題 下一主題
收起左側

不懂就問:這個是一個lcd1602的重新請問這個dx和dx是什么東西?

[復制鏈接]
跳轉到指定樓層
樓主
ID:404630 發表于 2019-9-26 14:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#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);//顯示模式設置
        LCD_Write_Com(0x01);//清屏,地址計數器清零,光標復位,顯示緩沖區DDRAM的內容全部寫入空格
        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++) //循環左移顯示,此時不需要加下面的while(1)語句
                {
                        LCD_Write_Com(0x18);
                        delay(300);
                }*/
                while(1);//保持顯示穩定,不要改語句后,程序從頭開始執行會間斷的顯示
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:586438 發表于 2019-9-26 16:56 | 只看該作者
段選口還是位選口  和數碼管差不多  你看一下
回復

使用道具 舉報

板凳
ID:275826 發表于 2019-9-26 17:47 | 只看該作者
問題都沒說清楚呀,哪有dx?不濕dxLE和wxLE嗎?
回復

使用道具 舉報

地板
ID:235200 發表于 2019-9-26 18:07 | 只看該作者
wxLE和dxLE是液晶屏的左右半屏選通信號
回復

使用道具 舉報

5#
ID:97554 發表于 2019-9-26 18:13 | 只看該作者
這一定是某個開發板的例程,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++) //循環左移顯示,此時不需要加下面的while(1)語句
                {
                        LCD_Write_Com(0x18);
                        delay(300);
                }*/
回復

使用道具 舉報

6#
ID:155507 發表于 2019-9-26 18:52 | 只看該作者
這種引腳定義,不是固定的標準,每個人寫程序都可以隨便定義引腳名的,你隨便拿兩個變量名來問,沒有一點意義,那個人就這么定義的,表示什么腳,他自己明白就行。來這問別人沒有用。這本來就是隨便定義的,沒有什么明文規定的。不過,是可以根據程序的前后語句分析出來的。

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

使用道具 舉報

7#
ID:213173 發表于 2019-9-26 19:29 | 只看該作者
由于學習板上的MCU端口都是重復使用的,在使用LCD1602時因與數碼管共用P0,所以在程序初始化時把數碼管位碼wxLE和段碼dxLE鎖存器全部清0后鎖存,以免P0給LCD1602傳輸信號時數碼管亂閃。

評分

參與人數 1黑幣 +8 收起 理由
楊雪飛 + 8 贊一個!所以開發板誤人

查看全部評分

回復

使用道具 舉報

8#
ID:97554 發表于 2019-9-26 19:36 | 只看該作者
1602的驅動:

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

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

第三步、定義寫命令函數

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

第四步、定義寫數據函數

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

第五步、主函數

void main()
{

先初始化LCD

lcdinit();

然后寫命令(位置)

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


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

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费视频网站在线看 | 欧美国产在线一区 | 精品免费国产一区二区三区四区介绍 | 亚洲精品综合 | 一区二区在线不卡 | 欧美日韩在线成人 | 欧美理论片在线观看 | 草在线| 中文字幕亚洲在线 | 国产精品99免费视频 | 欧美中文字幕一区二区 | 午夜欧美一区二区三区在线播放 | 国产免费福利在线 | 日韩欧美中文字幕在线观看 | 国产精品大片 | 一区二区高清不卡 | 天天干视频 | 国产激情网站 | 国产成人精品免费视频 | 中文字幕av网站 | 天堂网色 | 日韩精品一区二区三区中文在线 | 亚洲精品久久久久久久久久久久久 | 久久久成| 狠狠躁夜夜躁人人爽天天高潮 | 麻豆国产一区二区三区四区 | 91福利在线观看视频 | 国产在线视频一区二区董小宛性色 | 日日噜噜夜夜爽爽狠狠 | 手机av在线| h视频免费在线观看 | 国产网站在线免费观看 | 中文字幕 视频一区 | 中文天堂在线一区 | 亚洲精品电影在线观看 | 国产日韩欧美电影 | 91高清视频| 午夜影院污 | 日韩精品久久久久 | 国产视频观看 | a国产一区二区免费入口 |