for(bit_ctr=0;bit_ctr<8;bit_ctr++) // Êä³ö8λ
{
LCD_SCK=0;
LCD_MOSI=(byte&0x80); // MSB TO MOSI
byte=(byte<<1); // shift next bit to MSB
LCD_SCK=1;
byte|=LCD_MISO; // capture current MISO bit
}
return byte;
}
void LCD_SetArea(unsigned int stx,unsigned int sty,unsigned int endx,unsigned int endy)
{
LCD_WR_REG(0x2A);
LCD_WR_DATA(stx>>8);
LCD_WR_DATA(stx&0xff);
LCD_WR_DATA(endx>>8);
LCD_WR_DATA(endx&0xff);
#include "stc12c5a60s2.h"
#include <intrins.h>
#define RED 0XF800 //ºìÉ«
#define GREEN 0X07E0 //ÂÌÉ«
#define BLUE 0X001F //À¶É«
#define WHITE 0XFFFF //°×É«
#define DATA_H P2
#define DATA_L P0
sbit LCD_CS = P3^2;
sbit LCD_RESET = P3^6;
sbit LCD_MOSI = P1^5;
sbit LCD_MISO = P1^6;
sbit LCD_SCK = P1^7;//¾ÍÊÇTFTÉϵÄLCD_RSÒý½Å
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
void delay_ms(unsigned int ms)
{
while(ms--)
{
Delay1ms();
}
}
unsigned char SPI_RW(unsigned char byte)
{
unsigned char bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // Êä³ö8λ
{
LCD_SCK=0;
LCD_MOSI=(byte&0x80); // MSB TO MOSI
byte=(byte<<1); // shift next bit to MSB
LCD_SCK=1;
byte|=LCD_MISO; // capture current MISO bit
}
return byte;
}
void LCD_WR_DATA(unsigned char val)
{
LCD_CS=0;
LCD_SCK=0;
LCD_MOSI=1;
LCD_SCK=1;
SPI_RW(val);
LCD_CS=1;
}
void LCD_WR_REG(unsigned char reg)
{
LCD_CS=0;
LCD_SCK=0;
LCD_MOSI=0;
LCD_SCK=1;
SPI_RW(reg);
LCD_CS=1;
}
void LCD_Init()
{
P0=0;
P2=0;
LCD_RESET=0;
delay_ms(10);
LCD_RESET=1;
delay_ms(120);
LCD_WR_REG(0xCF);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0xC1);
LCD_WR_DATA(0X30);
LCD_WR_REG(0xED);
LCD_WR_DATA(0x64);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0X12);
LCD_WR_DATA(0X81);
LCD_WR_REG(0xE8);
LCD_WR_DATA(0x85);
LCD_WR_DATA(0x10);
LCD_WR_DATA(0x7A);
LCD_WR_REG(0xCB);
LCD_WR_DATA(0x39);
LCD_WR_DATA(0x2C);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x34);
LCD_WR_DATA(0x02);
LCD_WR_REG(0xF7);
LCD_WR_DATA(0x20);
LCD_WR_REG(0xEA);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_REG(0xC0); //Power control
LCD_WR_DATA(0x1B); //VRH[5:0]
LCD_WR_REG(0xC1); //Power control
LCD_WR_DATA(0x01); //SAP[2:0];BT[3:0]
LCD_WR_REG(0xC5); //VCM control
LCD_WR_DATA(0x30); //3F
LCD_WR_DATA(0x30); //3C
LCD_WR_REG(0xC7); //VCM control2
LCD_WR_DATA(0XB7);
LCD_WR_REG(0x36); // Memory Access Control
LCD_WR_DATA(0x48);
LCD_WR_REG(0x3A);
LCD_WR_DATA(0x55);
LCD_WR_REG(0xB1);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x1A);
LCD_WR_REG(0xB6); // Display Function Control
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0xA2);
LCD_WR_REG(0xF2); // 3Gamma Function Disable
LCD_WR_DATA(0x00);
LCD_WR_REG(0x26); //Gamma curve selected
LCD_WR_DATA(0x01);
LCD_WR_REG(0xE0); //Set Gamma
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x2A);
LCD_WR_DATA(0x28);
LCD_WR_DATA(0x08);
LCD_WR_DATA(0x0E);
LCD_WR_DATA(0x08);
LCD_WR_DATA(0x54);
LCD_WR_DATA(0XA9);
LCD_WR_DATA(0x43);
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_REG(0XE1); //Set Gamma
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x15);
LCD_WR_DATA(0x17);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x11);
LCD_WR_DATA(0x06);
LCD_WR_DATA(0x2B);
LCD_WR_DATA(0x56);
LCD_WR_DATA(0x3C);
LCD_WR_DATA(0x05);
LCD_WR_DATA(0x10);
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x3F);
LCD_WR_DATA(0x3F);
LCD_WR_DATA(0x0F);
LCD_WR_REG(0x2B);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x3f);
LCD_WR_REG(0x2A);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0xef);
LCD_WR_REG(0x11); //Exit Sleep
delay_ms(120);
LCD_WR_REG(0x29); //display on
}
void LCD_SetArea(unsigned int stx,unsigned int sty,unsigned int endx,unsigned int endy)
{
LCD_WR_REG(0x2A);
LCD_WR_DATA(stx>>8);
LCD_WR_DATA(stx&0xff);
LCD_WR_DATA(endx>>8);
LCD_WR_DATA(endx&0xff);
LCD_WR_REG(0x2B);
LCD_WR_DATA(sty>>8);
LCD_WR_DATA(sty&0xff);
LCD_WR_DATA(endy>>8);
LCD_WR_DATA(endy&0xff);
}
void LCD_Clear(unsigned int color)
{
unsigned int i,j;
LCD_SetArea(0,0,239,319);
LCD_WR_REG(0x2C);
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
LCD_WR_DATA(color>>8);
LCD_WR_DATA(color);
}
}
}
void main()
{
delay_ms(100);
LCD_Init();
while(1)
{
LCD_Clear(RED);
delay_ms(300);
LCD_Clear(WHITE);
delay_ms(300);
LCD_Clear(BLUE);
delay_ms(300);
LCD_Clear(GREEN);
delay_ms(300);
}
}
一周热门 更多>