📄 adda.lst
字号:
213 3 Key[2].pressed=0;
214 3 switch(ItemSel)
215 3 {
216 4 case 1:
217 4 if(ADDAParaList[0]==0)
218 4 ADDAParaList[0]=2;
219 4 else
220 4 ADDAParaList[0]--;
221 4 break;
222 4 case 3:
223 4 if(ADDAParaList[1]>1)
224 4 ADDAParaList[1]--;
225 4 break;
226 4 case 4:
227 4 if(ADDAParaList[2]>10)
228 4 ADDAParaList[2]--;
229 4 break;
230 4 case 5:
231 4 if(ADDAParaList[3]>0)
232 4 ADDAParaList[3]-=10;
233 4 break;
234 4 case 6:
235 4 if(ADDAParaList[4]>0)
236 4 ADDAParaList[4]-=10;
237 4 break;
238 4 case 7:
239 4 if(ADDAParaList[5]>0)
240 4 ADDAParaList[5]-=10;
241 4 break;
C51 COMPILER V7.06 ADDA 04/02/2007 08:52:19 PAGE 5
242 4 default:
243 4 break;
244 4 }
245 3 DASetUp_OnPaint();
246 3 MovHand=1;
247 3 }
248 2
249 2 if(Key[3].pressed==1) //检测到+键
250 2 {
251 3 Key[3].pressed=0;
252 3 switch(ItemSel)
253 3 {
254 4 case 1:
255 4 if(ADDAParaList[0]==2)
256 4 ADDAParaList[0]=0;
257 4 else
258 4 ADDAParaList[0]++;
259 4 break;
260 4 case 3:
261 4 if(ADDAParaList[1]<100)
262 4 ADDAParaList[1]++;
263 4 break;
264 4 case 4:
265 4 if(ADDAParaList[2]<24)
266 4 ADDAParaList[2]++;
267 4 break;
268 4 case 5:
269 4 if(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5]<=90)
270 4 ADDAParaList[3]+=10;
271 4 break;
272 4 case 6:
273 4 if(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5]<=90)
274 4 ADDAParaList[4]+=10;
275 4 break;
276 4 case 7:
277 4 if(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5]<=90)
278 4 ADDAParaList[5]+=10;
279 4 break;
280 4 default:
281 4 break;
282 4 }
283 3 DASetUp_OnPaint();
284 3 MovHand=1;
285 3 }
286 2
287 2 if(Key[7].pressed==1) //检测到确定键,向DACData中填充数据
288 2 {
289 3 ClearKey();
290 3 Clear(0,240);
291 3 if(ADDAParaList[0]==2) //选择外部信号源无需DAC
292 3 return ;
293 3 DA_T4_INIT(); //T3初始化(根据选择的频率)
294 3 DAC0_Init(); //DAC0初始化
295 3 if(ADDAParaList[0]==0) //选择正弦波
296 3 {
297 4 int i;
298 4 for(i=0;i<64;i++)
299 4 {
300 5 DACdata[2*i]=((unsigned long)SinTable[i]*ADDAParaList[2]/24)>>8;
301 5 DACdata[2*i+1]=((unsigned long)SinTable[i]*ADDAParaList[2]/24);
302 5 }
303 4 }
C51 COMPILER V7.06 ADDA 04/02/2007 08:52:19 PAGE 6
304 3 if(ADDAParaList[0]==1) //选择梯形波
305 3 {
306 4 int i=0;
307 4 for(;i<ADDAParaList[3]*0.64;i++) //上升沿
308 4 {
309 5 DACdata[2*i]=(unsigned int)(0xFFF/(ADDAParaList[3]*0.64)*i*ADDAParaList[2]/24)>>8;
310 5 DACdata[2*i+1]=(unsigned int)(0xFFF/(ADDAParaList[3]*0.64)*i*ADDAParaList[2]/24);
311 5 }
312 4 for(;i<(ADDAParaList[3]+ADDAParaList[4])*0.64;i++) //高电平
313 4 {
314 5 DACdata[2*i]=((unsigned long)0xFFF*ADDAParaList[2]/24)>>8;
315 5 DACdata[2*i+1]=(unsigned long)0xFFF*ADDAParaList[2]/24;
316 5 }
317 4 for(;i<(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5])*0.64;i++) //下降沿
318 4 {
319 5 DACdata[2*i]=((0xFFF-(unsigned long)(0xFFF/(ADDAParaList[5]*0.64)*(i-(ADDAParaList[3]+ADDAParaList[4]
-)*0.64)))*ADDAParaList[2]/24)>>8;
320 5 DACdata[2*i+1]=((0xFFF-(unsigned long)(0xFFF/(ADDAParaList[5]*0.64)*(i-(ADDAParaList[3]+ADDAParaList[
-4])*0.64)))*ADDAParaList[2]/24);
321 5 }
322 4 for(;i<64;i++) //低电平
323 4 DACdata[2*i]=DACdata[2*i+1]=0;
324 4 }
325 3 return;
326 3 }
327 2 }//while(1)
328 1 }
329
330 void DrawScale() //在3区绘制坐标刻度
331 {
332 1 int i,j;
333 1 unsigned int TriggerLine=176-TriggerValue*16/300;; //触发线坐标
334 1 CS=0;
335 1 LCD_RAM_ORG=LCD_Area3;
336 1
337 1 //纵轴
338 1 CmdWrite(CSRDIR_DOWN);
339 1 for(i=0;i<7;i++)
340 1 {
341 2 unsigned char Mode=0x80;
342 2 Locatexy((10+50*i)/8,16);
343 2 for(j=0;j<(10+50*i)%8;j++)
344 2 Mode=Mode>>1;
345 2 CmdWrite(MWRITE);
346 2 for(j=0;j<80;j++)
347 2 {
348 3 DataWrite(Mode);
349 3 DataWrite(0);
350 3 }
351 2 }
352 1 //横轴
353 1 CmdWrite(CSRDIR_RIGHT);
354 1 for(i=0;i<7;i++)
355 1 {
356 2 Locatexy(1,176-i*27);
357 2 CmdWrite(MWRITE);
358 2 for(j=0;j<38;j++)
359 2 DataWrite(0xAA);
360 2 }
361 1 //绘制触发线
362 1 Locatexy(1,TriggerLine);
363 1 CmdWrite(MWRITE);
C51 COMPILER V7.06 ADDA 04/02/2007 08:52:19 PAGE 7
364 1 for(i=0;i<38;i++)
365 1 DataWrite(0xFF);
366 1
367 1 LCD_RAM_ORG=LCD_Area1;
368 1 CS=1;
369 1 }
370
371 void ADC0_ISR() interrupt 15 //采集AD数据
372 {
373 1 char Stats=0; //0:< 1:>
374 1 AD0INT=0;
375 1 if(ADcounter==0)
376 1 {
377 2 if(ADC0H>ADH_TriggerValue)
378 2 Stats=1;
379 2 if(ADC0H==ADH_TriggerValue)
380 2 {
381 3 if(ADC0L>ADL_TriggerValue)
382 3 Stats=1;
383 3 }
384 2
385 2 if(TriggerMode==0)
386 2 {
387 3 if(LastStats==0 && Stats==1)
388 3 {
389 4 ADCdata[ADcounter]=ADC0H;
390 4 ADcounter++;
391 4 }
392 3 }
393 2 if(TriggerMode==1)
394 2 {
395 3 if(LastStats==1 && Stats==0)
396 3 {
397 4 ADCdata[ADcounter]=ADC0H;
398 4 ADcounter++;
399 4 }
400 3 }
401 2 if(TriggerMode==2)
402 2 {
403 3 if(LastStats+Stats==1)
404 3 {
405 4 ADCdata[ADcounter]=ADC0H;
406 4 ADcounter++;
407 4 }
408 3 }
409 2 LastStats=Stats;
410 2 }
411 1 else
412 1 {
413 2 if(ADcounter<304)
414 2 {
415 3 ADCdata[ADcounter]=ADC0H;
416 3 ADcounter++;
417 3 }
418 2 else
419 2 {
420 3 LastStats=2;
421 3 ready=1;
422 3 }
423 2 }
424 1
425 1 }
C51 COMPILER V7.06 ADDA 04/02/2007 08:52:19 PAGE 8
426
427 void DrawGraph() //根据ADCdata中数据绘制曲线
428 {
429 1 unsigned char row,col,k;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -