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

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

?? test1.c

?? FL032-C0 240_320 TFT LCD的AVR驅動程序 開發AVR的LCD參考
?? C
字號:
#include<avr/io.h>
#include<util/delay.h>
#include"pic_temp.h"

#define NOP() asm("nop")

#define DATA_LO_DDR  DDRA
#define DATA_LO_PORT PORTA
#define DATA_LO_PIN  PINA

#define DATA_HI_DDR  DDRD
#define DATA_HI_PORT PORTD
#define DATA_HI_PIN  PIND

#define LCD_CS_DDR  DDRB
#define LCD_CS_PORT PORTB
#define LCD_CS_PIN  PINB
#define LCD_CS_BIT  0


#define LCD_RS_DDR  DDRB
#define LCD_RS_PORT PORTB
#define LCD_RS_PIN  PINB
#define LCD_RS_BIT  1


#define LCD_WR_DDR  DDRB
#define LCD_WR_PORT PORTB
#define LCD_WR_PIN  PINB
#define LCD_WR_BIT  2


#define LCD_RD_DDR  DDRB
#define LCD_RD_PORT PORTB
#define LCD_RD_PIN  PINB
#define LCD_RD_BIT  3

#define LCD_RST_DDR  DDRB
#define LCD_RST_PORT PORTB
#define LCD_RST_PIN  PINB
#define LCD_RST_BIT  4

#define DATA_INPUT() {\
						DATA_LO_DDR = 0x00;\
						DATA_HI_DDR = 0x00;\
						}
#define DATA_OUTPUT() {\
						DATA_LO_DDR = 0xff;\
						DATA_HI_DDR = 0xff;\
						}
#define LCD_CS_H() LCD_CS_PORT |= 1<<LCD_CS_BIT
#define LCD_CS_L() LCD_CS_PORT &= ~(1<<LCD_CS_BIT)

#define LCD_RS_H() LCD_RS_PORT |= 1<<LCD_RS_BIT
#define LCD_RS_L() LCD_RS_PORT &= ~(1<<LCD_RS_BIT)

#define LCD_WR_H() LCD_WR_PORT |= 1<<LCD_WR_BIT
#define LCD_WR_L() LCD_WR_PORT &= ~(1<<LCD_WR_BIT)

#define LCD_RD_H() LCD_RD_PORT |= 1<<LCD_RD_BIT
#define LCD_RD_L() LCD_RD_PORT &= ~(1<<LCD_RD_BIT)

#define LCD_RST_H() LCD_RST_PORT |= 1<<LCD_RST_BIT
#define LCD_RST_L() LCD_RD_PORT &= ~(1<<LCD_RST_BIT)


#define PORT_INI() {\
						DATA_INPUT();\
						LCD_CS_H();\
						LCD_RS_H();\
						LCD_WR_H();\
						LCD_RD_H();\
						LCD_RST_L();\
						LCD_CS_DDR |= 1<<LCD_CS_BIT;\
						LCD_RS_DDR |= 1<<LCD_RS_BIT;\
						LCD_WR_DDR |= 1<<LCD_WR_BIT;\
						LCD_RD_DDR |= 1<<LCD_RD_BIT;\
						LCD_RST_DDR |= 1<<LCD_RST_BIT;\
						}

void LCD_WR_REG(unsigned char index,unsigned int val)
{
	LCD_CS_L();
	LCD_RS_L();
	DATA_OUTPUT();
	DATA_LO_PORT = (unsigned char)index;
	DATA_HI_PORT = 0;
	//DATA_HI_PORT = (unsigned char)(index>>8);
	LCD_WR_L();
	NOP();
	NOP();
	LCD_WR_H();
	LCD_RS_H();
	DATA_LO_PORT = (unsigned char)val;
	DATA_HI_PORT = (unsigned char)(val>>8);
	LCD_WR_L();
	NOP();
	NOP();
	LCD_WR_H();
	LCD_CS_H();
}

unsigned int LCD_RD_REG(unsigned char index)
{
	unsigned int ret;
	LCD_CS_L();
	LCD_RS_L();
	DATA_OUTPUT();
	DATA_LO_PORT = (unsigned char)index;
	DATA_HI_PORT = 0;
	//DATA_HI_PORT = (unsigned char)(index>>8);
	LCD_WR_L();
	NOP();
	NOP();
	LCD_WR_H();
	LCD_RS_H();
	DATA_INPUT();
	ret = DATA_HI_PIN;
	ret <<= 8;
	ret += DATA_LO_PIN;
	LCD_RD_L();
	NOP();
	NOP();
	LCD_RD_H();
	LCD_CS_H();
	return ret;
}

void LCD_Write_Start()
{
	LCD_CS_L();
	LCD_RS_L();
	DATA_OUTPUT();
	DATA_LO_PORT = 0x22;
	DATA_HI_PORT = 0x00;
	LCD_WR_L();
	NOP();
	NOP();
	LCD_WR_H();
	LCD_RS_H();
}

void LCD_Write_Data(unsigned int val)
{
	DATA_LO_PORT = (unsigned char)val;
	DATA_HI_PORT = (unsigned char)(val>>8);
	LCD_WR_L();
	NOP();
	NOP();
	LCD_WR_H();
}

void LCD_Write_End()
{
	LCD_CS_H();
}

void LCD_Read_Start()
{
	LCD_CS_L();
	LCD_RS_L();
	DATA_OUTPUT();
	DATA_LO_PORT = 0x22;
	DATA_HI_PORT = 0x00;
	LCD_WR_L();
	NOP();
	NOP();
	LCD_WR_H();
	LCD_RS_H();
	DATA_INPUT();
	LCD_RD_L();//dummy read
	NOP();
	LCD_RD_H();
	NOP();
	NOP();
}

unsigned int LCD_RD_DATA()
{
	unsigned int ret;
	LCD_RD_L();
	NOP();
	ret = DATA_HI_PIN;
	ret <<= 8;
	ret += DATA_LO_PIN;
	LCD_RD_H();
	NOP();
	NOP();
	return ret;	
}

void LCD_Read_End()
{
	LCD_CS_H();
}


void delay_Nms(unsigned int n)
{
	while(n--)_delay_ms(1);
}

#define Display_ON() LCD_WR_REG(0x07,0x0173)
#define Display_OFF() LCD_WR_REG(0x07,0x0000)

void LCD_Init()
{
	PORT_INI();

	LCD_RST_L();
	delay_Nms(10);
	LCD_RST_H();

	//delay 10ms
	delay_Nms(10);

	//initializing funciton 1
	LCD_WR_REG(0xe5,0x8000);
	LCD_WR_REG(0x00,0x0001);
	LCD_WR_REG(0x2b,0x0010);
	LCD_WR_REG(0x01,0x0100);
	LCD_WR_REG(0x02,0x0700);
	LCD_WR_REG(0x03,0x1230);
	LCD_WR_REG(0x04,0x0000);
	LCD_WR_REG(0x08,0x0202);
	LCD_WR_REG(0x09,0x0000);
	LCD_WR_REG(0x0a,0x0000);
	LCD_WR_REG(0x0c,0x0000);
	LCD_WR_REG(0x0d,0x0000);
	LCD_WR_REG(0x0f,0x0000);
	LCD_WR_REG(0x50,0x0000);
	LCD_WR_REG(0x51,0x00ef);
	LCD_WR_REG(0x52,0x0000);
	LCD_WR_REG(0x53,0x013f);
	LCD_WR_REG(0x60,0x2700);
	LCD_WR_REG(0x61,0x0001);
	LCD_WR_REG(0x6a,0x0000);
	LCD_WR_REG(0x80,0x0000);
	LCD_WR_REG(0x81,0x0000);
	LCD_WR_REG(0x82,0x0000);
	LCD_WR_REG(0x83,0x0000);
	LCD_WR_REG(0x84,0x0000);
	LCD_WR_REG(0x85,0x0000);
	LCD_WR_REG(0x90,0x0010);
	LCD_WR_REG(0x92,0x0000);
	LCD_WR_REG(0x93,0x0003);
	LCD_WR_REG(0x95,0x0110);
	LCD_WR_REG(0x97,0x0000);
	LCD_WR_REG(0x98,0x0000);

	//power setting function
	LCD_WR_REG(0x10,0x0000);
	LCD_WR_REG(0x11,0x0000);
	LCD_WR_REG(0x12,0x0000);
	LCD_WR_REG(0x13,0x0000);
	delay_Nms(200);
	LCD_WR_REG(0x10,0x17b0);
	LCD_WR_REG(0x11,0x0004);
	delay_Nms(50);
	LCD_WR_REG(0x12,0x013e);
	delay_Nms(50);
	LCD_WR_REG(0x13,0x1f00);
	LCD_WR_REG(0x29,0x000f);
	delay_Nms(50);
	LCD_WR_REG(0x20,0x0000);
	LCD_WR_REG(0x21,0x0000);

	//initializing function 2

	LCD_WR_REG(0x30,0x0204);
	LCD_WR_REG(0x31,0x0001);
	LCD_WR_REG(0x32,0x0000);
	LCD_WR_REG(0x35,0x0206);
	LCD_WR_REG(0x36,0x0600);
	LCD_WR_REG(0x37,0x0500);
	LCD_WR_REG(0x38,0x0505);
	LCD_WR_REG(0x39,0x0407);
	LCD_WR_REG(0x3c,0x0500);
	LCD_WR_REG(0x3d,0x0503);

	//display on
	LCD_WR_REG(0x07,0x0173);
	//Display_ON();
}


void LCD_Set_XY(unsigned int x, unsigned int y)
{
	LCD_WR_REG(0x20,x);
	LCD_WR_REG(0x21,y);
}

void LCD_Set_Window(unsigned int startX,unsigned int startY,unsigned int endX,unsigned int endY)
{
	LCD_Set_XY(startX,startY);
	LCD_WR_REG(0x50,startX);
	LCD_WR_REG(0x52,startY);
	LCD_WR_REG(0x51,endX);
	LCD_WR_REG(0x53,endY);	
}


void LCD_test()
{
	unsigned int i,j;
	LCD_Write_Start();
	for(i=0;i<320;i++)
		for(j=0;j<240;j++)
		{
			if(i>279)LCD_Write_Data(0x0000);
			else if(i>239)LCD_Write_Data(0x001f);
			else if(i>199)LCD_Write_Data(0x07e0);
			else if(i>159)LCD_Write_Data(0x07ff);
			else if(i>119)LCD_Write_Data(0xf800);
			else if(i>79)LCD_Write_Data(0xf81f);
			else if(i>39)LCD_Write_Data(0xffe0);
			else LCD_Write_Data(0xffff);
		}
	LCD_Write_End();
}

unsigned char LCD_DrawPicture(unsigned char startX, unsigned char startY, unsigned int *pic, unsigned char sizeX, unsigned char sizeY)
{
	unsigned int endX,endY;
	unsigned long totalPixels = (unsigned long)sizeX * (unsigned long)sizeY;
	endX = startX+sizeX-1;
	endY = startY+sizeY-1;
	if(endX>239 || endY>319)return 1;
	LCD_Set_Window(startX,startY,endX,endY);
	LCD_Write_Start();
	while(totalPixels--)LCD_Write_Data(pgm_read_word(pic++));
	LCD_Write_End();
	return 0;
}

unsigned char LCD_DrawPicture2(unsigned char startX, unsigned char startY, unsigned int *pic, unsigned char sizeX, unsigned char sizeY)
{
	unsigned int i,j;

	if((startX+sizeX)>240 || (startY+sizeY)>320)return 1;

	for (j = 0; j<sizeY; j++)
	{
    	LCD_Set_XY(startX,startY);
		LCD_Write_Start();
    	for(i = 0; i<sizeX; i++)
    	{
			LCD_Write_Data(pgm_read_word(pic++));
    	}
    	startY++;//換行
  	}
	LCD_Write_End();
	return 0;
}


int main()
{
	LCD_Init();
	LCD_test();
	delay_Nms(2000);
	LCD_DrawPicture2(55,111,(unsigned int *)yemin,136,102);
	while(1);
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清国产一区在线| 972aa.com艺术欧美| 国产精品一品视频| 99re66热这里只有精品3直播| 欧美精品第1页| 亚洲丝袜美腿综合| 国产福利电影一区二区三区| 国产精品沙发午睡系列990531| 亚洲第一主播视频| 91麻豆免费在线观看| 久久九九久久九九| 狠狠色丁香九九婷婷综合五月| 欧美日韩视频在线第一区 | 亚洲激情六月丁香| 国产麻豆精品久久一二三| 欧美理论片在线| 一区二区三区免费看视频| 国产成人免费av在线| 欧美精品一区二区久久婷婷| 日韩中文字幕91| 欧美视频你懂的| 一区二区激情小说| 色综合久久久久久久久久久| 国产精品国产三级国产aⅴ中文| 开心九九激情九九欧美日韩精美视频电影| 在线免费观看日本一区| 亚洲欧美日韩久久| 91亚洲精品久久久蜜桃| 国产精品麻豆网站| 99精品国产99久久久久久白柏| 国产欧美一区在线| 成人国产精品免费网站| 国产精品日产欧美久久久久| 成人午夜在线免费| 综合久久综合久久| 在线观看视频一区二区欧美日韩| 亚洲日本电影在线| 欧美撒尿777hd撒尿| 无码av中文一区二区三区桃花岛| 欧美美女一区二区三区| 日日摸夜夜添夜夜添精品视频| 91麻豆精品国产91久久久资源速度 | 欧美日韩高清在线| 丝袜美腿亚洲一区二区图片| 日韩午夜av电影| 狠狠v欧美v日韩v亚洲ⅴ| 国产日韩高清在线| 99久久国产综合色|国产精品| 亚洲精品视频在线| 欧美日韩在线播| 美女高潮久久久| 久久老女人爱爱| 91免费国产在线| 亚洲成人免费av| 亚洲精品在线观看网站| 成人av在线资源网站| 丁香婷婷综合色啪| 一区二区三区在线影院| 777亚洲妇女| 国产成人高清在线| 亚洲第一主播视频| 国产日产欧美一区| 精品污污网站免费看| 卡一卡二国产精品| 亚洲欧美日韩中文播放| 欧美一级日韩免费不卡| 成人黄页在线观看| 天天综合色天天综合| 国产亚洲欧美日韩在线一区| 在线国产电影不卡| 国产盗摄精品一区二区三区在线 | 久久国产精品区| 136国产福利精品导航| 欧美精三区欧美精三区| 国产一区二区精品久久| 一区二区视频免费在线观看| 欧美一区二区三区色| 丁香婷婷综合激情五月色| 偷拍一区二区三区四区| 国产欧美日产一区| 日韩欧美国产电影| 91成人免费电影| 成人午夜电影久久影院| 欧美a级理论片| 亚洲精品免费在线| 久久66热re国产| 亚洲成人激情自拍| 国产精品国产成人国产三级| 欧美大片日本大片免费观看| 色综合av在线| 91视视频在线观看入口直接观看www | 日韩一区二区三区四区| 色视频一区二区| av男人天堂一区| 床上的激情91.| 国产精品一区二区视频| 青青国产91久久久久久| 亚洲一级二级在线| 亚洲精选在线视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国内久久精品视频| 免费成人美女在线观看| 日韩专区一卡二卡| 一区二区在线电影| 亚洲精品高清在线| 亚洲天天做日日做天天谢日日欢 | 日本大香伊一区二区三区| 国产精品亚洲一区二区三区在线| 免费看日韩a级影片| 视频一区中文字幕| 日韩精品成人一区二区在线| 偷窥国产亚洲免费视频| 五月天亚洲婷婷| 午夜精品一区在线观看| 亚洲乱码国产乱码精品精的特点 | 亚洲狠狠丁香婷婷综合久久久| 国产精品免费av| 一区免费观看视频| 亚洲人成人一区二区在线观看| 国产精品进线69影院| 亚洲欧美综合在线精品| **欧美大码日韩| 亚洲国产精品尤物yw在线观看| 亚洲国产成人tv| 老汉av免费一区二区三区| 国产一区二区三区在线观看免费 | 久久婷婷国产综合精品青草 | 夜夜嗨av一区二区三区网页 | 亚洲小说春色综合另类电影| 亚洲综合激情另类小说区| 亚洲高清视频中文字幕| 麻豆专区一区二区三区四区五区| 黑人精品欧美一区二区蜜桃| 懂色av一区二区夜夜嗨| 色94色欧美sute亚洲线路一ni| 欧美日韩卡一卡二| 久久一区二区三区四区| 亚洲欧美视频在线观看视频| 午夜私人影院久久久久| 精品一区二区三区在线观看国产 | 制服丝袜av成人在线看| 精品日本一线二线三线不卡| 国产日韩欧美电影| 亚洲高清免费观看| 国产精品伊人色| 欧美日韩精品一区二区三区蜜桃| 精品裸体舞一区二区三区| 中文字幕巨乱亚洲| 性久久久久久久久| 国产91精品一区二区麻豆网站 | 蜜桃视频在线观看一区| 成人a级免费电影| 国产精品传媒视频| 久久精品一二三| 亚洲国产你懂的| 成人深夜福利app| 91精品欧美一区二区三区综合在| 久久这里只精品最新地址| 一区二区三区欧美激情| 国产在线精品一区二区| 欧美影院午夜播放| 中文字幕乱码亚洲精品一区| 日本不卡免费在线视频| 色婷婷av一区二区三区之一色屋| 日韩精品一区二区三区蜜臀| 亚洲精品欧美二区三区中文字幕| 狠狠色综合日日| 欧美日韩国产一级片| 综合在线观看色| 国产精品91xxx| 欧美一级二级三级蜜桃| 亚洲一区二区三区影院| 成人午夜在线播放| 久久丝袜美腿综合| 日韩高清不卡一区二区三区| 色婷婷综合在线| 国产三级三级三级精品8ⅰ区| 午夜精品久久久久| 在线看日本不卡| 亚洲人成精品久久久久久 | 欧美国产在线观看| 国产一区二区美女诱惑| 欧美一级高清片在线观看| 亚洲国产综合视频在线观看| 99久久国产免费看| 欧美国产97人人爽人人喊| 狠狠色狠狠色合久久伊人| 日韩一级大片在线观看| 日韩不卡一区二区| 91精品国产色综合久久不卡电影| 一区二区三区四区在线播放 | 国产91丝袜在线观看| 欧美精品一区二区三区视频| 日本视频一区二区三区| 欧美人狂配大交3d怪物一区| 丝袜亚洲另类欧美综合| 91精品国产综合久久小美女| 日本 国产 欧美色综合| 日韩精品影音先锋| 国产尤物一区二区|