?? ocm240128.lst
字號:
208 2 case 3:
209 2 D_Addr = dat1; //圖形顯示區寬度字節數
210 2 while (!OCM_busy(0)); //單次讀寫遇忙判斷
211 2 D_Addr = 0; //數據2格式為0
212 2 while (!OCM_busy(0)); //單次讀寫遇忙判斷
213 2 C_Addr = 0X43; //圖形顯示區寬度設置
214 2 break;
215 2 default: //命令無效
216 2 break;
217 2 }
218 1 }
219
220
221 /******************************************************************************************
222 ** 函數名稱: void OCM_mode(uchar mod,uchar cg)
223 ** 功能描述: 顯示方式設置:或 異或 與 文本顯示特性以雙字節表示
224 CG 位 字符發生器選擇位
225 ** 輸入參數: mode: 0: 文本與圖形以邏輯“或”的關系合成顯示
226 1: 文本與圖形“異或”
227 2: 文本與圖形“與”
228 3: 文本顯示特性以雙字節表示
229 在設置了文本屬性顯示方式后,圖形顯示區將轉換成為文本屬性區,用來控制文本屬性
230 其他:默認為無效
231 cg: 非0:啟用內部字符發生器CGROM
232 0:禁止內部 CGROM
233 ******************OCM240128內部有CGRAM 2K(256字節)空間*************************************
234 使用內部字符發生器CGROM時低128字節為內部字符,CGROM的高128字節可自己定義
235 禁止內部字符發生器CGROM時CGRAM256字節都用于用戶字符定義
236 通過void OCM_mode(uchar mod,uchar cg) cg參數控制
237 *******************************************************************************************
238 ** 輸出參數: 無
239 ** 全局變量: 無
240 ** 調用模塊: 0CM240128.C文件內部調用
241 ******************************************************************************************/
C51 COMPILER V8.08 OCM240128 11/21/2009 22:14:42 PAGE 5
242 void OCM_mode(uchar mod,uchar cg)
243 {
244 1 uchar cgrom_stat;
245 1
246 1 if (cg) //cg !=0 啟用內部字符發生器CGROM
247 1 {
248 2 cgrom_stat = (0x00 << 3); //第4位位0啟用
249 2 }
250 1 else //cg = 0 禁止內部 CGROM
251 1 {
252 2 cgrom_stat = (0x01 << 3); //CG位為1禁止內部 CGROM
253 2 }
254 1
255 1 while (!OCM_busy(0)); //單次讀寫遇忙判斷
256 1
257 1 switch (mod)
258 1 {
259 2 case 0: C_Addr = 0X80 | cgrom_stat; break; //“或”
260 2 case 1: C_Addr = 0X81 | cgrom_stat; break; //“異或”
261 2 case 2: C_Addr = 0X83 | cgrom_stat; break; //“與”
262 2 case 3: C_Addr = 0X84 | cgrom_stat; break; //文本顯示特性以雙字節表示
263 2 default: break;
264 2 }
265 1 }
266
267
268
269
270
271 /******************************************************************************************
272 ** 函數名稱: void OCM_state(uchar mod)
273 ** 功能描述: 顯示狀態設置,相應位為1,啟用相應功能,為0關閉相應功能
274 N1 N2 N3 N4
275 光標閃爍設 光標顯示設置 文本顯示設置 圖形顯示設置
276 ** 輸入參數: mod: 參數格式 (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3)所以功能打開
277 ** 輸出參數: 無
278 ** 全局變量: 無
279 ** 調用模塊: 0CM240128.C文件內部調用
280 ******************************************************************************************/
281 void OCM_state(uchar mod)
282 {
283 1 uchar tmp = mod;
284 1
285 1 while (!OCM_busy(0)); //單次讀寫遇忙判斷
286 1
287 1 tmp &= 0X0F; //低4位有效
288 1
289 1 C_Addr = 0X90 | tmp; //寫命令字
290 1 }
291
292
293 /******************************************************************************************
294 ** 函數名稱: void OCM_cursor(uchar mod)
295 ** 功能描述: 光標形狀設置(Cursor pattern select)
296 mod (0~7) mod越大,光標也越大
297 ** 輸入參數: mod:
298 ** 輸出參數: 無
299 ** 全局變量: 無
300 ** 調用模塊: 無
301 ******************************************************************************************/
302 void OCM_cursor(uchar mod)
303 {
C51 COMPILER V8.08 OCM240128 11/21/2009 22:14:42 PAGE 6
304 1 uchar tmp = mod;
305 1 tmp &= 0x07; //低3位有效
306 1
307 1 while (!OCM_busy(0)); //單次讀寫遇忙判斷
308 1
309 1 C_Addr = 0XA0 | tmp; //寫命令字
310 1 }
311
312
313
314
315
316 /******************************************************************************************
317 ** 函數名稱: void OCM_bit(uchar bite, uchar byte)
318 ** 功能描述: 位操作 (Bit set reset)
319 ** 輸入參數: byte: (0~7有效)顯示單元中的數據的任一位寫“0”或“1”
320 bite: 0:byte選擇的為置0,非0:byte選擇的位置1
321 ** 輸出參數: 無
322 ** 全局變量: 無
323 ** 調用模塊: 無
324 ******************************************************************************************/
325 void OCM_bit(uchar bite, uchar byte)
326 {
327 1 uchar tmp = byte;
328 1
329 1 if (bite) //bite轉換為位
330 1 {
331 2 bite = 1;
332 2 }
333 1 else
334 1 {
335 2 bite = 0;
336 2 }
337 1
338 1 tmp &= 0X07; //后3位有效
339 1
340 1 while (!OCM_busy(0)); //單次讀寫遇忙判斷
341 1
342 1 C_Addr = 0XF0 | (bite << 3) | tmp; //寫命令字
343 1 }
344
345
346
347 /******************************************************************************************
348 ** 函數名稱: void OCM_onewr(uchar mod,uchar dat)
349 ** 功能描述: 單次寫液晶函數
350 ** 輸入參數: mod: mod =0: 地址加一
351 =1:地址減一
352 =2: 地址不變
353 其他: 地址不變
354 dat: 數據
355 ** 輸出參數: 無
356 ** 全局變量: 無
357 ** 調用模塊: 無
358 ******************************************************************************************/
359 void OCM_onewr(uchar mod, uchar dat)
360 {
361 1 while (!OCM_busy(0));
362 1 D_Addr = dat;
363 1 while (!OCM_busy(0));
364 1 switch (mod)
365 1 {
C51 COMPILER V8.08 OCM240128 11/21/2009 22:14:42 PAGE 7
366 2 case 0: C_Addr = 0XC0; break;
367 2 case 1: C_Addr = 0XC2; break;
368 2 case 2: C_Addr = 0XC4; break;
369 2 default:C_Addr = 0XC4; break;
370 2 }
371 1 }
372
373 /******************************************************************************************
374 ** 函數名稱: uchar OCM_onerd(uchar mod,uchar dat)
375 ** 功能描述: 單次讀液晶函數
376 ** 輸入參數: mod: mod =0: 地址加一
377 =1:地址減一
378 =2: 地址不變
379 其他: 地址不變
380 ** 輸出參數: uchar 讀到的數據
381 ** 全局變量: 無
382 ** 調用模塊: 無
383 *******************************************************************************************/
384 uchar OCM_onerd(uchar mod)
385 {
386 1 uchar dat;
387 1 switch (mod)
388 1 {
389 2 case 0: C_Addr = 0XC1; break;
390 2 case 1: C_Addr = 0XC3; break;
391 2 case 2: C_Addr = 0XC5; break;
392 2 default:C_Addr = 0XC5; break;
393 2 }
394 1
395 1 dat = D_Addr; //讀數據
396 1
397 1 return (dat);
398 1 }
399
400
401
402
403 /******************************************************************************************
404 ** 函數名稱: void OCM_autrd(uchar addr, uchar num, uchar *p)
405 ** 功能描述: 自動讀液晶函數
406 ** 輸入參數: addr: 液晶開始讀的地址
407 num: 自動讀數據的個數
408 *p: 讀到數據的存儲區
409 ** 輸出參數: 無
410 ** 全局變量: 無
411 ** 調用模塊: 無
412 ******************************************************************************************/
413 void OCM_autrd(uint addr, uchar num, uchar *p)
414 {
415 1 uchar i;
416 1
417 1 OCM_ac(2,addr); //顯示地址設置
418 1 OCM_autrd_start(); //啟動自動讀操作
419 1
420 1 for (i = 0; i < num; i++)
421 1 {
422 2 while (!OCM_busy(1)); //自動讀忙檢查
423 2 p[i] = D_Addr; //讀數據
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -