OV7670在LCD上显示之后出现分屏

2019-08-14 16:38发布

OV7670在LCD上显示之后出现分屏,效果如下,程序如下,各位大佬求解
extern u8 ov_sta;        //Ôúexit.càïÃ涨òå
extern u8 ov_frame;        //Ôútimer.càïÃ涨òå

//¸üDÂLCDÏÔê¾
void camera_refresh(void)
{
        u32 j;
         u16 color;         
        if(ov_sta==2)
        {
          LCD_Set_Window(0,0,120,160);
                LCD_Scan_Dir(U2D_L2R);                //′óéÏμ½ÏÂ,′ó×óμ½óò
                LCD_SetCursor(0x00,0x0000);        //éèÖÃ1a±êλÖÃ
                LCD_WriteRAM_Prepare();     //¿aê¼D′èëGRAM        
                 OV7670_CS=0;         
                 OV7670_RRST=0;                                //¿a꼸′λ¶áÖ¸Õë
                OV7670_RCK=0;
                OV7670_RCK=1;
                OV7670_RCK=0;
                OV7670_RRST=1;                                //¸′λ¶áÖ¸Õë½áêø
                OV7670_RCK=1;  
                for(j=0;j<19200;j++)
                {
                        GPIOB->CRL=0X88888888;                  
                        OV7670_RCK=0;
                        color=OV7670_DATA;                //&#182;áêy&#190;Y
                        OV7670_RCK=1;         
                        color<<=8;                                          
                         OV7670_RCK=0;
                        color|=OV7670_DATA;                //&#182;áêy&#190;Y                  
                        OV7670_RCK=1;
                        GPIOB->CRL=0X33333333;
//      if(color<25000)                                         //
//      color=0x0000;                                        //
//      else                                                       //
//      color=0xffff;                                                             //
                        LCD_WR_DATA(color);         
                }  
                 OV7670_CS=1;                                                         
                OV7670_RCK=0;
                OV7670_RCK=1;
                EXTI->R=1<<15;                     //&#199;&#229;3yLINE8é&#207;μ&#196;&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;
                ov_sta=0;                                        //&#191;aê&#188;&#207;&#194;ò&#187;′&#206;2é&#188;ˉ
                 ov_frame++;
                LCD_Scan_Dir(DFT_SCAN_DIR);        //&#187;&#214;&#184;′&#196;&#172;è&#207;é¨&#195;è·&#189;&#207;ò                                                     
        }
}         
int main(void)
{        
        u8 i;        
        delay_init();                     //&#209;óê±oˉêy3&#245;ê&#188;&#187;ˉ
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// éè&#214;&#195;&#214;D&#182;&#207;ó&#197;&#207;è&#188;&#182;·&#214;×é2
        uart_init(9600);
        OV7670_Init();        
        LED_Init();                                  //3&#245;ê&#188;&#187;ˉó&#235;LEDá&#172;&#189;óμ&#196;ó2&#188;t&#189;ó&#191;ú
        LCD_Init();                                   //3&#245;ê&#188;&#187;ˉLCD
        if(lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X5510||lcddev.id==0X1963) //&#199;&#191;&#214;&#198;éè&#214;&#195;&#198;á&#196;&#187;·&#214;±&#230;&#194;ê&#206;a320*240.ò&#212;&#214;§3&#214;3.5′&#231;′ó&#198;á
        {
                lcddev.width=120;                  //240
                lcddev.height=160;                 //320
        }
        usmart_dev.init(72);        //3&#245;ê&#188;&#187;ˉUSMART        
        
         POINT_COLOR=RED;//éè&#214;&#195;×&#214;ì&#229;&#206;aoìé&#171;
        LCD_ShowString(60,50,200,200,16,"Mini STM32");        
        LCD_ShowString(60,70,200,200,16,"OV7670 TEST");        
        LCD_ShowString(60,90,200,200,16,"ATOM@ALIENTEK");
        LCD_ShowString(60,110,200,200,16,"2014/3/27");           
        LCD_ShowString(60,130,200,200,16,"Use USMART To Set!");         
          LCD_ShowString(60,150,200,200,16,"OV7670 Init...");         
        while(OV7670_Init())//3&#245;ê&#188;&#187;ˉOV7670
        {
                LCD_ShowString(60,150,200,200,16,"OV7670 Error!!");
                delay_ms(200);
            LCD_Fill(60,150,239,166,WHITE);
                delay_ms(200);
        }
         LCD_ShowString(60,150,200,200,16,"OV7670 Init OK");
        delay_ms(1500);                              
        TIM3_Int_Init(10000,7199);                        //TIM3,10Khz&#188;&#198;êy&#198;μ&#194;ê,1&#195;&#235;&#214;ó&#214;D&#182;&#207;                                                                          
        EXTI15_Init();                                                //ê1&#196;ü&#182;¨ê±&#198;÷2&#182;&#187;&#241;
        OV7670_Window_Set(10,174,120,160);        //éè&#214;&#195;′°&#191;ú                                  //   160   240  

          OV7670_CS=0;                                                         
         while(1)
        {        
                 camera_refresh();        //&#184;üD&#194;&#207;&#212;ê&#190;         
                 if(i!=ov_frame)                //DS0éá&#203;&#184;.
                {
                        i=ov_frame;
                        LED0=!LED0;
                 }
        }           
}

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