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

📄 msp430子程序(液晶控制器子程序).cpp

📁 LCD_disp是针对SMS0810B型号液晶的汇编语言;其他的是与430单片机有关的C代码
💻 CPP
字号:
#define WC_ADD XBYTE[0xC100] 
#define WD_ADD XBYTE[0xC000] 
#define RD_ADD XBYTE[0xC100] 
#define RB_ADD XBYTE[0xC000] 

void INTR(void); 
void CLEAR(void); /* 信号输入 x [0---319] ,y [0---239] */ 
void CCTW(unsigned int x,unsigned char y,unsigned char m,unsigned char n,unsigned char *p); 
void dot (unsigned int x,unsigned char y,bit c); /* c=1 划点 c=0 取消点*/ 




void INTR(void) 
{ 
	unsigned char code SYSTAB[]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00}; // control parameter 
	unsigned char code SCRTAB[]={0x00,0x00,0xf0,0x00,0x40,0xf0,0x00,0x80,0x00,0x00}; 
	unsigned char i=0x0; 

	WC_ADD = 0x40; 
	for(i = 0 ;i < 8; i++) 
	{ 
		WD_ADD = SYSTAB[i]; 
	} 
	WC_ADD = 0x44; 
	for(i = 0;i < 10;i++) 
	{ 
		WD_ADD = SCRTAB[i]; 
	} 
	WC_ADD = 0x5a; 
	WD_ADD = 0x0; 
	WC_ADD = 0x5b; 
	WD_ADD = 0x0; 
	WC_ADD = 0x59; 
	WD_ADD = 0x54; 

} 

void CLEAR(void) 
{ 
	unsigned char i=0,j=0; 

	WC_ADD = 0x4c; 
	WC_ADD = 0x46; 
	WD_ADD = 0x0; 
	WD_ADD = 0x0; 
	WC_ADD = 0x42; 
	for(i = 0;i < 255;i++) 
	{ 
		for(j = 0;j < 255;j++) 
		{ 
			WD_ADD = 0x0; 
		} 
	} 
} 

void CCTW(unsigned int x,unsigned char y,unsigned char m,unsigned char n,unsigned char *p) 
{ 
	unsigned char ap=0x28,i,j,k,tt=0,uu=0,rr=0,ee=0,ff=0,gg=0; /*ap 修改 P7, 行字符个数 */ 
	unsigned int l; 

	tt = x%8; 
	x=x/8; 
	l = y*ap + x+0x4000; 
	x = (unsigned char)(l&0x00ff); 
	y = (unsigned char)((l&0xff00)>>8); 


	WC_ADD=0x4c; /*设置光标“右”移动方式 */ 

	for(i=0;i< n;i++) 
	{ 
		WC_ADD = 0x46; /* 光标指针设置 */ 
		WD_ADD = x; /* 光标地址16位 */ 
		WD_ADD = y; 


		if(tt==0) 
		{ 
			WC_ADD = 0x42; /* 连续写入数据*/ 

			for (j=0;j { 
				WD_ADD = *p; 
				p++ ; 
			} 
		} /* 0 1 2 3 */ 
		else { /* 0---7 8---16 17---24 25---32*/ 

			for(j=0;j { 

				RD_ADD=0x43; /* 读数据 */ 
				uu=RD_ADD; 
				rr=RD_ADD; 

	/*-----------------------------------------------------*/ 
				gg=*p; /* 处理数据*/ 
				p++; 
				k=uu>>(8-tt); 
				k=k<<(8-tt); // 高位 
				ee=k; 
			k=gg>>tt; // 移高位作为低位 
			ee=ee|k; 
			/*-----------*/ 
			k=rr< k=k>>tt; // 低位 
			ff=k; 
			k=gg<<(8-tt); 
			ff=ff|k; 
	/*--------------------------------------------------------------*/ 

			WC_ADD=0x4d; /*改变光标“左”移动方式 */ 
			RD_ADD=0x43; 
			k=RD_ADD; 
			k=RD_ADD; 

			WC_ADD=0x4c; /*非复光标“右”移动方式 */ 

			WC_ADD = 0x42; /* 送数据两个 */ 

			WD_ADD =ee; 
			WD_ADD =ff; 

	/*本送一个数据,前面送了两个,需要返回一个*/ 

			WC_ADD=0x4d; /*改变光标“左”移动方式 */ 
			RD_ADD=0x43; 
			k=RD_ADD; 
			k=RD_ADD; 

			WC_ADD=0x4c; /*非复光标“右”移动方式 */ 
			RD_ADD=0x43; 
			k=RD_ADD; 
			} 



		} 


	l=(ap+x+(y<<8)); 
	x=(unsigned char)(l&0x00ff); 
	y=(unsigned char)((l&0xff00)>>8); 
	} 



} 

void dot (unsigned int x,unsigned char y,bit c) 
{ 

	unsigned char ap=0x28,tt=0,uu=0,gg=0,k=0; /*ap 修改 P7, 行字符个数 */ 
	unsigned int l=0; 

	tt = x%8; 
	x = x/8; 
	l = y*ap + x+0x4000; 
	x = (unsigned char)(l&0x00ff); 
	y = (unsigned char)((l&0xff00)>>8); 

	WC_ADD = 0x4c; 
	WC_ADD = 0x46; /* 光标指针设置 */ 
	WD_ADD = x; /* 光标地址16位 */ 
	WD_ADD = y; 
	RD_ADD=0x43; /* 读数据 */ 
	uu=RD_ADD; 

	if(c) 
	{ 
		gg = 1; 
		gg =gg<<(7-tt); 
		uu=uu|gg; 
	} 
	else { 
		gg = 1; 
		gg =gg<<(7-tt); 
		gg = ~gg; 
		uu=uu&gg; 
	} 

	WC_ADD=0x4d; 
	RD_ADD=0x43; 
	k=RD_ADD; 

	WC_ADD = 0x4c; /*非复光标“右”移动方式 */ 
	WC_ADD = 0x42; /* 送数据两个 */ 
	WD_ADD = uu; 

} 
 

⌨️ 快捷键说明

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