新手上路
- 积分
- 43
- 金钱
- 43
- 注册时间
- 2017-9-27
- 在线时间
- 9 小时
|
3金钱
本人初学者,关于OV7670摄像头,用的是战舰开发板,原来用配套的程序可以获取图像,但想给获取到的像素点排个序,自己改了一下程序就无法获取图像了,求大神们帮解决一下
可以获取图像的程序如下:
void camera_refresh(void)
{
u16 color_r;
u16 color_g;
u16 color_b;
u32 i,j;
u16 color;
if(ov_sta)//óDÖ¡ÖD¶Ï¸üD£¿
{
LCD_Scan_Dir(U2D_L2R); //′óéÏμ½ÏÂ,′ó×óμ½óò
if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
LCD_WriteRAM_Prepare(); //¿aê¼D′èëGRAM
OV7670_RRST=0; //¿a꼸′λ¶áÖ¸Õë
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1; //¸′λ¶áÖ¸Õë½áêø
OV7670_RCK_H;
for(i=0;i<320;i++){
for(j=0;j<240;j++)
{
OV7670_RCK_L;
color = GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
color <<=8;
OV7670_RCK_L;//
color |= GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
color_r = color &0xf800;
color_b = color >>11;
color >>=5;
color_g =color &0x07e0;
color = color_r + color_g + color_b;
LCD->LCD_RAM = color ;
}
}
ov_sta=0; //ÇåáãÖ¡ÖD¶Ï±ê¼Ç
ov_frame++;
LCD_Scan_Dir(DFT_SCAN_DIR); //»Ö¸′ĬèÏé¨Ãè·½Ïò
}
}
我把里面的color重新定义成color[][],然后重新编译程序没有报错,但是LCD上一片黑的,并没有显示图像,我改动的程序如下:
void camera_refresh(void)
{
u16 color_r;
u16 color_g;
u16 color_b;
u32 i,j;
u16 color[320][240];
if(ov_sta)//óDÖ¡ÖD¶Ï¸üD£¿
{
LCD_Scan_Dir(U2D_L2R); //′óéÏμ½ÏÂ,′ó×óμ½óò
if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
LCD_WriteRAM_Prepare(); //¿aê¼D′èëGRAM
OV7670_RRST=0; //¿a꼸′λ¶áÖ¸Õë
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1; //¸′λ¶áÖ¸Õë½áêø
OV7670_RCK_H;
for(i=0;i<320;i++){
for(j=0;j<240;j++)
{
OV7670_RCK_L;
color[i][j] = GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
color [i][j]<<=8;
OV7670_RCK_L;//
color[i][j] |= GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
color_r = color[i][j] &0xf800;
color_b = color[i][j] >>11;
color[i][j] >>=5;
color_g =color[i][j]&0x07e0;
color[i][j] = color_r + color_g + color_b;
LCD->LCD_RAM = color[i][j] ;
}
}
ov_sta=0; //ÇåáãÖ¡ÖD¶Ï±ê¼Ç
ov_frame++;
LCD_Scan_Dir(DFT_SCAN_DIR); //»Ö¸′ĬèÏé¨Ãè·½Ïò
}
}
求各路大神帮忙解决我的问题,感激不尽!!!
|
|