亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tft018.c

?? STM32(Cortex-m3)GPIO MDK 3.4例程
?? C
字號:
/*

                         \\\|///
                       \\  - -  //
                        (  @ @  )
+---------------------oOOo-(_)-oOOo-------------------------+
|                 智林STM32開發板試驗程序                   |
|                   1.8‘ TFT LCD Driver                     |
|                 劉笑然 by Xiaoran Liu                     |
|                        2008.4.16                          |
|                                                           |
|           智林測控技術研究所 ZERO research group          |
|                      www.the0.net                         |
|                             Oooo                          |
+-----------------------oooO--(   )-------------------------+
                       (   )   ) /
                        \ (   (_/
                         \_)     

*/
/*----------------------------------------------------------*\
 |  引入相關芯片的頭文件                                    |
\*----------------------------------------------------------*/
#include <stm32f10x_lib.h>    // STM32F10x Library Definitions
#include "MyType.h"
#include "TFT018.h"
/*----------------------------------------------------------*\
 | HARDWARE DEFINITIONS                                     |
\*----------------------------------------------------------*/
/* PINS: 
   - DB0 = PC0
   - DB1 = PC1
   - DB2 = PC2
   - DB3 = PC3
   - DB4 = PC4
   - DB5 = PC5
   - DB6 = PC6
   - DB7 = PC7
   - RD  = PC8
   - RW  = PC9
   - RS  = PC10
   - RST = PC11
   - CS  = PC12                                             */

#define PIN_CS               (   1 << 12)
#define PIN_RST              (   1 << 11)
#define PIN_RS               (   1 << 10)
#define PIN_RW               (   1 <<  9)
#define PIN_RD               (   1 <<  8)
#define PINS_CTRL            (0x1F <<  8)
#define PINS_DATA            (0xFF <<  0)
#define PINS_ALL             (PINS_CTRL | PINS_DATA)

/* Enable Clock for peripheral driving LCD pins                               */
#define LCD_CLOCK_EN         (RCC->APB2ENR |= (1 << 4)); // enable clock for GPIOC

/* pin CS  setting to 0 or 1                                                  */
#define LCD_CS(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_CS) | (x ? PIN_CS : 0);
/* pin RST setting to 0 or 1                                                   */
#define LCD_RST(x)            GPIOC->ODR = (GPIOC->ODR & ~PIN_RST) | (x ? PIN_RST : 0);
/* pin RS setting to 0 or 1                                                   */
#define LCD_RS(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_RS) | (x ? PIN_RS : 0);
/* pin RW setting to 0 or 1                                                   */
#define LCD_RW(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_RW) | (x ? PIN_RW : 0);
/* pin RD setting to 0 or 1                                                   */
#define LCD_RD(x)             GPIOC->ODR = (GPIOC->ODR & ~PIN_RD) | (x ? PIN_RD : 0);

/* Reading DATA pins                                                          */
#define LCD_DATA_IN           (((GPIOC->IDR & PINS_DATA) >> 0) & 0xFF)
/* Writing value to DATA pins                                                 */
#define LCD_DATA_OUT(x)       GPIOC->ODR = (GPIOC->ODR & ~PINS_DATA) | (x << 0);

/* Setting all pins to output mode                                            */
#define LCD_ALL_DIR_OUT       GPIOC->CRL = (GPIOC->CRL & 0x00000000) | 0x33333333; \
                              GPIOC->CRH = (GPIOC->CRH & 0xFFF00000) | 0x00033333;
 
/* Setting DATA pins to input mode                                            */
#define LCD_DATA_DIR_IN       GPIOC->CRL = (GPIOC->CRL & 0x00000000) | 0x44444444;

/* Setting DATA pins to output mode                                           */
#define LCD_DATA_DIR_OUT      GPIOC->CRL = (GPIOC->CRL & 0x00000000) | 0x33333333;

/*----------------------------------------------------------*\
 | SOFTWARE DEFINITIONS                                     |
\*----------------------------------------------------------*/
/*------------------------- Speed dependant settings -------------------------*/

/* If processor works on high frequency delay has to be increased, it can be 
   increased by factor 2^N by this constant                                   */
#define DELAY_2N     0

volatile U8 Font=0;

/*----------------------------------------------------------*\
 | Delay in while loop cycles                               |
 | cnt:    number of while cycles to delay                  |
\*----------------------------------------------------------*/
static void delay (int cnt) {
  cnt <<= DELAY_2N;

  while (cnt--);
  }
/*----------------------------------------------------------*\
 | LOW LEVEL OPERATE : BUS simulate                         |
\*----------------------------------------------------------*/
void LCD_Bus_Initial( void ) {
  LCD_CLOCK_EN                          /* Enable clock for peripheral        */

  /* Set all pins for LCD as outputs                                          */
  LCD_ALL_DIR_OUT

  LCD_RST(0);
  delay( 15000 );
  LCD_CS(1);
  LCD_RW(1);
  LCD_RD(1);
  LCD_RS(1);
  LCD_RST(1);
  }
void LCD_Bus_Write_Byte( unsigned char Data ) {
  LCD_DATA_OUT( Data );
  LCD_RW(0);
  delay( 1 );
  LCD_RW(1);
  }
void LCD_Bus_Write_Data( unsigned short Data ) {
  LCD_Bus_Write_Byte( Data>>8 );
  LCD_Bus_Write_Byte( Data );
  }
unsigned int LCD_Bus_Read_Byte( void ) {
  unsigned int BusData;

  LCD_DATA_DIR_IN;
  LCD_RD(0);
  BusData = LCD_DATA_IN;
  delay( 1 );
  LCD_RD(1);

  return BusData>>8;
  }
void LCD_Inst(unsigned int Cmd) {
  LCD_CS(0);
  LCD_RD(1);
  LCD_RS(0);
  LCD_Bus_Write_Byte( Cmd );
  LCD_CS(1);
  }
void LCD_Data(unsigned int Data) {
  LCD_CS(0);
  LCD_RD(1);
  LCD_RS(1);
  LCD_Bus_Write_Byte( Data );
  LCD_CS(1);
  }
void LCD_Reg_Set(unsigned int Cmd,unsigned int Data) {
  LCD_CS(0);
  LCD_RD(1);
  LCD_RS(0);
  LCD_Bus_Write_Byte( Cmd );
  LCD_RS(1);
  LCD_Bus_Write_Byte( Data );
  LCD_CS(1);
  }
/*----------------------------------------------------------*\
 | HIGHLEVEL OPERATION                                      |
\*----------------------------------------------------------*/
void LCD_Init( void ) {
	LCD_Bus_Initial();

	LCD_Inst(0x11);	// sleep out/power on(SLPOUT)
	delay( 1500 );
	LCD_Inst(0x20);	// display inversion off
	LCD_Inst(0x38);	// ID mode off (IDMOFF)
	LCD_Inst(0x13);	// Normal display mode on (Partial mode off)
	// color mode Interface pixel format  (COLMOD)
	LCD_Reg_Set(0x3A,0x05);	// 16-bit/pixel , 1-times data transfer
	LCD_Reg_Set(0xC0,0x03);	// power control 1      (PWCTR1) , GVDD voltage set 4.65
	LCD_Reg_Set(0xC1,0x05);	// VCOMH voltage set 4.10V
	delay( 1500 );
	LCD_Reg_Set(0xC5,0xBA);	// VCOMAC voltage set 4.35V
	LCD_Reg_Set(0xC6,0x10);	// VCOMAC voltage set 4.35V
	delay( 1500 );
	// Gamma voltage adjustalbe level
	//Gamma + Polarity correction characteristics set
	LCD_Inst(0xE0);
	LCD_Data(0x01);
	LCD_Data(0x0A);
	LCD_Data(0x11);
	LCD_Data(0x23);
	LCD_Data(0x20);
	LCD_Data(0x01);
	LCD_Data(0x1E);
	LCD_Data(0x02);
	LCD_Data(0x06);
	LCD_Data(0x05);
	LCD_Data(0x0E);
	LCD_Data(0x0D);
	LCD_Data(0x01);
	LCD_Data(0x05);
	LCD_Data(0x03);
	LCD_Data(0x06);
	//Gamma + Polarity correction characteristics set
	LCD_Inst(0xE1);
	LCD_Data(0x01);
	LCD_Data(0x20);
	LCD_Data(0x23);
	LCD_Data(0x11);
	LCD_Data(0x0A);
	LCD_Data(0x01);
	LCD_Data(0x02);
	LCD_Data(0x1E);
	LCD_Data(0x06);
	LCD_Data(0x03);
	LCD_Data(0x05);
	LCD_Data(0x01);
	LCD_Data(0x0D);
	LCD_Data(0x0E);
	LCD_Data(0x05);
	LCD_Data(0x06);
	// memory data access control  (MADCTR)
	LCD_Reg_Set(0x36,0xA0);	// MY=1; MX=0; MV=0; ML=0; RGB=0
	LCD_Inst(0x37);
	LCD_Data(0x00);
	LCD_Data(0x00);
	// display on
	LCD_Inst(0x29);
	}
void LCD_SetArea( U8 x0, U8 y0, U8 x1, U8 y1 ) {

	LCD_Inst(0x2A);
	LCD_Data(0x00);
	LCD_Data(x0+1);
	LCD_Data(0x00);
	LCD_Data(x1+1);

	LCD_Inst(0x2B);
	LCD_Data(0x00);
	LCD_Data(y0+1);
	LCD_Data(0x00);
	LCD_Data(y1+1);
	}
void LCD_Rectangle( unsigned short x0, unsigned short y0, unsigned short x1, unsigned short y1, unsigned int Data ) {
	int x,y;

	LCD_SetArea(x0,y0,x1,y1);

	LCD_Inst(0x2C);

	LCD_CS(0);
	LCD_RD(1);

	LCD_RS(1);
	for(x=0;x<=x1-x0;x++)
		for(y=0;y<=y1-y0;y++) {
			LCD_Bus_Write_Byte( Data>>8 );
			LCD_Bus_Write_Byte( Data );
			}

	LCD_CS(1);
	}
void LCD_Clear_Screen( unsigned int Data ) {
	LCD_Rectangle(0,0,159,128, Data );
	}
void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color) {
	LCD_SetArea(x,y,x,y);
	LCD_Inst(0x2C);

	LCD_CS(0);
	LCD_RD(1);
	LCD_RS(1);
	LCD_Bus_Write_Byte( color>>8 );
	LCD_Bus_Write_Byte( color );
	LCD_CS(1);
	}
#include "8X16.h"

void LCD_PutChar8x16(unsigned short x, unsigned short y, char c, unsigned int f, unsigned int b) {
	register unsigned int i,j;

	LCD_SetArea(x,y,x+8-1,y+16-1);
	LCD_Inst(0x2C);

	LCD_CS(0);
	LCD_RD(1);
	LCD_RS(1);

	for(i=0; i<16;i++) {
		unsigned char m=Font8x16[c*16+i];
		for(j=0;j<8;j++) {
			if((m&0x80)==0x80) {
				LCD_Bus_Write_Byte(f>>8);
				LCD_Bus_Write_Byte(f);
				}
			else {
				LCD_Bus_Write_Byte(b>>8);
				LCD_Bus_Write_Byte(b);
				}
			m<<=1;
			}
		}

	LCD_CS(1);
	}
#include "8X8h.h"

void LCD_PutChar8x8(unsigned short x, unsigned short y, char c, unsigned int f, unsigned int b) {
	register unsigned int i,j;

	LCD_SetArea(x,y,x+8-1,y+8-1);
	LCD_Inst(0x2C);

	LCD_CS(0);
	LCD_RD(1);
	LCD_RS(1);

	for(i=0; i<8;i++) {
		unsigned char m=Font8x8[c][i];
		for(j=0;j<8;j++) {
			if((m&0x80)==0x80) {
				LCD_Bus_Write_Byte(f>>8);
				LCD_Bus_Write_Byte(f);
				}
			else {
				LCD_Bus_Write_Byte(b>>8);
				LCD_Bus_Write_Byte(b);
				}
			m<<=1;
			}
		}

	LCD_CS(1);
	}

#include "GB1616.h"	//16*16漢字字模
void PutGB1616(unsigned short x, unsigned short  y, unsigned char c[2], unsigned int f,unsigned int b){
	unsigned int i,j,k;

	LCD_SetArea(x, y, x+16-1, y+16-1);
	LCD_Inst(0x2C);

	LCD_CS(0);
	LCD_RD(1);
	LCD_RS(1);

	for (k=0;k<22;k++) {
	  if ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])){ 
    	for(i=0;i<32;i++) {
		  unsigned short m=codeGB_16[k].Msk[i];
		  for(j=0;j<8;j++) {
			if((m&0x80)==0x80) {
				LCD_Bus_Write_Byte(f>>8);
				LCD_Bus_Write_Byte(f);
				}
			else {
				LCD_Bus_Write_Byte(b>>8);
				LCD_Bus_Write_Byte(b);
				}
			m<<=1;
			} 
		  }
		}  
	  }	

	LCD_CS(1);
	}

void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int f, unsigned int b) {
	if( Font )
		LCD_PutChar8x8( x, y, c, f, b );
	else
		LCD_PutChar8x16( x, y, c, f, b );
	}

void LCD_PutString(unsigned short x, unsigned short y, char *s, unsigned int f, unsigned int b) {
	register unsigned char l=0;
	while(*s) {
		if( *s < 0x80 ) {
			LCD_PutChar(x+l*8,y,*s,f,b);
			s++;l++;
			}
		else {
			PutGB1616(x+l*8,y,(unsigned char *)s,f,b);
			s+=2;l+=2;
			}
		}
	}

void LCD_BMP( U8 x0, U8 y0, U8 x1, U8 y1 , U8 * Bmp ) {
	S16 i,j;

	LCD_SetArea(x0,y0,x1,y1);
	LCD_Inst(0x2C);

	LCD_CS(0);
	LCD_RD(1);
	LCD_RS(1);

	for( i = y1 - y0; i >= 0; i-- )
		for( j = 0; j <= x1 - x0; j++ ) {
			U16* PixP =  (U16*)(Bmp+0x46+i*(x1-x0+1)*2);
			U16 Pix = *(PixP+j);
			LCD_Bus_Write_Byte(Pix>>8);
			LCD_Bus_Write_Byte(Pix);
			}

	LCD_CS(1);
	}

/*----------------------------------------------------------*\
 | END OF FILE                                              |
\*----------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产精品视频| 欧美久久久久久久久| 欧美色手机在线观看| 精品久久久久久久久久久院品网 | 欧美午夜精品一区二区蜜桃| 日韩欧美中文字幕一区| 亚洲欧美日韩国产另类专区| 久久99久久99精品免视看婷婷| 99久久伊人精品| 久久这里都是精品| 日本成人在线网站| 欧美图片一区二区三区| 中文无字幕一区二区三区| 国产风韵犹存在线视精品| 欧美日韩在线播放| 中文字幕一区二区三区蜜月| 精品一区免费av| 欧美一区二区三区男人的天堂| 亚洲女性喷水在线观看一区| 国产精品一二三四| 日韩欧美国产不卡| 日韩激情一区二区| 欧美无人高清视频在线观看| 亚洲美女视频在线观看| 成人少妇影院yyyy| 国产精品私人影院| 国产不卡高清在线观看视频| 久久亚洲一区二区三区明星换脸 | 国产精品资源网站| 久久这里只有精品视频网| 麻豆91精品视频| 日韩一区二区免费在线观看| 视频一区二区国产| 日韩一区二区中文字幕| 三级久久三级久久| 日韩欧美激情一区| 国产一区二区三区免费在线观看| 日韩精品最新网址| 久久成人免费日本黄色| 精品国产区一区| 国产黄色91视频| 国产精品拍天天在线| 成人免费视频视频在线观看免费| 国产精品另类一区| 日本乱码高清不卡字幕| 亚洲成人你懂的| 日韩美一区二区三区| 国产一区二区视频在线| 中文字幕乱码日本亚洲一区二区| 日韩欧美中文一区二区| 久久国产综合精品| 久久精品欧美一区二区三区不卡| 国产精品99久久久久久似苏梦涵| 中文字幕欧美日本乱码一线二线 | 欧美日韩视频在线一区二区| 婷婷亚洲久悠悠色悠在线播放| 91精品国产综合久久精品图片| 蜜臀av亚洲一区中文字幕| 久久久久久久久久久电影| 99在线精品观看| 首页国产欧美日韩丝袜| 久久影院视频免费| 成人免费观看男女羞羞视频| 又紧又大又爽精品一区二区| 欧美一区二区三区在线| 国产经典欧美精品| 一区二区三区欧美日| 欧美成人一区二区| 91免费国产在线观看| 日韩黄色一级片| 中文字幕精品在线不卡| 欧美日韩中文字幕精品| 国产一区欧美日韩| 亚洲一区在线免费观看| 久久久久久久综合日本| 色综合久久天天| 极品少妇一区二区三区精品视频| 亚洲人成网站影音先锋播放| 日韩午夜在线播放| 99热这里都是精品| 毛片不卡一区二区| 一区二区成人在线视频| 久久蜜臀精品av| 亚洲国产精品av| 欧美美女一区二区| 成人免费视频一区| 美女国产一区二区三区| 一区二区三区四区不卡视频| 久久无码av三级| 在线不卡一区二区| 97久久超碰精品国产| 韩国欧美国产1区| 午夜婷婷国产麻豆精品| 亚洲欧洲日韩女同| 久久久久久麻豆| 精品久久人人做人人爽| 欧美日韩黄色影视| 91捆绑美女网站| 成人涩涩免费视频| 成人一区二区三区视频| 国产一区二区三区在线观看精品| 三级精品在线观看| 午夜精品福利一区二区蜜股av| 亚洲视频一区二区在线观看| 久久免费美女视频| 亚洲精品一区在线观看| 51精品秘密在线观看| 欧美色涩在线第一页| 色综合色综合色综合| av高清不卡在线| 成人免费视频视频在线观看免费| 国产精品资源在线看| 国产精品一区二区在线播放| 精品一区二区成人精品| 精品一区二区三区在线观看| 日韩福利电影在线| 天天操天天综合网| 日本不卡高清视频| 偷拍一区二区三区四区| 天天影视网天天综合色在线播放 | 美女久久久精品| 美女国产一区二区三区| 黄页视频在线91| 极品尤物av久久免费看| 国产一区二区女| 东方aⅴ免费观看久久av| 成人av免费在线观看| 北条麻妃一区二区三区| 一本一本久久a久久精品综合麻豆| 91色乱码一区二区三区| 欧美最新大片在线看| 欧美高清dvd| 久久色.com| 中文字幕制服丝袜成人av | 亚洲不卡在线观看| 日韩av一级电影| 国产一区二区视频在线播放| 丁香激情综合五月| 91麻豆视频网站| 欧美精品丝袜久久久中文字幕| 日韩精品影音先锋| 综合av第一页| aaa亚洲精品| 欧美酷刑日本凌虐凌虐| 26uuu成人网一区二区三区| 国产精品毛片a∨一区二区三区| 亚洲综合一区二区精品导航| 蜜臀99久久精品久久久久久软件| 国产大片一区二区| 欧美在线短视频| 久久午夜羞羞影院免费观看| 《视频一区视频二区| 亚洲va欧美va天堂v国产综合| 极品销魂美女一区二区三区| 99久久综合色| 欧美mv日韩mv| 一区二区三区产品免费精品久久75| 日韩精品色哟哟| av在线播放一区二区三区| 欧美电影一区二区三区| 国产亚洲午夜高清国产拍精品| 一区二区在线观看视频在线观看| 人人狠狠综合久久亚洲| 99精品一区二区三区| 日韩欧美专区在线| 亚洲黄色性网站| 成人av在线一区二区三区| 欧美日韩激情一区| 亚洲欧洲av另类| 精品在线视频一区| 欧美福利电影网| 亚洲免费资源在线播放| 国产乱理伦片在线观看夜一区| 欧美色男人天堂| 国产精品第五页| 国产很黄免费观看久久| 日韩欧美久久一区| 亚洲成人www| 色综合久久99| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 免费的国产精品| 欧美在线制服丝袜| 亚洲视频免费在线| 成人亚洲一区二区一| 2023国产精华国产精品| 亚洲成人在线观看视频| 日本精品视频一区二区| 国产精品亲子伦对白| 国产很黄免费观看久久| 久久久久久久久久久久久女国产乱| 日韩中文欧美在线| 91蜜桃在线观看| 国产麻豆欧美日韩一区| 日韩天堂在线观看| 三级在线观看一区二区| 欧美色综合影院| 天天综合色天天综合色h| 欧美片网站yy| 日韩福利电影在线观看| 日韩一卡二卡三卡四卡|