全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:6840
推到 Plurk!
推到 Facebook!

8051 LCD 繪圖型

缺席
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-15 21:04:08 IP:121.254.xxx.xxx 訂閱
不知道繪畫型的LCD要怎麼使用

不知道有沒有大大可以跟我說要怎麼用嗎@@?

128x64的
編輯記錄
saiki 重新編輯於 2009-02-12 14:42:56, 註解 無‧
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-16 21:36:05 IP:118.166.xxx.xxx 訂閱
你有用過最簡單的那一款 16x2 文字型的嗎? 其實差不太多.

128x64 的 LCD, 全部的內容都是用一個個 bit 來決定該點是否要顯示.
所以用了至少 128 * (64 / 8) bytes 的記憶體來儲存顯示內容. 與
文字型 16x2 只要 32 bytes 來儲存不同.

因為內容變多, 所以定位也變的比較複雜, 包含一個 page address,
兩個 column address (high nibble, low nibble)...

簡單的說, 在對應的位置, 填入資料內容, 就會使 LCD 上顯示該點.
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-17 09:45:53 IP:121.254.xxx.xxx 訂閱
看來是我的問題沒有問清楚
我有看了一些書籍過
發現很多程式在開頭都打出
我知道那是寫入LCD指令的
writeins(0x38)
不過我還是不清楚那個
初使化LCD要怎麼用

我大概知道要怎麼使用文字型了
不過道理還沒有通就是了 = =a

還有電路應該要怎麼接
LCD有分有驅動器的和沒有驅動器的@@?
是差在那裡@@?

電路這樣接是正確的嗎@@?

LCD 型號 LM016L



===================引 用 bernie_w39 文 章===================
你有用過最簡單的那一款 16x2 文字型的嗎? 其實差不太多.

128x64 的 LCD, 全部的內容都是用一個個 bit 來決定該點是否要顯示.
....
編輯記錄
saiki 重新編輯於 2009-01-17 09:47:11, 註解 無‧
saiki 重新編輯於 2009-01-17 17:34:04, 註解 無‧
saiki 重新編輯於 2009-01-17 17:35:00, 註解 無‧
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-01-17 20:56:21 IP:118.166.xxx.xxx 訂閱
嗯, 你是沒有看到過文件, 還是看了文件不懂呢? 很多 LCD 的 datasheet
不會提到 controller 的指令集. 如果你要看指令集的部份, 要找 controller
的 datasheet 才會有. 像 16x2 文字 LCD 的控制器, 找 HD44780 的
datasheet 就對了.

像是 0x38 這個指令, 就是 0b00111000, 查一下 datasheet, 它就講了
指令的特徵碼為 0b001xxxxx 時, 是 function set 功能, 其中
bit4 為 8bits 模式或 4bits 模式選擇
bit3 為 2 lines 與 1 line 模式選擇
bit2 為 每字 5x10 與 5x8 模式選擇
所以設定 為 110 時, 就是設定為 8bits, 2 lines, 5x8 模式.

LCD 如果沒有驅動器, 一般稱作 "玻璃", 驅動的複雜度比較高, 要考慮
segments, commons, bias, 以及工作電壓等等... 最好是有 LCD 玻璃
的驅動 IC, 比較好處理. 不然那些 1/3bias, 1/4bias 的訊號不好產生.

像一般的 LCD 電子錶, 數字鐘等等, 都是用客製化的玻璃來作. 而那種
萬用型的 16x2 文字型, 128x64 點陣型... 都是內建有驅動器的. 你只要
把要顯示的內容, 傳到驅動器之後, 它就會顯示了.

8051 我已經忘的差不多了. 這樣接主要的問題, 在於 LCD (有驅動器) 的
data port 是雙向的. 記得 8051 是用低輸出電流的方式, 來作雙向傳輸,
如果人家是 input 模式, 它就可以控制 data bus, 如果人家是 output 模式,
它就被人家蓋台. 要注意 8051 的驅動能力及 LCD 的輸出能力, 是否能
搭配.

還有就是 VEE 一般會用 VR, 這樣可以調亮度.
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-01-17 21:02:19 IP:121.254.xxx.xxx 訂閱

所以現在的畫的電路圖就是差那一顆驅動器嗎
LCD只有5X8 和5X10兩種模式嗎@@?

===================引 用 bernie_w39 文 章===================
嗯, 你是沒有看到過文件, 還是看了文件不懂呢? 很多 LCD 的 datasheet
不會提到 controller 的指令集. 如果你要看指令集的部份, 要找 controller
的 datasheet 才會有. 像 16x2 文字 LCD 的控制器, 找 HD44780 的
datasheet 就對了....
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-01-18 11:33:35 IP:118.166.xxx.xxx 訂閱
這個電路, 8051 連接的就是 LCD 的驅動器. 所以差的不是 LCD 驅動器,
而是 LCD 驅動器與 8051 的連接上, 是否可以作到雙向的通訊而已.

萬用型的 LCD 有很多款, 16x2 文字, 只是其中一款. 這一款的控制器
HD44780 只支援 5x8, 5x10 兩種模式. 像你之前問的 128x64 繪圖型的
LCD, 它的控制器可能是用 KS0713 或是其它類似的控制器. 所以設定
方式就要參考 KS0713 的 datasheet.
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-01-18 11:36:28 IP:121.254.xxx.xxx 訂閱
所以說我現在不用再去接 HD44780那顆了
只要將程式改一改就可以動作了嗎
可以再請你解釋一次那個寫入指令暫存那裡嗎
我看不懂
為什麼是5*8 2LINE


===================引 用 bernie_w39 文 章===================
這個電路, 8051 連接的就是 LCD 的驅動器. 所以差的不是 LCD 驅動器,
而是 LCD 驅動器與 8051 的連接上, 是否可以作到雙向的通訊而已.

萬用型的 LCD 有很多款, 16x2 文字, 只是其中一款. 這一款的控制器
HD44780 只支援 5x8, 5x10 兩種模式. 像你之前問的 128x64 繪圖型的
LCD, 它的控制器可能是用 KS0713 或是其它類似的控制器. 所以設定
方式就要參考 KS0713 的 datasheet.
編輯記錄
saiki 重新編輯於 2009-01-18 11:39:27, 註解 無‧
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-01-18 11:57:16 IP:118.166.xxx.xxx 訂閱
其實我一直不太了解你對 LCD 的理解是什麼情況, 所以一直回答不了.

LCD 的應用, 大致分為兩種. 一種是只有玻璃, 你要自己去驅動它.
另一種是廠商將玻璃與控制器組合好了, 你只要連接控制器上的 dataline,
address line, read/write control, enable control. 就可以把資料傳入,
由控制器將內容顯示在玻璃上.

一般討論區會提到的, 幾乎都是後者. 像你說的 16x2 文字型, 128x64
繪圖型, 也都是後者. 後者由零件商整合好了. 也都有一個控制器.
控制器上有一些特定的指令, 傳送指令進控制器, 就可以變更顯示內容.

先確定你要用的是哪一款控制器, 再來討論連接方式吧.
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-01-18 11:59:55 IP:121.254.xxx.xxx 訂閱
我是想問你
為什麼你一看就可以知道
wrins(0x38);
是在說 5x8 2line
我是這裡看不懂


===================引 用 bernie_w39 文 章===================
其實我一直不太了解你對 LCD 的理解是什麼情況, 所以一直回答不了.

LCD 的應用, 大致分為兩種. 一種是只有玻璃, 你要自己去驅動它.
另一種是廠商將玻璃與控制器組合好了, 你只要連接控制器上的 dataline,
address line, read/write control, enable control. 就可以把資料傳入,
由控制器將內容顯示在玻璃上....
bernie_w39
資深會員


發表:3
回覆:199
積分:280
註冊:2007-10-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-01-19 00:41:34 IP:118.166.xxx.xxx 訂閱
第一點, 我先知道了你用的是 16x2 文字 LCD 模組. 而這款模組幾乎
都是用 HD44780 或其它相容驅動器.

第二點, 我去下載了 HD44780 的 datasheet. 其中有詳細記載了所有
的指令.

第三點, 它的指令, 有一定的編碼方式. 如果是 0b0000001x 是某一用途,
0b000001xx 是另一用途, 0b00001xxx 又是另一種用途... 所以你提的
0x38, 它的編碼就是 0b00111000, 看 datasheet 中就有說明, 它是設定
DL, N, F 這三個項目.

了解了嗎? 還是哪一點令你卡住了呢?
ererer40
初階會員


發表:37
回覆:91
積分:45
註冊:2008-05-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-02-01 20:50:52 IP:118.160.xxx.xxx 訂閱
沒錯要看廠商的手冊,上面會寫每個腳位的設定,如果你有書而且書上的範例型號跟你實作的一樣就方便了

一般書上會先把一些功能寫成函數,例如起動、清除、關閉、出現字....等等,要用時直接呼叫這樣程式比較易懂

玩電子的都一定要會看手冊,你可能卡在英文的問題,其實每個晶片都差不多啦,你看個幾次就熟了,就算看不種內文,看圖說故事也大約可以猜的出來
編輯記錄
ererer40 重新編輯於 2009-02-01 20:51:37, 註解 無‧
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#12 引用回覆 回覆 發表時間:2009-02-07 08:47:17 IP:121.254.xxx.xxx 訂閱
現在是知道大概怎麼用了
不過還是卡在那個128*64 的中間那個 with KS0108
中間那個兩邊都要有顯示還是不太知道要怎麼用

控制晶片如果不一樣 寫的程式就會不一樣嗎@@?

另外checkbusy 可不可以這樣寫

#define bf P1_7 //假設DB7 -> P1.7
.
.
.

void check (void)
{
.
.
do
{
.
.
}while (bf == 1);
}
編輯記錄
saiki 重新編輯於 2009-02-10 17:30:11, 註解 無‧
saiki 重新編輯於 2009-02-10 18:19:16, 註解 無‧
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#13 引用回覆 回覆 發表時間:2009-02-07 08:50:47 IP:121.254.xxx.xxx 訂閱
可是我看書上的範例都 連續寫入三次的 0x38 為什麼要寫這麼多次(16x2的)

===================引 用 bernie_w39 文 章===================
第一點, 我先知道了你用的是 16x2 文字 LCD 模組. 而這款模組幾乎
都是用 HD44780 或其它相容驅動器.
...
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#14 引用回覆 回覆 發表時間:2009-02-11 16:47:37 IP:140.128.xxx.xxx 訂閱
最近我開始寫了lcd 128 64的模組
不過我不管怎麼寫 lcd上就是連一個點也沒有出現
我有看過datasheet了
LGM12641BS1R (ks0108)

請問有大大會用C寫的嗎
實在是寫不出來
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#15 引用回覆 回覆 發表時間:2009-02-11 17:17:18 IP:118.169.xxx.xxx 訂閱
有搭配示波器 or LA觀察輸出波形跟spec一樣嗎 ?
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#16 引用回覆 回覆 發表時間:2009-02-11 18:12:09 IP:140.128.xxx.xxx 訂閱
研究室中沒有示波器
我有用 Proteus 下去跑
可是只看到 E = 閃而己
好像是資料都沒有寫進的感覺


===================引 用 taishyang 文 章===================
有搭配示波器 or LA觀察輸出波形跟spec一樣嗎 ?
saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#17 引用回覆 回覆 發表時間:2009-02-12 14:43:44 IP:140.128.xxx.xxx 訂閱
附上我的 程式碼
奇怪 用麼這麼久
連一個點都沒有改變
感覺 資料都沒有寫進去
不知道是那裡有問題
KS0108

抱歉了
各位大大
造成你們的困擾
是我晶片的問題
現在發現 是我的51又燒了 = =
程式沒問題是晶片的問題
抱歉打擾到大家
編輯記錄
saiki 重新編輯於 2009-02-12 14:44:38, 註解 無‧
saiki 重新編輯於 2009-02-12 16:43:03, 註解 無‧
saiki 重新編輯於 2009-02-12 21:58:27, 註解 無‧
系統時間:2024-05-02 23:14:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!