OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2921|回复: 6

ov7670,带fifo,一直显示白屏,ov7670初始化成功,串口有数据,什么原因

[复制链接]

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2020-3-6
在线时间
14 小时
发表于 2020-3-9 12:35:39 | 显示全部楼层 |阅读模式
4金钱

代码如下,#include "stc15w4k56s4.h"#include "TFT18.h"
#include "delay.h"
#include "uart.h"
#include "ov7670.h"

#define uint unsigned int
#define uchar unsigned char

//uchar code pic[];
//unsigned char cur_status=0;
//uchar xdata Camera_Data[256]={0};
uchar Vsync_Flag=0;

//sbit TFT_BL=P0^7;//½óÄ£¿éBLòy½Å£¬±31a2éóÃIO¿ØÖÆ»òÕ&#223WM¿ØÖÆ£¬ò2¿éòÔÖ±½ó½óμ½¸ßμçÆ½3£áá
sbit TFT_SCL=P0^6;//½óÄ£¿éCLKòy½Å
sbit TFT_SDA=P0^5;//½óÄ£¿éDIN/MOSIòy½Å
sbit TFT_RS=P0^4;//½óÄ£¿éD/Còy½Å£¬1£odata£¬0£ocmmand
sbit TFT_RST=P0^3;//½óÄ£¿éRSTòy½Å
sbit TFT_CS=P0^2;//½óÄ£¿éCEòy½Å£¬0£oóDD§

//FIFO control lines
sbit FIFO_RCK=P2^2;//FIFO¶áêy¾Yê±Öó
sbit FIFO_WR=P2^3;//FIFOD′ê1Äü
sbit FIFO_OE=P2^4;//FIFO1ضϿØÖÆ
sbit FIFO_WRST=P2^5;//D′Ö¸Õë¸′λ
sbit FIFO_RRST=P2^6;//¶áÖ¸Õë¸′λ

sbit Key1=P2^0;
sbit Key2=P2^1;
//sbit Key3=P2^2;
//sbit Key4=P2^3;
sbit red=P5^0;
sbit yellow=P5^1;
sbit blue=P5^2;

void Port_Init(void);
void Ext_Interrupt_Init(void);

void Port_Init(void) //é趨Ö÷»úéÏËùóD¶Ë¿úÎa׼˫Ïò¿ú£¬2ο¼£¨P1016£©
{
  P0M0 = 0x01;
  P0M1 = 0x00;//p0.0ÎaíÆíñêä3ö
//P1M0 = 0x80;
//P1M1 = 0x00;//p1.7ÎaíÆíñêä3ö

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14433
金钱
14433
注册时间
2018-8-3
在线时间
1157 小时
发表于 2020-3-9 15:08:33 | 显示全部楼层
读写FIFO 出问题了吧  有7670的代码可以参考的论坛上 可以下载去看看http://www.openedv.com/forum.php ... 0%2B%2B%D7%CA%C1%CF
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2020-3-6
在线时间
14 小时
 楼主| 发表于 2020-3-9 15:53:05 | 显示全部楼层
翼行园子 发表于 2020-3-9 15:08
读写FIFO 出问题了吧  有7670的代码可以参考的论坛上 可以下载去看看http://www.openedv.com/forum.php?mod ...

我没发现读fifo有什么问题呀,帮忙看一下呀



#include "stc15w4k56s4.h"
#include "TFT18.h"
#include "delay.h"
#include "uart.h"
#include "ov7670.h"

#define uint unsigned int
#define uchar unsigned char

uchar code pic[];
//unsigned char cur_status=0;
//uchar xdata Camera_Data[256]={0};
uchar Vsync_Flag=0;


//sbit TFT_BL=P0^7;//½óÄ£¿éBLòy½Å£¬±31a2éóÃIO¿ØÖÆ»òÕ&#223WM¿ØÖÆ£¬ò2¿éòÔÖ±½ó½óμ½¸ßμçÆ½3£áá
sbit TFT_SCL=P0^6;//½óÄ£¿éCLKòy½Å
sbit TFT_SDA=P0^5;//½óÄ£¿éDIN/MOSIòy½Å
sbit TFT_RS=P0^4;//½óÄ£¿éD/Còy½Å£¬1£odata£¬0£ocmmand
sbit TFT_RST=P0^3;//½óÄ£¿éRSTòy½Å
sbit TFT_CS=P0^2;//½óÄ£¿éCEòy½Å£¬0£oóDD§

//FIFO control lines
sbit FIFO_RCK=P2^2;//FIFO¶áêy¾Yê±Öó
sbit FIFO_WR=P2^3;//FIFOD′ê1Äü
sbit FIFO_OE=P2^4;//FIFO1ضϿØÖÆ
sbit FIFO_WRST=P2^5;//D′Ö¸Õë¸′λ
sbit FIFO_RRST=P2^6;//¶áÖ¸Õë¸′λ

sbit Key1=P2^0;
sbit Key2=P2^1;
//sbit Key3=P2^2;
//sbit Key4=P2^3;
sbit red=P5^0;
sbit yellow=P5^1;
sbit blue=P5^2;

void Port_Init(void);
void Ext_Interrupt_Init(void);

void Port_Init(void) //é趨Ö÷»úéÏËùóD¶Ë¿úÎa׼˫Ïò¿ú£¬2ο¼£¨P1016£©
{
  P0M0 = 0x01;
  P0M1 = 0x00;//p0.0ÎaíÆíñêä3ö
//P1M0 = 0x80;
//P1M1 = 0x00;//p1.7ÎaíÆíñêä3ö
        P1M0 = 0x00;
        P1M1 = 0xFF;//p1¶Ë¿úÎa¸ß×èêäèë
  P2M0 = 0x78;
  P2M1 = 0x00;//p2.3£¬p2.4£¬p2.5£¬p2.6ÎaíÆíñêä3ö
  P3M0 = 0x00;
  P3M1 = 0x04;//P3.2Îa¸ß×èêä裬ë
  P4M0 = 0x00;
  P4M1 = 0x00;
  P5M0 = 0x00;
  P5M1 = 0x00;
}
void Ext_Interrupt_Init(void)
{
        IT0=1;//0:éÏéyÑØoíϽμÑØ′¥·¢,1:ϽμÑØ′¥·¢
        EX0=1;//¿aÆôía2¿ÖD¶Ï0
        EA=1;//¿aÆô×üÖD¶Ï£¬ía2¿ÖD¶ÏÔ′p3.2
       
}
void main(void)
{
//        unsigned char i;
        unsigned long j;
//        unsigned int x,y;
//        unsigned int k;
        unsigned char PicH,PicL;
//        unsigned char interrupt_count;
       
        Port_Init();
        Ext_Interrupt_Init();
        TFT_Init();
        delay_ms(10);
        TFT_Write_Command(0x2C);
        DSP_Single_Colour(LGRAY_H,LGRAY_L);
        Display_Start();
        Uart1_Init();
        delay_ms(100);
  FIFO_OE=0;                   //ê1ÄüéãÏñí·Ä£¿é
        TFT_Write_Command(0x2C);
        DSP_Single_Colour(LGRAY_H,LGRAY_L);
        Display_ASCII8X16(1,8,"OV is starting",BLUE_H,BLUE_L);       
  while(Ov7670_Init())         //3õê¼»ˉ ov7670
        {
                Display_ASCII8X16(1,96,"Init error",RED_H,RED_L);
        }
        Display_ASCII8X16(1,96,"Init success",BLUE_H,BLUE_L);
        delay_ms(100);
        OV7670_Window_Set(10,176,160,128);        //éèÖÃ′°¿ú,heignt*weight
               
        TFT_Write_Command(0x2C);
        DSP_Single_Colour(LGRAY_H,LGRAY_L);
//        interrupt_count=0;
        while(1)
        {
/*                k=0;
                for(x=0;x<160;x++)
                        for(y=0;y<128;y++)
                        {
                                PicH=pic[k];
                                k++;
                                PicL=pic[k];
                                k++;
                                TFT_DataWrite(PicH,PicL);
                        }
*/
   
                if(Vsync_Flag==2)                          //&#197;D&#182;&#207;&#187;o′&#230;&#199;&#248;ê&#199;·&#241;′&#230;o&#195;é&#227;&#207;&#241;êy&#190;Y
    {  
                        FIFO_RRST=0;                           //&#191;aê&#188;&#184;′&#206;&#187;&#182;á&#214;&#184;&#213;&#235;
      FIFO_RCK=0;
      FIFO_RCK=1;
      FIFO_RCK=0;
      FIFO_RRST=1;                                   //&#184;′&#206;&#187;&#182;á&#214;&#184;&#213;&#235;&#189;áê&#248;      
                        FIFO_RCK=1;
                       
                   for(j=0;j<20480;j++)        //·&#214;±&#230;&#194;ê&#206;a128x160   &#195;&#191;&#184;&#246;&#209;&#213;é&#171;μ&#227;òaá&#189;&#184;&#246;×&#214;&#189;ú£&#172;&#195;&#191;′&#206;&#182;á2&#184;&#246;×&#214;&#189;ú£&#172;12128*160  ′&#206;
                        {
                                        FIFO_RCK=0;                         //&#195;&#191;ò&#187;′&#206;ê±&#214;óì&#248;±&#228; &#182;áò&#187;′&#206;êy&#190;Y               
                                        PicH=P1;                                         //&#182;áêy&#190;Y          &#182;áè&#161;&#209;&#213;é&#171;&#184;&#223;×&#214;&#189;úêy&#190;Y
                                        FIFO_RCK=1;
                                        Uart1_Send_Data(PicH);
                                        FIFO_RCK=0;
                                        PicL=P1;                                   //&#182;áêy&#190;Y          &#182;áè&#161;&#209;&#213;é&#171;μí×&#214;&#189;úêy&#190;Y
                                        FIFO_RCK=1;
                                        Uart1_Send_Data(PicL);
                                        TFT_Write_Command(0x2C);
                                        TFT_DataWrite(PicH,PicL);                //&#189;2&#182;áè&#161;μ&#196;&#209;&#213;é&#171;&#214;μ&#207;&#212;ê&#190;μ&#189;TFTé&#207;               
                                        delay_us(160);               
                        }
                        Vsync_Flag=0;                                           //&#207;&#212;ê&#190;íê&#213;&#251;&#184;&#246;í&#188;&#198;&#172;ò&#212;oó &#189;&#171;         cur_status&#214;&#195;0  ×&#188;±&#184;&#189;óê&#213;&#207;&#194;ò&#187;&#214;&#161;
                        blue=!blue;
                }
        }
}


void INT0_EX (void) interrupt 0 //ía2&#191;&#214;D&#182;&#207;p3.2
{
        EA=0;
        if(Vsync_Flag==0) //è&#231;1&#251;′&#203;ê±×′ì&#172;&#206;a0£&#172;&#212;ò&#203;μ&#195;÷ê&#199;ò&#187;&#184;&#246;í&#188;&#207;&#241;μ&#196;&#191;aê&#188;£&#172;&#191;aê&#188;&#207;òFIFO1Tè&#235;êy&#190;Y
   {
                        FIFO_WRST=0;
                        delay_us(5);
                        FIFO_WRST=1;
                        FIFO_WR=1;
                        Vsync_Flag=1; //±ê&#188;&#199;&#206;a1
                        yellow=1;
   }
   else
                if(Vsync_Flag==1)        //&#203;μ&#195;÷′&#203;′|&#206;aí&#188;&#207;&#241;μ&#196;&#189;áê&#248;£&#172;òà&#188;′&#207;&#194;ò&#187;í&#188;&#207;&#241;μ&#196;&#191;aê&#188;
     {
       FIFO_WR=0;
       FIFO_WRST=0;
       FIFO_WRST=1;
       Vsync_Flag=2;
       yellow=0;
     }       
         EA=1;
}
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2020-3-6
在线时间
14 小时
 楼主| 发表于 2020-3-9 16:51:05 | 显示全部楼层
有懂这个的吗,现在lcd单独显示图片,文字是可以的,ov7670初始化也正常,用串口也能收到ov7670发来的数据,但就是LCD无法显示,一直是白屏状态
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2020-3-6
在线时间
14 小时
 楼主| 发表于 2020-3-9 18:23:13 | 显示全部楼层
我把用串口从fifo里读出的数据用lcd显示出来,却是这样 IMG_1947.JPG IMG_1945.JPG IMG_1946.JPG


回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2020-3-6
在线时间
14 小时
 楼主| 发表于 2020-6-29 15:13:51 来自手机 | 显示全部楼层
现在设置输出彩条,但却显示这个,有知道的嘛
DAE9B0AE-49F3-4F35-BB00-4B81002793C2.jpeg
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2020-3-6
在线时间
14 小时
 楼主| 发表于 2020-7-4 15:52:48 来自手机 | 显示全部楼层
现在这个状态了
7B4B6ED0-497A-4C91-B2DC-5F187A6C8D26.jpeg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 21:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表