?? lcd.lst
字號:
C51 COMPILER V8.17 LCD 03/05/2009 21:30:24 PAGE 1
C51 COMPILER V8.17, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\objects\LCD.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCD.c OMF2 BROWSE INCDIR(..\..\..\..\..\Inc;..\..\..\..\..\lib) DEFINE(FREQ
-_2_4,STAND_ALONE) DEBUG PRINT(.\listings\LCD.lst) OBJECT(.\objects\LCD.obj)
line level source
1 #include <Chipcon\srf04\ebsrf04.h>
2 #include <LCD.h>
3
4 //-----------------------------------------------------------------------------
5 unsigned char code AC_TABLE[]={
6 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行漢字
7 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行漢字
8 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行漢字
9 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f }; //第四行漢字
10
11
12 //unsigned char code str1[]= "Welcome Optics!";
13 //------------------------------------------------------------------------
14 //LCM 液晶CA12864K 串行方式
15 //------------------------------------------------------------------------
16 //串口發(fā)送一個字節(jié)
17 void SendByte(unsigned char Dbyte)
18 {
19 1 unsigned char i;
20 1 for(i=0;i<8;i++)
21 1 {
22 2 SCK = 0;
23 2 Dbyte = Dbyte<<1; //左移一位
24 2 SID = CY; //移出的位給SID
25 2 SCK = 1;
26 2 SCK = 0;
27 2 }
28 1 }
29
30 void WriteCommand( unsigned char Cbyte )
31 {
32 1
33 1 SendByte(0xf8); //11111,RW(0),RS(0),0
34 1 SendByte(0xf0&Cbyte); //高4位
35 1 SendByte(0xf0&Cbyte<<4);//低4位(先執(zhí)行<<)
36 1 Delay(1);
37 1 }
38
39 void WriteData( unsigned char Dbyte )
40 {
41 1
42 1 SendByte(0xfa); //11111,RW(0),RS(1),0
43 1 SendByte(0xf0&Dbyte); //高4位
44 1 SendByte(0xf0&Dbyte<<4);//低4位(先執(zhí)行<<)
45 1 Delay(1);
46 1 }
47
48 void LcmInit( void )
49 {
50 1 WriteCommand(0x30); //8BitMCU,基本指令集
51 1 WriteCommand(0x03); //AC歸0,不改變DDRAM內容
52 1 WriteCommand(0x0C); //顯示ON,游標OFF,游標位置反白OFF
53 1 WriteCommand(0x01); //清屏,AC歸0
54 1 WriteCommand(0x06); //寫入時候,游標右移動
C51 COMPILER V8.17 LCD 03/05/2009 21:30:24 PAGE 2
55 1
56 1 }
57
58 //圖形區(qū)和文本區(qū)顯示在2個不同的RAM區(qū)
59 //文本區(qū)清RAM函數
60 void LcmClearTXT( void )
61 {
62 1 unsigned char i;
63 1 WriteCommand(0x30); //8BitMCU,基本指令集
64 1 WriteCommand(0x80); //AC歸起始位
65 1 for(i=0;i<64;i++)
66 1 WriteData(0x20); //0x20相同""
67 1 }
68
69 //???????????????RAM?
70 //????RAM??
71 void LcmClearBMP( void )
72 {
73 1 unsigned char i,j;
74 1 WriteCommand(0x34); //8Bit?????,???36H?????
75 1 WriteCommand(0x36); //??ON,???????36H?????
76 1 for(i=0;i<32;i++) //12864???256x32
77 1 {
78 2 WriteCommand(0x80|i); //???
79 2 WriteCommand(0x80); //???
80 2 for(j=0;j<32;j++) //256/8=32 byte
81 2 WriteData(0);
82 2 }
83 1 }
84 void PutBMP(unsigned char *puts)
85 {
86 1 unsigned int x=0;
87 1 unsigned char i,j;
88 1 WriteCommand(0x34); //8Bit?????,???36H?????
89 1 WriteCommand(0x36); //??ON,???????36H?????
90 1 for(i=0;i<32;i++) //12864???256x32
91 1 {
92 2 WriteCommand(0x80|i); //???
93 2 WriteCommand(0x80); //???
94 2 for(j=0;j<32;j++) //256/8=32 byte
95 2 { //?????????
96 3 WriteData(puts[x]);
97 3 x++;
98 3 }
99 2 }
100 1 }
101 //寫字符串
102 void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
103 {
104 1 WriteCommand(0x30); //8BitMCU,基本指令集
105 1 WriteCommand(AC_TABLE[8*row+col]); //起始位置
106 1 while(*puts != '\0') //判斷字符串是否顯示完畢
107 1 {
108 2 if(col==8) //判斷換行
109 2 { //若不判斷,則自動從第一行到第三行
110 3 col=0;
111 3 row++;
112 3 }
113 2 if(row==4) row=0; //一屏幕顯示完,回到屏左上角
114 2 WriteCommand(AC_TABLE[8*row+col]);
115 2 WriteData(*puts); //一個漢字要寫兩次
116 2 puts++;
C51 COMPILER V8.17 LCD 03/05/2009 21:30:24 PAGE 3
117 2 WriteData(*puts);
118 2 puts++;
119 2 col++;
120 2 }
121 1 }
122
123 //----------------------------------------------------------------------------
124
125
126 void Delay(unsigned int us100)
127 {
128 1 unsigned char us,usn;
129 1 while(us100!=0) //for 12M
130 1 { usn = 2;
131 2 while(usn!=0)
132 2 {
133 3 us=0xc0;
134 3 while (us!=0){us--;};
135 3 usn--;
136 3 }
137 2 us100--;
138 2 }
139 1 }
140
141 unsigned char code logo[]={
142 /*-- 調入了一幅圖像:E:\在研項目\脊柱深度測量\PICs\logo4.bmp --*/
143 /*-- 寬度x高度=256x32 --*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -