📄 dso_fft.lst
字号:
243 1 outcode(0x42);
244 1 outdata(0x3f);
245 1 for(i=1;i<8;i++)outdata(0xff);
246 1 }
247 /***************************************************************
248 *名称:fixline2(uchar y)
249 *描述:在第二层右半边画横线
250 *参数:横线的行数
251 *返回:
252 ****************************************************************/
253 void fixline2(uchar y)
254 {
255 1 unsigned int address;
256 1 uchar addh,addl;
257 1 uchar i;
258 1 address=0x29f9+y*AP;
259 1 addh=address>>8;//addh=address/256;
260 1 addl=(uchar)address;//addl=address%256;
261 1 outcode(0x46);
262 1 outdata(addl);
263 1 outdata(addh);
264 1 outcode(0x4c);
265 1 outcode(0x42);
266 1 outdata(0x3f);
267 1 for(i=1;i<31;i++)outdata(0xff);
268 1 }
269 /***************************************************************
270 *名称:DrawFrame(void)
271 *描述:在第二层画网格边框
272 *参数:
273 *返回:
274 ****************************************************************/
275 void DrawFrame(void) //画网格边框
276 {
277 1 fixline(0);
278 1 fixline(200);
279 1
280 1 Ver(0,1); //(8,12) --- (8,262)
281 1 Ver(LENGTH,1); //(208,12) --- (208,212)
282 1 fixline(40);
283 1 fixline(80);
284 1 fixline(120);
285 1 fixline(160);
286 1 fixline2(200);
287 1 fixline2(0);
288 1 }
289 /***************************************************************
290 *名称:DrawGrid(void)
291 *描述:在第二层画网格区内的网格线
292 *参数:
293 *返回:
294 ****************************************************************/
295 void DrawGrid(void) //画网格区内的网格线
296 {
297 1 uchar i;
298 1 Hori(1,5);
299 1 Hori(2,25);
300 1 Hori(WIDTH-2,0x19);
301 1 Hori(WIDTH-2,0x05);
302 1 Ver(0x02,0x19);
303 1 Ver(LENGTH-2,0x19);
C51 COMPILER V7.06 DSO_FFT 02/25/2007 18:04:19 PAGE 6
304 1 for(i=1;i<0x08;i++){
305 2 Hori(25*i,5);
306 2 if(i==0x04){
307 3 Hori(0x19*i-1,5);
308 3 Hori(0x19*i+1,5);//
309 3 }
310 2 }
311 1 for(i=0x01;i<0x0a;i++)
312 1 {
313 2 Ver(0x19*i,5);
314 2 if(i==0x05)
315 2 {
316 3 Ver(0x19*i-1,5);
317 3 Ver(0x19*i+1,5);
318 3 }
319 2 }
320 1 }
321 /***************************************************************
322 *名称:vector(uchar x,uchar y1,uchar y2)
323 *描述:两个点之间插入若干点,将点显示转换为矢量显示
324 *参数:坐标x,坐标y1,坐标y2
325 *返回:
326 ****************************************************************/
327 void vector(uchar x,uchar y1,uchar y2)
328 {
329 1 char i=y2-y1;
330 1 uchar tempy;
331 1 if(i>0){
332 2 tempy=y2-1;
333 2 for(;i>1;i--){
334 3 WriteD(x+1,tempy);
335 3 tempy--;
336 3 }
337 2 }
338 1 else if(i<0){
339 2 tempy=y2+1;
340 2 i=-i;
341 2 for(;i>1;i--){
342 3 WriteD(x+1,tempy);
343 3 tempy++;
344 3 }
345 2 }
346 1 else{}
347 1 }
348 /***************************************************************
349 *名称:showchinese(uchar x,uchar y,int chin)
350 *描述:在x,y位置处,显示字符码为chin
351 *参数:坐标x,坐标y
352 *返回:
353 ****************************************************************/
354 void showchinese(uchar x,uchar y,int chin)
355 {
356 1 int temp1,temp2;
357 1 uchar hi,lo;
358 1 uchar b,c=0,d;
359 1 d=y;
360 1 temp2=chin;
361 1 outcode(0x4c);
362 1 for(b=0;b<16;b++){
363 2 temp1=0x5218+x/8+d*AP;//5218
364 2 hi=temp1>>8;//hi=temp1/256;
365 2 lo=(uchar)temp1;//lo=temp1%256;
C51 COMPILER V7.06 DSO_FFT 02/25/2007 18:04:19 PAGE 7
366 2 outcode(0x46);
367 2 outdata(lo);
368 2 outdata(hi);
369 2 outcode(0x42);
370 2 outdata(hzdot[temp2]);
371 2 temp2++;
372 2 outdata(hzdot[temp2]);
373 2 temp2++;
374 2 d=d+1;
375 2 }
376 1 }/***************************************************************
377 *名称:showchin(void)
378 *描述:显示四个汉字,波,形,正,弦
379 *参数:
380 *返回:
381 ****************************************************************/
382 void showchin(void)
383 {
384 1 showchinese(10,20,CB2A8);
385 1 showchinese(27,20,CD0CE);
386 1 showchinese(10,140,CC6B5);
387 1 showchinese(27,140,CC6D7);
388 1 }
389 /***************************************************************
390 *名称:initall(void)
391 *描述:初始化液晶屏
392 *参数:
393 *返回:
394 ****************************************************************/
395 void initall(void)
396 {
397 1 turnoff();
398 1 init();
399 1 initram();
400 1 turnon();
401 1 DrawFrame();
402 1 DrawGrid();
403 1 }
404 /***************************************************************
405 *名称:Verline(uchar x ,uchar y)
406 *描述:在第一层画垂直线
407 *参数:线的起始坐标(x,y)
408 *返回:
409 ****************************************************************/
410 void Verline(uchar x ,uchar y)
411 {
412 1 uchar tempx , tempy ;
413 1 uchar i;
414 1 tempx = x ;
415 1 tempy = 200 - y ;
416 1 outcode(0x4f);
417 1 for(i=tempy;i<0xc8;i++)WriteD(x,i);
418 1 }
419 /***************************************************************
420 *名称:pinpu(void)
421 *描述:在第一层画频谱
422 *参数:
423 *返回:
424 ****************************************************************/
425 void pinpu(uchar x[],uchar N_temp,int N_start)
426 {
427 1 uchar temp ,temp2,temp3;
C51 COMPILER V7.06 DSO_FFT 02/25/2007 18:04:19 PAGE 8
428 1 for(temp=0;temp<N_temp;temp++)
429 1 {
430 2 temp2 = temp*2+N_start ;
431 2 temp3 = (x[temp]) ;//%200
432 2 Verline(temp2,temp3);
433 2 }
434 1 }
435 /***************************************************************
436 *名称:uchar adc0804(void)
437 *描述:AD0804采样一次
438 *参数:
439 *返回:采样值
440 ****************************************************************/
441 uchar adc0804(void)
442 {
443 1 uchar ad_data ;
444 1 Adc_cs = 0 ;
445 1 lcd_a0 = 1 ;
446 1 lcd_wr = 0 ;
447 1 lcd_wr = 1 ;
448 1 while(Adc_busy) ;
449 1 lcd_a0 = 0 ;
450 1 ad_data = P0 ;
451 1 lcd_a0 = 1 ;
452 1 Adc_cs = 1 ;
453 1 return ad_data ;
454 1 }
455 /***************************************************************
456 *名称:Adc_work(void)
457 *描述:AD0804采样
458 *参数:
459 *返回:采样值数组
460 ****************************************************************/
461 void Adc_work(void)
462 {
463 1 unsigned int k=0 ;
464 1 Ram_cs = 0 ;
465 1 // Ram_en = 0 ;
466 1
467 1 while(!Adc_en) ;
468 1 xr[0] = adc0804() ;
469 1 while(!Adc_en) ;
470 1
471 1 for(k=0;k<Sam_N;k++)//
472 1 {
473 2 while(!Adc_en) ;
474 2 xr[k] = adc0804() ;
475 2 xi[k] = 0 ;
476 2 xr_show[k] = xr[k] ;
477 2 while(!Adc_en) ;
478 2 }
479 1 }
480 /**************************************************************
481 *名称:Fft(float xr[],float xi[])
482 *描述:FFT,N=128,M=7
483 *参数:采样的实序列和序数部分
484 *返回:
485 ****************************************************************/
486 void Fft(void)//float xr1[],float xi1[]
487 {
488 1 uchar L,B,J,P,k;
489 1 long rPartKB,iPartKB;
C51 COMPILER V7.06 DSO_FFT 02/25/2007 18:04:19 PAGE 9
490 1 ChangeOrder();
491 1
492 1 for(k=0;k<=127;k=k+2)
493 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -