Chip123 科技應用創新平台

標題: 關於LCM的使用 [打印本頁]

作者: mungoo    時間: 2008-3-24 03:08 AM
標題: 關於LCM的使用
請教各位大大,小弟想用LCM作為FPGA的顯示,/ s# d: u: R+ z. c
但是有以下問題想請問
. X. D3 `/ U! v4 I$ Z* ]4 s2 B- y/ p1 B$ r. v6 _9 i
(假如我貼錯版,請板大告知)& R* N5 y' q& V4 z  i
-------------------------------
& w# {% s' g& P6 V我使用的是wh1602b 這顆LCM7 P; \) X) ?; p6 M* ?
想請教的事:' `, E3 ~7 `1 E- @) A
問題一
" |6 l+ I; [* \1 u- W6 _        若將LCM設定為2線顯示,. G0 \* a* D1 A; `: P
DDRAM的儲存為
, v  M7 q4 l! a3 Z, ~
6 m( Z6 M; o5 u9 [/ P& \  Z9 G        上排為7 v9 W$ q: V0 m' k9 z6 V
                00~2F(H)1 q+ O/ W2 R0 p* b
        下排為
: m/ a. _3 l/ P8 Z9 {. R! L                40~67(H)
: n: \8 ^6 Y% u1 V1 G實際顯示時      DDRAM的address的對應位置
4 k" H7 Q; `8 `& I% K) Z        上排        1~165 m/ ?0 L+ ^5 d: _
                00~0F        8 x- b! q/ }. T: M& C
        下排        1~16
# d; F- O$ _9 A% L                40~4F
$ W, j% D) D9 X) K4 Q2 c  B
9 a: o. ?( S' \那DDRAM的address對應的資料應該要怎樣設定," b' d. u. j+ q# P
應該設定為,0 W2 W, s9 K$ u$ |5 g9 b  E
CGROM的address,
4 t! E/ f- o2 k6 _% q) i在顯示的時候在查表對照,才能顯是正確的數字嗎?
* J( q, ]9 C! R  Y那假如是這樣,又要怎設定說他不會去查詢CGRAM的內容呢?6 m5 N+ w( F, y; a/ ^
% I( y8 U- S+ k* O, C! u8 o
% a# h7 s; a  f; Z% ^
問題二
; _( x5 ^+ y' U. C4 G1 M& S        LCM開機後經過初始化後,
4 H2 f: v( x; d6 C2 U        要設定我應該要顯示那些字元,+ V$ E4 T& I3 \" p' M1 P; E9 O
        要先設定address+ z: h: u$ m5 _5 ]3 |
        在設定資料0 \% Q5 ^. F& ]. a. V% f. a
        那我應該將我想顯示的字元存在哪邊呢?
$ H4 U% X1 J8 T: _0 J2 }0 y+ g                CGRAM還是上排00~0F(H)以及下排的40~4F(H)3 }0 C1 H8 g% \. m" a
                10~2F以及50~67是用來旋轉用的嗎?
* A8 p/ n, o/ I$ U問題三
( V1 P( d$ F# j        動作流程# B5 i& B7 m% _7 r( ~/ G
                1.初始化            ->2.設定address ->  3.寫入資料 & ^% K/ R% c: W/ I- y. ?* ^1 m( \
                                     更換顯示的話
! E" y4 O8 W! y) y) i3 `- c                 *清除 ->在設定新的address 在寫入資料嗎?
% b: B+ n% N5 A! N-------------------------------------------------------------------, x0 z- _% H$ V, L* Y3 B
最後附上資料手冊[attach]3301[/attach]
作者: addn    時間: 2008-3-24 06:45 PM
您好
9 s- d$ u0 d) y; Z* p) ~1.datasheet 13頁,先下Set DDRAM Address命
& V  ~; b4 Q; ?   令接著再Write Data to RAM就可將資料寫到DDRAM中
: P- A7 v7 q; t  c2 [* o    DDRAM中相對位置存的ASCII code,就會顯示對映字元
3 `9 ]6 I5 }2 b4 p: s2 h; @    CGRAM是讓使用者自造字形或圖案,你可以不用管他" ]) H" V. `$ [* ?/ h6 L% a: X
2.位置10~2F以及50~67就當記憶體使用阿6 C5 d  x/ d) z6 c
3.不用清除直接設定address ->  3.寫入資料就可覆蓋舊資料) n+ r# X* @* V  x( |+ ^+ }7 G

6 n, c" ?+ h; L' B7 W建議可以去找51的書來參考,幾乎每一本都有介紹文字型LCM
作者: mungoo    時間: 2008-3-25 01:51 AM
很感謝addn大大,熱情的回答我問題,4 E( P4 J9 A, H. k; P  j' H
使我對於LCM使用,有比較清楚了,2 `  U. Z' @: W, i  S
雖然還有小小的疑惑在,
5 X7 C. A( F+ n7 U! p1 I但我剩下的應該由我自己實作比較,
4 u0 Z5 X, b' o6 j3 A' F能深入的了解,其動作原理,1 @0 Q5 V4 W% Y7 ^. I6 |$ b! f% b% o
再次的感謝大大的解答。
作者: mungoo    時間: 2008-4-5 03:33 AM
延續 之前的問題喔!!' q. o! N* s& s- }# p) m4 Z, m
我有去借書回來看,也按照其步驟下去跑,1 a- G) [& \$ h$ y) _
但不知道是不是我的inout的POST設定錯誤,+ |0 ]7 `" I" Z! k; ^2 F
還是程式寫錯,請好心的大大幫忙解決一下。! e  Z, n8 y  A- B" T  E
--------------------------------------------------------6 a7 i  A  v, b
先附上一小段程式,比較有可能錯的地方,
& P2 f; `6 B# s) j4 ]在最下面會放上兩個程式,4 I' f7 R! Z$ N/ z
test1.v(top-level  ) ,  lcm.v- x2 V% W; z( s7 w
--------------------------------------------------------
, }6 y2 `% m- W- l/ A: k, |& f( S/ ~7 @4 H% o  Q$ N3 u

) K7 l! j2 P. G7 L  G4 x  G$ n程式主程式段:1 l9 b  o1 h, p7 M: g5 a! r
------------------------------------
0 L7 B$ T0 z+ X" I; m6 L% [0 V+ H, i
2 o+ B! d1 J5 a+ O0 v+ |% Hmodule test1(clk,enclm,inaddress,rs,rw,enable,data,led1,led2,state);1 a3 W0 z  C$ D: X$ J
input   clk,enclm;  t6 U7 b' c# M& K. p
output    inaddress;/ O& y( c0 Q' Z/ w9 o; A; k, j
output    rs,rw,enable;
: d4 D2 e' a$ C% w* u% c: d# N$ {! U& toutput [7:0] led1,led2;4 B" j1 \+ W1 I- {) A1 V0 B
inout [7:0] data;  
8 l3 ?0 D1 ~8 H4 e- |% f  }output [4:0] state;
# B2 u  p5 l+ D7 m( y
+ h- e( R1 F! j  r1 p& \lcm l1(clk,enclm,inaddress,rs,rw,enable,data,state);
. o7 E% B% g5 ^# w7 H
5 F1 d1 U% c* x& `1 ]副程式開頭
: e% i- t2 j* G" y& R6 p1 X---------------------------------- , L/ e  K9 U, C
module lcm(clk,enclm,inaddress,rs,rw,enable,data,state);
1 O, D& q# W' P' a- ~8 v" v! |. p
3 Z- }9 ]( I+ ~/ O5 g  J0 v* Dinput   clk,enclm;
& }. i6 m0 ?: K& `output reg  inaddress;
9 o5 f  o% _& B. Ooutput  reg  rs,rw,enable;
; q( }/ _+ D" Finout [7:0]data;
2 H3 ?" n/ \1 E9 v0 J$ noutput [4:0] state;
% M! f- M3 y* @3 N- o: E0 \assign data=rw?datar:dataw;
" @7 z2 W- j: s6 K; X( W4 @  E-----------------------------------
& d- K; ~' X. P* p有出現幾個 Warning 我不知道他的意思是什麼....
4 `: Q) d* x  O" N8 j. S我一直寫不出來,不知道是不是跟這個有關
! O! i4 S. k& t* ]# M4 O. m& _8 |9 c
Warning: TRI or OPNDRN buffers permanently enabled
* P, V" {6 K9 Q+ c& p/ n& O, o* w
3 g! j' w5 p4 u( ~  ~1 gWarning: Performance of this circuit may degrade because the Fitter Delay Information is not loaded.
6 u* m8 L) r/ P% d# M: a9 \
" w3 E, @6 m; [- z-----------------------------------( Q( h5 n/ J7 ]- N
請好心的大大幫忙解答一下
9 M& F- z0 h/ P7 }& |% L
8 g% B/ t+ c# S" L& S6 ~- |2 M5 D, R# }( \* Q
PS:很怕只是以回復文章問問題,沒有人要看,可是又不想開新文章....
" H) @. J6 ]$ \! l7 j: ^, a$ i" i* B7 S' K' S9 m) w5 H
8 e. E2 ^9 t, [# H! ~
' Z( u, M  m: f8 \/ j0 u
[attach]3381[/attach]
& v" Q7 z' I$ R+ R$ {9 b[attach]3380[/attach]
作者: mungoo    時間: 2008-4-5 05:24 PM
原帖由 mungoo 於 2008-4-5 03:33 AM 發表 # m+ O" k5 H0 @6 V5 N& J% \
延續 之前的問題喔!!
! A& Z' p! W7 J我有去借書回來看,也按照其步驟下去跑,
5 g! Y6 ?9 R3 T& U6 a但不知道是不是我的inout的POST設定錯誤,
3 f2 e& ?/ B9 e7 _2 J還是程式寫錯,請好心的大大幫忙解決一下。! y8 C9 ~+ R3 C$ ~- c, t
-------------------------------------------------------- ...

$ y8 G+ z+ q+ r. w" D我剛剛抓到BUG哩,是我自己的PING腳沒有設定好,但是還是想請問,我上面兩個錯誤,代表什麼意思。
作者: tommywgt    時間: 2008-4-7 06:13 PM
一個是說你使用了TRI-STATE IO或OPEN DRAIN IO
0 }: ~- r. L8 [! p一個是說沒給timing constratin, a5 e. i1 i' c! p
) r5 _! ~. K. |. H7 f
總之...以你lcm的設計, 我建議你不要理會這二個訊息
作者: mungoo    時間: 2008-4-9 12:07 AM
原帖由 tommywgt 於 2008-4-7 06:13 PM 發表
' ~) P  J  D' m) [9 Z3 M! @一個是說你使用了TRI-STATE IO或OPEN DRAIN IO0 [* K8 d% A6 W, q; w
一個是說沒給timing constratin4 U5 q4 o4 h  ?: [/ \/ N9 r% {

, G0 l5 f) r6 {總之...以你lcm的設計, 我建議你不要理會這二個訊息

* j2 ^# j6 a/ U, U! A) W$ R3 [-----------------------------------------% ]% j8 k9 v1 z
我知道哩,謝謝.....




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2