📄 d.lst
字号:
C51 COMPILER V7.01 D 04/07/2007 21:43:11 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE D
OBJECT MODULE PLACED IN d.OBJ
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE d.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #include<intrins.h>
3
4 sbit RSPIN = P2^6;
5 sbit RWPIN = P2^5;
6 sbit EPIN = P2^7;
7 sbit E=P3^4;//使数码管高阻
8
9 unsigned char XPOS,YPOS;
10
11 void delay(unsigned int t)
12 { unsigned int i,j;
13 1 for(i=0;i<t;i++)
14 1 for(j=0;j<10;j++);
15 1 }
16
17 void lcdwaitidle(void) //忙检查
18 { P0=0xff; //读作准备
19 1 RSPIN=0;
20 1 RWPIN=1;
21 1 EPIN=1;
22 1 while((P0&0x80)==0x80);
23 1 EPIN=0;
24 1 }
25
26 void lcdwcn(unsigned char c)//确定光标位置,由参数C值决定 及初始化
27 { RSPIN=0;
28 1 RWPIN=0;
29 1 P0=c;
30 1 EPIN=1;
31 1 _nop_(); //空操作
32 1 EPIN=0;
33 1 }
34
35 void lcdwc(unsigned char c)
36 { lcdwaitidle();
37 1 lcdwcn(c);
38 1 }
39
40 void lcdwd(unsigned char d)
41 { lcdwaitidle();
42 1 RSPIN=1;
43 1 RWPIN=0; //送要显示的数据
44 1 P0=d;
45 1 EPIN=1;
46 1 _nop_();
47 1 EPIN=0;
48 1 }
49
50 void lcdpos(void)
51 { XPOS&=0x0f; //xp0s=xpos&0x0f
52 1 YPOS&=0x03;
53 1 if(YPOS==0x00)
54 1 lcdwc(XPOS|0x80);
55 1 else if(YPOS==0x01)
C51 COMPILER V7.01 D 04/07/2007 21:43:11 PAGE 2
56 1 lcdwc((XPOS+0x40)|0x80); //第一行与第二行地址相差40H
57 1 }
58
59 void lcdreset() //复位
60 { delay(150);lcdwcn(0x38);
61 1 delay(50); lcdwcn(0x38);
62 1 delay(50); lcdwcn(0x38);
63 1 lcdwc(0x38);
64 1 lcdwc(0x08);
65 1 lcdwc(0x01);
66 1 lcdwc(0x06);
67 1 lcdwc(0x0c);
68 1 }
69
70 /*v oid lcdfill(unsigned char n) //全部显示同一个字符
71 {
72 for(YPOS=0;YPOS<2;YPOS++) //两行
73 for(XPOS=0;XPOS<16;XPOS++)//一行16个字符
74 { lcdpos();
75 lcdwd(n); }
76 }*/
77
78 /*void lcdwda(unsigned char x,unsigned char y,unsigned char *s)//X,Y显示的开始位置 S表示
79 { YPOS=y;
80 for(XPOS=x;XPOS<16;XPOS++)
81 { lcdpos(); //确定显示位置
82 lcdwd(*s); //显示数据
83 s++;
84 delay(400);
85 }
86 }*/
87
88
89 //读状态
90 /*unsigned char ReadStatusLCM(void)
91 {
92 P0= 0xFF;
93 RSPIN = 0;
94 RWPIN = 1;
95 EPIN = 0;
96 EPIN = 0;
97 EPIN = 1;
98 while (P0 & 0x80); //检测忙信号
99 return(P0);
100 } */
101 void main()
102 {
103 1 unsigned int i=0;
104 1 EPIN=0;
105 1 RD=0;
106 1 WR=1;
107 1 E=1;
108 1 lcdreset();
109 1 XPOS=0;YPOS=0;
110 1 lcdpos();
111 1 delay(150);
112 1 lcdwd(0xa0);
113 1 lcdwd(0x57); //显示一个Welcome!
114 1 lcdwd(0x65);
115 1 lcdwd(0x6c);
116 1 lcdwd(0x63);
117 1 lcdwd(0x6f);
C51 COMPILER V7.01 D 04/07/2007 21:43:11 PAGE 3
118 1 lcdwd(0x6d);
119 1 lcdwd(0x65);
120 1 lcdwd(0x21);
121 1 lcdwc(0x02);
122 1 lcdwc(0x05);
123 1 delay(500);
124 1
125 1 while(1)
126 1 { i++;
127 2 switch (i)
128 2 {
129 3 case 15:
130 3 { // i=15;
131 4 lcdreset();
132 4 lcdwc(0x00);
133 4 delay(150);
134 4
135 4 XPOS=30;YPOS=1;
136 4 lcdpos();
137 4 lcdwd(0xa0);
138 4 lcdwd(0x57); //显示一个Welcome!
139 4 lcdwd(0x65);
140 4 lcdwd(0x6c);
141 4 lcdwd(0x63);
142 4 lcdwd(0x6f);
143 4 lcdwd(0x6d);
144 4 lcdwd(0x65);
145 4 lcdwd(0x21);
146 4 // lcdwc(0x02);
147 4 lcdwc(0x07);
148 4 delay(1000);
149 4 break;
150 4 }
151 3 case 30:
152 3 { i=0;
153 4 lcdreset();
154 4 XPOS=0;YPOS=0;
155 4 lcdpos();
156 4 delay(150);
157 4
158 4 // lcdwc(0x00);
159 4 delay(150);
160 4 lcdwd(0xa0);
161 4 lcdwd(0x57); //显示一个Welcome!
162 4 lcdwd(0x65);
163 4 lcdwd(0x6c);
164 4 lcdwd(0x63);
165 4 lcdwd(0x6f);
166 4 lcdwd(0x6d);
167 4 lcdwd(0x65);
168 4 lcdwd(0x21);
169 4 lcdwc(0x02);
170 4 lcdwc(0x05);
171 4 delay(1000);
172 4 break;
173 4
174 4 }
175 3 default:
176 3 { lcdwd(0xa0);
177 4 delay(1000);
178 4 break;
179 4 }
C51 COMPILER V7.01 D 04/07/2007 21:43:11 PAGE 4
180 3 }}}
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 358 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -