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

📄 lcd.h

📁 TMS32LF2812与液晶接口的程序实例
💻 H
字号:
//液晶显示屏驱动程序头文件*
//         liuhy          *
//       2003.01.08       ********
//********************************

#define LCD_CADD	(*(volatile unsigned char *)0x7C01)
#define LCD_DADD	(*(volatile unsigned char *)0x7C00)

//读状态字子程序
unsigned char ReadSta()
{
 	unsigned char sta=LCD_CADD;
  	return sta;
}

//判状态位STA1,STA0子程序
void lcdsta01(void)
{
	while((ReadSta()&0x3)<3);
}

//判状态位STA2子程序
void lcdsta2(void)
{
  	while((ReadSta()&0x4)==0);
}

//判状态位STA3子程序
void lcdsta3(void)
{
  	while((ReadSta()&0x8)==0);
}

//判状态位STA6子程序
void lcdsta6(void)
{
  	while((ReadSta()&0x40)==0);
}

//写数据子程序
void lcdwrd(unsigned char data)
{
	lcdsta01();
	LCD_DADD=data;
}
	 
//写命令子程序
void lcdwrc(unsigned char com)
{
	lcdsta01();
	LCD_CADD=com;
}

//双字节参数指令写入子程序
void lcdpr2(unsigned char data1,unsigned char data2,unsigned char com)
{
  	 lcdwrd(data1);
	 lcdwrd(data2);
	 lcdwrc(com);
}	

//单字节参数指令写入子程序
void lcdpr1(unsigned char data1,unsigned char com)
{
  	 lcdwrd(data1);
	 lcdwrc(com);
}

//液晶屏读数据子程序
unsigned char lcdrd(void)
{
  	 unsigned char data;
	 lcdsta01();
	 data=LCD_DADD;
}

//液晶屏初始化子程序
void lcdini(void)
{
  	 lcdpr2(0,0,0x40);
	 lcdpr2(0x1e,0,0x41);
	 lcdpr2(0,0x10,0x42);
	 lcdpr2(0x1e,0,0x43);
	 lcdwrc(0xa7);
	 lcdwrc(0x81);
	 lcdwrc(0x9c);
	 //lcdwrc(0xa0);
}

//液晶屏清屏子程序
void lcdclear(void)
{
  	 unsigned int i;
	 lcdpr2(0,0,0x24);
	 lcdwrc(0xb0);
	 for(i=0;i<480;i++) 
	 {	 
	 	 lcdsta3();
	 	 LCD_DADD=0;
	 } 
	 lcdwrc(0xb2);
	 
	 lcdpr2(0,0x10,0x24);
	 lcdwrc(0xb0);
	 for(i=0;i<3840;i++) 
	 {	 
	 	 lcdsta3();
		 LCD_DADD=0;
	 } 
	 lcdwrc(0xb2); 
}

//建立CGRAM子程序
void cgram(unsigned int count,unsigned char *pwbhz)
{
	 unsigned int i;
	 lcdpr2(8,0,0x22);
	 lcdpr2(0,0x44,0x24);
	 count*=32;
	 lcdwrc(0xb0);
	 for(i=0;i<count;i++)
	 {
	     lcdsta3();
		 LCD_DADD=*(pwbhz++);
	 }
	 lcdwrc(0xb2);
}

//图形方式下写汉字子程序
void lcdwri_cc(unsigned char o_x,unsigned char o_y,
	 		   unsigned char code)//,const unsigned char *ptxhz)
{
     extern unsigned char TuXing[2688];
 	 unsigned int inadd;
	 unsigned char *hzadd;
	 unsigned char i;
	 inadd=o_y*0x1e +o_x+0x1000;
	 hzadd=code*0x20+TuXing;//ptxhz;
	 for(i=0;i<0x10;i++,hzadd++)
	 {
	  	 lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
 	 	 lcdpr1(*hzadd,0xc0);
		 lcdpr1(*(hzadd+0x10),0xc0);
		 inadd+=0x1e;
	 }
}

//文本方式下写汉字子程序(不带文本属性)
void lcdwri_ct(unsigned char o_x,unsigned char o_y,
	 		   unsigned char code)
{
     unsigned int inadd;
	 inadd=o_y*30+o_x;
	 lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
	 lcdpr1(code,0xc0);
	 lcdpr1(code+2,0xc0);
	 inadd+=0x1e;
	 lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
	 lcdpr1(code+1,0xc0);
	 lcdpr1(code+3,0xc0);
}

//文本方式下写西文子程序(不带文本属性)
void lcdwri_c(unsigned char o_x,unsigned char o_y,
	 		  unsigned char code)
{
     unsigned int inadd;
	 inadd=o_y*0x1e +o_x;
	 lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
	 lcdpr1(code,0xc0);
}

⌨️ 快捷键说明

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