lcd是微控制器的標準外設之一,本文就ocmj48b2為例,記錄在開發使用中的心得。
ocmj4*8b2為18pin,128 *64 dot lcd,使用效果理想,引腳說明如下:
引腳名稱
方向說明
引腳名稱
方向說明
1led-i0v
10db5
i資料5
2led+
i+5v
11db6
i資料6
3vss
ignd
12db7
i資料7
4vdd
i+5v
13busy
01:資料處理中 0:空閒
5db0
i資料0
14req
1: 請求訊號
6db1
i資料1
15res
0:復位
7db2
i資料2
16nc
8db3
i資料3
17rt1
灰度調節
9db4
i資料4
18rt2
灰度調節
1-4號引腳接法正確後 lcd會點亮,把17、18短接是螢幕最清楚, busy/req為握手方式工作,硬體介面協議如下:
busy(0)--->db ready-- >req(1)--->db reading --->busy(1)--->dealing-->busy(0)--->req(0)
給出介面函式
void
send (uchar dat)
//寫命令或資料
...
可以看出req為軟體置位.
使用者名稱令
顯示控制命令
命令格式
國標漢字
f0 xx yy qq ww
8*8 ascii
f1 xx yy as
8*16 ascii
f9 xx yy as
顯示位點陣
f2 xx yy
顯示位元組點陣
f3 xx yy bt
清屏f4
上移f5
下移f6
左移f7
右移f8
下面就國標漢字 ascii碼顯示 等操作給予詳細說明,其他操作可以如法炮製,起到拋磚引玉作用:
void wr_comm (uchar comm,uchar addr_x,uchar addr_y)
void
display_chn(uchar code
*chn, uchar length, uchar line)
...}
給予說明:
chn為傳入的已經定義的漢字字串,length為顯示的長度,line為顯示在lcd的行。display_chn中的i為lcd顯示的列值.因為漢字在lcd中顯示分為左邊,右邊,所以兩次send漢字的區碼,而且每次都要減去0xa0使機內碼轉化成國際區碼.
在給出顯示8*16ascii**
void
numeral ( uchar code
*num,uchar line,uchar length)
...}
void
numline(uchar code
*num, uchar line, uchar col, uchar length)
//顯示一行數字 line行 col 列
...}
給出簡要說明:
首先定義字串為ascii碼內的字元,numral為列印一列ascii字元,numline為列印一行ascii字元。value為全域性變數,當需要實現滾屏的時候才起作用,初始值為0.
最後給出顯示的函式:
void
disp_img (uchar code
*img)
...}}
說明:
首先必須建立乙個char陣列儲存的是128*64的點陣資料,可以找一些生成軟體生成,生成的大小是16*64*2b=2k也就是說每付要2k大小,不過可以只顯示一半可以通過修改j實現,另外可以通過一些演算法改變陣列實現動畫。
以上就是在微控制器應用中使用ocmj的心得,如果有錯誤的地方歡迎指出,有好的建議的朋友給予賜教。
OCMJ8X15B金鵬液晶屏驅動程式 字型檔規律
筆者最近在弄金鵬的液晶屏,現在這個年代了,不跑點液晶屏程式實在是說不過去,如果能上3g模組,wifi模組那就更加好了。這個液晶屏相對於其它液晶屏,它沒有什麼特別特殊的地方,前段時間,筆者用了乙個不帶字型檔的液晶屏,那叫乙個痛苦,每次顯示字元或者漢字還要算出它的字元碼,而且它的邏輯比較難懂,不過最後寫...
關於程式關於世界
首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...
關於血液關於軟體
1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...