初级会员

- 积分
- 61
- 金钱
- 61
- 注册时间
- 2020-3-6
- 在线时间
- 14 小时
|

楼主 |
发表于 2020-3-9 15:53:05
|
显示全部楼层
我没发现读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¿ØÖÆ»òÕß WM¿ØÖÆ£¬ò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) //ÅD¶Ï»o′æÇøêÇ·ñ′æoÃéãÏñêy¾Y
{
FIFO_RRST=0; //¿a꼸′λ¶áÖ¸Õë
FIFO_RCK=0;
FIFO_RCK=1;
FIFO_RCK=0;
FIFO_RRST=1; //¸′λ¶áÖ¸Õë½áêø
FIFO_RCK=1;
for(j=0;j<20480;j++) //·Ö±æÂêÎa128x160 ÿ¸öÑÕé«μãòaὸö×Ö½ú£¬Ã¿′ζá2¸ö×Ö½ú£¬12128*160 ′Î
{
FIFO_RCK=0; //ÿò»′Îê±Öóìø±ä ¶áò»′Îêy¾Y
PicH=P1; //¶áêy¾Y ¶áè¡ÑÕ髸ß×Ö½úêy¾Y
FIFO_RCK=1;
Uart1_Send_Data(PicH);
FIFO_RCK=0;
PicL=P1; //¶áêy¾Y ¶áè¡ÑÕé«μí×Ö½úêy¾Y
FIFO_RCK=1;
Uart1_Send_Data(PicL);
TFT_Write_Command(0x2C);
TFT_DataWrite(PicH,PicL); //½2¶áè¡μÄÑÕé«ÖμÏÔê¾μ½TFTéÏ
delay_us(160);
}
Vsync_Flag=0; //ÏÔê¾íêÕû¸öí¼Æ¬òÔoó ½« cur_statusÖÃ0 ×¼±¸½óêÕÏÂò»Ö¡
blue=!blue;
}
}
}
void INT0_EX (void) interrupt 0 //ía2¿ÖD¶Ïp3.2
{
EA=0;
if(Vsync_Flag==0) //èç1û′Ëê±×′ì¬Îa0£¬ÔòËμÃ÷êÇò»¸öí¼ÏñμÄ¿aê¼£¬¿aê¼ÏòFIFO1Tèëêy¾Y
{
FIFO_WRST=0;
delay_us(5);
FIFO_WRST=1;
FIFO_WR=1;
Vsync_Flag=1; //±ê¼ÇÎa1
yellow=1;
}
else
if(Vsync_Flag==1) //ËμÃ÷′Ë′|Îaí¼ÏñμĽáêø£¬òà¼′ÏÂò»í¼ÏñμÄ¿aê¼
{
FIFO_WR=0;
FIFO_WRST=0;
FIFO_WRST=1;
Vsync_Flag=2;
yellow=0;
}
EA=1;
} |
|