?? lcm_drive.lst
字號(hào):
C51 COMPILER V7.50 LCM_DRIVE 04/22/2008 10:18:49 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCM_DRIVE
OBJECT MODULE PLACED IN LCM_DRIVE.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCM_DRIVE.c OPTIMIZE(2,SPEED) BROWSE INTVECTOR(0X8000) DEFINE(MONITOR51) DE
-BUG OBJECTEXTEND
line level source
1 /***********************************************************************
2 * 文件名:LCM_DRIVE.C
3 * 功能:圖形液晶TG12864B-2驅(qū)動(dòng)程序。
4 * 說(shuō)明:在LCM_DRIVE.H文件中定義了LCM操作地址,左半屏的寫命令操作地址為2004H,寫
5 * 數(shù)據(jù)操作地址為2005H,右半屏的寫命令操作地址為2000H,寫數(shù)據(jù)操作地址為2001H;
6 * 由于GRAPHICS.C中使用了disp_buf作為作圖緩沖區(qū),所以LCM_WriteByte()、LCM_
7 * DispFill()均要更新disp_buf。
8 ***********************************************************************/
9 #include "CONFIG.H"
10
11 /* LCM復(fù)位控制腳定義 */
12 sbit LCM_RST = P1^0;
13
14 /***********************************************************************
15 * 名稱:LCM_Wr1Command()
16 * 功能:寫命令子程序,所選屏為左半屏(CS1)。
17 * 入口參數(shù):command 要寫入LCM的命令字
18 ***********************************************************************/
19 #define LCM_Wr1Command(command) LCMCS1W_COM = command
20
21 /***********************************************************************
22 * 名稱:LCM_Wr2Command()
23 * 功能:寫命令子程序,所選屏為右半屏(CS2)。
24 * 入口參數(shù):command 要寫入LCM的命令字
25 ***********************************************************************/
26 #define LCM_Wr2Command(command) LCMCS2W_COM = command
27
28 /***********************************************************************
29 * 名稱:LCM_Wr1Data()
30 * 功能:寫數(shù)據(jù)子程序,所選屏為左半屏(CS1)。
31 * 入口參數(shù):wrdata 要寫入LCM的數(shù)據(jù)
32 ***********************************************************************/
33 #define LCM_Wr1Data(wrdata) LCMCS1W_DAT = wrdata
34
35 /***********************************************************************
36 * 名稱:LCM_Wr2Data()
37 * 功能:寫數(shù)據(jù)子程序,所選屏為右半屏(CS2)。
38 * 入口參數(shù):wrdata 要寫入LCM的數(shù)據(jù)
39 ***********************************************************************/
40 #define LCM_Wr2Data(wrdata) LCMCS2W_DAT = wrdata
41
42
43 /***********************************************************************
44 * 名稱:LCM_DispIni()
45 * 功能:LCM顯示初始化。使能顯示,設(shè)置顯示起始行為0并清屏。
46 * 入口參數(shù):無(wú)
47 * 出口參數(shù):無(wú)
48 ***********************************************************************/
49 void LCM_DispIni(void)
50 { uint16 i;
51 1
52 1 LCM_RST = 0; // 復(fù)位驅(qū)動(dòng)芯片
53 1 for(i=0; i<500; i++);
54 1 LCM_RST = 1;
C51 COMPILER V7.50 LCM_DRIVE 04/22/2008 10:18:49 PAGE 2
55 1
56 1 LCM_Wr1Command(LCM_DISPON); // 打開顯示
57 1 LCM_Wr1Command(LCM_STARTROW); // 設(shè)置顯示起始行為0
58 1 LCM_Wr2Command(LCM_DISPON);
59 1 LCM_Wr2Command(LCM_STARTROW);
60 1 LCM_DispClr(); // 清屏
61 1
62 1 LCM_Wr1Command(LCM_ADDRSTRY+0); // 設(shè)置頁(yè)(行)地址
63 1 LCM_Wr1Command(LCM_ADDRSTRX+0); // 設(shè)置列地址,即列
64 1 LCM_Wr2Command(LCM_ADDRSTRY+0);
65 1 LCM_Wr2Command(LCM_ADDRSTRX+0);
66 1 }
67
68
69 /***********************************************************************
70 * 名稱:LCM_WriteByte()
71 * 功能:向指定點(diǎn)寫數(shù)據(jù)(一字節(jié))。
72 * 入口參數(shù):x x坐標(biāo)值(0-127)
73 * y y坐標(biāo)值(0-63)
74 * wrdata 所要寫的數(shù)據(jù)
75 * 出口參數(shù):無(wú)
76 * 說(shuō)明:會(huì)更新disp_buf相應(yīng)存儲(chǔ)單元
77 ***********************************************************************/
78 void LCM_WriteByte(uint8 x, uint8 y, uint8 wrdata)
79 { x = x&0x7f; // 參數(shù)過濾
80 1 y = y&0x3f;
81 1
82 1 y = y>>3;
83 1 disp_buf[y][x] = wrdata;
84 1 if(x<64) // 選擇液晶控制芯片(即CS1--控制前64個(gè)點(diǎn),CS2--控制后64個(gè)點(diǎn))
85 1 { LCM_Wr1Command(LCM_ADDRSTRX+x); // 設(shè)置當(dāng)前列地址,即x坐標(biāo)
86 2 LCM_Wr1Command(LCM_ADDRSTRY+y); // 設(shè)置當(dāng)前頁(yè)地址,即y坐標(biāo)
87 2 for(x=0; x<5; x++); // 短延時(shí)
88 2 LCM_Wr1Data(wrdata);
89 2 }
90 1 else
91 1 { x = x-64; // 調(diào)整x變量值
92 2 LCM_Wr2Command(LCM_ADDRSTRX+x);
93 2 LCM_Wr2Command(LCM_ADDRSTRY+y);
94 2 for(x=0; x<5; x++);
95 2 LCM_Wr2Data(wrdata);
96 2 }
97 1 }
98
99
100 /***********************************************************************
101 * 名稱:LCM_DispFill()
102 * 功能:向顯示屏填充數(shù)據(jù)
103 * 入口參數(shù):filldata 要寫入LCM的填充數(shù)據(jù)
104 * 出口參數(shù):無(wú)
105 * 說(shuō)明:會(huì)更新disp_buf相應(yīng)存儲(chǔ)單元
106 ***********************************************************************/
107 void LCM_DispFill(uint8 filldata)
108 { uint8 x, y;
109 1
110 1 LCM_Wr1Command(LCM_STARTROW); // 設(shè)置顯示起始行為0
111 1 LCM_Wr2Command(LCM_STARTROW);
112 1
113 1 for(y=0; y<8; y++)
114 1 { LCM_Wr1Command(LCM_ADDRSTRY+y); // 設(shè)置頁(yè)(行)地址
115 2 LCM_Wr1Command(LCM_ADDRSTRX); // 設(shè)置列地址
116 2 LCM_Wr2Command(LCM_ADDRSTRY+y);
C51 COMPILER V7.50 LCM_DRIVE 04/22/2008 10:18:49 PAGE 3
117 2 LCM_Wr2Command(LCM_ADDRSTRX);
118 2
119 2 for(x=0; x<64; x++)
120 2 { LCM_Wr1Data(filldata);
121 3 LCM_Wr2Data(filldata);
122 3 disp_buf[y][x] = filldata;
123 3 disp_buf[y][x+64] = filldata;
124 3 }
125 2 }
126 1 }
127
128
129 /* ASCII碼對(duì)應(yīng)的點(diǎn)陣數(shù)據(jù)表 */
130 uint8 code ASCII_TAB20[80] = { 0x00, 0x00, 0x00, 0x00, 0x00,
131 0x00, 0x00, 0x9e, 0x00, 0x00,
132 0x00, 0x0e, 0x00, 0x0e, 0x00,
133 0x28, 0xfe, 0x28, 0xfe, 0x28,
134 0x48, 0x54, 0xfe, 0x54, 0x24,
135 0x46, 0x26, 0x10, 0xc8, 0xc4,
136 0x6c, 0x92, 0xaa, 0x44, 0xa0,
137 0x00, 0x0a, 0x06, 0x00, 0x00,
138 0x00, 0x38, 0x44, 0x82, 0x00,
139 0x00, 0x82, 0x44, 0x38, 0x00,
140 0x28, 0x10, 0x7c, 0x10, 0x28,
141 0x10, 0x10, 0x7c, 0x10, 0x10,
142 0x00, 0xa0, 0x60, 0x00, 0x00,
143 0x10, 0x10, 0x10, 0x10, 0x10,
144 0x00, 0xc0, 0xc0, 0x00, 0x00,
145 0x40, 0x20, 0x10, 0x08, 0x04
146 };
147
148 uint8 code ASCII_TAB30[80] = { 0x7C, 0xA2, 0x92, 0x8A, 0x7C,
149 0x00, 0x84, 0xFE, 0x80, 0x00,
150 0x84, 0xC2, 0xA2, 0x92, 0x8C,
151 0x42, 0x82, 0x8A, 0x96, 0x62,
152 0x30, 0x28, 0x24, 0xFE, 0x20,
153 0x4E, 0x8A, 0x8A, 0x8A, 0x72,
154 0x78, 0x94, 0x92, 0x92, 0x60,
155 0x02, 0xE2, 0x12, 0x0A, 0x06,
156 0x6C, 0x92, 0x92, 0x92, 0x6C,
157 0x0C, 0x92, 0x92, 0x52, 0x3C,
158 0x00, 0x6C, 0x6C, 0x00, 0x00,
159 0x00, 0xAC, 0x6C, 0x00, 0x00,
160 0x10, 0x28, 0x44, 0x82, 0x00,
161 0x28, 0x28, 0x28, 0x28, 0x28,
162 0x00, 0x82, 0x44, 0x28, 0x10,
163 0x04, 0x02, 0xA2, 0x12, 0x0C
164 };
165
166 uint8 code ASCII_TAB40[80] = { 0x64, 0x92, 0xF2, 0x82, 0x7C,
167 0xFC, 0x22, 0x22, 0x22, 0xFC,
168 0xFE, 0x92, 0x92, 0x92, 0x6C,
169 0x7C, 0x82, 0x82, 0x82, 0x44,
170 0xFE, 0x82, 0x82, 0x44, 0x38,
171 0xFE, 0x92, 0x92, 0x92, 0x82,
172 0xFE, 0x12, 0x12, 0x12, 0x02,
173 0x7C, 0x82, 0x92, 0x92, 0xF4,
174 0xFE, 0x10, 0x10, 0x10, 0xFE,
175 0x00, 0x82, 0xFE, 0x82, 0x00,
176 0x40, 0x80, 0x82, 0x7E, 0x02,
177 0xFE, 0x10, 0x28, 0x44, 0x82,
178 0xFE, 0x80, 0x80, 0x80, 0x80,
C51 COMPILER V7.50 LCM_DRIVE 04/22/2008 10:18:49 PAGE 4
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -