📄 text1.lst
字号:
271 1 lcd1602_wrdata('>');
272 1 for(i=0;i<8;i++) lcd1602_wrdata(str[j+0][i]);
273 1
274 1 lcd1602_wrcmd(offset+0x40);
275 1 lcd1602_wrdata(' ');
276 1 lcd1602_wrdata(' ');
277 1 for(i=0;i<8;i++) lcd1602_wrdata(str[j+1][i]);
278 1 }
279
280
281
282
283
284
285
286 /*************** AD9850驱动程序 ************/
287 ad9850(float freq, float dfreq,ulong d4)
288 {
289 1 float fw;
290 1 uchar i,j,temp;
291 1 uchar s;
292 1 uchar d[5];
293 1 fw=freq*34.359738368; //d[4]中存放控制字最高位,即相位控制字
294 1 //Freq=MCLK*FW/2^32
295 1 d[4]=(unsigned long)(d4/11.25)<<3;
296 1 d[0]=(unsigned long)fw;
297 1 d[1]=(unsigned long)fw>>8;
298 1 d[2]=(unsigned long)fw>>16;
299 1 d[3]=(unsigned long)fw>>24;
300 1
301 1
302 1 load=0;
C51 COMPILER V7.20 TEXT1 08/13/2007 15:13:36 PAGE 6
303 1 sclk=0;
304 1 sclk=1;
305 1 sclk=0;
306 1 load=1;
307 1 load=0;
308 1
309 1 for(i=0;i<5;i++)
310 1 {
311 2 temp=d[i];
312 2 for(j=0;j<8;j++)
313 2 {
314 3 sclk=0;
315 3 if(temp&1) sdata=1;
316 3 else sdata=0;
317 3 sclk=1;
318 3 temp=temp>>1;
319 3 }
320 2 }
321 1 load=1;
322 1 load=0;
323 1
324 1 lcd1602_clear();
325 1 lcd1602_wrdata(' ');
326 1 lcd1602_wrdata(' ');
327 1 lcd1602_wrdata(' ');
328 1 lcd1602_wrdata(' ');
329 1 lcd1602_wrdata(' ');
330 1
331 1 if ((unsigned long)freq%1000==0 )
332 1 {
333 2
334 2 s='K'; freq=freq/1000;
335 2 if ( (unsigned long) freq%1000==0) {s='M';freq=freq/1000 ; }
336 2 }
337 1 else{ s=' ';}
338 1 xianshu(freq);
339 1 lcd1602_wrdata(s);
340 1 lcd1602_wrdata('H');
341 1 lcd1602_wrdata('Z');
342 1
343 1 lcd1602_wrcmd(0x80+0x40); //换行
344 1
345 1
346 1 if ((unsigned long)dfreq%1000==0 )
347 1 {
348 2
349 2 s='K'; dfreq=dfreq/1000;
350 2 if ( (unsigned long) dfreq%1000==0) {s='M';dfreq=dfreq/1000 ; }
351 2 }
352 1 else{ s=' ';}
353 1
354 1 lcd1602_wrdata(0x7e);
355 1 xianshu(dfreq);
356 1 lcd1602_wrdata(s);
357 1 lcd1602_wrdata('H');
358 1 lcd1602_wrdata('Z');
359 1
360 1
361 1 lcd1602_wrcmd(0x80+0x4b); //定坐标 控制显示位子
362 1 lcd1602_wrdata(0xf2);
363 1 lcd1602_wrdata(':');
364 1 xianshu(d4);
C51 COMPILER V7.20 TEXT1 08/13/2007 15:13:36 PAGE 7
365 1
366 1 }
367
368
369
370
371 /********************** 按键显示数程序 *************************/
372 ulong dushu()
373 {
374 1 uchar code d[]="please insert XW:";
375 1
376 1
377 1 unsigned char offset=0x80;
378 1 uchar key;
379 1 ulong i,a=0;
380 1 lcd1602_clear();
381 1 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
382 1 key=18; //避免和下面的WHILE语句条件冲突;临时改变KEY 只变一次
383 1
384 1 while(key!=15 )
385 1 {
386 2 key=getkey_ii();
387 2
388 2
389 2 if(key==0)
390 2 {
391 3 lcd1602_clear();
392 3 lcd1602_wrcmd(offset+0x00);
393 3
394 3 a=a*10+1;
395 3
396 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
397 3 lcd1602_wrcmd(offset+0x40); //换行
398 3 xianshu(a);
399 3 //lcd1602_wrcmd(offset+0x40);
400 3 // for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
401 3 }
402 2 else if (key==1)
403 2 {
404 3 lcd1602_clear();
405 3 lcd1602_wrcmd(offset+0x00);
406 3
407 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
408 3 lcd1602_wrcmd(offset+0x40); //换行
409 3 a=a*10+2;
410 3 xianshu(a);
411 3 //lcd1602_wrcmd(offset+0x40);
412 3 //for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
413 3 }
414 2 else if (key==2)
415 2 {
416 3 lcd1602_clear();
417 3 lcd1602_wrcmd(offset+0x00);
418 3
419 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
420 3 lcd1602_wrcmd(offset+0x40); //换行
421 3 a=a*10+3;
422 3 xianshu(a);
423 3 // lcd1602_wrcmd(offset+0x40);
424 3 // for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
425 3 }
426 2
C51 COMPILER V7.20 TEXT1 08/13/2007 15:13:36 PAGE 8
427 2 else if (key==4)
428 2 {
429 3 lcd1602_clear();
430 3 lcd1602_wrcmd(offset+0x00);
431 3 a=a*10+4;
432 3
433 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
434 3 lcd1602_wrcmd(offset+0x40); //换行
435 3 xianshu(a);
436 3 }
437 2 else if (key==5)
438 2 {
439 3 lcd1602_clear();
440 3 lcd1602_wrcmd(offset+0x00);
441 3
442 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
443 3 lcd1602_wrcmd(offset+0x40); //换行
444 3 a=a*10+5;
445 3 xianshu(a);
446 3 }
447 2 else if (key==6)
448 2 {
449 3 lcd1602_clear();
450 3 lcd1602_wrcmd(offset+0x00);
451 3
452 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
453 3 lcd1602_wrcmd(offset+0x40); //换行
454 3 a=a*10+6;
455 3 xianshu(a);
456 3 }
457 2 else if (key==8)
458 2 {
459 3 lcd1602_clear();
460 3 lcd1602_wrcmd(offset+0x00);
461 3
462 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
463 3 lcd1602_wrcmd(offset+0x40); //换行
464 3 a=a*10+7;
465 3 xianshu(a);
466 3 }
467 2 else if (key==9)
468 2 {
469 3 lcd1602_clear();
470 3 lcd1602_wrcmd(offset+0x00);
471 3
472 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
473 3 lcd1602_wrcmd(offset+0x40); //换行
474 3 a=a*10+8;
475 3 xianshu(a);
476 3 }
477 2 else if (key==10)
478 2 {
479 3 lcd1602_clear();
480 3 lcd1602_wrcmd(offset+0x00);
481 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
482 3 lcd1602_wrcmd(offset+0x40); //换行
483 3 a=a*10+9;
484 3 xianshu(a);
485 3 }
486 2 else if (key==13)
487 2 {
488 3 lcd1602_clear();
C51 COMPILER V7.20 TEXT1 08/13/2007 15:13:36 PAGE 9
489 3 lcd1602_wrcmd(offset+0x00);
490 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
491 3 lcd1602_wrcmd(offset+0x40); //换行
492 3 a=a*10+0;
493 3 xianshu(a);
494 3 }
495 2
496 2 }
497 1
498 1 return a;
499 1
500 1
501 1 }
502
503
504
505
506
507 /*****************TLC0838驱动程序***********************/
508 uint adc_tlc0838(uchar channel)
509 {
510 1 uchar t,i;
511 1 uint Temp1=0,Temp2=0;
512 1 if (channel==0) t=0;
513 1 else if(channel==1) t=1;
514 1 else if(channel==2) t=4;
515 1 else if(channel==3) t=5;
516 1 else if(channel==4) t=2;
517 1 else if(channel==5) t=3;
518 1 else if(channel==6) t=6;
519 1 else if(channel==7) t=7;
520 1
521 1 CS=1;
522 1 _nop_();_nop_();_nop_();_nop_();
523 1
524 1
525 1 CLK=0;
526 1 CS=0; //使AD通道打开
527 1 DI = 1; //Start bit=1
528 1 CLK = 1;
529 1 _nop_();
530 1 _nop_();
531 1
532 1 CLK=0;
533 1 CS=0;
534 1 DI = 1;
535 1 CLK = 1;
536 1 _nop_();
537 1 _nop_();
538 1
539 1
540 1 for(i=0;i<3;i++)
541 1 {
542 2 CLK = 0;
543 2 _nop_();
544 2 _nop_();
545 2 if(t&1)DI=1;
546 2 else DI=0;
547 2 t=t>>1;
548 2 CLK = 1;
549 2 _nop_();
550 2 _nop_();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -