?? 128064.lst
字號:
C51 COMPILER V7.06 128064 04/09/2007 11:20:34 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 128064
OBJECT MODULE PLACED IN 128064.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 128064.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 sbit di=P2^2; // 數(shù)據(jù)\指令 選擇
4 sbit rw=P2^1; // 讀\寫 選擇
5 sbit e=P2^0; // 讀\寫使能
6 sbit cs1=P2^4; // 片選1
7 sbit cs2=P2^3; // 片選2
8 #define start_page 184
9 #define start_column 64
10 #define uchar unsigned char
11
12 uchar code HZ[]={
13 0x80,0x90,0x8C,0x84,0x84,0xF4,0xA5,0x86,0x84,0x84,0x84,0x84,0x94,0x8C,0x84,0x00,
14 0x80,0x80,0x80,0x40,0x47,0x28,0x28,0x10,0x28,0x24,0x43,0xC0,0x40,0x00,0x00,0x00,
15
16 0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00,
17 0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00,
18
19 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20
20 };
21
22 void checkbusy()
23 {
24 1 unsigned char dat;
25 1 di=0;
26 1 rw=1;
27 1 do{
28 2 P0=0x00;
29 2 e=1;
30 2 dat=P0;
31 2 dat=0x80 & dat; //僅當(dāng)?shù)?位為0時才可操作(判別busy信號)
32 2 }while(!(dat==0x00));
33 1 e=0;
34 1 }
35 sendcommandtolcd(unsigned char command)
36 {
37 1 checkbusy();
38 1 rw=0;
39 1 P0=command;
40 1 e=1;
41 1 e=0;
42 1 }
43 void writebyte(unsigned char dat)
44 {
45 1 checkbusy();
46 1 di=1; rw=0;
47 1 P0=dat;
48 1 e=1;
49 1 e=0;
50 1 }
51 void set_page(uchar page1)
52 {
53 1 sendcommandtolcd(start_page+page1);
54 1 }
55 void set_column(uchar column1)
C51 COMPILER V7.06 128064 04/09/2007 11:20:34 PAGE 2
56 {
57 1 sendcommandtolcd(start_column+column1);
58 1 }
59
60 void pattern(uchar column,uchar *p, uchar page)
61 {
62 1 uchar i;
63 1 if(column<64)
64 1 {
65 2 set_page(page);
66 2 set_column(column);
67 2 }
68 1 else
69 1 {
70 2 set_page(page);
71 2 set_column(column-64);
72 2 }
73 1 if(column>128)
74 1 return ;
75 1 if(column<64)
76 1 {
77 2 cs1=1;
78 2 cs2=0;
79 2 for(i=0;i<8;i++)
80 2 {
81 3 writebyte(*p);
82 3 p++;
83 3 }
84 2 }
85 1 else
86 1 {
87 2 cs1=0;
88 2 cs2=1;
89 2 for(i=0;i<8;i++)
90 2 {
91 3 writebyte(*p);
92 3 p++;
93 3 }
94 2 }
95 1
96 1 }
97 void display(uchar *pt)
98 {
99 1 uchar i,gy=0;
100 1 for(i=0;i<2;i++)
101 1 {
102 2 pattern(gy,pt,0);
103 2 pattern(gy+8,pt+8,0);
104 2 pattern(gy,pt+16,1);
105 2 pattern(gy+8,pt+24,1);
106 2 gy=gy+16;
107 2 pt=pt+32;
108 2 }
109 1 gy=0;
110 1 pattern(gy,pt,2);
111 1 pattern(gy,pt+8,3);
112 1
113 1 }
114 void clearlcd()
115 {
116 1 uchar i,j;
117 1 cs1=0;
C51 COMPILER V7.06 128064 04/09/2007 11:20:34 PAGE 3
118 1 cs2=1;
119 1 for(i=0;i<8;i++)
120 1 {
121 2 for(j=0;j<64;j++)
122 2 {
123 3 writebyte(0x00);
124 3 }
125 2 }
126 1 cs1=0;
127 1 cs2=1;
128 1 for(i=0;i<8;i++)
129 1 {
130 2 for(j=0;j<64;j++)
131 2 {
132 3 writebyte(0x00);
133 3 }
134 2 }
135 1 }
136
137 //設(shè)定列地址--Y 0-63
138 void SetColumn(unsigned char column)
139 {
140 1 column=column &0x3f; // 0=<column<=63
141 1 column=column | 0x40; //01xx xxxx
142 1 sendcommandtolcd(column);
143 1 }
144 /*----------------------------------------------------------------------------------------------------*/
145 //設(shè)定顯示開始行--XX
146 void SetStartLine(unsigned char startline) //0--63
147 {
148 1 startline=startline & 0x07;
149 1 startline=startline|0xc0; //1100 0000
150 1 sendcommandtolcd(startline);
151 1 }
152 /*----------------------------------------------------------------------------------------------------*/
153 //開關(guān)顯示
154 void SetOnOff(unsigned char onoff)
155 {
156 1 onoff=0x3e | onoff; //0011 111x
157 1 sendcommandtolcd(onoff);
158 1 }
159 /*---------------------------------------------------------------------------------------------------*/
160 //選擇屏幕
161 //screen: 0-全屏,1-左屏,2-右屏
162 void SelectScreen(unsigned char screen)
163 { //cs1: 1--左; cs2: 1--右
164 1 switch(screen)
165 1 { case 0: cs1=0;//全屏
166 2 _nop_(); _nop_(); _nop_();
167 2 cs2=0;
168 2 _nop_(); _nop_(); _nop_();
169 2 break;
170 2 case 1: cs1=0;//左屏
171 2 _nop_(); _nop_(); _nop_();
172 2 cs2=1;
173 2 _nop_(); _nop_(); _nop_();
174 2 break;
175 2 case 2: cs1=1;//右屏
176 2 _nop_(); _nop_(); _nop_();
177 2 cs2=0;
178 2 _nop_(); _nop_(); _nop_();
179 2 break;
C51 COMPILER V7.06 128064 04/09/2007 11:20:34 PAGE 4
180 2 }
181 1 }
182 void ClearScreen(unsigned char screen)
183 { unsigned char i,j;
184 1 SelectScreen(screen);
185 1 for(i=0;i<8;i++){
186 2 set_page(i);
187 2 for(j=0;j<128;j++){
188 3 writebyte(0x00);
189 3 }
190 2 }
191 1
192 1 }
193 GDM12864delay()
194 {
195 1 unsigned int i=500;
196 1 while(i--) {;}
197 1 }
198 void InitLCD()
199 { unsigned char i=250; //延時
200 1 while(i--);
201 1
202 1 SelectScreen(0);
203 1 SetOnOff(0); //關(guān)顯示
204 1
205 1 ClearScreen(0);//清屏
206 1
207 1 SelectScreen(0);
208 1 SetOnOff(1); //開顯示
209 1 SelectScreen(0);
210 1 SetStartLine(0); //開始行:0
211 1 }
212 void main()
213 {
214 1 GDM12864delay();
215 1 InitLCD();
216 1 set_page(0);
217 1 set_column(0);
218 1 SetStartLine(0);
219 1 display(&HZ);
220 1 while(1);
221 1 }
222
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 522 ----
CONSTANT SIZE = 80 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -