新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記——TFT2.4彩屏顯示圖片

        STM32學習筆記——TFT2.4彩屏顯示圖片

        作者: 時間:2016-11-28 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201611/322857.htm

        LCD_cs(1);//關閉片選使能

        }

        voiddelayms(intcount)//

        {

        inti,j;

        for(i=0;i

        for(j=0;j<100;j++);

        }

        #ifdefBus_16//條件編譯-16位數據模式

        voidLCD_Writ_Bus(uintVH,uintVL)//并行數據寫入函數

        {

        //LCD_DataPortH=VH;//高位P1口

        //屏蔽高8位將數據送到PA0-PA7

        GPIOA->BSRR=VH&0x00ff;

        GPIOA->BRR=(~VH)&0x00ff;

        //GPIO_SetBits(GPIOA,VH&0x00ff);

        //GPIO_ResetBits(GPIOA,(~VH&0x00ff));

        //LCD_DataPortL=VL;//低位P0口

        //屏蔽低8位將數據送到PB8-PB15

        GPIOB->BSRR=(VL)<<8&0xff00;

        GPIOB->BRR=((~VL)<<8)&0xff00;

        LCD_wr(0);

        LCD_wr(1);

        }

        #else//條件編譯-8位數據模式

        voidLCD_Writ_Bus(charVH,charVL)//并行數據寫入函數

        {

        //LCD_DataPortH=VH;//八位模式都用P0口送數據

        //LCD_wr(0);

        //LCD_wr(1);

        //LCD_DataPortH=VL;//八位模式都用P0口送數據

        //LCD_wr(0);

        //LCD_wr(1);

        }

        #endif

        voidLCD_Write_COM(charVH,charVL)//發送命令

        {

        LCD_rs(0);

        LCD_Writ_Bus(VH,VL);

        }

        voidLCD_Write_DATA(charVH,charVL)//發送數據

        {

        LCD_rs(1);

        LCD_Writ_Bus(VH,VL);

        }

        voidPant(charVH,charVL)//涂滿全屏函數

        {

        inti,j;

        LCD_cs(0);//打開片選使能

        Address_set(0,0,239,319);

        for(i=0;i<320;i++)

        {

        for(j=0;j<240;j++)

        {

        LCD_Write_DATA(VH,VL);

        }

        }

        LCD_cs(1);//關閉片選使能

        }

        voidAddress_set(unsignedintx1,unsignedinty1,unsignedintx2,unsignedinty2)//設置地址范圍函數

        {

        LCD_Write_COM(0x00,0x20);LCD_Write_DATA(x1>>8,x1);//設置X坐標位置

        LCD_Write_COM(0x00,0x21);LCD_Write_DATA(y1>>8,y1);//設置Y坐標位置

        LCD_Write_COM(0x00,0x50);LCD_Write_DATA(x1>>8,x1);//開始X

        LCD_Write_COM(0x00,0x52);LCD_Write_DATA(y1>>8,y1);//開始Y

        LCD_Write_COM(0x00,0x51);LCD_Write_DATA(x2>>8,x2);//結束X

        LCD_Write_COM(0x00,0x53);LCD_Write_DATA(y2>>8,y2);//結束Y

        LCD_Write_COM(0x00,0x22);

        }

        voidpic_play(uintStart_X,uintEnd_X,uintStart_Y,uintEnd_Y)

        {

        uintm;

        //LCD_CS=0;

        GPIO_ResetBits(GPIOB,LCD_CS);//打開片選

        Address_set(Start_X,Start_Y,End_X,End_Y);//指定圖片顯示的范圍

        //LCD_RS=1;

        GPIO_SetBits(GPIOB,LCD_RS);//關閉片選

        //循環把圖片的所有數據依次寫入

        Address_set(0,0,141,79);//用彩屏顯示圖片時,一定要注意圖片長寬比例,如果長寬比例不對的話,顯示的圖片就會變形

        //例如本幅圖片取模軟件輸出的長寬為(177,100),所以在這里圖片的顯示范圍必須設為(0,0,176,99),即x范圍為0~176,y的范圍為

        //0~99.這樣圖片才能正常顯示,否則圖片就會變形。

        for(m=0;m<22728/2;m++)//這里的35400這個數字指定顯示圖片的范圍,因為該圖的數據總共只有35400個,所以這里指定

        //整幅圖都顯示出來。如果這個數比35400小,則只顯示該圖的一部分。

        {

        LCD_Write_DATA(gImage_sara[m*2+1],gImage_sara[m*2]);

        }

        Address_set(0,90,65,189);//一定要注意保持比例

        for(m=0;m<13200/2;m++)

        {

        LCD_Write_DATA(gImage_xiaoqian[m*2+1],gImage_xiaoqian[m*2]);

        }

        Address_set(75,90,137,189);//一定要注意保持比例

        for(m=0;m<12600/2;m++)

        {

        LCD_Write_DATA(gImage_yang[m*2+1],gImage_yang[m*2]);

        }

        //LCD_CS=1;

        GPIO_SetBits(GPIOB,LCD_CS);//關閉片選

        }

        主程序main.c

        在主程序中完成對系統的初始化配置,利用彩屏的驅動程序完成圖片的顯示等功能,程序如下:

        #include"stm32f10x_lib.h"

        #include"lcd.h"

        GPIO_InitTypeDefGPIO_InitStructure;//定義GPIO初始化的結構體變量

        ErrorStatusHSEStartUpStatus;//定義錯誤狀態變量,為枚舉類型

        voidRCC_Configuration(void);

        voidNVIC_Configuration(void);

        voidDelay(vu32nCount);

        intmain(void)

        {

        #ifdefDEBUG

        debug();//在線調試使用

        #endif



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 余干县| 宝清县| 白山市| 海兴县| 恭城| 佛坪县| 孟津县| 贵定县| 辉县市| 阳春市| 吉木萨尔县| 昌乐县| 新余市| 杂多县| 阿克| 西盟| 华池县| 嘉荫县| 友谊县| 太仓市| 肇州县| 哈密市| 河间市| 广宁县| 兴宁市| 永和县| 临泽县| 江门市| 木里| 慈利县| 岫岩| 偃师市| 个旧市| 潍坊市| 乃东县| 禄丰县| 安新县| 聊城市| 民县| 合江县| 岚皋县|