📄 lcd12864r.lst
字号:
160 1 delay1();
161 1 }
162
163 //-------------------------------------------
164 //清屏函数
165 void clear_p()
166 {
167 1 send_i(0x1); //清除所有显示
168 1 send_i(0x34); //扩展指令操作
169 1 send_i(0x30); //基本指令操作
170 1 }
171
172 //------------------------------------------
173 //查表函数
174 void qushu(int counts,const unsigned char *ps)
175 {
C51 COMPILER V7.06 LCD12864R 07/21/2008 12:39:48 PAGE 4
176 1 int i; //定义循环变量
177 1 for(i=counts;i>0;i--) //循环counts次
178 1 {
179 2 send_d(*ps); //查表取数并调用显示一个字节数据函数送显示
180 2 delay(); //延长一定时间,确保能看到数据一个个的显示出来
181 2 ps++; //取下一个数据
182 2 }
183 1 }
184
185 //-------------------------------------------
186 //显示一字节数据函数
187 void send_d(unsigned char x)
188 {
189 1 chk_busy(); //检测LCD是否工作繁忙
190 1 rs=1; //设置该字节数据是显示数据
191 1 rw=0; //设置该次操作为写
192 1 P0=x; //送数据口PORTD
193 1 e=1; //使能
194 1 Mdelay();
195 1 Mdelay();
196 1 Mdelay();
197 1 e=0; //禁止
198 1 }
199
200 //--------------------------------------------
201 //送一字节命令代码函数
202 void send_i(unsigned char x)
203 {
204 1 chk_busy(); //检测LCD是否工作繁忙
205 1 rs=0; //设置该字节数据为控制命令
206 1 rw=0; //设置此次操作为写
207 1 P0=x; //送数据口PORTD
208 1 e=1; //使能
209 1 Mdelay();
210 1 Mdelay();
211 1 e=0; //禁止
212 1 }
213
214 //-------------------------------------------
215 //检测LCD是否工作繁忙
216 void chk_busy()
217 {
218 1 busy=1; //先置位繁忙标志位
219 1 rs=0; //设置该字节数据为命令代码
220 1 rw=1; //设置此次操作为读
221 1 while(busy)
222 1 {
223 2 Mdelay();
224 2 Mdelay();
225 2 e=1; //使能
226 2 Mdelay();
227 2 Mdelay();
228 2 if(!P0^7)
229 2 busy=0; //检测LCD是否工作繁忙
230 2 Mdelay();
231 2 Mdelay();
232 2 e=0; //禁止
233 2 }
234 1 e=0; //禁止
235 1 }
236
237 //-------------------------------------------
C51 COMPILER V7.06 LCD12864R 07/21/2008 12:39:48 PAGE 5
238 //延时函数
239 void delay()
240 {
241 1 int i;
242 1 for(i=0;i<5000;i++)
243 1 {;}
244 1 }
245
246 //-------------------------------------------
247 //延时函数1
248 void delay1()
249 {
250 1 int i;
251 1 for(i=0;i<10;i++)
252 1 {
253 2 delay(); //调用延时函数
254 2 }
255 1 }
256 void Mdelay()
257 {
258 1 }
259 /***************************************串口驱动函数***************************/
260 void Serial()interrupt 4 using 2
261 {
262 1
263 1 char c;
264 1 if(RI!=0)
265 1 {
266 2 c=SBUF;
267 2 RI=0;
268 2 //snd_flag=1;
269 2 if(istart+ILEN!=iend)
270 2 {
271 3 inbuf[iend++&(ILEN-1)]=c;
272 3 }
273 2 }
274 1
275 1 if(TI!=0)
276 1 {
277 2 TI=0;
278 2 if(ostart!=oend)
279 2 {
280 3 SBUF=outbuf[ostart++&(OLEN-1)];
281 3 sendfull=0;
282 3 }
283 2 else
284 2 {
285 3 sendactive=0;
286 3 }
287 2 }
288 1 }
289
290 void putbuf(char c)
291 {
292 1 if(!sendfull)
293 1 {
294 2 if(!sendactive)
295 2 {
296 3 sendactive=1;
297 3 SBUF=c;
298 3 }
299 2 else
C51 COMPILER V7.06 LCD12864R 07/21/2008 12:39:48 PAGE 6
300 2 {
301 3 ES=0;
302 3 outbuf[oend++&(OLEN-1)]=c;
303 3 if(((oend^ostart)&(OLEN-1))==0)
304 3 {
305 4 sendfull=1;
306 4 }
307 3 ES=1;
308 3 }
309 2 }
310 1 }
311
312 /*********************************************************************************/
313
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 558 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 68 7
IDATA SIZE = 16 ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -