首页 | 供应信息 | 采购信息 | PDF资料 | 技术资料 | 行业资讯 | 产品展示 | 人才市场 进入会员区
   技术文章分类:单片机/DSP 嵌入式系统 测试仪表 电源技术 接口电路 存储器 传感与控制 通信网络 无线通信 模拟技术 显示与光电 EDA/PLD 汽车电子 消费电子 电子综合
   电子综合工具:PDF资料大全 电子缩略语 IC型号替换 IC厂家 电子电路图 技术参数 设计应用 解决方案
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
  您所在的位置: IC37首页 > 技术问答 > 单片机 > [求助]关于8路时钟序列的存储与示波器显示。。(附程序)

  [求助]关于8路时钟序列的存储与示波器显示。。(附程序) 

输入为频率100HZ8路循环移位序列,选用P89C51RD2 P1口采集并存储,输出端用TLC5620,选择两路分别接X,Y轴,我在测试8路死波形时,X,Y轴各送50个点,送一路波形大约2MS,而我打算1MS采集一次输入信号,一次采集8路,采集50次。请问,我如何才能将采集到的8路波形完整的输出。

5620送数程序 /*写5620(通道C)**********************************************/ void send_C(uchar dat3) { //(101) LOAD_5620=1; DATA_5620=1; CLK_5620=1; CLK_5620=0; DATA_5620=0; CLK_5620=1; CLK_5620=0; DATA_5620=1; CLK_5620=1; CLK_5620=0; ACC=dat3; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; ACC<<=1 ;DATA_5620=CY; CLK_5620=1; CLK_5620=0; LOAD_5620=0; } 其中一路通道 for(i=50;i>0;i--){send_C(i);switch(i) //通道1 {case 1 :send_B(u1[49]);break; case 2 :send_B(u1[38]);break; case 3 :send_B(u1[47]);break; case 4 :send_B(u1[36]);break; case 5 :send_B(u1[45]);break; case 6 :send_B(u1[34]);break; case 7 :send_B(u1[43]);break; case 8 :send_B(u1[32]);break; case 9 :send_B(u1[41]);break; case 10:send_B(u1[30]);break; case 11:send_B(u1[39]);break; case 12:send_B(u1[28]);break; case 13:send_B(u1[37]);break; case 14:send_B(u1[26]);break; case 15:send_B(u1[35]);break; case 16:send_B(u1[24]);break; case 17:send_B(u1[33]);break; case 18:send_B(u1[22]);break; case 19:send_B(u1[31]);break; case 20:send_B(u1[30]);break; case 21:send_B(u1[29]);break; case 22:send_B(u1[28]);break; case 23:send_B(u1[27]);break; case 24:send_B(u1[26]);break; case 25:send_B(u1[25]);break; case 26:send_B(u1[24]);break; case 27:send_B(u1[23]);break; case 28:send_B(u1[22]);break; case 29:send_B(u1[21]);break; case 30:send_B(u1[20]);break; case 31:send_B(u1[19]);break; case 32:send_B(u1[18]);break; case 33:send_B(u1[17]);break; case 34:send_B(u1[16]);break; case 35:send_B(u1[15]);break; case 36:send_B(u1[14]);break; case 37:send_B(u1[13]);break; case 38:send_B(u1[12]);break; case 39:send_B(u1[11]);break; case 40:send_B(u1[10]);break; case 41:send_B(u1[9]);break; case 42:send_B(u1[8]);break; case 43:send_B(u1[7]);break; case 44:send_B(u1[6]);break; case 45:send_B(u1[5]);break; case 46:send_B(u1[4]);break; case 47:send_B(u1[3]);break; case 48:send_B(u1[2]);break; case 49:send_B(u1[1]);break; case 50:send_B(u1[0]);break;} 中断中读P1口 /*中断***************************************************/ void inte() interrupt 1 { dat0=P1; m++; ACC=dat0; ACC<<=1 ;u1[m]=CY; if(u1[m]==1){u1[m]=0xff;} else{u1[m]=0xf0;} ACC<<=1 ;u2[m]=CY; if(u2[m]==1){u2[m]=0xe0;} else{u2[m]=0xd0;} ACC<<=1 ;u3[m]=CY; if(u3[m]==1){u3[m]=0xc0;} else{u3[m]=0xb0;} ACC<<=1 ;u4[m]=CY; if(u4[m]==1){u4[m]=0xa0;} else{u4[m]=0x90;} ACC<<=1 ;u5[m]=CY; if(u5[m]==1){u5[m]=0x80;} else{u5[m]=0x70;} ACC<<=1 ;u6[m]=CY; if(u6[m]==1){u6[m]=0x60;} else{u6[m]=0x50;} ACC<<=1 ;u7[m]=CY; if(u7[m]==1){u7[m]=0x40;} else{u7[m]=0x30;} ACC<<=1 ;u8[m]=CY; if(u8[m]==1){u8[m]=0x20;} else{u8[m]=0x10;} if(m==49) //50次 { m=0; } TF0=0; t0_tmer(); }


作者:深山一角  2005-8-9 17:59:00

  回复1  上面太乱 程序重贴一下66423

5620送数程序

/*写5620(通道C)**********************************************/

void send_C(uchar dat3)

{

//(101)

LOAD_5620=1;

DATA_5620=1;

CLK_5620=1;

CLK_5620=0;

DATA_5620=0;

CLK_5620=1;

CLK_5620=0;

DATA_5620=1;

CLK_5620=1;

CLK_5620=0;

ACC=dat3;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

ACC<<=1 ;DATA_5620=CY;CLK_5620=1; CLK_5620=0;

LOAD_5620=0;

}

其中一路通道

for(i=50;i>0;i--){send_C(i);switch(i)//通道1

{case 1 :send_B(u1[49]);break; case 2 :send_B(u1[38]);break;

case 3 :send_B(u1[47]);break; case 4 :send_B(u1[36]);break;

case 5 :send_B(u1[45]);break; case 6 :send_B(u1[34]);break;

case 7 :send_B(u1[43]);break; case 8 :send_B(u1[32]);break;

case 9 :send_B(u1[41]);break; case 10:send_B(u1[30]);break;

case 11:send_B(u1[39]);break; case 12:send_B(u1[28]);break;

case 13:send_B(u1[37]);break; case 14:send_B(u1[26]);break;

case 15:send_B(u1[35]);break; case 16:send_B(u1[24]);break;

case 17:send_B(u1[33]);break; case 18:send_B(u1[22]);break;

case 19:send_B(u1[31]);break; case 20:send_B(u1[30]);break;

case 21:send_B(u1[29]);break; case 22:send_B(u1[28]);break;

case 23:send_B(u1[27]);break; case 24:send_B(u1[26]);break;

case 25:send_B(u1[25]);break; case 26:send_B(u1[24]);break;

case 27:send_B(u1[23]);break; case 28:send_B(u1[22]);break;

case 29:send_B(u1[21]);break; case 30:send_B(u1[20]);break;

case 31:send_B(u1[19]);break; case 32:send_B(u1[18]);break;

case 33:send_B(u1[17]);break; case 34:send_B(u1[16]);break;

case 35:send_B(u1[15]);break; case 36:send_B(u1[14]);break;

case 37:send_B(u1[13]);break; case 38:send_B(u1[12]);break;

case 39:send_B(u1[11]);break; case 40:send_B(u1[10]);break;

case 41:send_B(u1[9]);break;case 42:send_B(u1[8]);break;

case 43:send_B(u1[7]);break;case 44:send_B(u1[6]);break;

case 45:send_B(u1[5]);break;case 46:send_B(u1[4]);break;

case 47:send_B(u1[3]);break;case 48:send_B(u1[2]);break;

case 49:send_B(u1[1]);break;case 50:send_B(u1[0]);break;}

}

中断中读P1口

/*中断***************************************************/

void inte() interrupt 1

{

dat0=P1;

m++;

ACC=dat0;

ACC<<=1 ;u1[m]=CY;if(u1[m]==1){u1[m]=0xff;}else{u1[m]=0xf0;}

ACC<<=1 ;u2[m]=CY;if(u2[m]==1){u2[m]=0xe0;}else{u2[m]=0xd0;}

ACC<<=1 ;u3[m]=CY;if(u3[m]==1){u3[m]=0xc0;}else{u3[m]=0xb0;}

ACC<<=1 ;u4[m]=CY;if(u4[m]==1){u4[m]=0xa0;}else{u4[m]=0x90;}

ACC<<=1 ;u5[m]=CY;if(u5[m]==1){u5[m]=0x80;}else{u5[m]=0x70;}

ACC<<=1 ;u6[m]=CY;if(u6[m]==1){u6[m]=0x60;}else{u6[m]=0x50;}

ACC<<=1 ;u7[m]=CY;if(u7[m]==1){u7[m]=0x40;}else{u7[m]=0x30;}

ACC<<=1 ;u8[m]=CY;if(u8[m]==1){u8[m]=0x20;}else{u8[m]=0x10;}

if(m==49)//50次

{

m=0;

}

TF0=0;

t0_tmer();

}


作者:深山一角  2005-8-9 18:03:00

  回复2  嘿嘿,做这样的示波器有意思66424

嘿嘿,做这样的示波器有意思
作者:yuntian  2005-8-9 18:11:00

  回复3  是啊~~可是66425

可我现在卡在时间存储与显示的同步上了。。

我的想法是先存50个点,存满再显示,存50个点大约60MS,我是横着写,显示稳定的8路大约16MS,由于移位序列可变,所以我想在采集过程中示波器必须循环显示已存储的波形,直到采集完50点后更新。

有大侠能告诉我该如何实现吗?~~。。。

或者是别的存与取的方法~望不吝赐教。


作者:深山一角  2005-8-9 19:21:00

  回复4  呵呵,太有意思了,你的示波器弄出来告诉我啊。66426

呵呵,太有意思了,你的示波器弄出来告诉我啊。
作者:wdc1229  2005-8-9 19:40:00

  回复5  呵呵 好的 但现在还需要大侠帮忙啊~66427

呵呵 好的 但现在还需要大侠帮忙啊~
作者:深山一角  2005-8-9 21:02:00

  回复6  你的用用中断来接受和输出啊,小鸟。66428

你的用用中断来接受和输出啊,小鸟。
作者:wdc1229  2005-8-10 13:51:00


我要投稿 注册会员
客服咨询热线:0755-26000950 0755-26007355
 相关技术问答
·如何在单片机做上LOGO ..  2005-8-9
·x5045看门狗初始化程序  2005-8-9
·请教单片机的冷启动和热启动  2005-8-9
·我也问TC35I问题? 关..  2005-8-9
·三相,每相负载不同,各相对..  2005-8-9
·有熟悉场效应管请帮帮我  2005-8-9
·有几种方法可以做到?  2005-8-9
·如何在 KEIL C51(..  2005-8-9
·急!我的自制89C51仿真板  2005-8-9
·单片机I/O口坏掉的原因  2005-8-9
·这个问题好像有人问过,不过..  2005-8-9
·不知道这快是NEC的什么片..  2005-8-9
·大家看看这个实验板,一个星..  2005-8-9
·红外高手请进,探讨一下红外..  2005-8-9
·怪!高手也不知道的问题!!..  2005-8-10
·请教ds18b20的问题  2005-8-10
·请问6N136和2701两..  2005-8-10
·关于24C04存储器的读写  2005-8-10
·各国语言,不同大小字库  2005-8-10
 
 热门IC
MJE172G  MC68HC11F1CPU4  NJM78M05DLA-TE1  ICL3237EIA  TL507CP  AL968  MAX4019ESD-T  RGP10J  ADG506AKRZ  74S32  HC1-5508  IRFF131  S21ME8  CD74AC14M96  TC74AC164F  MC74HC4052ADR2  LM1207  M93C46  BTS432D  IDT79R3051-25J  YMZ285-D  TBA331  LM2731YMFX  HT24LC08  BSP110  TA7612AP  SL162975  LTC1659IS8  HC1-55564-9  PSB2163N  ADC0832BIWM  TDA7245A  SN55110AJ  ML4401CQ  UPC1678  P87C52X2FBD  M5819PC1  HM514270CJ-7  LTC4257IS8-1  BFY51  C661G  LPC47M133-NC  K4D263238M-QC55  ICS9148F-08  KTD1304  LTC4006EGN-2  CL-GD5429-86QC-C  U829B  MAX4603CAE  MAX1641EEE