原子哥,我用的ov7670摄像头采集到图像,把RGB565转成YUV提取Y分量后,通过串口上传到上位机后,显示图像是这样的:
模糊一片,而且上位机和显示屏显示刷新速度也很慢,就算把显示屏关掉显示依然很慢,想问下怎么回事?程序使用教程里面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]
一周热门 更多>