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

📄 hello.c

📁 ltv350qv屏的驱动初使化代码
💻 C
字号:
/*------------------------------------------------------------------------------
HELLO.C - adapted for the P89LPC932 and the Keil MCB900 Microcontroller Board

Copyright 1995-2005 Keil Software, Inc.
------------------------------------------------------------------------------*/

#include <REG916.H>               /* special function register declarations   */
                                  /* for the Philips P89C932 device           */

#include <stdio.h>                /* prototype declarations for I/O functions */

/*
const unsigned int LCD_REGS_VAL[19]={
0x409D,0x0204,0x0100,0x3000,0x4003,0x000A,0x0021,0x0C00,
0x0000,
0x0103,0x0301,0x1F0F,0x1F0F,0x0707,0x0307,0x0707,0x0000,0x0004,0x0000
};
 */

const unsigned int LCD_REGS_VAL[19]={
0x409D,0x0204,0x0100,0x3000,0x4003,0x00AA,0x0021,0x0C00,
0x0000,/*reg 9 at Instruction Setting not set */
0x0103,0x0301,0x1F0F,0x1F0F,0x0707,0x0307,0x0707,0x0000,0x0004,0x0000
};

/* The delay C function is a for loop that
needs about 0.2 seconds execution time */
static void delay (unsigned int tmp)  {

  unsigned int i;

  for (i = 0; i < 80*tmp; i++) 
  {     					
    ;                           
  }
}


static void spi_init(void)
{
	P2M1 = 0x00;
	P2M2 = 0x00; 
	SPCTL = 0xD0;//初始化SPI   //D3

}

static void spi_send_data(unsigned char tmp)
{

	SPDAT = tmp;
	while((SPSTAT&0x80)==0);
	delay(1);	
}

static	void lcd_set_reg(unsigned char tmp)
{
 	LCD_CS = 0;
	spi_send_data(0x74);	   //74
	spi_send_data(0x00);
	spi_send_data(tmp);	
	LCD_CS = 1;
}

static	void lcd_set_data(unsigned int tmp)
{
	unsigned char data_h;
	unsigned char data_l;

	data_h = (tmp&0xff00)>>8;
	data_l = tmp&0xff;

	LCD_CS = 0;
	spi_send_data(0x76);  		//76
	spi_send_data(data_h);
	spi_send_data(data_l);	
	LCD_CS = 1;
}

static void lcd_power_up(void)
{

	int i;

	delay(100);
	lcd_set_reg(9);
	lcd_set_data(0);

	delay(20);
	lcd_set_reg(9);
	lcd_set_data(0x4000);
	lcd_set_reg(10);
	lcd_set_data(0x2000);
	lcd_set_reg(9);
	lcd_set_data(0x4055);
	delay(100);

	for(i=0;i<19;i++)
	{
		if(i!=8)
		{
			lcd_set_reg(i+1);
			lcd_set_data(LCD_REGS_VAL[i]);
		}
	}
 
	delay(1000);
	lcd_set_reg(9);
	lcd_set_data(0x4A55);
	lcd_set_reg(5);
	lcd_set_data(0x5003);
}


/*------------------------------------------------
The main C function.  Program execution starts
here after stack initialization.
------------------------------------------------*/
void main() 
{

//	delay(2000);

	spi_init();
	LCD_CS = 1;
	delay(10);
  	lcd_power_up();
  
   while(1)
   {



//	spi_send_data(0x85);
	delay(1);
//	spi_send_data(0x05);
//	lcd_set_reg(0x05);
	}
}

⌨️ 快捷键说明

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