?? 340_ad.lst
字號:
180 1 delay1us();
181 1 delay1us();
182 1 delay1us();
183 1 delay1us();
184 1 delay1us();
185 1 delay1us();
186 1 for(j=0;j<5000;j++);
187 1
188 1 }
189
190 void writecode(uchar ins) //向液晶控制模塊寫命令
191 {
192 1 uchar xdata t;
193 1 uint xdata j;
194 1
195 1 for(j=0;j<500;j++);
196 1 virt_port|=ins&0xf0; //取高字節向1602寫數據
197 1 writelcd(virt_port); //先寫高4位后再寫低4位 這是在選擇四個數據線的時候
198 1
199 1 virt_port|=0x08;
200 1 writelcd(virt_port); //使能E腳為高電平
201 1 virt_port&=~0x08;
202 1 writelcd(virt_port); //使能E腳為低電平
203 1
204 1 t=ins<<4;
205 1 virt_port|=t&0xf0; //取低字節向1602寫數據
206 1 writelcd(virt_port);
207 1 virt_port|=0x08; //使能E腳為高電平
208 1 writelcd(virt_port);
209 1 virt_port&=~0x08; //使能E腳為低電平
210 1 writelcd(virt_port);
211 1 virt_port=0;
212 1 writelcd(virt_port);
213 1 }
214
215 void writedata(uchar d) //寫數據到1602
216 {
217 1 uchar xdata i,t;
218 1 uint xdata j;
219 1
220 1 for(j=0;j<500;j++);
221 1 virt_port|=0x02; //光標返回指令
222 1 writelcd(virt_port);
223 1 virt_port|=d&0xf0; //取高字節數據給數據寄存器
224 1 writelcd(virt_port);
225 1 virt_port|=0x08; //使能E腳為高電平
226 1 writelcd(virt_port);
227 1 virt_port&=0xf7; //使能E腳為低電平
228 1 writelcd(virt_port);
229 1 virt_port&=0x07; //設置光標右移,文字也右移
230 1 writelcd(virt_port);
231 1
232 1 t=d&0x0f;
233 1 virt_port|=t<<4; //取低字節數據給數據寄存器
234 1 writelcd(virt_port);
235 1
236 1 virt_port|=0x08; //使能E腳為高電平
237 1 writelcd(virt_port);
238 1 for(i=3;i>0;i--);
239 1 virt_port&=0xf7; //使能E腳為低電平
240 1 writelcd(virt_port);
241 1 virt_port=0; //數據清零
C51 COMPILER V7.50 340_AD 10/23/2006 13:29:41 PAGE 5
242 1 writelcd(virt_port);
243 1 }
244 void lcdchar (void)
245 {
246 1 // uint xdata j,k;
247 1 uchar a,b,c,d;
248 1 temp=temp<<8;
249 1 temp_l=temp+ams;
250 1 temp_l=temp_l>>4;
251 1 a=temp_l/1000;d=temp_l%1000;
252 1 writedata(tab1[a]);
253 1 b=d/100;d=d%100;
254 1 writedata(tab1[b]);
255 1 c=d/10; d=d%10;
256 1 writedata(tab1[c]);
257 1 writedata(tab1[d]);
258 1
259 1
260 1
261 1
262 1 }
263
264 void lcdinit()
265 {
266 1 uint xdata i;
267 1
268 1 virt_port=0x00;
269 1 writelcd(virt_port); //RS腳為零寫指令寄存器 RW為低電平
270 1 virt_port|=0x08; //使能腳E=1
271 1 writelcd(virt_port);
272 1 virt_port&=0xf7; //使E=0使能腳發生跳變高--低
273 1 writelcd(virt_port);
274 1 for(i=1000;i>0;i--); //3次延時,重要!
275 1 for(i=8000;i>0;i--); //用延時代替查詢
276 1
277 1
278 1 virt_port=0; //寫入20碼,設置為4位總線方式,非常重要!?。。。? 279 1 writelcd(virt_port);
280 1 virt_port|=0x20; //只寫高字節
281 1 writelcd(virt_port);
282 1 virt_port|=0x08; //E=1
283 1 writelcd(virt_port);
284 1 for(i=20;i>0;i--); //使命令執行
285 1 virt_port&=0xf7; //E=0
286 1 writelcd(virt_port);
287 1 for(i=10;i>0;i--);
288 1 virt_port=0;
289 1 writelcd(virt_port);
290 1
291 1
292 1
293 1 writecode(0x38); //設兩行顯示,4線方式5*10字符顯示
294 1 for(i=50;i>0;i--);
295 1 writecode(0x06); //光標右移
296 1 for(i=50;i>0;i--);
297 1
298 1
299 1 writecode(0x0c); //開顯示指令
300 1 for(i=50;i>0;i--);
301 1
302 1
303 1 writecode(0x02); //光標返回指令
C51 COMPILER V7.50 340_AD 10/23/2006 13:29:41 PAGE 6
304 1 for(i=50;i>0;i--);
305 1
306 1
307 1
308 1 writecode(0x01); //清屏指令
309 1 for(i=50;i>0;i--);
310 1 }
311 void spi_isr(void) interrupt 6
312 {
313 1 if(SPIF)
314 1 {
315 2 SPIF=0;
316 2 SPI_BUSY=0;
317 2 }
318 1
319 1
320 1 if(WCOL)
321 1 {
322 2 WCOL=0;
323 2 }
324 1 }
325
326 void ether_reset_low()
327 {
328 1
329 1 P1 &= ~0x01; // Pull reset low
330 1
331 1 }
332 void ether_reset_high (void)
333 {
334 1
335 1 P1 |= 0x01; // Allow /RST to rise
336 1 while(!(P1 & 0x01)); // Wait for /RST to go high
337 1
338 1
339 1 }
340 void EMIF_Init (void)
341 {
342 1
343 1 EMI0CF = 0x1B; // non-muxed mode; split mode
344 1 // with bank select
345 1
346 1 EMI0TC = EMIF_TIMING; // This constant may be modified
347 1 // according to SYSCLK to meet the
348 1 // timing requirements for the CP2200
349 1
350 1 EMI0CN = BASE_ADDRESS; // Page of XRAM accessed by EMIF
351 1
352 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1120 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 18 14
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -