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

📄 lm3033a.c

📁 Embest ATEB40x开发板LCD测试程序
💻 C
字号:
//------------------------------------------------------------------------------------------------//		Topway Test Program//	Copyright 2003.4.18 embedded Inc.//------------------------------------------------------------------------------------------------//The following is for LM3033a liquid crystal module drived  by ST7920's LCD controller #include "../inc/LCD.h"#define 	uchar	unsigned char#define		uint	unsigned int#define  	high	1#define		low		0#define		error	0#define		true	1#define     Port           0x03000000#define     CS4_Var        (Port|0x251a)#define     Pwr_instr      Port            // 写访问:指令(A1=0 A2=0) #define     Pwr_data       (Port + (1<<2)) // 写访问:数据(A1=0 A2=1 )#define     Prd_instr      (Port + (1<<1)) // 读访问:指令(A1=1 A2=0)#define     Prd_data       (Port + (3<<1)) // 读访问:数据(A1=1 A2=1)uchar     key1=   0;uchar     key2=   0;uchar     key3=   0;uchar     key4=   0;uchar     key_temp;uchar     temp_Pwr_instr;uchar     temp_P3;uchar     error_num;	//1:表示状态忙判断超时导致的错误;        		   	//2:        		  	//3:        		  	//4:void _nop_(){__asm("mov r0,r0");}        		  	//define variable//Define ctrlcode for SED5331:#define Lcd_ON   0xaf	//显示开uchar xinghao[14]={0xa3,0xcc,0xa3,0xcd,0xa3,0xb3,0xa3,0xb0,0xa3,0xb3,0xa3,0xb3,0xa1,0xa0};uchar company[]={0xd3,0xd0,0xcf,0xde,0xb9,0xab,0xcb,0xbe};	//有限公司uchar gosleep[16]={0xa3,0xc7,0xa3,0xef,0xa1,0xa1,0xa3,0xd3,0xa3,0xec,0xa3,0xe5,0xa3,0xe5,0xa3,0xf0};	//Go Sleepuchar ch_wakeup[14]={0xa3,0xd7,0xa3,0xe1,0xa3,0xeb,0xa3,0xe5,0xa1,0xa1,0xa3,0xd5,0xa3,0xf0};	//Wake Up//------------------------------------------------------------------------------------------------//------------------------------------------------------------------------------------------------//辅助函数//------------------------------------------------------------------------------------------------void delay100us(void)		//delay TIMER1*1 ms for 12MHz{	uchar i;	for(i=0;i<=250;i++)	{	_nop_();_nop_();	}}void delay1ms(void)		//delay TIMER1*1 ms for 12MHz{	uchar i;	for(i=0;i<=250;i++)	{	_nop_();_nop_();	}}void delay100ms(void){	uchar j;	for(j=0;j<=250;j++)	{	delay1ms();	}	}void delay500ms(){	uchar l;	for(l=0;l<=50;l++)	{	delay100ms();	}	}void delay1s(void){	uchar l;	for(l=0;l<=200;l++)	{	delay100ms();	}}void test_LCD(void){	int *p;	p = (int *)0xffe00000;	    *(p+4) = CS4_Var;  // R/W enable CS4    *(p+9) = 0x4;      // CS4(A)    flow_init();	dis_char();//     }//------------------------------------------------------------------------------------------------//指令和数据操作//------------------------------------------------------------------------------------------------void wr_command(uchar wr_data1){   char *p;   p = (char *)Pwr_instr;	 	 	*p = wr_data1;	_nop_();	delay100us();	 	 }void wr_data(uchar wr_data1){   char *p;   p = (char *)Pwr_data;	 	*p =  wr_data1;	_nop_();	delay100us();	 	 }//------------------------------------------------------------------------------------------------void dis_interface_num(uchar data_temPwr_instr,uchar data_temp2){	uchar i,j;	wr_command(0x30);delay100us();	wr_command(0x34);delay100us();	//设定绘图显示off	wr_command(0x01);delay100ms();	//delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();//清除显示	wr_command(0x02);delay100us();	//地址归位	wr_command(0x36);delay100us();	//设定绘图显示off	for(i=0;i<=31;i++)	{		for(j=0;j<=18;j++)		{		wr_command(0x80+i);	wr_command(0x80+j);		wr_data(data_temPwr_instr);		wr_data(data_temp2);		}		}	wr_command(0x36);delay100us();	//设定绘图显示ON	// }void dis_hen_num(uchar data_temPwr_instr,uchar data_temp2){	uchar i,j;	// 	wr_command(0x30);delay100us();	wr_command(0x34);delay100us();	//设定绘图显示off	wr_command(0x01);delay100ms();//delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();//清除显示	wr_command(0x02);delay100us();	//地址归位	wr_command(0x36);delay100us();	//设定绘图显示off	for(i=0;i<=31;i++)	{		for(j=0;j<=15;j++)		{		wr_command(0x80+i);		wr_command(0x80+j);		wr_data(data_temPwr_instr);		wr_data(data_temPwr_instr);		}		i++;		for(j=0;j<=15;j++)		{		wr_command(0x80+i);		wr_command(0x80+j);		wr_data(data_temp2);		wr_data(data_temp2);		}		}	wr_command(0x36);delay100us();	//设定绘图显示ON	// }//------------------------------------------------------------------------------------------------//测试程序//------------------------------------------------------------------------------------------------void dis_interface(uchar dis_number)	//测试点阵  screen number:2,6,7,10,11,12,13{	wr_command(0x0c);delay100us();	switch(dis_number)		{			case 1: dis_interface_num(0xff,0xff);break;			case 2: dis_interface_num(0x00,0x00);break;			case 3: dis_interface_num(0x55,0x55);break;			case 4: dis_interface_num(0xaa,0xaa);break;			case 5: dis_hen_num(0xff,0x00);break;			case 6: dis_hen_num(0x00,0xff);break;			case 7: dis_hen_num(0xaa,0x55);break;			case 8: dis_hen_num(0x55,0xaa);break;			default:	error_num=2;break;		}}void dis_char()	//显示公司名称{	uchar i=0,j=0;	// 	wr_command(0x30);delay100us();	//指令集	wr_command(0x30);delay100us();	//指令集	wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();	//清除显示	wr_command(0x02);delay100us();	wr_command(0x80);//delay100us();	//wr_data(0xa1);wr_data(0xa0);	for(i=0;i<=7;i++)	{		wr_data(company[i*2]);wr_data(company[i*2+1]);	}	for(i=0;i<=6;i++)	{		wr_data(0xa1);wr_data(0xa0);	}	wr_command(0x02);delay100us();	wr_command(0x90);//delay100us();	wr_data(0xa1);wr_data(0xa0);	for(i=0;i<=6;i++)	{		wr_data(xinghao[i*2]);wr_data(xinghao[i*2+1]);	}	for(i=0;i<=6;i++)	{		wr_data(0xa1);wr_data(0xa0);	}	wr_command(0x0c);	 keyfun(); 	wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();	//清除显示	wr_command(0x02);delay100us();}void dis_gosleep()	//显示gosleep{	uchar i=0,j=0;	uchar cg_add=0x90;	 	wr_command(0x36);	//扩充指令集	wr_command(0x30);delay100us();	//指令集	wr_command(0x30);delay100us();	//指令集	wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();	//清除显示	wr_command(0x02);	wr_command(cg_add);	//wr_data(0xa1);wr_data(0xa0);	for(i=0;i<=7;i++)	{		wr_data(gosleep[i*2]);wr_data(gosleep[i*2+1]);	}	for(i=0;i<=6;i++)	{		//cg_add |=0x60;		wr_data(0xa1);wr_data(0xa0);	}	wr_command(0x0c);delay500ms();	 keyfun(); 	wr_command(0x01);	delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();	//清除显示//	 }void dis_wakeup()	//显示wakeup{	uchar i=0,j=0;	uchar cg_add=0x90;	 	//wr_command(0x34);	//扩充指令集	wr_command(0x30);delay100us();	//指令集	wr_command(0x30);delay100us();	//指令集	//wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();	//清除显示	wr_command(0x02);	wr_command(cg_add);	wr_data(0xa1);wr_data(0xa0);	for(i=0;i<=6;i++)	{		wr_data(ch_wakeup[i*2]);wr_data(ch_wakeup[i*2+1]);	}	for(i=0;i<=7;i++)	{		//cg_add |=0x60;		wr_data(0xa1);wr_data(0xa0);	}	wr_command(0x0c);delay500ms();	 keyfun(); 	wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();//清除显示//	 }void dis_all()	//显示所有字模{	uchar i=0,j=0;	uchar cg_add=0x90;	 	dis_interface(2);	///	cg_add=0x0;	wr_command(0x80);	//设定绘图显示off	wr_command(0x30);delay100us();	//DataLength=8bit, CommandSet=Basic	wr_command(0x01);delay100us();	//清除显示	wr_command(0x02);	//地址归位	wr_command(0x0c);	//整体显示ON	wr_command(0x07);	//画面整体左移	for(j=0;j<=0x47;j++)	{		for(i=0;i<=0x50;i++)		{		wr_data(0xb0+j);wr_data(0xa0+i);delay100ms();delay100ms();		}	}		 }void dis_frame()	//显示外框{	//uchar data_temPwr_instr,uchar data_temp2;	uchar i,j;	// 	wr_command(0x30);delay100us();	wr_command(0x34);delay100us();	//设定绘图显示off	//wr_command(0x30);delay100us();wr_command(0x30);delay100us();	wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();//清除显示	wr_command(0x02);delay100us();	//地址归位	for(i=0;i<=31;i++)	{		wr_command(0x80+i);		wr_command(0x80);		for(j=0;j<=15;j++)		{		wr_data(0);		wr_data(0);		}	}	wr_command(0x80);		wr_command(0x80);	for(i=0;i<=15;i++)	{		wr_data(0xff);				wr_data(0xff);	}		for(i=1;i<=30;i++)	{		wr_command(0x80+i);		wr_command(0x80);		wr_data(0x80);		wr_data(0);		for(j=0;j<=13;j++)		{wr_data(0);		wr_data(0);		}		wr_command(0x80+i);		wr_command(0x80+7);		wr_data(0);		wr_data(1);		wr_command(0x80+i);		wr_command(0x80+8);		wr_data(0x80);		wr_data(0);		wr_command(0x80+i);		wr_command(0x80+15);		wr_data(0);		wr_data(1);	}	wr_command(0x80+31);		wr_command(0x80);	for(i=0;i<=15;i++)	{		wr_data(0xff);				wr_data(0xff);	}	wr_command(0x36);	//设定绘图显示ON	// 		}//--------------------------------------------------------------------------------------uchar light_temp=0x018;uchar key2_t=0;uchar key3_t=0;void up_dis(){	if(key2)	{		key2=0;		key2_t++;		if(key2_t>=40)		{			key2_t=0;			if(light_temp <= 0x1f)			{				light_temp +=1;				wr_command(0x80|light_temp);			}		}	}}void down_dis(){	if(key3)	{		key3=0;		key3_t++;		if(key3_t>=40)		{			key3_t=0;			if(light_temp > 1)			{								light_temp -=1;				wr_command(0x80|light_temp);			}		}	}}void keyfun(){ 	if(key1)	//如果按下,即key1=1,表示处于单步状态	{		for(;;)		{					up_dis();down_dis();			if(key4)	{key4=0;	break;}			if(!key1)	{break;}				//if(key2) break;		}	}	 	if(!key1)  delay500ms();}void sleep(){	dis_interface_num(0x00,0x00);	wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();	//清除显示	wr_command(0x02);	//地址归位	wr_command(0x34);	//扩充指令集	wr_command(0x08);	//睡眠}void wakeup(){	wr_command(0x34);	//扩充指令集	wr_command(0x0c);	//退出睡眠}//------------------------------------------------------------------------------------------------//显示屏初始化//------------------------------------------------------------------------------------------------void flow_init(void){	 delay1ms(); delay1ms(); 	// give our RES signal	wr_command(0x30);delay100us();	//基本指令集    wr_command(0x30);delay100us();	//指令集    wr_command(0x30);delay100us();	//指令集    wr_command(0x30);delay100us();	//指令集	//wr_command(0x02);delay100us();	//地址归位    wr_command(0x01);delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();	//清除显示	wr_command(0x06);delay100us();	//右移	//wr_command(0x07);delay100us();	//画面整体右移	//wr_command(0x0c);delay100us();	//整体显示ON	//wr_command(0x34);	//扩充指令集	//wr_command(0x30);	//基本指令集	_nop_();}//------------------------------------------------------------------------------------------------//主程序//------------------------------------------------------------------------------------------------void test_LCD_(void){	int *p = (int *)0xffe00000;	    *(p+4) = CS4_Var;  // R/W enable CS4    *(p+9) = 0x4; // CS4    flow_init();	while(1)	{			 		dis_char();// 		keyfun();// delay1s();		dis_frame();delay500ms();// 		//display frame		keyfun();// //delay1s();		dis_interface(1);delay500ms();// 	//screen number:2,6,7,10,11,12,13		keyfun();// delay1s();		dis_interface(2);delay500ms();// 	//screen number:2,6,7,10,11,12,13		keyfun();// //delay1s();		dis_interface(3);delay500ms();// 	//screen number:2,6,7,10,11,12,13		keyfun();// //delay1s();		dis_interface(4);delay500ms();// 	//screen number:2,6,7,10,11,12,13		keyfun();// //delay1s();		dis_interface(5);delay500ms();// 	//screen number:2,6,7,10,11,12,13		keyfun();// //delay1s();		dis_interface(6);delay500ms();// 	//screen number:2,6,7,10,11,12,13		keyfun();// //delay1s();		dis_interface(7);delay500ms();// 	//screen number:2,6,7,10,11,12,13		keyfun();// //delay1s();		dis_interface(8);delay500ms();// 	//clear		keyfun();// //delay1s();		//dis_gosleep();		//sleep();delay500ms();// 	//screen number:2,6,7,10,11,12,13		//keyfun();// 		//dis_wakeup();		//delay500ms();wakeup();TR0 = 1; /* stop timer 0 */		//wr_command(0x07);delay100us();	//右移		dis_all();	}}

⌨️ 快捷键说明

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