完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是开发板接收显示的程序:
int main() { u16 j; u8 t=0; u16 color; LCD_Init(); //初始化LCD if(lcddev.id==0X6804) //强制设置屏幕分辨率为320*240.以支持3.5寸大屏 { lcddev.width=240; lcddev.height=320; } NRF24L01_Init(); //初始化NRF24L01 while(NRF24L01_Check()) //检查NRF24L01是否在位. { LCD_ShowString(60,130,200,16,16,"NRF24L01 Error"); delay_ms(200); LCD_Fill(60,130,239,130+16,WHITE); delay_ms(200); } NRF24L01_RX_Mode(); while(NRF24L01_RxPacket(tmp_buf)) delay_us(100); while(1) { if(tmp_buf[0]==0xf0) { LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右 LCD_SetCursor(0x00,0x0000); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM NRF24L01_RX_Mode(); for(j=0;j<4800;j++) { while(NRF24L01_RxPacket(tmp_buf)) delay_us(10); for(t=0;t<32;t+=2) { color=tmp_buf[t]; color<<=8; color|=tmp_buf[t+1]; LCD->LCD_RAM=color; } } while(1); //只接一帧停在这 LCD_Scan_Dir(DFT_SCAN_DIR); //恢复默认扫描方向 } else while(NRF24L01_RxPacket(tmp_buf)) delay_us(100); } } |
|
|
|
这只是主函数,子函数都是用的原子哥的,真心求解为什么会出这现象
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LCD_Scan_Dir(U2D_L2R); //从上到下,从左到右
LCD_SetCursor(0x00,0x0000); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM for(j=0;j<4800;j++) { while(NRF24L01_RxPacket(tmp_buf)) delay_us(10); for(t=0;t<32;t+=2) { color=tmp_buf[t]; color<<=8; color|=tmp_buf[t+1]; if(j>=1680) { if(num==0) OV7670_DrawPoint(320-107,j/20,color); if(num==107) OV7670_DrawPoint(0,j/20,color); if(num!=0&&num!=107) LCD->LCD_RAM=color; num++; if(num>=320) num=0; } else if(j>=1140) { zun=j/20; zun=zun*4-225; if(lin==0) OV7670_DrawPoint(320-zun+4,j/20-1,color); if(lin==zun) OV7670_DrawPoint(0,j/20,color); if(lin!=0&&lin!=zun) LCD->LCD_RAM=color; lin++; if(lin>=320) lin=0; } else if(j>=1120) { if(yin==0) OV7670_DrawPoint(0,j/20,color); else LCD->LCD_RAM=color; yin++; if(yin>=320) yin=0; } else { if(yum==0) OV7670_DrawPoint(4,j/20,color); else LCD->LCD_RAM=color; yum++; if(yum>=320) yum=0; } } 就显示的这部分不一样,其他的都一样,前1/3整体下移4个像素,后1/3上下调换,中间1/3线性移动然后再整体上移4个像素。OK |
|
|
|
原子哥,我感觉接收程序和发射的应该都没问题,在弄摄像头之前我调无线的时候我发过彩色相间的图片,没问题的。我估计是读摄像头的时候中间不知道为什么数据顺序就乱了,现在我用最笨的方法在接收端硬纠正过来了。。。真的好奇怪 |
|
|
|
额,好吧,经过测试,无线距离20cm,超过20就乱了,屏幕就分成好几块了。。。。是不是要搞个天线??
|
|
|
|
问下楼主7楼那张图片是什么原因造成的啊, 我rgb格式没有 yuv就变成和你图像一样的情况了,而且斜率比你的还大 怎么改的 谢谢
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
楼主,可以加你的qq吗?我的是2963960660。谢谢了!
|
|
|
|
楼主,你还在不?求程序源码,真心不会啊
|
|
|
|
楼主,不知道你还在不在,我按照你的程序调出来了,一开始现象和你的是一样的。静止不动的画面在lcd显示上也是上下滚动的。后来,将你程序里关于发送,接收的延时,如while(NRF24L01_RxPacket(tmp_buf)) delay_us(10);这种语句,都改成了while(NRF24L01_RxPacket(tmp_buf));演示部分都去掉了。现象是上下不滚动了。但是图像上半部分在lcd显示屏下面,下半部分在lcd显示屏上面。后来经过调试,把你的程序里面关于校验的部分 tmp_buf[0]=0xf0;全去掉了。现在摄像头显示已经没问题了,就是nrf通信慢了,大概2s一幅图片的样子。
|
|
|
|
|
|
|
|
找到真正的原因了,不是校验去掉的问题。是原子哥的代码里,有一个NRF24L01_RX_Mode();
接收配置里面的NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); //使能通道0的自动应答。 将自动应答的0x01改为0x00,失能就可以了。 但是不理解为什么,求原子哥解答 |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2547 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2332 浏览 5 评论
3161 浏览 3 评论
2804 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2762 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
611浏览 1评论
857浏览 0评论
971浏览 0评论
625浏览 0评论
452浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 07:58 , Processed in 1.435516 second(s), Total 112, Slave 95 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号