完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 根据32单片机采集两路DA,用取模软件取出要显示的字样,了解示波器显示的原理。通过转换找出二进制是1的点的坐标。
注:图片是第一次采集的结果,效果不好。 程序思想1:把取模软件去除的8进制,通过算法转换为二进制,每一个数组对应一个数,判断是1的点找出对应的坐标,把坐标通过DAC转换。 /*把数组中的8位数,分别换成1位数,存在数组里面*/ for(i=0;i<16;i++) { for(j=0;j<8;j++) { /*取第一位其他位不改变*/ if(aa[0] & 0x80)//如果第1位为1时 { b2[j]=1;//给数组赋值为1 } else//其余为0 b2[j] =0; aa[0]=aa[0]<<1;//向左1位 } for(k=8;k<16;k++) { if(aa[1] & 0x80) { b2[k]=1; } else { b2[k]=0; } aa[1]=aa[1]<<1; } } for(i1=0;i1<16;i1++) { for(j1=0;j1<8;j1++) { if(aa1[0][i1]&0x80) { b3[i1][j1]=1; } else b3[i1][j1]=0; aa1[0][i1]=aa1[0][i1]<<1; } for(k1=8;k1<16;k1++) { if(aa1[1][i1] & 0x80) { b3[i1][k1]=1; } else { b3[i1][k1]=0; } aa1[1][i1]=aa1[1][i1]<<1; } } while(1) { for(t=0;t<16;t++) { for(u=0;u<16;u++) { if(b2[t])//每1位取出来之后,当取出来的值为1时,给一个坐标 { DAC_SetChannel1Data(DAC_Align_8b_R, t+20);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R, u+20);//设置DAC2值,设置为y轴 PA5 delay_us(100); } } } for(t1=0;t1<16;t1++) { for(u1=0;u1<16;u1++) { if(b3[t1][u1])//每1位取出来之后,当取出来的值为1时,给一个坐标 { DAC_SetChannel1Data(DAC_Align_8b_R, t1+40);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R, u1+20);//设置DAC2值,设置为y轴 PA5 delay_us(100); } } } 程序思想二:固定横轴采集纵轴二进制为1的坐标 while(1) { for(i=0;i<16;i++) { temp=a[0]; for(j=0;j<8;j++) { if(temp & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*j);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp=temp<<1; } temp1=a[1]; for(k=8;k<16;k++) { if(temp1 & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*k);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp1=temp1<<1; } } for(i=0;i<16;i++) { temp=a1[0]; for(j=0;j<8;j++) { if(temp & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i+118);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*j);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp=temp<<1; } temp1=a1[1]; for(k=8;k<16;k++) { if(temp1 & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i+118);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*k);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp1=temp1<<1; } } } }while(1) { for(i=0;i<16;i++) { temp=a[0]; for(j=0;j<8;j++) { if(temp & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*j);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp=temp<<1; } temp1=a[1]; for(k=8;k<16;k++) { if(temp1 & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*k);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp1=temp1<<1; } } for(i=0;i<16;i++) { temp=a1[0]; for(j=0;j<8;j++) { if(temp & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i+118);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*j);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp=temp<<1; } temp1=a1[1]; for(k=8;k<16;k++) { if(temp1 & 0x80) { DAC_SetChannel1Data(DAC_Align_8b_R,8*i+118);//设置DAC1值,设置为x轴 PA4 DAC_SetChannel2Data(DAC_Align_8b_R,8*k);//设置DAC2值,设置为y轴 PA5 delay_us(200); } temp1=temp1<<1; } } } } 程序思想三:在二的基础上加入DMA传输,这样增加了显示的清晰度 int main(void) { delay_init(); //延时函数初始化 for(i=0;i<16;i++) { temp=a[0]; for(j=0;j<8;j++) { if(temp & 0x80) { DualSine12bit[n]=(8*i+(8*j<<15))+170; delay_us(200); n++; } temp=temp<<1; } temp1=a[1]; for(k=8;k<16;k++) { if(temp1 & 0x80) { DualSine12bit[n]=(8*i+(8*k<<15))+170; delay_us(200); n++; } temp1=temp1<<1; } } for(i=0;i<16;i++) { temp=a1[0]; for(j=0;j<8;j++) { if(temp & 0x80) { DualSine12bit[n]=(8*i+(8*j<<15))+300; n++; } temp=temp<<1; } temp1=a1[1]; for(k=8;k<16;k++) { if(temp1 & 0x80) { DualSine12bit[n]=(8*i+(8*k<<15))+300; n++; } temp1=temp1<<1; } } DAC_DMA_Config(); Dac1_Init(); //DAC初始化 Dac2_Init(); DAC_tiM_Config(); while(1); } ` |
|
|
|
2049 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1893 浏览 3 评论
4485 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2040 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2549 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 06:15 , Processed in 0.594340 second(s), Total 72, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号