|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
[求助]关于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(); } |
2楼: | >>参与讨论 |
作者: 深山一角 于 2005/8/9 18:03:00 发布:
上面太乱 程序重贴一下 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; ca |
3楼: | >>参与讨论 |
作者: yuntian 于 2005/8/9 18:11:00 发布:
嘿嘿,做这样的示波器有意思 |
4楼: | >>参与讨论 |
作者: 深山一角 于 2005/8/9 19:21:00 发布:
是啊~~可是 可我现在卡在时间存储与显示的同步上了。。 我的想法是先存50个点,存满再显示,存50个点大约60MS,我是横着写,显示稳定的8路大约16MS,由于移位序列可变,所以我想在采集过程中示波器必须循环显示已存储的波形,直到采集完50点后更新。 有大侠能告诉我该如何实现吗?~~。。。 或者是别的存与取的方法~望不吝赐教。 |
5楼: | >>参与讨论 |
作者: wdc1229 于 2005/8/9 19:40:00 发布:
呵呵,太有意思了,你的示波器弄出来告诉我啊。 |
6楼: | >>参与讨论 |
作者: 深山一角 于 2005/8/9 21:02:00 发布:
呵呵 好的 但现在还需要大侠帮忙啊~ |
7楼: | >>参与讨论 |
作者: wdc1229 于 2005/8/10 13:51:00 发布:
你的用用中断来接受和输出啊,小鸟。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |