📄 text1.lst
字号:
228 2 {lcd1602_wrdata(c+0x30);
229 3 }
230 2
231 2 c=(a%100)/10;
232 2 if(c!=0 || p==1)
233 2 {lcd1602_wrdata(c+0x30);
234 3 }
235 2
236 2 c=a%10+0x30;
237 2 lcd1602_wrdata(c);
238 2
239 2 }
240 1 }
241
C51 COMPILER V7.20 TEXT1 07/24/2007 21:33:14 PAGE 5
242
243 void xianshi(uchar j)
244 { uchar str[][9]={{"1.sin "},{"2.date "},{"3.set F "},{"4.set dF"},{"1.sin "}};
245 1 uchar i;
246 1 unsigned char offset=0x80;
247 1 lcd1602_clear();
248 1 lcd1602_wrcmd(offset+0x00);
249 1
250 1 lcd1602_wrcmd(offset+0x00);
251 1 lcd1602_wrdata('-');
252 1 lcd1602_wrdata('>');
253 1 for(i=0;i<8;i++) lcd1602_wrdata(str[j+0][i]);
254 1
255 1 lcd1602_wrcmd(offset+0x40);
256 1 lcd1602_wrdata(' ');
257 1 lcd1602_wrdata(' ');
258 1 for(i=0;i<8;i++) lcd1602_wrdata(str[j+1][i]);
259 1 }
260
261
262 void ad9850(ulong f)
263 {
264 1 uint i,ch;
265 1 delay_1ms(100);
266 1 W_CLK=0;PQ_UD=0;
267 1
268 1 if(P2^3==0) //step up
269 1 {ch++;delay_1ms(500);}
270 1 else if(P2^4==0){ch--;delay_1ms(500);} //step down
271 1
272 1 data=00; //5个字节数据的第一个,高5位控制相位A(0-32) 所以初相位大小为360/A 最小分辨率为11。
-25度;
273 1 W_CLK=1;_nop_();
274 1 W_CLK=0;_nop_();
275 1
276 1 /* data=f>>24; //第1个数据 取最32位中的高8位
277 1 W_CLK=1;_nop_();
278 1 W_CLK=0;_nop_();
279 1
280 1 f=f<<8; //第2个数据 取最32位中的高9-16位
281 1 data=f>>24
282 1 W_CLK=1;_nop_();
283 1 W_CLK=0;_nop_();
284 1
285 1 f=f<<8; //第3个数据 取最32位中的高17-24位
286 1 data=f>>24;
287 1 W_CLK=1;_nop_();
288 1 W_CLK=0;_nop_();
289 1
290 1 f=f<<8; //第4个数据 取最32位中的底8位
291 1 data=f>>24;
292 1 W_CLK=1;_nop_();
293 1 W_CLK=0;_nop_(); //用下面的FOR语言描写更方便巧妙
294 1 */
295 1
296 1 for(i=0;i<4;i++) //32bit control words
297 1 {
298 2 data=f>>24;
299 2 f=f<<8;
300 2 W_CLK=1;_nop_();
301 2 W_CLK=0;_nop_();
302 2 }
C51 COMPILER V7.20 TEXT1 07/24/2007 21:33:14 PAGE 6
303 1 PQ_UD=1;_nop_(); // update fre word
304 1 PQ_UD=0;_nop_();
305 1
306 1
307 1
308 1
309 1
310 1
311 1 lcd1602_clear();
312 1 xianshu(f);
313 1 lcd1602_wrdata('H');
314 1 lcd1602_wrdata('Z');
315 1
316 1
317 1
318 1
319 1 }
320
321
322
323 void main()
324 {
325 1
326 1 uchar i;
327 1 // uint t;
328 1
329 1
330 1
331 1 uchar j=0; //标记
332 1 ulong a,b=1000 ; //a用来记录频率;b用来记录频率间隔(开始是为1000HZ)
333 1
334 1
335 1 uchar d[]="please insert F:";
336 1 uchar w[]="please insert dF:" ;
337 1
338 1
339 1 uchar str0='7';
340 1 uchar str1='4';
341 1 uchar str2='1';
342 1 uchar str3=' ';
343 1 uchar str4='8';
344 1 uchar str5='5';
345 1 uchar str6='2';
346 1 uchar str7='0';
347 1 uchar str8='9';
348 1 uchar str9='6';
349 1 uchar str10='3';
350 1
351 1
352 1
353 1 unsigned char offset=0x80; //定义一个偏移地址变量,lcd1602 写入控制字时用到
354 1 unsigned char key;
355 1
356 1 delay(2);
357 1 lcd1602_bus=0xff;
358 1 lcd1602_init();
359 1 lcd1602_wrcmd(offset+0x00);
360 1 xianshi(0);
361 1
362 1
363 1
364 1
C51 COMPILER V7.20 TEXT1 07/24/2007 21:33:14 PAGE 7
365 1
366 1 // lcd1602_clear();
367 1 while(1)
368 1 {
369 2
370 2 key=getkey_ii();
371 2
372 2 if(key==4)
373 2 {
374 3 j=j+1;
375 3 if(j>3)j=0;
376 3 xianshi(j);
377 3
378 3 }
379 2 if (key==0)
380 2 {
381 3 if (j==0) j=4;
382 3 j=j-1;
383 3
384 3
385 3 xianshi(j);
386 3
387 3 }
388 2 if(key==2 || ((j==0)&&(key==3)))
389 2 {
390 3 while(key==2 || key==0xff || key==3)
391 3 {key=getkey_ii();
392 4
393 4
394 4 lcd1602_clear();
395 4
396 4 ad9850(a);
397 4
398 4
399 4 delay(1000);
400 4 }
401 3 }
402 2 if(key==6 || ((j==1)&&(key==3)))
403 2 {
404 3 lcd1602_init();
405 3 lcd1602_clear();
406 3 for(i=0;i<10;i++) lcd1602_wrdata(d[i]);
407 3 }
408 2
409 2
410 2
411 2 if(key==10 || ((j==2)&&(key==3)))
412 2 { a=0;
413 3 lcd1602_clear();
414 3 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
415 3
416 3
417 3 while(key!=15 )
418 3 {
419 4 key=getkey_ii();
420 4
421 4
422 4 if(key==0)
423 4 {
424 5 lcd1602_clear();
425 5 lcd1602_wrcmd(offset+0x00);
426 5
C51 COMPILER V7.20 TEXT1 07/24/2007 21:33:14 PAGE 8
427 5 a=a*10+7;
428 5
429 5 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
430 5 lcd1602_wrcmd(offset+0x40); //换行
431 5 xianshu(a);
432 5 //lcd1602_wrcmd(offset+0x40);
433 5 // for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
434 5 }
435 4 else if (key==1)
436 4 {
437 5 lcd1602_clear();
438 5 lcd1602_wrcmd(offset+0x00);
439 5
440 5 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
441 5 lcd1602_wrcmd(offset+0x40); //换行
442 5 a=a*10+4;
443 5 xianshu(a);
444 5 //lcd1602_wrcmd(offset+0x40);
445 5 //for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
446 5 }
447 4 else if (key==2)
448 4 {
449 5 lcd1602_clear();
450 5 lcd1602_wrcmd(offset+0x00);
451 5
452 5 for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
453 5 lcd1602_wrcmd(offset+0x40); //换行
454 5 a=a*10+1;
455 5 xianshu(a);
456 5 // lcd1602_wrcmd(offset+0x40);
457 5 // for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
458 5 }
459 4
460 4 else if (key==4)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -