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

📄 driver.c

📁 波形液晶显示! 波形液晶显示! 波形液晶显示! 波形液晶显示!
💻 C
字号:
	#include<MABIAO.h>
	#include<reg52.h>
	#include<absacc.h>

	#define disp_on 0x3f
	#define disp_off 0x3e
	#define page_0 0xb8
	#define col_0 0x40
	#define line_0 0xc0

	#define cs XBYTE[0X8000]
	#define wc XBYTE[0XA000]
	#define wd XBYTE[0XA001]
	#define bs XBYTE[0XA002]
	#define uchar unsigned char	
	#define uint unsigned int

	extern uchar flag1,zhi;
	extern bit flag2;
	bit flag3,flag4;
	uchar wjs1,wjs2,le,p,js=1;
	uchar a[3],b[3];
	uint BAUD=9600;

	void delay(uint j)
	{
		uint i;
		for(i=0;i<j;i++);
	}

	void lcdbusy()
	{
		while((bs&0x80)!=0);
	}

	void write_command(uchar cmd)
	{
		lcdbusy();
		wc=cmd;
	}

	void write_data(uchar dat)
	{
		lcdbusy();
		wd=dat;
	}

	void lcd_init()
	{
		write_command(disp_off);
		cs=0x30;
		write_command(line_0);
		write_command(page_0);
		write_command(col_0);
		write_command(disp_on);
		delay(20);
	}

	void clr_scr()
	{
		uchar i,j;
		cs=0x10;
		for(i=0;i<8;i++)
		{
			write_command(page_0+i);
			write_command(col_0);
			for(j=0;j<64;j++)
				write_data(0x00);
		}
		cs=0x20;
		for(i=0;i<8;i++)
		{
			write_command(page_0+i);
			write_command(col_0);
			for(j=0;j<64;j++)
				write_data(0x00);
		}
	}

	void sz_disp(uchar page,uchar col,uchar *p)
	{
		uchar i,j;
		for(i=0;i<2;i++)
		{
			write_command(page_0+page+i);
			write_command(col_0+col);
			for(j=0;j<8;j++)
				write_data(*p++);
		}
	}

	void hz_disp(uchar page,uchar col,uchar *p)
	{
		uchar i,j;
		for(i=0;i<2;i++)
		{
			write_command(page_0+page+i);
			write_command(col_0+col);
			for(j=0;j<16;j++)
				write_data(*p++);
		}
	}

	void start_msg()
	{
		clr_scr();
		delay(100);
		cs=0x10;
		hz_disp(0,0,jiantou);
		sz_disp(0,16,&shuzi[16]);
		hz_disp(0,32,hz);
		hz_disp(0,48,&hz[32]);
		sz_disp(2,16,&shuzi[32]);
		hz_disp(2,32,&hz[32*4]);
		hz_disp(2,48,&hz[32*5]);
		sz_disp(4,16,&shuzi[48]);
		hz_disp(4,32,&hz[32*9]);
		hz_disp(4,48,&hz[32*10]);
		cs=0x20;
		hz_disp(0,0,&hz[32*2]);
		hz_disp(0,16,&hz[32*3]);
		hz_disp(2,0,&hz[32*6]);
		hz_disp(2,16,&hz[32*7]);
		hz_disp(2,32,&hz[32*8]);
		hz_disp(4,0,&hz[32*11]);
		hz_disp(4,16,&hz[32*12]);
	}

	void bxcsh()
	{
		unsigned i,j;
		clr_scr();
		cs=0x10;
		for(i=0;i<8;i++)
		{
			write_command(page_0+i);
			write_command(col_0);
			for(j=0;j<64;j++)
				write_data(boxin_img[i*128+j]);
		}
		cs=0x20;
		for(i=0;i<8;i++)
		{
			write_command(page_0+i);
			write_command(col_0);
			for(j=64;j<128;j++)
				write_data(boxin_img[i*128+j]);
		}
	}

	void xuanze()
	{
		clr_scr();
		cs=0x10;
		hz_disp(0,0,jiantou);
		sz_disp(0,16,&shuzi[16]);
		sz_disp(0,32,&shuzi[16*9]);
		sz_disp(0,40,&shuzi[16*6]);
		sz_disp(0,48,shuzi);
		sz_disp(0,56,shuzi);
		sz_disp(2,16,&shuzi[16*2]);
		sz_disp(2,32,&shuzi[16*4]);
		sz_disp(2,40,&shuzi[16*8]);
		sz_disp(2,48,shuzi);
		sz_disp(2,56,shuzi);
		sz_disp(4,16,&shuzi[16*3]);
		sz_disp(4,32,&shuzi[16*2]);
		sz_disp(4,40,&shuzi[16*4]);
		sz_disp(4,48,shuzi);
		sz_disp(4,56,shuzi);
	}

	void fuzhi()
	{
		clr_scr();
		cs=0x10;
		hz_disp(2,0,&hz[32*13]);
		hz_disp(2,16,&hz[32*14]);
		hz_disp(2,32,&hz[32*15]);
		hz_disp(2,48,&hz[32*16]);
	}

	void zhixs()
	{
		uint i;
		cs=0x20;
		if(flag4==1)
		{
			flag4=0;
			for(i=0;i<2;i++)
				hz_disp(2,i*8,kongbai);
		}
		for(i=0;i<js;i++)
			sz_disp(2,i*8,&shuzi[16*b[i]]);
	}

	void zhdcsh()
	{
		TMOD=0X22;
		SCON=0X50;
		IP=0X14;
		TH1=(-11059200/12/32/BAUD);
		TL1=TH1;
		TR1=1;
		TH0=(-200);
		TL0=TH0;
		EA=1;
		ES=1;
		ET0=1;
		EX1=1;
		IT1=1;
	}

	void ckcsh()
	{
		TR1=0;
		TH1=(-11059200/12/32/BAUD);
		TL1=TH1;
		TR1=1;	
	}

	void boxin()interrupt 1
	{
		uint i;
		le++;
		if(le==119)
			le=0;
		if(le<55)
		{
			uint i;
			cs=0x10;
			for(i=0;i<5;i++)
			{
				write_command(page_0+i);
				write_command(col_0+9+le);
				write_data(0x00);
			}
			write_command(page_0+4-zhi/51);
			write_command(col_0+9+le);
			write_data(c[zhi%51]);
		}
		else
		{
			cs=0x20;
			for(i=0;i<5;i++)
			{
				write_command(page_0+i);
				write_command(col_0+le-55);
				write_data(0x00);
			}
			write_command(page_0+4-zhi/51);
			write_command(col_0+le-55);
			write_data(c[zhi%51]);	
		}
	}

	void shou()interrupt 4
	{
		uchar zcun;
		int i;
		if(RI==1)
		{
			RI=0;
			zcun=SBUF;
			if(zcun<='9'&&zcun>='0')
			{
				a[p]=zcun-'0';
				p++;
			}
			else
			{
				zhi=0;
				for(i=0;i<p;i++)
				{
					zhi=zhi*10+a[i];
					b[i]=a[i];
					a[i]=0;
				}
				js=p;
				p=0;
				flag4=1;
			}
		}
	}

	void xuanxiang()
	{
		if((flag2==1)&&(flag1==1))
		{
			cs=0x10;
			if(wjs2==2)
			{
				wjs2=0;
				hz_disp(4,0,kongbai);
				hz_disp(0,0,jiantou);
			}
			else
			{
				hz_disp(2*wjs2,0,kongbai);
				hz_disp(2*(wjs2+1),0,jiantou);
				wjs2++;
			}
		}
		if(flag2==0)
		{
			flag1++;
			cs=0x10;
			if(flag1==3)
			{
				flag1=0;
				wjs1=0;
				hz_disp(4,0,kongbai);
				hz_disp(0,0,jiantou);
			}
			else
			{
				hz_disp(2*wjs1,0,kongbai);
				hz_disp(2*(wjs1+1),0,jiantou);
				wjs1++;
			}
		}
	}

	void queding()interrupt 2
	{
		if((flag2==1)&&(flag1==1))
		{
			if(wjs2==0)
				BAUD=9600;
			else if(wjs2==1)
				BAUD=4800;
			else if(wjs2==2)
				BAUD=2400;
			ckcsh();
			flag1=0;
			flag2=0;
			wjs1=0;
			wjs2=0;
			start_msg();
		}
		else if(flag2==0)
		{
			flag2=!flag2;
			if(flag1==0)
			{
				bxcsh();
				TR0=1;
			}
			else if(flag1==1)
				xuanze();
			else
				fuzhi();
		}
		else
		{
			TR0=0;
			delay(100);
			flag1=0;
			flag2=0;
			wjs1=0;
			wjs2=0;
			start_msg();
		}
	}

⌨️ 快捷键说明

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