日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51单片机LCD1602显示

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51单片机LCD1602显示 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.原理:

?1602 液晶也叫 1602 字符型液晶,它能顯示 2 行字符信息,每行又能顯示 16 個字符。
?它是一種專門用來顯示字母、數(shù)字、符號的點(diǎn)陣型液晶模塊。它是由若 干個 5x7 或者?
?5x10 的點(diǎn)陣字符位組成,每個點(diǎn)陣字符位都可以用顯示一個字符, 每位之間有一個點(diǎn)
?距的間隔,每行之間也有間隔,起到了字符間距和行間距的作 用,正因為如此,所以它
?不能很好的顯示圖片

? ?(1)引腳:

(2)其地址 和屏幕的對應(yīng)關(guān)系如下: ? ? ??? 要顯示字符時 要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,例如第二行第一個字 符的地址是 40H,那么是否直接寫入 40H 就可以將光標(biāo)定位在第二行第一個字 符的位置呢?這樣不行,因為寫入顯示地址時要求最高位 D7 恒定為高電平 1 所以實際寫入的數(shù)據(jù)應(yīng)該是 01000000B(40H)+10000000B(80H)=11000000B(C0H)

也就是說:第一行地址為:0x40? ?第二行地址為:0xC0

(3)常用指令:

? ?清屏置零:0x01

1.清除液晶顯示器,即將 DDRAM 的內(nèi)容全部填入"空白"的 ASCII 碼 20H; 2.光標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方; 3.將地址計數(shù)器(AC)的值設(shè)為 0。

?

? 模式設(shè)置指令 :

功能:設(shè)定每次寫入 1 位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫入的一個字符是否移動。 I/D:0=寫入新數(shù)據(jù)后光標(biāo)左移? ? ? ? 1=寫入新數(shù)據(jù)后光標(biāo)右移 S:? 0=寫入新數(shù)據(jù)后顯示屏不移動? ?1=寫入新數(shù)據(jù)后顯示屏整體右移 1 個字符

?顯示開關(guān)控制指令

功能:控制顯示器開/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。 D:0=顯示功能關(guān)? ?1=顯示功能開 C:0=無光標(biāo)? ? 1=有光標(biāo) B:0=光標(biāo)閃爍 1=光標(biāo)不閃

功能設(shè)定指令

功能: 設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。 DL:0=數(shù)據(jù)總線為 4 位? ?1=數(shù)據(jù)總線為 8 位 N:? 0=顯示 1 行? ? ? ? ? ? ? 1=顯示 2 行 F:? 0=5×7 點(diǎn)陣/每字符? ?1=5×10 點(diǎn)陣/每字符

(4) 寫指令與寫數(shù)據(jù):

① 當(dāng)要寫指令字,設(shè)置 LCD1602 的工作方式時:需要把 RS 置為低電平RW ? ? 置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口 D0~D7,最后 E 引腳一個高脈沖將數(shù)據(jù)寫入。 /*寫指令函數(shù)*/
void write_con(u8 con){
? ? ? P0=con; ? ? ? ? ? //送出指令
?? ? ?RS=0;RW=0;EN=1; ?//寫指令時序
?? ? ?delay(200);
?? ? ?EN=0;
}

? ② 當(dāng)要寫入數(shù)據(jù)字,在 1602 上實現(xiàn)顯示時:需要把 RS 置為高電平RW 置 為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口 D0~D7,最后 E 引腳一個高脈沖將數(shù)據(jù)寫入 /*寫數(shù)據(jù)函數(shù)*/
void write_dat(u8 dat){
? ? ?P0=dat;?? ??? ? ? ? //送出數(shù)據(jù)
?? ? RS=1;RW=0;EN=1;//寫數(shù)據(jù)時序
?? ? delay(200);
?? ? EN=0;
}

?2.電路原理圖(普中A2開發(fā)板):

?3.程序說明:

? ?利用LCD1602顯示"Hello World"字符

?4.源程序:

#include <reg51.h>typedef unsigned char u8; typedef unsigned int u16;sbit RW=P2^5; sbit RS=P2^6; sbit EN=P2^7; u8 code table[15]="Hello World";/*延時函數(shù)*/ void delay(u16 i) {while(i--);} /*寫指令函數(shù)*/ void write_con(u8 con){P0=con; //送出指令RS=0;RW=0;EN=1; //寫指令時序delay(200);EN=0; } /*寫數(shù)據(jù)函數(shù)*/ void write_dat(u8 dat){P0=dat; //送出數(shù)據(jù)RS=1;RW=0;EN=1;//寫數(shù)據(jù)時序delay(200);EN=0; } /*LCD初始化函數(shù)*/ void LcdInit(){write_con(0x01);//清屏write_con(0x38);//設(shè)置16*2顯示write_con(0x0c);//開顯示write_con(0x06);//寫入數(shù)據(jù)時光標(biāo)右移1位 }/*LCD顯示函數(shù)*/ void LcdDisplay(u8 table[]){u8 i=0;write_con(0x80); //起點(diǎn)為第一行while(table[i]!='\0'){write_dat(table[i]);delay(100);i++;}/*i=0;write_con(0xc0); //起點(diǎn)為第二行while(table[i]!='\0'){write_dat(table[i]);delay(100);i++;}i=0;*/ }/*主函數(shù)*/ void main() {LcdInit();while(1){LcdDisplay(table);} }

5.開發(fā)板運(yùn)行結(jié)果:

?


以上就是51單片機(jī)的LCD1602實驗了?

想要了解更多的單片機(jī)實驗,請查看我的51單片機(jī)專欄。

?

總結(jié)

以上是生活随笔為你收集整理的51单片机LCD1602显示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。