📄 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 + -