📄 lcd.lst
字号:
196 2 }
197 1 }
198 void outhz22(uchar *p1,uchar x1,uchar y1) //取数送显示(波形)
199 {
200 1 unsigned rr10,rr11,rr15;
201 1 for(rr10=4;rr10>0;rr10--)
202 1 {
203 2 rr11=y1+0x40;
204 2 WRI(rr11);
205 2 rr11=x1+0xB9;
206 2 WRI(rr11);
207 2 for(rr15=64;rr15>0;rr15--)
208 2 {
209 3 rr11=*p1;
210 3 WRD(rr11);
211 3 delay1();
212 3 p1++;
213 3 }
214 2 x1++;
215 2 }
216 1 rr11=0xC0;
217 1 WRI(rr11);
218 1 rr11=0x3F;
219 1 WRI(rr11);
220 1 rr10=5;
221 1 for(rr10=5;rr10>0;rr10--)
222 1 {
223 2 delay3();
224 2 }
225 1 }
226 void outhz1(uchar (*p2)[16],uchar x2,uchar y2) //取数送显示(频率值)
227 {
228 1 uchar rr20,rr21,rr25;
229 1 for(rr20=2;rr20>0;rr20--)
230 1 {
231 2 rr21=y2+0x40;
232 2 WRI(rr21);
233 2 rr21=x2+0xB9;
234 2 WRI(rr21);
235 2 while(KK2<3)
236 2 {
237 3 for(rr25=8;rr25>0;rr25--)
238 3 {
239 4 rr21=*(*(p2+KK2)+LL2);
240 4 WRD(rr21);
241 4 delay1();
C51 COMPILER V7.50 LCD 08/17/2007 14:21:05 PAGE 5
242 4 LL2++;
243 4 }
244 3 break;
245 3 }
246 2 x2++;
247 2 }
248 1 LL2=0;KK2++;
249 1 rr21=0xC0;
250 1 WRI(rr21);
251 1 rr21=0x3F;
252 1 WRI(rr21);
253 1 rr20=5;
254 1 for(rr20=5;rr20>0;rr20--)
255 1 {
256 2 delay3();
257 2 }
258 1 }
259 void LCD(unsigned int flag) //LCD显示子程序
260 {
261 1 uchar xy[9][2]={{0,4},{0,24},{0,44},{5,8},{5,30},{5,50},{5,1},{5,9},{5,18}}; //页,列地址
262 1 _nop_();
263 1 P2_2=0;
264 1 _nop_();
265 1 P2_5=0; //复位
266 1 delay1();
267 1 P2_5=1;
268 1 clear(); //清屏
269 1 delay2();
270 1 P2_4=0; //开左屏
271 1 P2_3=1;
272 1 rr=0xC0; //设置显示起时行
273 1 WRI(rr);
274 1 for(I=0;I<5;I++) //显示汉字
275 1 {
276 2 X=xy[I][0];
277 2 Y=xy[I][1];
278 2 PP=HZI11;
279 2 outhz11(PP,X,Y);
280 2 }
281 1 P2_4=1; //开右屏
282 1 P2_3=0;
283 1 rr=0xC0;
284 1 WRI(rr);
285 1 X=0; //显示波形
286 1 Y=0;
287 1 Q=HZI22;
288 1 outhz22(Q,X,Y);
289 1 P2_4=0; //开左屏
290 1 P2_3=1;
291 1 rr=0xC0;
292 1 WRI(rr);
293 1 if(flag==0)
294 1 {
295 2 for(I=5;I<7;I++) //显示":0"
296 2 {
297 3 X=xy[I][0];
298 3 Y=xy[I][1];
299 3 QQ=HZI0;
300 3 outhz0(QQ,X,Y);
301 3 P2_4=1;
302 3 P2_3=0;
303 3 rr=0xC0;
C51 COMPILER V7.50 LCD 08/17/2007 14:21:05 PAGE 6
304 3 WRI(rr);
305 3 }
306 2 }
307 1 else
308 1 {
309 2 X=xy[5][0]; //显示":"
310 2 Y=xy[5][1];
311 2 QQ=HZI0;
312 2 outhz0(QQ,X,Y);
313 2 P2_4=1; //开右屏
314 2 P2_3=0;
315 2 rr=0xC0;
316 2 WRI(rr);
317 2 switch(flag)
318 2 {
319 3 case 1: for(I=6;I<9;I++) //显示"100"
320 3 {
321 4 X=xy[I][0];
322 4 Y=xy[I][1];
323 4 QQ=HZI1;
324 4 outhz1(QQ,X,Y);
325 4 }
326 3 break;
327 3 case 2:for(I=6;I<9;I++) //显示"200"
328 3 {
329 4 X=xy[I][0];
330 4 Y=xy[I][1];
331 4 QQ=HZI2;
332 4 outhz1(QQ,X,Y);
333 4 }
334 3 break;
335 3 case 3:for(I=6;I<9;I++) //显示"300"
336 3 {
337 4 X=xy[I][0];
338 4 Y=xy[I][1];
339 4 QQ=HZI3;
340 4 outhz1(QQ,X,Y);
341 4 }
342 3 break;
343 3 }
344 2 }
345 1 }
346 void delay0(unsigned int d_time) //复位延时
347 {
348 1 for(;d_time>0;d_time--);
349 1 }
350 void main(void) //主函数
351 {
352 1 P1_0=0; //P1^0口复位
353 1 delay0(10);
354 1 P1_0=1;
355 1 P1_1=0;P1_2=0; //方波输出
356 1 LCD(flag3); //LCD初始化显示
357 1 IE=0x81; //外部中断0开中断
358 1 IT0=0; //外部中断0低电平触发
359 1 while(1)
360 1 {
361 2 if(flag2) //有中断
362 2 {
363 3 F=F+20; //送0832步进数字量
364 3 key=F;
365 3 delay2();
C51 COMPILER V7.50 LCD 08/17/2007 14:21:05 PAGE 7
366 3 switch(flag3) //有步进
367 3 {
368 4 case 1:LCD(flag3);break; //显示:100
369 4 case 2:LCD(flag3);break; //显示:200
370 4 case 3:LCD(flag3);break; //显示:300
371 4 }
372 3 flag2=0; //清中断标志
373 3 IE=0x81; //开中断
374 3 }
375 2 }
376 1 }
377 void step(void)interrupt 0 //外部中断0(步进中断)
378 {
379 1 flag2=1; //置标志
380 1 while(flag3==4) //本程序只加入三个步进值
381 1 flag3=0;
382 1 flag3++; //计步进次数
383 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1177 ----
CONSTANT SIZE = 610 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 27 48
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 + -