⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 n8bit._c

📁 128X128的TFT并口驱动测试程序
💻 _C
📖 第 1 页 / 共 5 页
字号:
//ICC-AVR application builder : 2008-11-2 11:21:49
// Target : M32
// Crystal: 8.0000Mhz

#include <iom32v.h>
#include <macros.h>

//Signal bit definitions




#define  lcd_data   PORTD
#define	 lcd_cs	    0
#define	 lcd_rst	1
#define	 lcd_cd	    2
//#define	lcd_dta	7	//PD7
#define	 lcd_clk	5
#define  SetLcdA0   PORTA|=(1<<lcd_cd);
#define  ClrLcdA0   PORTA&=~(1<<lcd_cd);
#define  SetLcdWR   PORTA |=(1<<lcd_clk);
#define  ClrLcdWR   PORTA &=~(1<<lcd_clk);
#define  Setled     PORTA|=(1<<4);
#define  Clrled     PORTA&=~(1<<4);
#define  SetLcdRST  PORTA|=(1<<lcd_rst);
#define  ClrLcdRST  PORTA&=~(1<<lcd_rst);
#define  SetLcdCS   PORTA|=(1<<lcd_cs);
#define  ClrLcdCS   PORTA&=~(1<<lcd_cs);
const unsigned char AVR_LOGO[18624];
void port_init(void)
{
     PORTA = 0x37;
     DDRA  = 0xFF;
     PORTB = 0x00;
     DDRB  = 0x00;
     PORTC = 0x00; 
     DDRC  = 0x00;
     PORTD = 0xff;
     DDRD  = 0xff;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
     CLI(); //disable all interrupts
     port_init();

     MCUCR = 0x00;
     GICR  = 0x00;
     TIMSK = 0x00; //timer interrupt sources
     SEI(); //re-enable interrupts
     //all peripherals are now initialized
}
void Delay_1us(void)//1us延时函数
{
     asm("nop");
}
void Delay_nus(unsigned int n)//N us延时函数
{
     unsigned int i=0;
     for (i=0;i<n;i++)
     Delay_1us();
}
void Delay_1ms(void)//1ms延时函数
{
     unsigned int i;
     for (i=0;i<1140;i++);
}
void Delay_nms(unsigned int n)//N ms延时函数
{
     unsigned int i=0;
     for (i=0;i<n;i++)
     Delay_1ms();
}

void write_data(unsigned char data)
{


	 SetLcdA0;
	 ClrLcdCS;

	 lcd_data=data;
	 ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;

	
	
	
	 SetLcdCS;

}
void write_data16(unsigned char dataH,unsigned char dataL)
{
	

	 SetLcdA0;
	 ClrLcdCS;
	 lcd_data=dataH;
     ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;
	 lcd_data=dataL;
	 ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;
				
	 SetLcdCS;
}
void write_cmd(unsigned char data)
{
	 ClrLcdA0;
	 ClrLcdCS;
	
	 lcd_data=0;
	 ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;

	 lcd_data=data;
	 ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;

	 SetLcdCS;
	
}
void LCD_WR_REG(unsigned char reg,unsigned int data16)
{
     unsigned char dataH,dataL;
     dataH=data16/256;
     dataL=data16&0xff;
     ClrLcdA0;
     ClrLcdCS;


     lcd_data=0;
     ClrLcdWR;
     //asm("nop");
     SetLcdWR;

	 lcd_data=reg;
	 ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;
     SetLcdA0;	
	 lcd_data=dataH;
	 ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;
	 lcd_data=dataL;
	 ClrLcdWR;
//	 asm("nop");
	 SetLcdWR;



	 SetLcdCS;

}


void LCD_Init()
{

	 LCD_WR_REG(0x00,0x0001);
	 LCD_WR_REG(0x12,0x0109);  
	 LCD_WR_REG(0x13,0x0e1d);
	 LCD_WR_REG(0x14,0x6224);
	 LCD_WR_REG(0x10,0x2004);
	 Delay_nms(50);
	 LCD_WR_REG(0x13,0x0e5d);
	 Delay_nms(50);
	 LCD_WR_REG(0x01,0x010f);
	 LCD_WR_REG(0x02,0x0700);
	 LCD_WR_REG(0x03,0x1030);
	 LCD_WR_REG(0x07,0x0000);
	 LCD_WR_REG(0x08,0x0202);
	 LCD_WR_REG(0x0b,0x0001);
	 LCD_WR_REG(0x0c,0x0000);
	 LCD_WR_REG(0x40,0x0000);
	 LCD_WR_REG(0x42,0x8300);	
	 LCD_WR_REG(0x43,0x0000);
	 LCD_WR_REG(0x44,0x8304);
	 LCD_WR_REG(0x45,0x7f00);
	 LCD_WR_REG(0x25,0x0002);
	 LCD_WR_REG(0x26,0x0002);
	 LCD_WR_REG(0x30,0x0000);
	 LCD_WR_REG(0x31,0x0102);
	 LCD_WR_REG(0x32,0x0001);
	 LCD_WR_REG(0x33,0x0202);	
	 LCD_WR_REG(0x34,0x0707);
	 LCD_WR_REG(0x35,0x0707);
	 LCD_WR_REG(0x36,0x0707);
	 LCD_WR_REG(0x37,0x0202);
	 LCD_WR_REG(0x07,0x0005);
	 Delay_nms(50);		
	 LCD_WR_REG(0x07,0x0015);
	 Delay_nms(50);
	 LCD_WR_REG(0x21,0x0004);
	 Delay_nms(50);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -