首页
/
每日頭條
/
生活
/
單片機與lcd連接編程教程
單片機與lcd連接編程教程
更新时间:2025-09-16 20:30:40
  • 實驗準備

  • 課程内容

第七課 控制液晶屏LCD1602實驗準備:

LCD1602 面包闆 杜邦線

電阻:10k 8隻 或排阻(用于P0上拉)

(或直接使用完整的開發闆)

課程内容:一、 原理圖與接線

單片機與lcd連接編程教程(控制液晶屏LCD1602中學生C51單片機易學實戰入門教程)1

這裡分析下 幾個接口信号 V0、RS、RW、EN 表示的意義:

3腳:V0,液晶顯示偏壓信号,用于調整LCD1602的顯示對比度,一般會外接電位器用以調整偏壓信号,注意此腳電壓為0時可以得到最強的對比度。

  4腳:RS,數據/命令選擇端,當此腳為高電平時,可以對1602進行數據字節的傳輸操作,而為低電平時,則是進行命令字節的傳輸操作。命令字節,即是用來對LCD1602的一些工作方式作設置的字節;數據字節,即使用以在1602上顯示的字節。值得一提的是,LCD1602的數據是8位的。

  5腳:R/W,讀寫選擇端。當此腳為高電平可對LCD1602進行讀數據操作,反之進行寫數據操作。

 

這節課引入時序圖,其他器件類似,隻要看懂時序圖,就可以通過編程輕松控制這些器件按自己的需求工作,注意時間軸從左往右。

我們先不讀出它的數據的狀态或者數據本身。所以隻需要看兩個寫時序:

  ① 當我們要寫指令字,設置LCD1602的工作方式時:需要把RS置為低電平,RW置為低電平,然後将數據送到數據口D0~D7,最後E引腳一個高脈沖将數據寫入。

  ② 當我們要寫入數據字,在1602上實現顯示時:需要把RS置為高電平,RW置為低電平,然後将數據送到數據口D0~D7,最後E引腳一個高脈沖将數據寫入。

  發現了麼,寫指令和寫數據,差别僅僅在于RS的電平不一樣而已。

操作步驟:(要對照時序圖)

1) RS 确定 寫數據還是命令

2) RW寫模式 給0

3) P0 放數據或命令,延時5微秒

4) EN 給 1 延時5微秒 再給0 (即是給了脈沖)

單片機與lcd連接編程教程(控制液晶屏LCD1602中學生C51單片機易學實戰入門教程)2

這個表的命令也不需要記,在下面例程中LCD初始化部分就有廠家提供的代碼.

還有下表是控制操作需要消耗的時間:ns表示納秒

單片機與lcd連接編程教程(控制液晶屏LCD1602中學生C51單片機易學實戰入門教程)3

 

四、 按時序圖編程

一個 _nop_(); 大約1微秒

void lcd_cmd(BYTE cmd)

{ // 寫入指令數據到LCD

LCD_RS = 0;

LCD_RW = 0;

LCD_EP = 0;

P0 = cmd;

_nop_();_nop_();_nop_();_nop_();_nop_();

LCD_EP = 1;

_nop_();_nop_();_nop_();_nop_();_nop_();

LCD_EP = 0;

}

void lcd_wdat(BYTE dat)

{ //寫入字符顯示數據到LCD

LCD_RS = 1;

LCD_RW = 0;

LCD_EP = 0;

P0 = dat;

_nop_();_nop_();_nop_();_nop_();_nop_();

LCD_EP = 1;

_nop_();_nop_();_nop_();_nop_();_nop_();

LCD_EP = 0;

}

void lcd_init()

{ //LCD初始化設定

lcd_cmd(0x38); //16*2顯示,5*7點陣,8位數據

lcd_cmd(0x0c); //顯示開,關光标

lcd_cmd(0x06); //移動光标

lcd_cmd(0x01); //清除LCD的顯示内容

}

BYTE code dis1[] = {" WELCOME TO "}; //要放最前面定義

BYTE code dis2[] = {" My C51 "};//要放最前面定義

main()

{

BYTE i;

lcd_init(); // 初始化LCD

delay(10);

while(1)

{

lcd_wcmd(0x06); //向右移動光标

lcd_ wcmd (0x80); //設置顯示位置為第一行的第1個字符

i = 0;

while(dis1[ i ] != '\0') // \0 是C語言中字符串最後一個字符

{ //顯示字符"WLCOME TO"

lcd_wdat(dis1[ i ]);

i ;

}

lcd_ wcmd (0x80 0x40); //設置顯示位置為第二行第1個字符

i = 0;

while(dis2[ i ] != '\0')

{

lcd_wdat(dis2[ i ]); //顯示字符" My C51"

i ;

delay(30); //控制兩字之間顯示速度

}

}

}

可以修改程序 讓向左顯示 ,或者移出移入

可以在在程序 中 需要的位置加入 延時 讓數據穩定

五、增補C語言基礎--數組

簡單理解:數組是同種類型元素的集合。(特别注意:同種類型)

1. 一維數組定義

int a[10];

這樣我們便定義了一個數組a,它分配10個int類型空間。

2.數組的初始化

例程中:

BYTE code dis1[] = {" WELCOME TO "};

定義了一個類型為 BYTE code 的數組,同時做初始化,這數組的各個元素都是一個字符,其中有空格,字母.

3.數組元素的訪問

訪問數組中的元素可以采用數組名加下标的方式,下标是從0開始,C語言并不檢查數組下标是否越界,所以在訪問數組中的元素時需要注意,需要對數組下标做判斷,防止訪問數組越界。

例子:

int a[10];

int i;

for (i = 0; i < 10; i )

{

a[i] = i 1;

}

至于二維數組,簡單可理解為一個XX行YY列的表格,本教程現時還沒有用到,所以暫時不作詳解.

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
新穎獨特稀少女孩名字大全960個 冷門獨特稀少女孩名字大全
新穎獨特稀少女孩名字大全960個 冷門獨特稀少女孩名字大全
新穎獨特稀少女孩名字大全960個1.丹瑩2.錦玉3.希玲4.森羽5.桂紅6.茵瓊7.靈枝8.怡軒9.黃霞10.妍如11.賢雯12.盛悅13.燕宜14.碧美15.臣琳16.藝文17.譯悅18.美琳19.華佳20.倫茹21.虹霞22.惋莉23.妍賢24.奎蓉25.怡貝26.彩青27.禾琴28.麓琳29....
2025-09-16
關東煮上火嗎
關東煮上火嗎
1、會上火的,關東煮的營養成分其實很少,而添加劑成分卻是很多。專家說,“至于久煮不爛、沉不下去是否由...
2025-09-16
如何睡好美容覺
如何睡好美容覺
1、晚上11點之前一定要入睡。美容覺的時間一般是晚上的10點到次日淩晨2點,在這個時間段獲得較好的睡眠質量,能夠加快皮膚的新陳代謝,延緩皮膚的衰老。在晚上11點之前沒有入睡,其實就是錯過了皮膚新陳代謝的最好時機。2、晚餐應低鹽避免喝酒。睡美容覺之前的晚餐,一定要選擇低鹽以及不含酒精的飲料等。睡覺之前...
2025-09-16
2023新年春聯 最新兔年的春聯示例
2023新年春聯 最新兔年的春聯示例
  1、上聯:迎新春八方進寶,下聯:逢盛世四季招财;橫批:【氣象萬千】。  2、上聯:人逢盛世精神爽,下聯:歲轉陽春氣象新;橫批:【瑞氣祥雲】。  3、上聯:喜居寶地千年旺,下聯:福照家門萬事興;橫批:【喜迎新春】。  ...
2025-09-16
最新寶寶起名有創意的名字1500個 好聽的寶寶起名取名字大全
最新寶寶起名有創意的名字1500個 好聽的寶寶起名取名字大全
最新寶寶起名有創意的名字1500個1.洳嫣2.娟知3.靓晶4.滟骊5.妲瑩6.增銳7.陶麗8.汶嫣9.玲銀10.娅朝11.虹憐12.恬超13.欣蕊14.書晶15.雯瓊16.漩淇17.寒念18.莉涯19.芊芬20.懿曦21.俊福22.晏暢23.學友24.潤書25.英焯26.娅晗27.嘉彥28.佳凝29...
2025-09-16
Copyright 2023-2025 - www.tftnews.com All Rights Reserved