娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年10月28日(星期一)

正在發(fā)生

2020年10月28日 | STM32學習筆記——TFT2.4彩屏顯示圖片

發(fā)布者:shengju 來源: eefocus關(guān)鍵字:STM32  TFT2  4彩屏  顯示圖片 手機看文章 掃描二維碼
隨時隨地手機看文章

利用彩屏顯示圖片需要先完成彩屏的驅(qū)動程序,然后在驅(qū)動程序的基礎(chǔ)上再編寫應用程序。


彩屏的驅(qū)動程序如果寫好的話,就可以一直使用了,精力主要集中在應用程序的編寫就可以了,但是移植的話,要移植驅(qū)動程序。其實移植也只是改變那些很底層的靠近處理器的那部分代碼


因為STM32F103C8的片上只有64K的FLASH,所以不能存儲太多的圖片數(shù)據(jù),也就不能顯示太大的圖片。


一下的程序注釋的比較詳細,看懂了基本上就可以用了。


彩屏驅(qū)動程序的頭文件lcd.h如下:


#define uchar unsigned char 


#define uint unsigned int


#define Bus_16        //16位數(shù)據(jù)模式,如果使用8位模式,請注釋此語句,如果使用16位模式,請打開此句


#define  LCD_DataPortH P1     //高8位數(shù)據(jù)口,8位模式下只使用高8位 


#define  LCD_DataPortL P0     //低8位數(shù)據(jù)口 ,8位模式下低8位可以不接線


#define LCD_WR    GPIO_Pin_2  //WR  引腳定義 P2^5


#define LCD_RS    GPIO_Pin_1  //RS  引腳定義 P2^6


#define LCD_CS    GPIO_Pin_0  //CS  引腳定義 P2^7


#define LCD_RST   GPIO_Pin_11     //RST 引腳定義 P3^3


#define LCD_RD    GPIO_Pin_8  //RD  引腳定義 P3^2


#define  LCD_SIZE_X 240


#define  LCD_SIZE_Y 320


extern  uint colors[];


extern  void  pic_play(uint xStart, uint xEnd, uint yStart, uint yEnd); //顯示圖片函數(shù)


void delayms(int count) ;


//void LCD_Writ_Bus(char VH,char VL);


void LCD_Init(void);


void LCD_Writ_Bus( uint VH, uint VL);


void LCD_Write_COM(char VH,char VL);


void LCD_Write_DATA(char VH,char VL);


void Pant(char VH,char VL);


void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2);


驅(qū)動程序lcd.c文件如下:


#include "stm32f10x_lib.h"


#include "Lcd.h"


//存儲圖片數(shù)據(jù)的頭文件


//#include "picture.h"


#include "picture_sara.h"


#include "xiaoqian.h"


#include "yang.h"


#define    LCD_rest(x) x ? GPIO_SetBits(GPIOA, LCD_RST):   GPIO_ResetBits(GPIOA, LCD_RST) //自己定義位操作函數(shù)


#define    LCD_rd(x)   x ? GPIO_SetBits(GPIOA, LCD_RD) :   GPIO_ResetBits(GPIOA, LCD_RD)


#define    LCD_rs(x)   x ? GPIO_SetBits(GPIOB, LCD_RS) :   GPIO_ResetBits(GPIOB, LCD_RS)


#define    LCD_wr(x)   x ? GPIO_SetBits(GPIOB, LCD_WR) :   GPIO_ResetBits(GPIOB, LCD_WR)


#define    LCD_cs(x)   x ? GPIO_SetBits(GPIOB, LCD_CS) :   GPIO_ResetBits(GPIOB, LCD_CS)


uint colors[]=


{


  0xf800,0x07e0,0x001f,0xffe0,0x0000,0x07ff,0xf81f,0xffff  //顏色數(shù)據(jù)


};


void LCD_Init(void) //初始化LCD


{

    LCD_rest(1);


    delayms(5);


LCD_rest(0);


delayms(5);


LCD_rest(1);


delayms(5);


 


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


//


LCD_Write_COM(0x00,0xE5); LCD_Write_DATA(0x78,0xF0); // set SRAM internal timing


LCD_Write_COM(0x00,0x01); LCD_Write_DATA(0x01,0x00); // set SS and SM bit


LCD_Write_COM(0x00,0x02); LCD_Write_DATA(0x07,0x00); // set 1 line inversion


LCD_Write_COM(0x00,0x03); LCD_Write_DATA(0x10,0x30); // set GRAM write direction and BGR=1.


LCD_Write_COM(0x00,0x04); LCD_Write_DATA(0x00,0x00); // Resize register


LCD_Write_COM(0x00,0x08); LCD_Write_DATA(0x02,0x07); // set the back porch and front porch


LCD_Write_COM(0x00,0x09); LCD_Write_DATA(0x00,0x00); // set non-display area refresh cycle ISC[3:0]


LCD_Write_COM(0x00,0x0A); LCD_Write_DATA(0x00,0x00); // FMARK function


LCD_Write_COM(0x00,0x0C); LCD_Write_DATA(0x00,0x00); // RGB interface setting


LCD_Write_COM(0x00,0x0D); LCD_Write_DATA(0x00,0x00); // Frame marker Position


LCD_Write_COM(0x00,0x0F); LCD_Write_DATA(0x00,0x00); // RGB interface polarity


//


LCD_Write_COM(0x00,0x10); LCD_Write_DATA(0x00,0x00); // SAP, BT[3:0], AP, DSTB, SLP, STB


LCD_Write_COM(0x00,0x11); LCD_Write_DATA(0x00,0x07); // DC1[2:0], DC0[2:0], VC[2:0]


LCD_Write_COM(0x00,0x12); LCD_Write_DATA(0x00,0x00); // VREG1OUT voltage


LCD_Write_COM(0x00,0x13); LCD_Write_DATA(0x00,0x00); // VDV[4:0] for VCOM amplitude


LCD_Write_COM(0x00,0x07); LCD_Write_DATA(0x00,0x01);


delayms(50); // Dis-charge capacitor power voltage


LCD_Write_COM(0x00,0x10); LCD_Write_DATA(0x10,0x90); // 1490//SAP, BT[3:0], AP, DSTB, SLP, STB


LCD_Write_COM(0x00,0x11); LCD_Write_DATA(0x02,0x27); // DC1[2:0], DC0[2:0], VC[2:0]


delayms(50); // Delay 50ms


LCD_Write_COM(0x00,0x12); LCD_Write_DATA(0x00,0x1F); //001C// Internal reference voltage= Vci;


delayms(50); // Delay 50ms


LCD_Write_COM(0x00,0x13); LCD_Write_DATA(0x15,0x00); //0x1000//1400   Set VDV[4:0] for VCOM amplitude  1A00


LCD_Write_COM(0x00,0x29); LCD_Write_DATA(0x00,0x27); //0x0012 //001a  Set VCM[5:0] for VCOMH  //0x0025  0034


LCD_Write_COM(0x00,0x2B); LCD_Write_DATA(0x00,0x0D); // Set Frame Rate   000C


delayms(50); // Delay 50ms


LCD_Write_COM(0x00,0x20); LCD_Write_DATA(0x00,0x00); // GRAM horizontal Address


LCD_Write_COM(0x00,0x21); LCD_Write_DATA(0x00,0x00); // GRAM Vertical Address


// ----------- Adjust the Gamma Curve ----------//


LCD_Write_COM(0x00,0x30); LCD_Write_DATA(0x00,0x00);


LCD_Write_COM(0x00,0x31); LCD_Write_DATA(0x07,0x07);


LCD_Write_COM(0x00,0x32); LCD_Write_DATA(0x03,0x07);


LCD_Write_COM(0x00,0x35); LCD_Write_DATA(0x02,0x00);


LCD_Write_COM(0x00,0x36); LCD_Write_DATA(0x00,0x08);//0207


LCD_Write_COM(0x00,0x37); LCD_Write_DATA(0x00,0x04);//0306


LCD_Write_COM(0x00,0x38); LCD_Write_DATA(0x00,0x00);//0102


LCD_Write_COM(0x00,0x39); LCD_Write_DATA(0x07,0x07);//0707


LCD_Write_COM(0x00,0x3C); LCD_Write_DATA(0x00,0x02);//0702


LCD_Write_COM(0x00,0x3D); LCD_Write_DATA(0x1D,0x04);//1604


//------------------ Set GRAM area ---------------//


LCD_Write_COM(0x00,0x50); LCD_Write_DATA(0x00,0x00); // Horizontal GRAM Start Address


LCD_Write_COM(0x00,0x51); LCD_Write_DATA(0x00,0xEF); // Horizontal GRAM End Address


LCD_Write_COM(0x00,0x52); LCD_Write_DATA(0x00,0x00); // Vertical GRAM Start Address


LCD_Write_COM(0x00,0x53); LCD_Write_DATA(0x01,0x3F); // Vertical GRAM Start Address


LCD_Write_COM(0x00,0x60); LCD_Write_DATA(0xA7,0x00); // Gate Scan Line


LCD_Write_COM(0x00,0x61); LCD_Write_DATA(0x00,0x01); // NDL,VLE, REV


LCD_Write_COM(0x00,0x6A); LCD_Write_DATA(0x00,0x00); // set scrolling line


//-------------- Partial Display Control ---------//


LCD_Write_COM(0x00,0x80); LCD_Write_DATA(0x00,0x00);


LCD_Write_COM(0x00,0x81); LCD_Write_DATA(0x00,0x00);


LCD_Write_COM(0x00,0x82); LCD_Write_DATA(0x00,0x00);


LCD_Write_COM(0x00,0x83); LCD_Write_DATA(0x00,0x00);


LCD_Write_COM(0x00,0x84); LCD_Write_DATA(0x00,0x00);


LCD_Write_COM(0x00,0x85); LCD_Write_DATA(0x00,0x00);


//-------------- Panel Control -------------------//


LCD_Write_COM(0x00,0x90); LCD_Write_DATA(0x00,0x10);


LCD_Write_COM(0x00,0x92); LCD_Write_DATA(0x06,0x00);


LCD_Write_COM(0x00,0x07); LCD_Write_DATA(0x01,0x33); // 262K color and display ON


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



void delayms(int count)  // 


{


        int i,j;


        for(i=0;i

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


}


#ifdef  Bus_16    //條件編譯-16位數(shù)據(jù)模式   


void LCD_Writ_Bus(uint VH , uint VL)   //并行數(shù)據(jù)寫入函數(shù)


{


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


//屏蔽高8位  將數(shù)據(jù)送到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位  將數(shù)據(jù)送到PB8-PB15


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


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


LCD_wr(0);


LCD_wr(1);


}


#else //條件編譯-8位數(shù)據(jù)模式 


void LCD_Writ_Bus(char VH,char VL)   //并行數(shù)據(jù)寫入函數(shù)


{


     //LCD_DataPortH=VH;  //八位模式都用P0口送數(shù)據(jù)


     //LCD_wr(0);


//LCD_wr(1);


//LCD_DataPortH=VL; //八位模式都用P0口送數(shù)據(jù)


//LCD_wr(0);


//LCD_wr(1);


}


#endif


void LCD_Write_COM(char VH,char VL)  //發(fā)送命令


{


    LCD_rs(0);


LCD_Writ_Bus(VH,VL);


}


void LCD_Write_DATA(char VH,char VL) //發(fā)送數(shù)據(jù)


{


    LCD_rs(1);


LCD_Writ_Bus(VH,VL);


}


void Pant(char VH,char VL)    //涂滿全屏函數(shù)


{


int i,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);  //關(guān)閉片選使能


}


void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2) //設(shè)置地址范圍函數(shù)


{


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


    LCD_Write_COM(0x00,0x21);LCD_Write_DATA(y1>>8,y1);   //設(shè)置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);   //結(jié)束X


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


    LCD_Write_COM(0x00,0x22);  


}


void  pic_play(uint Start_X, uint End_X,uint Start_Y,uint End_Y)


{


   uint m;


   //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);   //關(guān)閉片選


   //循環(huán)把圖片的所有數(shù)據(jù)依次寫入


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


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


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


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


   //整幅圖都顯示出來。如果這個數(shù)比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);  //關(guān)閉片選


 


}


主程序main.c


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


#include "stm32f10x_lib.h"


#include "lcd.h"


GPIO_InitTypeDef GPIO_InitStructure;   //定義GPIO初始化的結(jié)構(gòu)體變量

[1] [2]
關(guān)鍵字:STM32  TFT2  4彩屏  顯示圖片 引用地址:STM32學習筆記——TFT2.4彩屏顯示圖片

上一篇:STM32F10x芯片GPIO/AFIO端口配置總結(jié)
下一篇:STM32實現(xiàn)DAC輸出的相關(guān)設(shè)置

推薦閱讀

智能手機中最不安全的因素,恐怕就是鋰電池了,即便它已經(jīng)商用這么多年,但依然能不說是100%的安全。據(jù)韓國媒體報道稱,三星已經(jīng)打算商用石墨烯電池了,并且極有可能是在Galaxy Note 10上首發(fā),當然了這還只是猜測,因為這個技術(shù)商用中需要克服的問題太多,而且有加上是電池,所以廠商也是慎之又慎。? ? ? ? 三星之前曾展示過自己的石墨烯電池,...
現(xiàn)有一個小需求,使用STM32F1系列單片機做串口2的收發(fā)數(shù)據(jù)的功能,通過PC上的串口調(diào)試助手給單片機發(fā)一串數(shù)據(jù),單片機收到數(shù)據(jù)后再給PC的串口調(diào)試助手發(fā)回去。看似簡單的功能,調(diào)試了好久才調(diào)好,記錄一下供大家參考。STM32使用USART2,對應單片機的PA1控制方向,PA2發(fā)送,PA3接收。代碼如下:z_hardware_usart2.h#ifndef __STM32F10X_H#define __STM32F...
單片機源程序:#include <reg52.h>#define u8 unsigned charunsigned char seg_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};unsigned char run,floor;bit ud,stop=0;sbit P06=P0^6;sbit P07=P0^7;sbit ulc=P2^0;sbit dlc=P2^1;sbit start=P2^2; ...
STM32F103系列的定時器:定時器功能:定時、輸入比較、輸出捕獲、互補輸出;定時器分類:基本定時器、通用定時器、高級定時器;定時器資源:高級定時器(2個)TIM1 和 TIM8;通用定時器(4個)TIM2 / 3 / 4 / 5;基本定時器(2個)TIM6 和 TIM7;定時器功能表:基本定時器功能簡介:計數(shù)器16bit,只能向上計數(shù),只有TIM6和TIM7;沒有外部的GPIO...

史海拾趣

問答坊 | AI 解惑

在Linux終端下不常用但很有用的查詢命令

一、查看系統(tǒng)版本信息的命令   幾種查看Linux版本信息的方法:   1. uname -a   2. cat /proc/version   3. cat /etc/issue   4. lsb_release -a   詳解 lsb_release -a   登錄到服務器執(zhí)行 lsb_release -a ,即可列出 ...…

查看全部問答∨

請教個大家FFT 算法的問題

有一段連續(xù)的模擬信號從AD輸入,我用單片機采樣256個數(shù)據(jù)做FFT變換, 有幾個問題不明白請執(zhí)教: 1。 假如這256個數(shù)據(jù)做完FFT,是不是又要重新采集新的256個數(shù)據(jù)才能做FFT,  還是只要再采集一個數(shù)據(jù),然后跟前面的255個數(shù)據(jù)組成一段數(shù)據(jù)來 ...…

查看全部問答∨

儀表放大器及應用

詳細介紹了儀表放大器及應用,難得資料哦…

查看全部問答∨

WINCE中如何調(diào)節(jié)顯示字體的大小和顏色

我用的2440的串口調(diào)試助手的程序,想讓輸入和顯示的字體變大并且變?yōu)榧t色,如何做到啊。…

查看全部問答∨

請問越南語的UNICODE編碼在哪可以查到啊

請問越南語的UNICODE編碼在哪可以查到啊…

查看全部問答∨

lcd液晶顯示 端口設(shè)置問題

我是用的1602lcd液晶顯示器,想用mega16單片機的porta端口輸出,不知道該怎樣設(shè)置, DB4~DB9  -------PA4~PA7 RS       -------PA3 EN       -------PA2 請高手幫助。…

查看全部問答∨

VS2005 開發(fā)WINCE 5.0程序PictureBox加載圖片時異常

VS2005 開發(fā)WINCE 5.0程序PictureBox加載圖片時異常…

查看全部問答∨

用c#寫的關(guān)于udp協(xié)議的通信,在wince下邊有影響嗎??

現(xiàn)在還沒有開始寫,先打聽清楚下,這個能行嗎?…

查看全部問答∨

如何編寫driver 的SDK,提供客戶使用 ?

各位大蝦,我現(xiàn)在有一個driver的source code,這個driver有提供IIC 和GPIO,我要根據(jù)這個Driver source code編寫一個SDK(比如寫成COM組件或者一個DLL),提供客戶使用,通過這個SDK,客戶可以通調(diào)用其中的IIC interface 或者GPIO的interface來控制 ...…

查看全部問答∨

關(guān)于調(diào)試時的一個低功耗問題

寫低功耗測試程序時,遇到下面的問題,不得其解。希望有高手解答。 截圖是程序調(diào)試時的圖 我在進入低功耗模式后的語句加上斷點,然后全速運行,程序是不會到達斷點處的。 但是我一按暫停運行按鈕,就會運行到斷點處,然后執(zhí)行。請問這是什么原因 ...…

查看全部問答∨
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 延吉市| 南郑县| 克拉玛依市| 涡阳县| 兴业县| 班玛县| 富民县| 凤台县| 剑阁县| 岢岚县| 武胜县| 彰化县| 名山县| 噶尔县| 邮箱| 百色市| 洛川县| 松桃| 朝阳区| 东丽区| 山东省| 河北区| 福海县| 峨山| 阿合奇县| 肃北| 施甸县| 白银市| 深州市| 库伦旗| 靖宇县| 乌拉特后旗| 获嘉县| 扬州市| 嵊泗县| 荣成市| 溧阳市| 社会| 平安县| 青川县| 新泰市|