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

📄 lm6800.c

📁 LM6800程序!! !!!有详细的注解和说明!只要把引脚改好就可以使用了
💻 C
📖 第 1 页 / 共 2 页
字号:
		{			OutPutData.amount=*(data_temp+1);			OutPutData.OutData=*data_temp;			OutPutData.AddNum +=2;		}	}	else	{		OutPutData.amount=1;		OutPutData.OutData=*data_temp;		OutPutData.AddNum +=1;	}} //------------------------------图形解压算法处理------------------------------------//------------------------------------//功    能:写一屏图形192*64//函数描述:void w_data_bmp(uint *p_data){		uchar j;	uchar i=0,pager=0,datatemp=0,col_add=0;	LCD_RW=0;	_nop_();_nop_();	LCD_RS=0;	delay100us();		OutPutData.amount=0;	//压缩处理		for(pager=0;pager<8;pager++)	{		for(j=0;j<4;j++)		{			i=64;			s_chip(j);			delay100us();			datatemp = 0xb8|pager;				//写页			wcode(datatemp);			_nop_();_nop_();			datatemp = 0x40|col_add;	//0xc0		//写列地址			wcode(datatemp);			_nop_();_nop_();			while(i>0)			{					if(OutPutData.amount==0)				{					Decompression(p_data);					p_data +=OutPutData.AddNum;				}				wdata(OutPutData.OutData);				OutPutData.amount--;				i--;			}					}	}}//------------------------------------ void	w_data_entw()			//显示托微英文{	w_data_page(1,64,topway_en1,6);	w_data_page(2,40,topway_en2,14);}//------------------------------------ void	w_data_allscreen(uint *p_data)			//显示英文{	uchar k;	uchar col_add=0;	for(k=0;k<8;k++)	{		w_data_page(k,0,p_data,6);		w_data_page(k,48,p_data,6);		w_data_page(k,96,p_data,6);		w_data_page(k,144,p_data,6);		w_data_page(k,192,p_data,6);		w_data_page(k,240,p_data,6);	}}//------------------------------------------------------------------------------------------------//以下是应用函数//------------------------------------------------------------------------------------------------//功    能:显示多屏图形void w_data_tu(uchar i){	switch(i)		{			case 0:				w_data_bmp(HZ0);				break;			case 1:				break;		}	}void wr_dis_h(uchar aa,bb){	uchar i,j,k;	uchar col_add=0;for(k=0;k<4;k++){	col_add=0;	s_chip(k);	for(j=0;j<8;j++)	{		wcode(0xb8|j);		for(i=0;i<32;i++)		{	wdata(aa);			wdata(bb);		}	}}}//------------------------------------------------------------------------------------------------//以下是演示函数//------------------------------------------------------------------------------------------------void wr_dis(uchar dis_data){	uchar i,j,k,pager_temp;for(k=0;k<4;k++){		s_chip(k);	for(i=0;i<8;i++)	{		pager_temp=0xb8|i;				//写页		wcode(pager_temp);		for(j=0;j<64;j++)		wdata(dis_data);	}}}void dis_test(uchar dis_number)	//screen number:2,6,7,10,11,12,13{	switch(dis_number)		{			case 1:				wr_dis(0xff);				break;			case 2:				wr_dis(0x00);				break;			case 3:				wr_dis(0x55);				break;			case 4:				wr_dis(0xaa);				break;			case 5:				wr_dis_h(0x55,0xaa);				break;			case 6:				wr_dis_h(0xaa,0x55);				break;			case 7:				wr_dis_h(0xff,0x00);				break;			case 8:				wr_dis_h(0x00,0xff);				break;			default:				error_num=2;				break;		}}void display_frame(){	uchar i,j,k,m;	dis_test(2);for(m=0;m<4;m++){	s_chip(m);	wcode(0xb8|0);	wcode(0x40);	wdata(0xff);	for(k=0;k<62;k++)		wdata(0x01);	wdata(0xff);		for(j=1;j<7;j++)	{		wcode(0xb8|j);		wcode(0x40);		wdata(0xff);		for(i=0;i<62;i++)			wdata(0x00);		wdata(0xff);	}		wcode(0xb8|7);	wcode(0x40);	wdata(0xff);	for(k=0;k<62;k++)		wdata(0x80);	wdata(0xff);}}//------------------------------------------------------------------------------------------------//以下是按键功能函数//------------------------------------------------------------------------------------------------void time0_scan() interrupt 1 using 2{	bit cs11=0,cs22=0;	cs11=LCD_CS1;	cs22=LCD_CS2;	LCD_CS1=1;	LCD_CS2=1;		temp_P1=P1;	temp_P3=P3;	key_temp=0x00;	P1=temp_P1|0x0f;	P3=temp_P3&0xfe;	_nop_();_nop_();	_nop_();_nop_();	key_temp=P1|0xf0;	_nop_();_nop_();	_nop_();		if(key_temp==0xfe)	{		key1=0;		key2=0;		key3=0;		key4=0;	}//key1按下时为单步	else if(key_temp==0xfd)	{		key2=1;		key3=0;		key4=0;	}	else if(key_temp==0xfb)	{		key3=1;		key2=0;		key4=0;	}	else if(key_temp==0xf7)	{		key4=1;		key2=0;		key3=0;	}	TH0=0xe1;	TL0=0xdf;//置定时器1初值0xffff-20000	P3=temp_P3|1;	P1=temp_P1;	_nop_();_nop_();	_nop_();	LCD_CS1=cs11;	LCD_CS2=cs22;	_nop_();_nop_();	_nop_();_nop_();}uchar light_temp=0x18;uchar key2_t=0;uchar key3_t=0;void keyfun(){EA = 1;TR0 = 1;	if(key1)	//如果按下,即key1=1,表示处于单步状态	{		for(;;)		{					if(key4)			{				key4=0;				break;			}			if(!key1)				break;		}	}	EA = 0;	TR0 = 0;	if(!key1)		delay500ms();}//---------------------------------------------------------------------------------void LCD_init(){	uchar i,j,k;	for(k=0;k<3;k++)	{		LCD_RST=1;		LCD_RST=0;		delay1ms();		LCD_RST=1;		delay1ms();	}	for(k=0;k<4;k++)	{		s_chip(k);		wcode(0x3e);	//打开显示屏		wcode(0xc0);	//置Z向首地址为0		wcode(0xB8);	//置X地址为首页首列0		wcode(0x40);	//置Y向首地址为0		for(i=0;i<8;i++)	//clear lcd		{			wcode(0xb8|i);			for(j=0;j<128;j++)			wdata(0);		}		wcode(0x3f);	//打开显示屏	}	}//------------------------------------------------------------------------------------------------//以下是主函数//------------------------------------------------------------------------------------------------void main(){	delay1ms();	DATABUS=0xff;	SP=0x60;	LCD_RST=1;		//LCD_RST=0;delay100ms();LCD_RST=1;delay100ms();	P3=0x98;	LCD_CS1=1;	LCD_CS2=1;	LCD_RW=0;	LCD_RS=0;	EA = 0;			/* disable interrupts */	LCD_init();		IE   = 0x82;  	TMOD = 0x01;    /* TMOD */ 	TH0=0xe1;	TL0=0xdf;//置定时器1初值0xffff-20000	_nop_();	TR0 = 0;	while(1)	{		dis_test(2);		w_data_tu(0);		delay500ms();		keyfun();		//显示托微电子		dis_test(1);		delay500ms();		keyfun();		display_frame();		delay500ms();		keyfun();		dis_test(2);		delay500ms();		keyfun();		dis_test(3);		delay500ms();		keyfun();		dis_test(4);		delay500ms();		keyfun();			dis_test(5);		delay500ms();		keyfun();		dis_test(6);		delay500ms();		keyfun();			dis_test(7);		delay500ms();		keyfun();			dis_test(8);		delay500ms();		keyfun();		w_data_allscreen(topway_a);		delay500ms();		keyfun();		w_data_allscreen(topway_b);		delay500ms();		keyfun();		w_data_allscreen(topway_c);		delay500ms();		keyfun();	}}

⌨️ 快捷键说明

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