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

📄 lcm.c

📁 本程序演示 :以非利普TEA5767 为核心的
💻 C
字号:

#include  "LCM.h"
#include "reg51.h"
//#include "font.h"
#define SOFT_RESET		0x01
#define SLEEP_OUT		0x11
#define DISPLAY_ON		0x29
#define BOOSTER_ON		0x03
#define COLOR_INTERFACE	0x3A
#define COLOR_8_BIT	0x02
#define COLOR_12_BIT	0x03
#define COLOR_16_BIT	0x05
#define COLOR_SET		0x2D
#define MEM_ACCESS_CTRL	0x36
#define MIRROR_X		6
#define MIRROR_Y		7
#define VERT_WRITE	5
#define RGB			3
#define MEM_WRITE		0x2C
#define SET_X_ADDR		0x2A
#define SET_Y_ADDR		0x2B
#define backc 0xff
#define DISP_X_START	0
#define DISP_Y_START	0
#define DISP_X_END	131
#define DISP_Y_END	131
#define RED				0xE0
#define GREEN			0x1C
#define BLUE			0x03
#define YELLOW			0xFC
#define MAGENTA			0xE3
#define CYAN			0x1F
#define BLACK			0x00
#define WHITE			0xFF


void delay5ms(void) 
{
	uint i;
	for(i=0; i<2200; i++);
}

void n6100SendCommand(uint8_t dat) 
{
    uchar i=0;
	CS=0;
	SCLK=0;
	SDATA=0;	
	SCLK=1;
	SCLK=0;
	if(dat&0x80)                
	SDATA=1;
	else
    SDATA=0;
	SCLK=1;      
	SCLK=0;
	if(dat&0x40)                
	SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x20)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x10)                
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x08)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x04)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x02)                
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x01)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;
	CS=1;			// CS wieder auf 1
	//SPCR = 0x00;					// SPI wieder disablen
}

void n6100SendData(uint8_t dat) 
  {
    uchar i=0;
	// CS auf Low setzen
	CS=0;
	// 1. Bit (Command/Data) per Software erzeugen
	SCLK=0;
	SDATA=1;		// logisch 1 f黵 Daten
	SCLK=1;
	SCLK=0;
	if(dat&0x80)                
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x40)                
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x20)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x10)                
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x08)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x04)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x02)                
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;//set(PORTB,SCLK);         
	
	SCLK=0;//cli(PORTB,SCLK);
	if(dat&0x01)                 
	    SDATA=1;//set(PORTB,SDATA);
	else
	    SDATA=0;//cli(PORTB,SDATA);
	SCLK=1;         
	CS=1;			
}

uint8_t memAccessCtrl=0;
void n6100SetDrawRect(uint8_t startX, uint8_t endX, uint8_t startY, uint8_t endY) {
	n6100SendCommand(SET_X_ADDR);
	n6100SendData(startX+1);
	n6100SendData(endX+1);
	
	n6100SendCommand(SET_Y_ADDR);
	n6100SendData(startY+1);
	n6100SendData(endY+1);
}
void n6100Clear(void)
 {
	uint i;
	n6100SetDrawRect(DISP_X_START, DISP_X_END, DISP_Y_START, DISP_Y_END);
	n6100SendCommand(MEM_WRITE);
	for(i=0; i<18000; i++) 
	{
		n6100SendData(backc);
	}
}

void n6100Init(void) 
  {
	 uint8_t i;
	SDATA=0;
	SCLK=0;
   	SDATA=1;
	SCLK=1;
	SDATA=0;
	SCLK=0;
   	SDATA=1;
	SCLK=1;
	CS=1;
	REST=1;
	delay5ms();
	REST=0;	
	delay5ms();
	REST=1;	
	SDATA=1;
	SCLK=1;
	CS=1;
	n6100SendCommand(SOFT_RESET);
	n6100SendCommand(SLEEP_OUT);
	n6100SendCommand(DISPLAY_ON);
	n6100SendCommand(BOOSTER_ON);
	for(i=0; i<10; i++) {
		delay5ms();
	}
	
	n6100SendCommand(COLOR_INTERFACE);
	n6100SendData(COLOR_8_BIT);
	n6100SendCommand(COLOR_SET);
	// red
	n6100SendData(0x00);
	n6100SendData(0x02);
	n6100SendData(0x03);
	n6100SendData(0x04);
	n6100SendData(0x05);
	n6100SendData(0x06);
	n6100SendData(0x08);
	n6100SendData(0x0f);
	// green
	n6100SendData(0x00);
	n6100SendData(0x02);
	n6100SendData(0x03);
	n6100SendData(0x04);
	n6100SendData(0x05);
	n6100SendData(0x06);
	n6100SendData(0x08);
	n6100SendData(0x0F);
	// blue
	n6100SendData(0x00);
	n6100SendData(0x03);
	n6100SendData(0x06);
	n6100SendData(0x0F);
	
	n6100SendCommand(MEM_ACCESS_CTRL);
	memAccessCtrl =  (0x01 << RGB);
	n6100SendData(memAccessCtrl|0x80);
	n6100SendCommand(0X25);//light
	n6100SendData(40); //
	n6100Clear();
}	
	

void lcd_setxy(uchar x,uchar x1,uchar y,uchar y1)
{
	n6100SendCommand(SET_X_ADDR);
	n6100SendData(x);
	n6100SendData(x1);
	
	n6100SendCommand(SET_Y_ADDR);
	n6100SendData(y);
	n6100SendData(y1);
}
	

void display_china1(char *p,uchar f_cl,uchar b_cl,uchar x,uchar y)
{
uchar i=0;
uchar m=0;
uchar j=0;



for(i=0;i<16;i++)
{
   lcd_setxy(x,131,y+i,131);
  n6100SendCommand(MEM_WRITE);
 
    j=*(p+i*2);
    for(m=0;m<8;m++)
	{
	if(j&0x80)
    n6100SendData(f_cl);
	else
    n6100SendData(b_cl);
	j=j<<1;}	 
   j=*(p+i*2+1);	
    for(m=0;m<8;m++)
	{
	if(j&0x80)
    n6100SendData(f_cl);
	else
    n6100SendData(b_cl);
	j=j<<1;
	}
  }

}

void display_picture(char *p,uchar f_cl,uchar b_cl,uchar x,uchar y)
{
uchar i,k=0;
uchar m=0;
uchar j=0;
for(i=0;i<32;i++)
{
   lcd_setxy(x,131,y+i,131);
  n6100SendCommand(MEM_WRITE);
  for(k=0;k<4;k++)
  {j=*(p+i*4+k);
    for(m=0;m<8;m++)
	{
	if(j&0x80)
    n6100SendData(f_cl);
	else
    n6100SendData(b_cl);
	j=j<<1;}	 }
    
  }   
}
void display_char(char *p,uchar f_cl,uchar b_cl,uchar x,uchar y)
{
uchar i=0;
uchar m=0;
uchar j=0;
for(i=0;i<16;i++)
{
   lcd_setxy(x,131,y+i,131);
  n6100SendCommand(MEM_WRITE);
 
    j=*(p+i);
    for(m=0;m<8;m++)
	{
	if(j&0x80)
    n6100SendData(f_cl);
	else
    n6100SendData(b_cl);
	j=j<<1;}	 
  }
}


⌨️ 快捷键说明

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