久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7032|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Protues仿真12864液晶顯示課程設(shè)計(jì)報(bào)告

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
word格式的完整文檔下載:
Protues12864液晶顯示.zip (323.18 KB, 下載次數(shù): 105)

Protues仿真液晶顯示

目錄

1  LCD12864簡(jiǎn)介

2 LCD12864顯示原理

2.1漢字和英文顯示原理

2.2圖形顯示

2.3應(yīng)用說明

2.4指令描述

3軟件仿真

3.1漢字顯示

3.2圖形顯示

3.3同時(shí)顯示多個(gè)漢字

3.4向上滾動(dòng)顯示

4小結(jié)


1            LCD12864簡(jiǎn)介
  • ST7920類 這種控制器帶中文字庫,為用戶免除了編制字庫的麻煩,該控制器的液晶還支持畫圖方式。該類液晶支持68時(shí)序8位和4位并口以及串口。

    (2)KS0108類 這種控制器指令簡(jiǎn)單,不帶字庫。支持68時(shí)序8位并口。

    (3)T6963C類 這種控制器功能強(qiáng)大,帶西文字庫。有文本和圖形兩種顯示方式。有文本和圖形兩個(gè)圖層,并且支持兩個(gè)圖層的疊加顯示。支持80時(shí)序8位并口。

    (4)COG類 常見的控制器有S6B0724和ST7565,這兩個(gè)控制器指令兼容。支持68時(shí)序8位并口,80時(shí)序8位并口和串口。COG類液晶的特點(diǎn)是結(jié)構(gòu)輕便,成本低。

ST7920   GND   VCC   V0   RS   R/W   E   DB0-DB7   PSB   RES   VOUT   BLA   BLK



KS0108   GND VCC V0 RS R/W E DB0-DB7 CS1 CS2 RES VOUT BLA BLK


T6963C   FG   GND VCC V0 WR RD DB0-DB7   RS CS RES FS   BLA   BLK


S6B0724 GND VCC RS WR RD CS DB0-DB7 RES   BLA   BLK


     

12864是一種圖形點(diǎn)陣液晶顯示器,它主要由行驅(qū)動(dòng)器/列驅(qū)動(dòng)器及128×64全點(diǎn)陣液晶顯示器組成。可完成圖形顯示,也可以顯示8×4個(gè)(16×16點(diǎn)陣)漢字。

管腳名稱
LEVER
管腳功能描述
VSS
0
電源地
VDD
+5.0V
電源電壓
V0
-
液晶顯示器驅(qū)動(dòng)電壓
D/I(RS)
H/L
D/I=“H”,表示DB7∽DB0為顯示數(shù)據(jù)
D/I=“L”,表示DB7∽DB0為顯示指令數(shù)據(jù)
R/W
H/L
R/W=“H”,E=“H”數(shù)據(jù)被讀到DB7∽DB0
R/W=“L”,E=“H→L”數(shù)據(jù)被寫到IR或DR
E
H/L
R/W=“L”,E信號(hào)下降沿鎖存DB7∽DB0
R/W=“H”,E=“H”DDRAM數(shù)據(jù)讀到DB7∽DB0
DB0
H/L
數(shù)據(jù)線
DB1
H/L
數(shù)據(jù)線
DB2
H/L
數(shù)據(jù)線
DB3
H/L
數(shù)據(jù)線
DB4
H/L
數(shù)據(jù)線
DB5
H/L
數(shù)據(jù)線
DB6
H/L
數(shù)據(jù)線
DB7
H/L
數(shù)據(jù)線
CS1
H/L
H:選擇芯片(右半屏)信號(hào)
CS2
H/L
H:選擇芯片(左半屏)信號(hào)
RET
H/L
復(fù)位信號(hào),低電平復(fù)位
VOUT
-10V
LCD驅(qū)動(dòng)負(fù)電壓
LED+
-
LED背光板電源
LED-
-
LED背光板電源
    在使用12864LCD前先必須了解以下功能器件才能進(jìn)行編程。12864內(nèi)部功能器件及相關(guān)功能如下:

1. 指令寄存器(IR)

    IR是用于寄存指令碼,與數(shù)據(jù)寄存器數(shù)據(jù)相對(duì)應(yīng)。當(dāng)D/I=0時(shí),在E信號(hào)下降沿的作用下,指令碼寫入IR。

2.?dāng)?shù)據(jù)寄存器(DR)

    DR是用于寄存數(shù)據(jù)的,與指令寄存器寄存指令相對(duì)應(yīng)。當(dāng)D/I=1時(shí),在下降沿作用下,圖形顯示數(shù)據(jù)寫入DR,或在E信號(hào)高電平作用下由DR讀到DB7∽DB0數(shù)據(jù)總線。DR和DDRAM之間的數(shù)據(jù)傳輸是模塊內(nèi)部自動(dòng)執(zhí)行的。

3.忙標(biāo)志:BF

    BF標(biāo)志提供內(nèi)部工作情況。BF=1表示模塊在內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù)。BF=0時(shí),模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù)。

    利用STATUS READ指令,可以將BF讀到DB7總線,從檢驗(yàn)?zāi)K之工作狀態(tài)。

4.顯示控制觸發(fā)器DFF

    此觸發(fā)器是用于模塊屏幕顯示開和關(guān)的控制。DFF=1為開顯示(DISPLAY OFF),DDRAM的內(nèi)容就顯示在屏幕上,DFF=0為關(guān)顯示(DISPLAY OFF)。

    DDF的狀態(tài)是指令DISPLAY ON/OFF和RST信號(hào)控制的。

5XY地址計(jì)數(shù)器

      XY地址計(jì)數(shù)器是一個(gè)9位計(jì)數(shù)器。高3位是X地址計(jì)數(shù)器,低6位為Y地址計(jì)數(shù)器,XY地址計(jì)數(shù)器實(shí)際上是作為DDRAM的地址指針,X地址計(jì)數(shù)器為DDRAM的頁指針,   Y地址計(jì)數(shù)器為DDRAM的Y地址指針。

      X地址計(jì)數(shù)器是沒有記數(shù)功能的,只能用指令設(shè)置。

      Y地址計(jì)數(shù)器具有循環(huán)記數(shù)功能,各顯示數(shù)據(jù)寫入后,Y地址自動(dòng)加1,Y地址指針從0到63。

6.顯示數(shù)據(jù)RAMDDRAM

    DDRAM是存儲(chǔ)圖形顯示數(shù)據(jù)的。數(shù)據(jù)為1表示顯示選擇,數(shù)據(jù)為0表示顯示非選擇。DDRAM與地址和顯示位置的關(guān)系見DDRAM地址表。

7Z地址計(jì)數(shù)器

    Z地址計(jì)數(shù)器是一個(gè)6位計(jì)數(shù)器,此計(jì)數(shù)器具備循環(huán)記數(shù)功能,它是用于顯示行掃描同步。當(dāng)一行掃描完成,此地址計(jì)數(shù)器自動(dòng)加1,指向下一行掃描數(shù)據(jù),RST復(fù)位后Z地址計(jì)數(shù)器為0。

    Z地址計(jì)數(shù)器可以用指令DISPLAY START LINE預(yù)置。因此,顯示屏幕的起始行就由此指令控制,即DDRAM的數(shù)據(jù)從哪一行開始顯示在屏幕的第一行。此模塊的DDRAM共64行,屏幕可以循環(huán)滾動(dòng)顯示64行。

12864LCD的指令系統(tǒng)

模塊控制芯片提供兩套控制命令,基本指令和擴(kuò)充指令如下:

指令表1:(RE=0:基本指令)


                     指 令 碼
功 能

RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0

清除
顯示
0
0
0
0
0
0
0
0
0
1
將DDRAM填滿"20H",并且設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H"
地址
歸位
0
0
0
0
0
0
0
0
1
X
設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H",并且將游標(biāo)移到開頭原點(diǎn)位置;這個(gè)指令不改變DDRAM 的內(nèi)容
顯示狀態(tài)開/關(guān)
0
0
0
0
0
0
1
D
C
B
D=1: 整體顯示 ON
C=1: 游標(biāo)ON   
B=1:游標(biāo)位置反白允許
進(jìn)入點(diǎn)
設(shè)定
0
0
0
0
0
0
0
1
I/D
S
指定在數(shù)據(jù)的讀取與寫入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位
游標(biāo)或顯示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位;這個(gè)指令不改變DDRAM 的內(nèi)容
功能
設(shè)定
0
0
0
0
1
DL
X
RE
X
X
DL=0/1:4/8位數(shù)據(jù)
RE=1: 擴(kuò)充指令操作
RE=0: 基本指令操作
設(shè)定CGRAM
地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
設(shè)定CGRAM 地址
設(shè)定DDRAM
地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
設(shè)定DDRAM 地址(顯示位址)
第一行:80H-87H
第二行:90H-97H
讀取忙標(biāo)志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
讀取忙標(biāo)志(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出地址計(jì)數(shù)器(AC)的值
寫數(shù)據(jù)到RAM
1
0
數(shù)據(jù)
將數(shù)據(jù)D7——D0寫入到內(nèi)部的RAM (DDRAM/CGRAM/IRAM/GRAM)
讀出RAM的值
1
1
數(shù)據(jù)
從內(nèi)部RAM讀取數(shù)據(jù)D7——D0
(DDRAM/CGRAM/IRAM/GRAM)
指令表2:(RE=1:擴(kuò)充指令)


                     指 令 碼
功 能

RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0

     待命
模式
0
0
0
0
0
0
0
0
0
1
進(jìn)入待命模式,執(zhí)行其他指令都棵終止
待命模式
卷動(dòng)地址開關(guān)開啟
0
0
0
0
0
0
0
0
1
SR
SR=1:允許輸入垂直卷動(dòng)地址
SR=0:允許輸入IRAM和CGRAM地址
     反白
     選擇
0
0
0
0
0
0
0
1
R1
R0
選擇2行中的任一行作反白顯示,并可決定反白與否。初始值R1R0=00,第一次設(shè)定為反白顯示,再次設(shè)定變回正常
     睡眠
     模式
0
0
0
0
0
0
1
SL
X
X
SL=0:進(jìn)入睡眠模式
SL=1:脫離睡眠模式
     擴(kuò)充
     功能
     設(shè)定
0
0
0
0
1
CL
X
RE
G
0
CL=0/1:4/8位數(shù)據(jù)
RE=1: 擴(kuò)充指令操作
RE=0: 基本指令操作
G=1/0:繪圖開關(guān)
設(shè)定繪圖RAM
地址
0
0
1
0
AC6
0
AC5
0
AC4
AC3
AC3
AC2
AC2
AC1
AC1
AC0
AC0
設(shè)定繪圖RAM
先設(shè)定垂直(列)地址AC6AC5…AC0
再設(shè)定水平(行)地址AC3AC2AC1AC0
將以上16位地址連續(xù)寫入即可
備注:當(dāng)IC1在接受指令前,微處理器必須先確認(rèn)其內(nèi)部處于非忙碌狀態(tài),即讀取BF標(biāo)志時(shí),BF需為零,方可接受新的指令;如果在送出一個(gè)指令前并不檢查BF標(biāo)志,那么在前一個(gè)指令和這個(gè)指令中間必須延長(zhǎng)一段較長(zhǎng)的時(shí)間,即是等待前一個(gè)指令確實(shí)執(zhí)行完成。

2、字符顯示

帶中文字庫的128X64-0402B每屏可顯示4行8列共32個(gè)16×16點(diǎn)陣的漢字,每個(gè)顯示RAM可顯示1個(gè)中文字符或2個(gè)16×8點(diǎn)陣全高ASCII碼字符,即每屏最多可實(shí)現(xiàn)32個(gè)中文字符或64個(gè)ASCII碼字符的顯示。帶中文字庫的128X64-0402B內(nèi)部提供128×2字節(jié)的字符顯示RAM緩沖區(qū)(DDRAM)。字符顯示是通過將字符顯示編碼寫入該字符顯示RAM實(shí)現(xiàn)的。根據(jù)寫入內(nèi)容的不同,可分別在液晶屏上顯示CGROM(中文字庫)、HCGROM(ASCII碼字庫)及CGRAM(自定義字形)的內(nèi)容。三種不同字符/字型的選擇編碼范圍為:0000~0006H(其代碼分別是0000、0002、0004、0006共4個(gè))顯示自定義字型,02H~7FH顯示半寬ASCII碼字符,A1A0H~F7FFH顯示8192種GB2312中文字庫字形。字符顯示RAM在液晶模塊中的地址80H~9FH。字符顯示的RAM的地址與32個(gè)字符顯示區(qū)域有著一一對(duì)應(yīng)的關(guān)系,其對(duì)應(yīng)關(guān)系如下表所示。

80H
81H
82H
83H
84H
85H
86H
87H
90H
91H
92H
93H
94H
95H
96H
97H
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
2 LCD12864顯示原理2.1漢字和英文顯示原理
    在數(shù)字電路中,所有的數(shù)據(jù)都是以0和1保存的,對(duì)LCD控制器進(jìn)行不同的數(shù)據(jù)操作,可以得到不同的結(jié)果。對(duì)于顯示英文操作,由于英文字母種類很少,只需要8位(一字節(jié))即可。而對(duì)于中文,常用卻有6000以上,于是我們的DOS前輩想了一個(gè)辦法,就是將ASCII表的高128個(gè)很少用到的數(shù)值以兩個(gè)為一組來表示漢字,即漢字的內(nèi)碼。而剩下的低128位則留給英文字符使用,即英文的內(nèi)碼。

      那么,得到了漢字的內(nèi)碼后,還僅是一組數(shù)字,那又如何在屏幕上去顯示呢?這就涉及到文字的字模,字模雖然也是一組數(shù)字,但它的意義卻與數(shù)字的意義有了根本的變化,它是用數(shù)字的各位信息來記載英文或漢字的形狀,如英文的'A'在字模的記載方式如圖1所示:


圖1 “A”字模圖

    而中文的“你”在字模中的記載卻如圖2所示:


圖2 “你”字模圖

根據(jù)芯片的不同取模的方式不同,有多種取模方式:?jiǎn)紊c(diǎn)陣液晶字模,橫向取模,字節(jié)正序,單色點(diǎn)陣液晶字模,橫向取模,字節(jié)倒序,單色點(diǎn)陣液晶字模,縱向取模,字節(jié)正序,單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序等等。

2.2圖形顯示
先設(shè)垂直地址再設(shè)水平地址(連續(xù)寫入兩個(gè)字節(jié)的資料來完成垂直與水平的坐標(biāo)地址)

垂直地址范圍 AC5...AC0

水平地址范圍 AC3…AC0

繪圖RAM 的地址計(jì)數(shù)器(AC)只會(huì)對(duì)水平地址(X 軸)自動(dòng)加一,當(dāng)水平地址=0FH 時(shí)會(huì)重新設(shè)為00H

但并不會(huì)對(duì)垂直地址做進(jìn)位自動(dòng)加一,故當(dāng)連續(xù)寫入多筆資料時(shí),程序需自行判斷垂直地址是否需重新設(shè)定。GDRAM的坐標(biāo)地址與資料排列順序如下圖:


2.3應(yīng)用說明
     用帶中文字庫的128X64顯示模塊時(shí)應(yīng)注意以下幾點(diǎn):

     ①欲在某一個(gè)位置顯示中文字符時(shí),應(yīng)先設(shè)定顯示字符位置,即先設(shè)定顯示地址,再寫入中文字符編碼。

     ②顯示ASCII字符過程與顯示中文字符過程相同。不過在顯示連續(xù)字符時(shí),只須設(shè)定一次顯示地址,由模塊自動(dòng)對(duì)地址加1指向下一個(gè)字符位置,否則,顯示的字符中將會(huì)有一個(gè)空ASCII字符位置。

     ③當(dāng)字符編碼為2字節(jié)時(shí),應(yīng)先寫入高位字節(jié),再寫入低位字節(jié)。

         ④模塊在接收指令前,向處理器必須先確認(rèn)模塊內(nèi)部處于非忙狀態(tài),即讀取BF標(biāo)志時(shí)BF需為“0”,方可接受新的指令。如果在送出一個(gè)指令前不檢查BF標(biāo)志,則在前一個(gè)指令和這個(gè)指令中間必須延遲一段較長(zhǎng)的時(shí)間,即等待前一個(gè)指令確定執(zhí)行完成。指令執(zhí)行的時(shí)間請(qǐng)參考指令表中的指令執(zhí)行時(shí)間說明。

⑤“RE”為基本指令集與擴(kuò)充指令集的選擇控制位。當(dāng)變更“RE”后,以后的指令集將維持在最后的狀態(tài),除非再次變更“RE”位,否則使用相同指令集時(shí),無需每次均重設(shè)“RE”位。

2.4指令描述1、顯示開/關(guān)設(shè)置
CODE:
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
H
H
H
H
H
H/L
功能:設(shè)置屏幕顯示開/關(guān)。 DB0=H,開顯示;DB0=L,關(guān)顯示。不影響顯示RAM(DD RAM)中的內(nèi)容。
2、設(shè)置顯示起始行
CODE:
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
H
H
行地址(0-63)
功能:執(zhí)行該命令后,所設(shè)置的行將顯示在屏幕的第一行。顯示起始行是由Z地址計(jì)數(shù)器控制的,該命令自動(dòng)將A0-A5位地址送入Z地址計(jì)數(shù)器,起始地址可以是0-63范圍內(nèi)任意一行。Z地址計(jì)數(shù)器具有循環(huán)計(jì)數(shù)功能,用于顯示行掃描同步,當(dāng)掃描完一行后自動(dòng)加一。
3、設(shè)置頁地址
CODE:
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
H
L
H
H
H
頁地址(0-7)
功能:執(zhí)行本指令后,下面的讀寫操作將在指定頁內(nèi),直到重新設(shè)置。頁地址就是DD RAM 的行地址,頁地址存儲(chǔ)在X地址計(jì)數(shù)器中,A2-A0可表示8頁,讀寫數(shù)據(jù)對(duì)頁地址沒有影響,除本指令可改變頁地址外,復(fù)位信號(hào)(RST)可把頁地址計(jì)數(shù)器內(nèi)容清零。
      





DD RAM地址映像表
                                 Y 地址
0
1
2
………………………
61
62
63

DB0
∫                          PAGE0
DB7
      X=0
DB0
∫                          PAGE1
DB7
      X=1





DB0
∫                          PAGE6
DB7
      X=7
DB0
∫                          PAGE7
DB7
      X=8









4、設(shè)置列地址
CODE:  
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
H
列地址(0-63)
功能: DD RAM 的列地址存儲(chǔ)在Y地址計(jì)數(shù)器中,讀寫數(shù)據(jù)對(duì)列地址有影響,在對(duì)DD RAM進(jìn)行讀寫操作后,Y地址自動(dòng)加一。
5、狀態(tài)檢測(cè)
CODE:
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
H
L
BF
L
ON/OFF
RET
L
L
L
L
功能:讀忙信號(hào)標(biāo)志位(BF)、復(fù)位標(biāo)志位(RST)以及顯示狀態(tài)位(ON/OFF)。
            BF=H:內(nèi)部正在執(zhí)行操作;            BF=L:空閑狀態(tài)。
            RST=H:正處于復(fù)位初始化狀態(tài);       RST=L:正常狀態(tài)。
            ON/OFF=H:表示顯示關(guān)閉;            ON/OFF=L:表示顯示開。
6、寫顯示數(shù)據(jù)
CODE:
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:寫數(shù)據(jù)到DD RAM,DD RAM是存儲(chǔ)圖形顯示數(shù)據(jù)的,寫指令執(zhí)行后Y地址計(jì)數(shù)器自動(dòng)加1。D7-D0位數(shù)據(jù)為1表示顯示,數(shù)據(jù)為0表示不顯示。寫數(shù)據(jù)到DD RAM前,要先執(zhí)行“設(shè)置頁地址”及“設(shè)置列地址”命令。
7、讀顯示數(shù)據(jù)
CODE:
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
H
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:從DD RAM讀數(shù)據(jù),讀指令執(zhí)行后Y地址計(jì)數(shù)器自動(dòng)加1。從DD RAM讀數(shù)據(jù)前要先執(zhí)行“設(shè)置頁地址” 及“設(shè)置列地址”命令。
8、屏幕顯示與DD RAM地址映射關(guān)系
[td]
   

Y1
Y2
Y3
Y4
…………
Y62
Y63
Y64

     X=0
Line 0
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB0
Line 1
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB1
Line 2
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB2
Line 3
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB3
Line 4
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB4
Line 5
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB5
Line 6
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB6
Line 7
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB7
…………
…………
…………

     X=7
Line60
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB4
Line61
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB5
Line62
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB6
Line63
1/0
1/0
1/0
1/0
…………
1/0
1/0
1/0
DB7

3軟件仿真3.1漢字顯示
    在Protues軟件中選擇所需元件,搭建的電路圖如圖1所示。


圖1 仿真硬件原理圖

將編寫的代碼燒寫到單片機(jī)里,運(yùn)行液晶顯示不正常,如圖2所示。


圖2 運(yùn)行圖

開始我還以為是程序問題,把程序看了又看,改了又改,顯示結(jié)果還是一樣。后來問了下張勇生,出現(xiàn)這種情況的原因是P0口沒接上拉電阻。因?yàn)镻0口是開漏的,不管它的驅(qū)動(dòng)能力多大,相當(dāng)于它是沒有電源的,需要外部的電路提供,絕大多數(shù)情況下P0口是必需加上拉電阻的。接上拉電阻后,重新運(yùn)行這下運(yùn)行正常了,如圖3所示。


圖3正常顯示

代碼如下所示:

#include


#define LCDLCDDisp_Off   0x3e

#define LCDLCDDisp_On    0x3f

#define Page_Add     0xb8//頁地址

#define LCDCol_Add     0x40//列地址

#define Start_Line     0xC0//行地址

/*****液晶顯示器的端口定義*****/

#define data_ora P0 /*液晶數(shù)據(jù)總線*/

sbit LCDMcs=P2^1 ;    /*片選1*/

sbit LCDScs=P2^2 ;    /*片選2*/

sbit RESET=P2^3 ;  /*復(fù)位信號(hào)*/

sbit LCDDi=P2^4 ;     /*數(shù)據(jù)/指令 選擇*/

sbit LCDRW=P2^5 ;     /*讀/寫 選擇*/

sbit LCDEnable=P2^6 ;     /*讀/寫 使能*/




char code Hz_xu[]=

{

/*------------------------------------------------------------------------------

  源文件 / 文字 : F:LD測(cè)試儀液晶字模提取+排版軟件液晶字模提取圖例wo.bmp

  寬×高(像素): 16×

  字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)

  數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-28 17:10:17

------------------------------------------------------------------------------*/

0x40,0x42,0xCC,0x00,0x00,0x40,0x30,0x1E,0x10,0xF0,0x10,0x10,0x18,0x10,0x00,0x00,

0x00,0x00,0x3F,0x10,0x08,0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x00,0x00

};


char code Hz_ping[]=

{

/*------------------------------------------------------------------------------

  源文件 / 文字 : F:LD測(cè)試儀液晶字模提取+排版軟件液晶字模提取圖例ping.bmp萍

  寬×高(像素): 16×16

  字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)

  數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-29 8:46:30

------------------------------------------------------------------------------*/

0x00,0xC8,0x28,0x58,0x08,0x0C,0xBE,0x28,0x28,0xE8,0x3E,0x28,0xA8,0x2C,0x08,0x00,

0x00,0x08,0x09,0x7E,0x01,0x04,0x04,0x05,0x04,0x7F,0x04,0x05,0x04,0x06,0x04,0x00

};


/****************************************************************************

函數(shù)功能:LCD延時(shí)程序

入口參數(shù):t

出口參數(shù):

****************************************************************************/

void LCDdelay(unsigned int t)

{

              unsigned int i,j;

              for(i=0;i<t;i++);[ size][="" align]
              for(j=0;j<10;j++);

}

/****************************************************************************

狀態(tài)檢查,LCD是否忙



*****************************************************************************/

void CheckState()                           

{

   unsigned char dat,DATA;//狀態(tài)信息(判斷是否忙)

   LCDDi=0; // 數(shù)據(jù)指令選擇,D/I(RS)="L" ,表示 DB7∽DB0 為顯示指令數(shù)據(jù)

   LCDRW=1; //R/W="H" ,E="H"數(shù)據(jù)被讀到DB7∽DB0

   do

   {

      DATA=0x00;

      LCDEnable=1;              //EN下降源

                LCDdelay(2);//延時(shí)

                dat=DATA;

      LCDEnable=0;

      dat=0x80 & dat; //僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào))

    }

    while(!(dat==0x00));

}

/*****************************************************************************

函數(shù)功能:寫命令到LCD程序,RS(DI)=L,RW=L,EN=H,即來一個(gè)脈沖寫一次

入口參數(shù):cmdcode

出口參數(shù):

*****************************************************************************/

void write_com(unsigned char cmdcode)

{

    CheckState();//檢測(cè)LCD是否忙

              LCDDi=0;

              LCDRW=0;

              P0=cmdcode;                           

              LCDdelay(2);

              LCDEnable=1;

              LCDdelay(2);

              LCDEnable=0;

}

/*****************************************************************************

函數(shù)功能:LCD初始化程序

入口參數(shù):

出口參數(shù):

*****************************************************************************/

void init_lcd()

{

              LCDdelay(100);            

              LCDMcs=1;//剛開始關(guān)閉兩屏

              LCDScs=1;

              LCDdelay(100);

              write_com(LCDLCDDisp_Off);              //寫初始化命令

              write_com(Page_Add+0);

              write_com(Start_Line+0);

              write_com(LCDCol_Add+0);

              write_com(LCDLCDDisp_On);

}

/*****************************************************************************

函數(shù)功能:寫數(shù)據(jù)到LCD程序,RS(DI)=H,RW=L,EN=H,即來一個(gè)脈沖寫一次

入口參數(shù):LCDDispdata

出口參數(shù):

*****************************************************************************/

void write_data(unsigned char LCDDispdata)

{

    CheckState();//檢測(cè)LCD是否忙

              LCDDi=1;

              LCDRW=0;

              P0=LCDDispdata;

              LCDdelay(2);

              LCDEnable=1;

              LCDdelay(2);

              LCDEnable=0;

}

/*****************************************************************************

函數(shù)功能:清除LCD內(nèi)存程序

入口參數(shù):pag,col,hzk

出口參數(shù):

*****************************************************************************/

void Clr_Scr()

{

              unsigned char j,k;

              LCDMcs=0; //左、右屏均開顯示

              LCDScs=0;

              write_com(Page_Add+0);

              write_com(LCDCol_Add+0);

              for(k=0;k<8;k++)//控制頁數(shù)0-7,共8頁

              {

                            write_com(Page_Add+k); //每頁每頁進(jìn)行寫

                              for(j=0;j<64;j++)  //每頁最多可寫32個(gè)中文文字或64個(gè)ASCII字符

                            {

                                  write_com(LCDCol_Add+j);

                                          write_data(0x00);//控制列數(shù)0-63,共64列,寫點(diǎn)內(nèi)容,列地址自動(dòng)加1

                            }

              }

}

/*****************************************************************************

函數(shù)功能:指定位置顯示漢字16*16程序

入口參數(shù):page,column,hzk

出口參數(shù):

*****************************************************************************/

void hz_LCDDisp16(unsigned char page,unsigned char column, unsigned char code *hzk)

{

              unsigned char j=0,i=0;

              for(j=0;j<2;j++)

              {

                            write_com(Page_Add+page+j);

                            write_com(LCDCol_Add+column);

                            for(i=0;i<16;i++)

                                          write_data(hzk[16*j+i]);

              }

}


void main()

{

              init_lcd();

              Clr_Scr();

              LCDMcs=0; //左屏開顯示

              LCDScs=1;

              hz_LCDDisp16(0,48,Hz_xu);// Hz_Wo為某個(gè)漢字的首地址

        LCDMcs=1; //右屏開顯示

              LCDScs=0;

        hz_LCDDisp16(0,0,Hz_ping);

              while(1)

    {


              }

}

3.2圖形顯示
我選了一張128x64的圖片在字模軟件中生產(chǎn)相應(yīng)的C代碼,將C代碼寫入到程序中。

由于液晶由兩個(gè)控制芯片來控制,所以有片選信號(hào)端口CS1和CS2。我在字體顯示程序中把改了顯示那一塊的代碼,主程序中改了片選信號(hào)。開始同時(shí)將左右屏都開了,顯示事,左右屏同時(shí)顯示一樣的圖形,并且顯示的圖形不完整。主程序中顯示部分的程序不對(duì),我想了后,將主程序中程序改了一下,先開左屏調(diào)用左屏顯示函數(shù),在關(guān)左屏開右屏調(diào)用右屏顯示函數(shù)。最后顯示成功。如圖4所示。


圖4 圖形顯示

代碼如下所示:

#include


#define LCDLCDDisp_Off   0x3e

#define LCDLCDDisp_On    0x3f

#define Page_Add     0xb8//ye


#define LCDCol_Add     0x40//lie

#define Start_Line     0xC0//hang

/*****液晶顯示器的端口定義*****/

#define data_ora P0 /*液晶數(shù)據(jù)總線*/

sbit LCDMcs=P2^1 ;    /*片選1*/

sbit LCDScs=P2^2 ;    /*片選2*/

sbit RESET=P2^3 ;  /*復(fù)位信號(hào)*/

sbit LCDDi=P2^4 ;     /*數(shù)據(jù)/指令 選擇*/

sbit LCDRW=P2^5 ;     /*讀/寫 選擇*/

sbit LCDEnable=P2^6 ;     /*讀/寫 使能*/




char code Hz[]=

{

/*------------------------------------------------------------------------------

  源文件 / 文字 : F:LD測(cè)試儀液晶字模提取+排版軟件液晶字模提取圖例yema.bmp萍

  寬×高(像素): 128×64

  字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/1024字節(jié)

  數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-29 9:09:37

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x80,0x90,0xD0,0x78,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xE0,0xE0,

0xE0,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x06,0x0F,0x0F,0x07,0x0F,0x0F,0x0F,0xCF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xDD,0x9F,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0x78,0xF8,0xF0,0xE0,0xC0,0xC0,0x80,

0xC0,0xE0,0xE0,0xF0,0xFC,0xFE,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFD,0x3B,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x80,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFC,0x9C,0x3C,0x3D,0x3F,0x7F,0xFD,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xE1,0xC3,0x87,

0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFE,0xE3,0xF1,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x1F,0x1F,0x78,0xF0,0x00,0x00,0x00,0x01,

0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFE,0xFE,0xFC,0xF8,0xF0,0xE0,0x80,0x80,0x80,0xC0,0xE0,0xFF,0xDF,0x7F,0x1F,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x7F,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x1F,0x07,0xBF,0xFF,0x3F,0x1F,0x05,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,

0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x0E,0x0E,0x0E,0x1F,0x1F,0x07,0x9F,0xFF,

0xFF,0x7B,0x61,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x18,0x1C,0x1E,0x07,0x03,0x01,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};


/****************************************************************************

函數(shù)功能:LCD延時(shí)程序

入口參數(shù):t

出口參數(shù):

****************************************************************************/

void LCDdelay(unsigned int t)

{

              unsigned int i,j;

              for(i=0;i<t;i++);[ size][="" align]
              for(j=0;j<10;j++);

}

/****************************************************************************

狀態(tài)檢查,LCD是否忙



*****************************************************************************/

void CheckState()                           

{

   unsigned char dat,DATA;//狀態(tài)信息(判斷是否忙)

   LCDDi=0; // 數(shù)據(jù)指令選擇,D/I(RS)="L" ,表示 DB7∽DB0 為顯示指令數(shù)據(jù)

   LCDRW=1; //R/W="H" ,E="H"數(shù)據(jù)被讀到DB7∽DB0

   do

   {

      DATA=0x00;

      LCDEnable=1;              //EN下降源

                LCDdelay(2);//延時(shí)

                dat=DATA;

      LCDEnable=0;

      dat=0x80 & dat; //僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào))

    }

    while(!(dat==0x00));

}

/*****************************************************************************

函數(shù)功能:寫命令到LCD程序,RS(DI)=L,RW=L,EN=H,即來一個(gè)脈沖寫一次

入口參數(shù):cmdcode

出口參數(shù):

*****************************************************************************/

void write_com(unsigned char cmdcode)

{

    CheckState();//檢測(cè)LCD是否忙

              LCDDi=0;

              LCDRW=0;

              P0=cmdcode;                           

              LCDdelay(2);

              LCDEnable=1;

              LCDdelay(2);

              LCDEnable=0;

}

/*****************************************************************************

函數(shù)功能:LCD初始化程序

入口參數(shù):

出口參數(shù):

*****************************************************************************/

void init_lcd()

{

              LCDdelay(100);            

              LCDMcs=1;//剛開始關(guān)閉兩屏

              LCDScs=1;

              LCDdelay(100);

              write_com(LCDLCDDisp_Off);              //寫初始化命令

              write_com(Page_Add+0);

              write_com(Start_Line+0);

              write_com(LCDCol_Add+0);

              write_com(LCDLCDDisp_On);

}

/*****************************************************************************

函數(shù)功能:寫數(shù)據(jù)到LCD程序,RS(DI)=H,RW=L,EN=H,即來一個(gè)脈沖寫一次

入口參數(shù):LCDDispdata

出口參數(shù):

*****************************************************************************/

void write_data(unsigned char LCDDispdata)

{

    CheckState();//檢測(cè)LCD是否忙

              LCDDi=1;

              LCDRW=0;

              P0=LCDDispdata;

              LCDdelay(2);

              LCDEnable=1;

              LCDdelay(2);

              LCDEnable=0;

}

/*****************************************************************************

函數(shù)功能:清除LCD內(nèi)存程序

入口參數(shù):pag,col,hzk

出口參數(shù):

*****************************************************************************/

void Clr_Scr()

{

              unsigned char j,k;

              LCDMcs=0; //左、右屏均開顯示

              LCDScs=0;

              write_com(Page_Add+0);

              write_com(LCDCol_Add+0);

              for(k=0;k<8;k++)//控制頁數(shù)0-7,共8頁

              {

                            write_com(Page_Add+k); //每頁每頁進(jìn)行寫

                              for(j=0;j<64;j++)  //每頁最多可寫32個(gè)中文文字或64個(gè)ASCII字符

                            {

                                  write_com(LCDCol_Add+j);

                                          write_data(0x00);//控制列數(shù)0-63,共64列,寫點(diǎn)內(nèi)容,列地址自動(dòng)加1

                            }

              }

}


void main()

{

              init_lcd();

              Clr_Scr();

              LCDMcs=0; //左屏開顯示

              LCDScs=1;

    Bmp_Left_Disp(0,0,Hz);

    LCDMcs=1; //右屏開顯示

              LCDScs=0;

              Bmp_Right_Disp(0,0,Hz);


              while(1)

    {


              }

}

3.3同時(shí)顯示多個(gè)漢字
  用字模軟件取模后通過改寫軟件,仿真圖形如圖5所示。


圖5 顯示多個(gè)漢字的仿真圖

代碼如下所示:

#include

#define LCDLCDDisp_Off   0x3e

#define LCDLCDDisp_On    0x3f

#define Page_Add     0xb8//頁地址

#define LCDCol_Add     0x40//列地址

#define Start_Line     0xC0//行地址

/*****液晶顯示器的端口定義*****/

#define data_ora P0 /*液晶數(shù)據(jù)總線*/

sbit LCDMcs=P2^1 ;    /*片選1*/

sbit LCDScs=P2^2 ;    /*片選2*/

sbit RESET=P2^3 ;  /*復(fù)位信號(hào)*/

sbit LCDDi=P2^4 ;     /*數(shù)據(jù)/指令 選擇*/

sbit LCDRW=P2^5 ;     /*讀/寫 選擇*/

sbit LCDEnable=P2^6 ;     /*讀/寫 使能*/




unsigned char code Bmp1[]=

{

/*------------------------------------------------------------------------------

  源文件 / 文字 : 來自剪貼板!武漢理工大學(xué)

  寬×高(像素): 128×16

  字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)

  數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-29 17:52:57

  顯示的漢字:武漢理工大學(xué)

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x20,0x20,0x24,0x24,0x24,0xE4,0x24,0x20,0x20,0xFE,0x20,0x24,0x28,0x20,

0x00,0x20,0xC2,0x0C,0x80,0x60,0x04,0x7C,0x84,0x04,0x04,0xC4,0x3E,0x04,0x00,0x00,

0x88,0x88,0xF8,0x88,0x88,0x00,0xFC,0x24,0x24,0xFC,0x24,0x24,0xFE,0x04,0x00,0x00,

0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x20,

0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x40,0x30,0x10,

0x52,0x5C,0x50,0x52,0x5C,0x50,0xD8,0x56,0x10,0x50,0x30,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x20,0x60,0x3F,0x20,0x20,0x1F,0x12,0x12,0x10,0x07,0x18,0x20,0x40,0x78,

0x00,0x04,0x04,0x7E,0x41,0x40,0x20,0x10,0x0B,0x04,0x0B,0x10,0x20,0x60,0x20,0x00,

0x10,0x30,0x1F,0x08,0x48,0x40,0x4B,0x49,0x49,0x7F,0x49,0x49,0x6B,0x40,0x08,0x20,

0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x40,0x40,

0x20,0x10,0x08,0x06,0x01,0x02,0x04,0x08,0x10,0x20,0x60,0x20,0x00,0x04,0x04,0x04,

0x04,0x04,0x24,0x44,0x3F,0x05,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

unsigned char code Bmp2[]=

{

/*------------------------------------------------------------------------------

  源文件 / 文字 : 信息工程學(xué)院

  寬×高(像素): 128×16

  字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)

  數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-29 18:34:04

  顯示的漢字:信息工程學(xué)院

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0x40,0xF0,0x0E,0x00,0x28,0x28,0x28,0x2A,0x2C,0x28,0x28,0x28,0x08,0x00,

0x00,0x00,0x00,0xF8,0xA8,0xAC,0xAA,0xA8,0xA8,0xA8,0xFC,0x08,0x00,0x00,0x00,0x00,

0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x24,

0xA4,0xFC,0x26,0x24,0x00,0x7C,0x24,0x24,0x24,0x24,0x7C,0x00,0x00,0x40,0x30,0x10,

0x52,0x5C,0x50,0x52,0x5C,0x50,0xD8,0x56,0x10,0x50,0x30,0x00,0x00,0xFC,0x04,0x64,

0x9C,0x20,0x58,0x48,0x4A,0x4C,0x48,0x48,0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x7D,0x25,0x25,0x25,0x25,0x7D,0x01,0x00,0x00,

0x00,0x20,0x18,0x03,0x3A,0x42,0x46,0x5A,0x42,0x42,0x73,0x00,0x08,0x30,0x00,0x20,

0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x08,0x06,

0x01,0x7F,0x01,0x42,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,0x04,0x04,0x04,

0x04,0x04,0x24,0x44,0x3F,0x05,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x7F,0x04,0x08,

0x47,0x41,0x21,0x1F,0x01,0x01,0x3F,0x41,0x41,0x79,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

unsigned char code Bmp3[]=

{

/*------------------------------------------------------------------------------

  源文件 / 文字 : 通信工程

  寬×高(像素): 128×

  字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)

  數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-29 18:36:04

  顯示漢字:通信工程

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x42,

0xCC,0x00,0x00,0xF4,0x54,0x5C,0xF4,0x5C,0x56,0xF4,0x00,0x00,0x00,0x80,0x40,0xF0,

0x0E,0x00,0x28,0x28,0x28,0x2A,0x2C,0x28,0x28,0x28,0x08,0x00,0x00,0x08,0x08,0x08,

0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x24,0xA4,0xFC,0x26,

0x24,0x00,0x7C,0x24,0x24,0x24,0x24,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,

0x0F,0x10,0x20,0x5F,0x42,0x42,0x5F,0x42,0x52,0x5F,0x40,0x40,0x00,0x00,0x00,0x7F,

0x00,0x00,0x01,0x7D,0x25,0x25,0x25,0x25,0x7D,0x01,0x00,0x00,0x20,0x20,0x20,0x20,

0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x08,0x06,0x01,0x7F,0x01,

0x42,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

unsigned char code Bmp4[]=

{

/*------------------------------------------------------------------------------

  源文件 / 文字 : 0606班

  寬×高(像素): 128×16

  字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)

  數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-29 18:37:59

  顯示的漢字:0606班

------------------------------------------------------------------------------*/

0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,

0x20,0x10,0x10,0x30,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,

0x20,0x10,0x10,0x30,0x00,0x00,0x44,0x44,0xFC,0x44,0x04,0xC0,0x00,0xFE,0x84,0x84,

0xFC,0x84,0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1F,

0x22,0x21,0x21,0x21,0x1E,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1F,

0x22,0x21,0x21,0x21,0x1E,0x00,0x10,0x10,0x0F,0x48,0x28,0x11,0x08,0x27,0x20,0x20,

0x3F,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

/****************************************************************************

函數(shù)功能:LCD延時(shí)程序

入口參數(shù):t

出口參數(shù):

****************************************************************************/

void LCDdelay(unsigned int t)

{

              unsigned int i,j;

              for(i=0;i<t;i++);[ size][="" align]
              for(j=0;j<10;j++);

}

/****************************************************************************

狀態(tài)檢查,LCD是否忙



*****************************************************************************/

void CheckState()                           

{

   unsigned char dat,DATA;//狀態(tài)信息(判斷是否忙)

   LCDDi=0; // 數(shù)據(jù)指令選擇,D/I(RS)="L" ,表示 DB7∽DB0 為顯示指令數(shù)據(jù)

   LCDRW=1; //R/W="H" ,E="H"數(shù)據(jù)被讀到DB7∽DB0

   do

   {

      DATA=0x00;

      LCDEnable=1;              //EN下降源

                LCDdelay(2);//延時(shí)

                dat=DATA;

      LCDEnable=0;

      dat=0x80 & dat; //僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào))

    }

    while(!(dat==0x00));

}

/*****************************************************************************

函數(shù)功能:寫命令到LCD程序,RS(DI)=L,RW=L,EN=H,即來一個(gè)脈沖寫一次

入口參數(shù):cmdcode

出口參數(shù):

*****************************************************************************/

void write_com(unsigned char cmdcode)

{

    CheckState();//檢測(cè)LCD是否忙

              LCDDi=0;

              LCDRW=0;

              P0=cmdcode;                           

              LCDdelay(2);

              LCDEnable=1;

              LCDdelay(2);

              LCDEnable=0;

}

/*****************************************************************************

函數(shù)功能:LCD初始化程序

入口參數(shù):

出口參數(shù):

*****************************************************************************/

void init_lcd()

{

              LCDdelay(100);            

              LCDMcs=1;//剛開始關(guān)閉兩屏

              LCDScs=1;

              LCDdelay(100);

              write_com(LCDLCDDisp_Off);              //寫初始化命令

              write_com(Page_Add+0);

              write_com(Start_Line+0);

              write_com(LCDCol_Add+0);

              write_com(LCDLCDDisp_On);

}

/*****************************************************************************

函數(shù)功能:寫數(shù)據(jù)到LCD程序,RS(DI)=H,RW=L,EN=H,即來一個(gè)脈沖寫一次

入口參數(shù):LCDDispdata

出口參數(shù):

*****************************************************************************/

void write_data(unsigned char LCDDispdata)

{

    CheckState();//檢測(cè)LCD是否忙

              LCDDi=1;

              LCDRW=0;

              P0=LCDDispdata;

              LCDdelay(2);

              LCDEnable=1;

              LCDdelay(2);

              LCDEnable=0;

}

/*****************************************************************************

函數(shù)功能:清除LCD內(nèi)存程序

入口參數(shù):pag,col,hzk

出口參數(shù):

*****************************************************************************/

void Clr_Scr()

{

              unsigned char j,k;

              LCDMcs=0; //左、右屏均開顯示

              LCDScs=0;

              write_com(Page_Add+0);

              write_com(LCDCol_Add+0);

              for(k=0;k<8;k++)//控制頁數(shù)0-7,共8頁

              {

                            write_com(Page_Add+k); //每頁每頁進(jìn)行寫

                              for(j=0;j<64;j++)  //每頁最多可寫32個(gè)中文文字或64個(gè)ASCII字符

                            {

                                  write_com(LCDCol_Add+j);

                                          write_data(0x00);//控制列數(shù)0-63,共64列,寫點(diǎn)內(nèi)容,列地址自動(dòng)加1

                            }

              }

}

/*****************************************************************************

函數(shù)功能:左屏位置顯示

入口參數(shù):page,column,hzk

出口參數(shù):

*****************************************************************************/

void Bmp_Left_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp)

{

              unsigned char j=0,i=0;

              for(j=0;j<2;j++)

              {

                            write_com(Page_Add+page+j);

                            write_com(LCDCol_Add+column);

                            for(i=0;i<64;i++)

                                          write_data(Bmp[128*j+i]);

              }

}

/*****************************************************************************

函數(shù)功能:右屏位置顯示

入口參數(shù):page,column,hzk

出口參數(shù):

*****************************************************************************/

void Bmp_Right_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp)

{

              unsigned char j=0,i=0;

              for(j=0;j<2;j++)

              {

                            write_com(Page_Add+page+j);

                            write_com(LCDCol_Add+column);

                            for(i=64;i<128;i++)

                                          write_data(Bmp[128*j+i]);

              }

}



void main()

{

              init_lcd();

              Clr_Scr();

              LCDMcs=0; //左屏開顯示

              LCDScs=1;

              Bmp_Left_Disp(0,0,Bmp1);// Bmp1為某個(gè)漢字的首地址

    Bmp_Left_Disp(2,0,Bmp2);

    Bmp_Left_Disp(4,0,Bmp3);

    Bmp_Left_Disp(6,0,Bmp4);

    LCDMcs=1; //右屏開顯示

              LCDScs=0;

    Bmp_Right_Disp(0,0,Bmp1);

    Bmp_Right_Disp(2,0,Bmp2);

    Bmp_Right_Disp(4,0,Bmp3);

    Bmp_Right_Disp(6,0,Bmp4);

              while(1)

    {


              }

}

3.4向上滾動(dòng)顯示
仿真圖形如圖6所示。

   

(a)第一次全部顯示                             (b)開始滾動(dòng)顯示

  

(c)                                            (d)

程序如下所示:

  1. #include
  2. #define  uchar  unsigned char
  3. #define  uint  unsigned int
  4. #define LCDLCDDisp_Off   0x3e
  5. #define LCDLCDDisp_On    0x3f
  6. #define Page_Add     0xb8//ye
  7. #define LCDCol_Add     0x40//lie
  8. #define Start_Line     0xC0//hang
  9. /*****液晶顯示器的端口定義*****/
  10. #define data_ora P0 /*液晶數(shù)據(jù)總線*/
  11. sbit LCDMcs=P2^1 ;    /*片選1*/
  12. sbit LCDScs=P2^2 ;    /*片選2*/
  13. sbit RESET=P2^3 ;  /*復(fù)位信號(hào)*/
  14. sbit LCDDi=P2^4 ;     /*數(shù)據(jù)/指令 選擇*/
  15. sbit LCDRW=P2^5 ;     /*讀/寫 選擇*/
  16. sbit LCDEnable=P2^6 ;     /*讀/寫 使能*/

  17. uchar *tab;
  18. uint k=0;
  19. uchar code hz1[]=
  20. {
  21. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  22. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  23. /*------------------------------------------------------------------------------
  24.   源文件 / 文字 : 武
  25.   寬×高(像素): 16×16
  26.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  27.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:50:18
  28. ------------------------------------------------------------------------------*/
  29. 0x10,0x50,0x34,0x14,0x1C,0xD4,0x16,0x14,0x10,0x7F,0x90,0x12,0x14,0x10,0x10,0x00,
  30. 0x40,0x40,0x7F,0x20,0x20,0x1F,0x11,0x11,0x01,0x00,0x07,0x18,0x20,0x40,0xF0,0x00,
  31. /*------------------------------------------------------------------------------
  32.   源文件 / 文字 : 漢
  33.   寬×高(像素): 16×16
  34.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  35.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:51:45
  36. ------------------------------------------------------------------------------*/
  37. 0x10,0x60,0x21,0x96,0x68,0x04,0x1E,0xE4,0x04,0x04,0x04,0xE4,0x1C,0x04,0x00,0x00,
  38. 0x04,0x04,0x7E,0x01,0x40,0x20,0x20,0x10,0x0B,0x04,0x0B,0x10,0x30,0x60,0x20,0x00,
  39. /*------------------------------------------------------------------------------
  40.   源文件 / 文字 : 理
  41.   寬×高(像素): 16×16
  42.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  43.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:52:29
  44. ------------------------------------------------------------------------------*/
  45. 0x44,0x44,0xFC,0x54,0x4C,0x04,0xFE,0x92,0x92,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,
  46. 0x10,0x10,0x0F,0x08,0x48,0x40,0x45,0x44,0x44,0x7F,0x44,0x44,0x44,0x45,0x40,0x00,
  47. /*------------------------------------------------------------------------------
  48.   源文件 / 文字 : 工
  49.   寬×高(像素): 16×16
  50.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  51.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:53:19
  52. ------------------------------------------------------------------------------*/
  53. 0x00,0x40,0x22,0x12,0x0A,0x06,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
  54. 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
  55. /*------------------------------------------------------------------------------
  56.   源文件 / 文字 : 大
  57.   寬×高(像素): 16×16
  58.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  59.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:53:53
  60. ------------------------------------------------------------------------------*/
  61. 0x20,0x60,0x20,0x30,0x28,0x24,0xA2,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
  62. 0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,
  63. /*------------------------------------------------------------------------------
  64.   源文件 / 文字 : 學(xué)
  65.   寬×高(像素): 16×16
  66.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  67.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:54:23
  68. ------------------------------------------------------------------------------*/
  69. 0x40,0x70,0x30,0x12,0x5C,0x54,0x52,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
  70. 0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,

  71. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  72. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  73. };
  74. uchar code hz2[]=
  75. {
  76. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  77. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  78. /*------------------------------------------------------------------------------
  79.   源文件 / 文字 : 信
  80.   寬×高(像素): 16×16
  81.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  82.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:56:07
  83. ------------------------------------------------------------------------------*/
  84. 0x80,0x40,0x30,0xFC,0x0F,0x0E,0xAA,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00,
  85. 0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,
  86. /*------------------------------------------------------------------------------
  87.   源文件 / 文字 : 息
  88.   寬×高(像素): 16×16
  89.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  90.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:56:47
  91. ------------------------------------------------------------------------------*/
  92. 0x00,0x40,0x20,0xFC,0x5C,0x54,0x56,0x55,0x54,0x54,0x54,0xFC,0x00,0x00,0x00,0x00,
  93. 0x00,0x20,0x38,0x01,0x3D,0x41,0x41,0x45,0x59,0x41,0x41,0x71,0x00,0x08,0x30,0x00,
  94. /*------------------------------------------------------------------------------
  95.   源文件 / 文字 : 工
  96.   寬×高(像素): 16×16
  97.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  98.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:57:52
  99. ------------------------------------------------------------------------------*/
  100. 0x00,0x40,0x22,0x12,0x0A,0x06,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
  101. 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
  102. /*------------------------------------------------------------------------------
  103.   源文件 / 文字 : 程
  104.   寬×高(像素): 16×16
  105.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  106.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:58:28
  107. ------------------------------------------------------------------------------*/
  108. 0x10,0x52,0xF2,0xFE,0x99,0x15,0x82,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
  109. 0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,
  110. /*------------------------------------------------------------------------------
  111.   源文件 / 文字 : 學(xué)
  112.   寬×高(像素): 16×16
  113.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  114.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:59:06
  115. ------------------------------------------------------------------------------*/
  116. 0x40,0x70,0x30,0x12,0x5C,0x54,0x52,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
  117. 0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
  118. /*------------------------------------------------------------------------------
  119.   源文件 / 文字 : 院
  120.   寬×高(像素): 16×16
  121.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  122.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:59:51
  123. ------------------------------------------------------------------------------*/
  124. 0xFE,0x42,0x32,0x5A,0x8E,0x0C,0x26,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
  125. 0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,

  126. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  127. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  128. };
  129. uchar code hz3[]=
  130. {
  131. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  132. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  133. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  134. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  135. /*------------------------------------------------------------------------------
  136.   源文件 / 文字 : 通
  137.   寬×高(像素): 16×16
  138.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  139.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 16:02:05
  140. ------------------------------------------------------------------------------*/
  141. 0x40,0x41,0xE6,0x10,0x08,0xF6,0x52,0x52,0x56,0xFA,0x5A,0x56,0xF2,0x00,0x00,0x00,
  142. 0x40,0x20,0x1F,0x20,0x40,0x5F,0x42,0x42,0x42,0x5F,0x4A,0x52,0x4F,0x40,0x40,0x00,
  143. /*------------------------------------------------------------------------------
  144.   源文件 / 文字 : 信
  145.   寬×高(像素): 16×16
  146.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  147.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 16:02:40
  148. ------------------------------------------------------------------------------*/
  149. 0x80,0x40,0x30,0xFC,0x0F,0x0E,0xAA,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00,
  150. 0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,
  151. /*------------------------------------------------------------------------------
  152.   源文件 / 文字 : 工
  153.   寬×高(像素): 16×16
  154.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  155.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:57:52
  156. ------------------------------------------------------------------------------*/
  157. 0x00,0x40,0x22,0x12,0x0A,0x06,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
  158. 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
  159. /*------------------------------------------------------------------------------
  160.   源文件 / 文字 : 程
  161.   寬×高(像素): 16×16
  162.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  163.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 15:58:28
  164. ------------------------------------------------------------------------------*/
  165. 0x10,0x52,0xF2,0xFE,0x99,0x15,0x82,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
  166. 0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,


  167. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  168. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  169. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  170. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  171. };
  172. uchar code hz4[]=
  173. {

  174. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  175. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  176. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  177. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  178. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  179. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  180. /*------------------------------------------------------------------------------
  181.   源文件 / 文字 : 許
  182.   寬×高(像素): 16×16
  183.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  184.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 16:05:36
  185. ------------------------------------------------------------------------------*/
  186. 0x40,0x41,0x6E,0xD4,0x08,0x44,0x32,0x0F,0x08,0x08,0xF8,0x08,0x08,0x08,0x00,0x00,
  187. 0x00,0x00,0x00,0x7F,0x20,0x11,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x00,
  188. /*------------------------------------------------------------------------------
  189.   源文件 / 文字 : 萍
  190.   寬×高(像素): 16×16
  191.   字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/32字節(jié)
  192.   數(shù)據(jù)轉(zhuǎn)換日期  : 2010-7-31 16:06:07
  193. ------------------------------------------------------------------------------*/
  194. 0x84,0x54,0x64,0x34,0x0C,0xAF,0x26,0x24,0x24,0xFF,0x24,0x24,0xE4,0xA4,0x04,0x00,
  195. 0x10,0x13,0xF9,0x06,0x00,0x08,0x09,0x0A,0x08,0xFF,0x08,0x0A,0x09,0x08,0x08,0x00,
  196. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  197. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  198. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  199. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  200. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  201. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

  202. };
  203. /****************************************************************************
  204. 函數(shù)功能:LCD延時(shí)程序
  205. 入口參數(shù):t
  206. 出口參數(shù):
  207. ****************************************************************************/
  208. void LCDdelay(uchar x)
  209. {


  210.    int d;
  211.    uchar y;
  212.    for(y=0;y<x;y++)
  213.    for(d=0;d<10;d++);
  214. }
  215. /****************************************************************************
  216. 狀態(tài)檢查,LCD是否忙


  217. *****************************************************************************/
  218. void CheckState()                           
  219. {
  220.    uchar dat,DATA;//狀態(tài)信息(判斷是否忙)
  221.    LCDDi=0; // 數(shù)據(jù)指令選擇,D/I(RS)="L" ,表示 DB7∽DB0 為顯示指令數(shù)據(jù)
  222.    LCDRW=1; //R/W="H" ,E="H"數(shù)據(jù)被讀到DB7∽DB0
  223.    do
  224.    {
  225.       DATA=0x00;
  226.       LCDEnable=1;              //EN下降源
  227.                 LCDdelay(1);//延時(shí)
  228.                 dat=DATA;
  229.       LCDEnable=0;
  230.       dat=0x80 & dat; //僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào))
  231.     }
  232.     while(!(dat==0x00));
  233. }
  234. /*****************************************************************************
  235. 函數(shù)功能:寫命令到LCD程序,RS(DI)=L,RW=L,EN=H,即來一個(gè)脈沖寫一次
  236. 入口參數(shù):cmdcode
  237. 出口參數(shù):
  238. *****************************************************************************/
  239. void write_com(uchar cmdcode)
  240. {
  241.     CheckState();//檢測(cè)LCD是否忙
  242.               LCDDi=0;
  243.               LCDRW=0;
  244.               P0=cmdcode;                           
  245.               LCDdelay(1);
  246.               LCDEnable=1;
  247.               LCDdelay(1);
  248.               LCDEnable=0;
  249. }

  250. /*****************************************************************************
  251. 函數(shù)功能:寫數(shù)據(jù)到LCD程序,RS(DI)=H,RW=L,EN=H,即來一個(gè)脈沖寫一次
  252. 入口參數(shù):LCDDispdata
  253. 出口參數(shù):
  254. *****************************************************************************/
  255. void write_data(uchar LCDDispdata)
  256. {
  257.     CheckState();//檢測(cè)LCD是否忙
  258.               LCDDi=1;
  259.               LCDRW=0;
  260.               P0=LCDDispdata;
  261.               LCDdelay(1);
  262.               LCDEnable=1;
  263.               LCDdelay(1);
  264.               LCDEnable=0;
  265. }
  266. /*****************************************************************************
  267. /*****************************************************************************
  268. 函數(shù)功能:LCD初始化程序
  269. 入口參數(shù):
  270. 出口參數(shù):
  271. *****************************************************************************/
  272. void init_lcd()
  273. {
  274.               LCDdelay(1);            
  275.               LCDMcs=1;//剛開始關(guān)閉兩屏
  276.               LCDScs=1;
  277.               LCDdelay(1);
  278.               write_com(LCDLCDDisp_Off);              //寫初始化命令
  279.               write_com(Page_Add+0);
  280.               write_com(Start_Line+0);
  281.               write_com(LCDCol_Add+0);
  282.               write_com(LCDLCDDisp_On);
  283. }
  284. /**************************************************************************
  285. 函數(shù)功能:清除LCD內(nèi)存程序
  286. 入口參數(shù):pag,col,hzk
  287. 出口參數(shù):
  288. *****************************************************************************/
  289. void Clr_Scr()
  290. {
  291.               uchar j,k;
  292.               LCDMcs=0; //左、右屏均開顯示
  293.               LCDScs=0;
  294.               write_com(Page_Add+0);
  295.               write_com(LCDCol_Add+0);
  296.               for(k=0;k<8;k++)//控制頁數(shù)0-7,共8頁
  297.               {
  298.                             write_com(Page_Add+k); //每頁每頁進(jìn)行寫
  299.                               for(j=0;j<64;j++)  //每頁最多可寫32個(gè)中文文字或64個(gè)ASCII字符
  300.                             {
  301.                                   write_com(LCDCol_Add+j);
  302.                                           write_data(0x00);//控制列數(shù)0-63,共64列,寫點(diǎn)內(nèi)容,列地址自動(dòng)加1
  303.                             }
  304.               }
  305. }
  306. /*****************************************************************************
  307. 函數(shù)功能:一行一行顯示
  308. 入口參數(shù):page,column,hzk
  309. 出口參數(shù):
  310. *****************************************************************************/
  311. Disp(uchar page,uchar column, uchar code *word)
  312. {
  313. uchar i;
  314. LCDMcs=0;
  315. LCDScs=1;
  316. write_com(0xb8|page);
  317. write_com(0x40|column);
  318. for(i=0;i<16;i++)
  319. write_data(word[i]);
  320. for(i=32;i<48;i++)
  321. write_data(word[i]);
  322. for(i=64;i<80;i++)
  323. write_data(word[i]);
  324. for(i=96;i<112;i++)
  325. write_data(word[i]);

  326. LCDMcs=1;
  327. LCDScs=0;
  328. write_com(0xb8|page);
  329. write_com(0x40);
  330. for(i=128;i<144;i++)
  331. write_data(word[i]);
  332. for(i=160;i<176;i++)
  333. write_data(word[i]);
  334. for(i=192;i<208;i++)
  335. write_data(word[i]);
  336. for(i=224;i<240;i++)
  337. write_data(word[i]);

  338. LCDMcs=0;
  339. LCDScs=1;
  340. write_com(0xb8|page+1);
  341. write_com(0x40|column);
  342. for(i=16;i<32;i++)
  343. write_data(word[i]);
  344. for(i=48;i<64;i++)
  345. write_data(word[i]);
  346. for(i=80;i<96;i++)
  347. write_data(word[i]);
  348. for(i=112;i<128;i++)
  349. write_data(word[i]);


  350. LCDMcs=1;
  351. LCDScs=0;
  352. write_com(0xb8|page+1);
  353. write_com(0x40);
  354. for(i=144;i<160;i++)
  355. write_data(word[i]);
  356. for(i=176;i<192;i++)
  357. write_data(word[i]);
  358. for(i=208;i<224;i++)
  359. write_data(word[i]);
  360. for(i=240;i<250;i++)
  361. write_data(word[i]);
  362. }

  363. void main()
  364. {
  365.               init_lcd();
  366.               Clr_Scr();
  367.      k=0;
  368.       for(k=0xc0;k<0xff;k++)
  369.               {
  370.                             Disp(0,0,hz1);
  371.                             Disp(2,0,hz2);
  372.                             Disp(4,0,hz3);
  373.                             Disp(6,0,hz4);
  374.          LCDMcs=0;
  375.          LCDScs=0;
  376.                             write_com(k);
  377.                             LCDdelay(2);

  378.               }
  379. while(1)
  380.     {

  381.               }
  382. }
復(fù)制代碼


4小結(jié)
    剛開始學(xué)液晶時(shí)感覺好難,字模就困擾了我好多天。通過看資料查資料,以及看程序搞懂了,通過寫程序仿真,對(duì)液晶的控制更明白,主要寫的是并行數(shù)據(jù)傳輸?shù)拇a。寫了一個(gè)漢字的顯示,多個(gè)漢字顯示程序,圖形顯示的程序,還有漢字動(dòng)態(tài)顯示。由于取字模軟件運(yùn)行有點(diǎn)問題,左上角上自動(dòng)多出一撇,所以顯示字或圖形的左上角多出一撇。后面寫一個(gè)漢字一個(gè)漢字顯示程序并仿真,還有波形顯示程序和仿真。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:571794 發(fā)表于 2020-6-5 15:46 | 只看該作者
我剛好在學(xué)習(xí)12864,謝謝樓主
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲人免费视频 | 色在线免费视频 | 成年人网站免费视频 | 国产情侣在线看 | 日韩精品在线播放 | 欧美日韩精选 | 国产精品久久久久久久7777 | 日韩精品一区二区三区视频播放 | 91中文字幕在线 | 免费在线国产视频 | 日韩中文字幕一区二区 | 亚洲在线免费观看 | 免费毛片网| 亚洲成人高清 | 精品欧美| 91.com在线观看| 婷婷中文在线 | 欧美成人手机视频 | 蜜桃av鲁一鲁一鲁一鲁 | 国产精品99久久免费观看 | 神马久久久久久久久久 | 在线视频中文字幕 | 日韩中文在线视频 | 在线观看黄视频 | 操人网 | 91社区在线观看 | 一区二区三区四区国产 | 日韩在线一区二区三区 | 欧美一级片 | 欧美日韩午夜精品 | 色视频网站 | 夜夜爽99久久国产综合精品女不卡 | 在线欧美亚洲 | 亚洲欧洲精品在线 | 欧美日韩精品中文字幕 | 中文字幕高清在线 | 午夜寂寞影院在线观看 | 久久精品视频在线免费观看 | 国产精彩视频一区 | 国产成人jvid在线播放 | 久久精品国产亚洲a |