【正文】
LCD_WR: OUT STD_LOGIC。 LCD_RS: OUT STD_LOGIC。 LCD_RESET: OUT STD_LOGIC。 LCD_RD: OUT STD_LOGIC。 LCD_DATA16: OUT STD_LOGIC_VECTOR(15 DOWNTO 0)。 ODVAL: OUT STD_LOGIC。 LCD_DATA_VALID: OUT STD_LOGIC )。END CCD_TOP。ARCHITECTURE BEHAV OF CCD_TOP IS SIGNAL REG_LCD_WR:STD_LOGIC。SIGNAL OV7670_DATA_16BIT:STD_LOGIC_VECTOR(15 DOWNTO 0)。SIGNAL PRE_FVAL,MCCD_FVAL,MCCD_LVAL:STD_LOGIC。SIGNAL X_CONT,Y_CONT:STD_LOGIC_VECTOR(10 DOWNTO 0)。SIGNAL IOV7670_DATA_8BIT:STD_LOGIC_VECTOR(7 DOWNTO 0)。SIGNAL TEMP_COUNT:STD_LOGIC_VECTOR(1 DOWNTO 0):=00。SIGNAL STATE1:STD_LOGIC。SIGNAL PRE_IOV7670_DATA_8BIT:STD_LOGIC_VECTOR(7 DOWNTO 0)。SIGNAL TEMP1,TEMP2:STD_LOGIC。SIGNAL WRITE_STATE:STD_LOGIC。SIGNAL TFT_OUT_EN:STD_LOGIC。SIGNAL FRAME_CONT:STD_LOGIC_VECTOR(2 DOWNTO 0)。BEGINLCD_WR=REG_LCD_WR。LCD_RS=39。139。LCD_RD=39。139。LCD_CS=39。039。LCD_RESET=39。139。LCD_DATA16=OV7670_DATA_16BIT。IOV7670_DATA_8BIT=OV7670_DATA。ODVAL=NOT IVSYNC。PROCESS(OV7670_PCLK,RESET)BEGINIF RESET=39。039。 THEN PRE_FVAL=39。039。 MCCD_FVAL=39。039。 MCCD_LVAL=39。039。 X_CONT=00000000000。 Y_CONT=00000000000。ELSIF OV7670_PCLK39。EVENT AND OV7670_PCLK=39。139。 THEN PRE_FVAL=IVSYNC。 IF PRE_FVAL=39。139。 AND IVSYNC=39。039。 THEN MCCD_FVAL=39。139。 ELSIF PRE_FVAL=39。039。 AND IVSYNC=39。139。 THEN MCCD_FVAL=39。039。 END IF。 MCCD_LVAL=ILVAL。 IF MCCD_FVAL=39。139。 THEN IF MCCD_LVAL=39。139。 THEN X_CONT=X_CONT+39。139。 IF X_CONT=01001111111 THEN X_CONT=00000000000。 Y_CONT=Y_CONT+39。139。 END IF。 END IF。 ELSE X_CONT=00000000000。 IF TEMP_COUNT=11 THEN Y_CONT=00000000000。 TEMP_COUNT=00。 ELSE TEMP_COUNT=TEMP_COUNT+39。139。 END IF。 END IF。 END IF。END PROCESS。OV7670 DATA 8BIT TO 16BITPROCESS(OV7670_PCLK,RESET)BEGINIF RESET=39。039。 THEN STATE1=39。039。ELSIF OV7670_PCLK39。EVENT AND OV7670_PCLK=39。139。 THEN CASE STATE1 IS WHEN 39。039。 = PRE_IOV7670_DATA_8BIT=IOV7670_DATA_8BIT。 STATE1=39。139。 WHEN 39。139。 = OV7670_DATA_16BIT=PRE_IOV7670_DATA_8BITamp。IOV7670_DATA_8BIT。 STATE1=39。039。 WHEN OTHERS=STATE1=39。039。 END CASE。END IF。END PROCESS。PROCESS(OV7670_PCLK,RESET)BEGINIF RESET=39。039。 THEN TEMP1=39。039。 TEMP2=39。039。ELSIF OV7670_PCLK39。EVENT AND OV7670_PCLK=39。139。 THEN TEMP1=ILVAL。 TEMP2=TEMP1。END IF。END PROCESS。PROCESS(OV7670_PCLK,RESET)BEGINIF RESET=39。039。 THEN REG_LCD_WR=39。139。 WRITE_STATE=39。039。 LCD_DATA_VALID=39。039。ELSIF OV7670_PCLK39。EVENT AND OV7670_PCLK=39。039。 THEN CASE WRITE_STATE IS WHEN 39。039。 =IF TEMP2=39。139。 AND Y_CONT=00000000000 AND TFT_OUT_EN=39。139。 THEN REG_LCD_WR= NOT REG_LCD_WR。 WRITE_STATE=39。139。 LCD_DATA_VALID=39。139。 ELSE REG_LCD_WR=39。139。 LCD_DATA_VALID=39。039。 END IF。 WHEN 39。139。 =IF TEMP2=39。139。 THEN REG_LCD_WR= NOT REG_LCD_WR。 ELSE REG_LCD_WR=39。139。 END IF。 IF Y_CONT00011110000 THEN WRITE_STATE=39。139。 ELSE WRITE_STATE=39。039。 LCD_DATA_VALID=39。039。 END IF。 END CASE。END IF。END PROCESS。PROCESS(OV7670_PCLK,RESET)BEGINIF RESET=39。039。 THEN FRAME_CONT=000。ELSIF OV7670_PCLK39。EVENT AND OV7670_PCLK=39。139。 THEN IF PRE_FVAL=39。139。 AND IVSYNC=39。039。 THEN IF FRAME_CONT111 THEN FRAME_CONT=FRAME_CONT+39。139。 TFT_OUT_EN=39。039。 ELSE TFT_OUT_EN=39。139。 END IF。 END IF。 END IF。END PROCESS。END BEHAV。附錄 2RGB565轉(zhuǎn)換為BMP,只能轉(zhuǎn)換320*240大小圖片,轉(zhuǎn)化為24位圖void RGB565_TO_BMP(alt_u16 RGB565[240][320],alt_u8 *BMP){ //BMP信息頭 alt_u8 HEADER[] = { 66,77,54,132,3,0,0,0,0,0,54,0,0,0,40,0, 0,0,64,1,0,0,240,0,0,0,1,0,24,0,0,0, 0,0,0,132,3,0,35,46,0,0,35,46,0,0,0,0, 0,0,0,0,0,0 }。 alt_u32 i = 0。 alt_u8 RED,BLUE,GREEN。 alt_u16 COLOR。 //BMP信息頭定義 for (i = 0。i 0x36。i++) { *BMP++ = *(HEADER + i)。 } //色彩寫入 for (i = 0。i 76800。i++) { COLOR = *(*(RGB565 + i / 320) + i % 320)。 RED = ((COLOR 8)) amp。 0xF8 + 3。 BLUE = ((COLOR 3) amp。 0xFC) + 1。 GREEN = ((COLOR 3) amp。 0xF8) + 3。 *BMP++ = BLUE。 *BMP++ = GREEN。 *BMP++ = RED。 }}致謝感謝河南理工大學(xué)四年來對我的辛苦培育,讓我在大學(xué)這四年來學(xué)到很東西,特別感謝電氣學(xué)院為我提供了良好的學(xué)習(xí)環(huán)境、感謝領(lǐng)導(dǎo)、老師們四年來對我無微不至的關(guān)懷和指導(dǎo),讓我得以在這四年中學(xué)到很多有用的知識。在此,我還要感謝在班里同學(xué)和朋友,感謝你們在我遇到困難的時候幫助我,給我支持和鼓勵,感謝你們。 特別感謝我的指導(dǎo)老師李偉偉,在本系統(tǒng)開發(fā)中給予我悉心指導(dǎo),從系統(tǒng)開發(fā)到結(jié)束過程中遇到很多困難都是他給我鼓勵與指引,使我能夠克服重重困難,將系統(tǒng)做完成,在此謹(jǐn)向李老師致以誠摯的謝意和崇高的敬意。謝謝! \