ov7670摄像头数据上传到上位机有问题

2019-08-13 22:22发布

原子哥,我用的ov7670摄像头采集到图像,把RGB565转成YUV提取Y分量后,通过串口上传到上位机后,显示图像是这样的: 上位机显示图片.png
模糊一片,而且上位机和显示屏显示刷新速度也很慢,就算把显示屏关掉显示依然很慢,想问下怎么回事?程序使用教程里面ov7670的改的,修改后的程序如下:
[mw_shl_code=c,true]//更新LCD显示
void camera_refresh(void)
{
        u32 j;
        u16 color,Color;       
        u16 color_r;
        u16 color_g;
        u16 color_b;
        if(ov_sta)//有帧中断更新?
        {
/*                LCD_Scan_Dir(U2D_L2R);                //从上到下,从左到右  
                if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//将显示区域设置到屏幕中央
                else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//将显示区域设置到屏幕中央
                LCD_WriteRAM_Prepare();     //开始写入GRAM        */
                OV7670_RRST=0;                                //开始复位读指针
                OV7670_RCK_L;
                OV7670_RCK_H;
                OV7670_RCK_L;
                OV7670_RRST=1;                                //复位读指针结束
                OV7670_RCK_H;
                for(j=0;j<76800;j++)
                {
                        OV7670_RCK_L;
                        color=GPIOC->IDR&0XFF;        //读数据
                        OV7670_RCK_H;
                        Color=color;
                        color<<=8;  
                        OV7670_RCK_L;
                        color|=GPIOC->IDR&0XFF;        //读数据
                        OV7670_RCK_H;
/*                                        color_r = color&0xf800;
                                        color_b = color>>11;
                                        color >>=5;
                                        color_g =color&0x07e0; */                               
//                                        LCD->LCD_RAM= color_r + color_g + color_b;   
        while (!(USART1->SR & USART_FLAG_TXE));
            USART1->DR = Color;                       
                }  
    while(!USART_GetFlagStatus(USART1,USART_FLAG_TC));                 
//                ov_sta=0;                                        //清零帧中断标记
//                LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认扫描方向
        }
}          



int main(void)
{         

        delay_init();                     //延时函数初始化          
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
        uart_init(115200);                 //串口初始化为 115200
//        LCD_Init();                                           //初始化LCD  
        OV7670_Init();
        delay_ms(10);                                                                              
        EXTI8_Init();                                                //使能定时器捕获
        OV7670_Window_Set(12,176,240,320);        //设置窗口          
          OV7670_CS=0;                                       
//        LCD_Clear(BLACK);
        while(1)
        {       
                USART1->DR=0xff;
                if(ov_sta==1)
                {
                        camera_refresh();//更新显示
                        ov_sta=0;
                }

        }          
}[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。