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

📄 ocm240128.c

📁 OCM240128-7.rar
💻 C
📖 第 1 页 / 共 2 页
字号:





/******************************************************************************************
**  函数名称:			void OCM_bit(uchar bite, uchar byte)
**  功能描述:			位操作 (Bit set reset) 
**  输入参数:			byte:	(0~7有效)显示单元中的数据的任一位写“0”或“1”
						bite:		0:byte选择的为置0,非0:byte选择的位置1
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_bit(uchar bite, uchar byte)
{
	uchar tmp = byte;
	
	if (bite)						//bite转换为位		
	{
		bite = 1;
	}
	else
	{
		bite = 0;
	}
	
	tmp &= 0X07;					//后3位有效
	
	while (!OCM_busy(0));			//单次读写遇忙判断
	
	C_Addr = 0XF0 | (bite << 3) | tmp;		//写命令字
}



/******************************************************************************************
**  函数名称:			void OCM_onewr(uchar mod,uchar dat)
**  功能描述:			单次写液晶函数
**  输入参数:			mod:	mod =0: 地址加一	
								=1:地址减一		
								=2:	地址不变  
								其他: 地址不变 
						dat:	数据
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_onewr(uchar mod, uchar dat)					
{												
	while (!OCM_busy(0));						
	D_Addr = dat;								
	while (!OCM_busy(0));						
	switch (mod)								
	{											
		case 0:	C_Addr = 0XC0; break;			
		case 1:	C_Addr = 0XC2; break;			
		case 2:	C_Addr = 0XC4; break;			
		default:C_Addr = 0XC4; break;			
	}											
}

/******************************************************************************************
**  函数名称:			uchar OCM_onerd(uchar mod,uchar dat)
**  功能描述:			单次读液晶函数
**  输入参数:			mod:	mod =0: 地址加一	
								=1:地址减一		
								=2:	地址不变  
								其他: 地址不变 
**  输出参数:			uchar   读到的数据
**  全局变量:			无
**  调用模块:   		无
*******************************************************************************************/			
uchar OCM_onerd(uchar mod)							
{	
	uchar dat;											
	switch (mod)								
	{											
		case 0:	C_Addr = 0XC1; break;			
		case 1:	C_Addr = 0XC3; break;			
		case 2:	C_Addr = 0XC5; break;			
		default:C_Addr = 0XC5; break;			
	}	
	
	dat = D_Addr;							//读数据
	
	return (dat);										
}	




/******************************************************************************************
**  函数名称:			void OCM_autrd(uchar addr, uchar num, uchar *p)
**  功能描述:			自动读液晶函数
**  输入参数:			addr:	液晶开始读的地址
						num:	自动读数据的个数
						*p:		读到数据的存储区
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_autrd(uint addr, uchar num, uchar *p)
{
	uchar i;
	
	OCM_ac(2,addr);				//显示地址设置
	OCM_autrd_start();			//启动自动读操作
	
	for (i = 0; i < num; i++)
	{
		while (!OCM_busy(1));	//自动读忙检查
		p[i] = D_Addr;			//读数据
	}
	
	OCM_autrd_stop();			//自动读操作结束	
}



/******************************************************************************************
**  函数名称:			void OCM_autwr(uint addr, uchar num, uchar *p)
**  功能描述:			自动写液晶函数
**  输入参数:			addr:	液晶开始写的地址
						num:	自动写数据的个数
						*p:		写数据区
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_autwr(uint addr, uchar num, uchar *p)
{
	uchar i;
	
	OCM_ac(2,addr);				//显示地址设置
	OCM_autwr_start();			//启动自动写操作
	
	for (i = 0; i < num; i++)
	{
		while (!OCM_busy(2));	//自动写忙检查
		D_Addr = p[i];			//写数据
	}
	
	OCM_autwr_stop();			//自动写操作结束	
}


/******************************************************************************************
**  函数名称:			void OCM_picture(uint addr, uchar w, uchar h, uchar *tab)
**  功能描述:			图像显示
						图形的高和宽必须设置正确
**  输入参数:			addr: 显示起始地址
						h:	图像高(点单位)	横向取模方式	
						w:  图像宽(点单位)
						*tab:	地址必须是2维数组地址
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_picture(uint addr, uchar w, uchar h, uchar *tab)
{
	uchar j;
	
	for (j = 0; j < h; j++)
	{
		OCM_autwr(addr + (30 * j), w / 8, tab + j * w/8);	//j*w/8:计算偏移地址	
	}
	
}

/******************************************************************************************
**  函数名称:			void OCM_picture_lcr(uint addr, uchar w, uchar h)
**  功能描述:			清图像函数,清除图像
						图形的高和宽必须设置正确
**  输入参数:			addr: 显示起始地址
						h:	图像高(点单位)	横向取模方式	
						w:  图像宽(点单位)
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_picture_clr(uint addr, uchar w, uchar h)
{
	uchar i,j;
	
	for (j = 0; j < h; j++)
	{
		OCM_ac(2,addr + (30 * j));				//显示地址设置
		OCM_autwr_start();			//启动自动写操作
	
		for (i = 0; i < w / 8; i++)
		{
			while (!OCM_busy(2));	//自动写忙检查
			D_Addr = 0x00;			//写数据
		}
		
		OCM_autwr_stop();			//自动写操作结束
	}
	
}


/******************************************************************************************
**  函数名称:			void OCM_line_clr(uint addr,uchar dat)
**  功能描述:			单行清除数据
**  输入参数:			dat:		清屏数据
						addr: 		地址
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_line_clr(uint addr,uchar dat)
{
	uchar i;
	
	OCM_ac(2,addr);						//文本显示地址设置
	OCM_autwr_start();					//启动自动写操作
	
	for (i = 0; i < 30; i++)
	{
		while (!OCM_busy(2));			//自动写忙检查
		D_Addr = dat;					//写数据
	}
	OCM_autwr_stop();					//自动写操作结束
}


/******************************************************************************************
**  函数名称:			void OCM_clr(uchar dat)
**  功能描述:			清屏函数
**  输入参数:			dat:		清屏数据
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_clr(uchar dat)
{
	uint i;
	
	/*	文本清零												*/
	OCM_ac(2,Text_Addr);				//文本显示地址设置
	OCM_autwr_start();					//启动自动写操作
	
	for (i = 0; i < 500; i++)
	{
		while (!OCM_busy(2));			//自动写忙检查
		D_Addr = dat;					//写数据
	}
	OCM_autwr_stop();					//自动写操作结束
	
	/*	图形清零												*/
	OCM_ac(2,Figure_Addr);				//图形显示地址设置
	OCM_autwr_start();					//启动自动写操作
	
	for (i = 0; i < 0X1000; i++)
	{
		while (!OCM_busy(2));			//自动写忙检查
		D_Addr = dat;					//写数据
	}
	
	OCM_autwr_stop();					//自动写操作结束	
}



/******************************************************************************************
**  函数名称:			void OCM_init(void)
**  功能描述:			OCM240128初始化函数
						初始化内容:文本显示首地址,文本显示宽度,图形显示首地址,图形显示宽度
								光标显示行数(0~7行)
								文本图形显示方式(或,与,异或,双属性文本),CGROM开关
								光标显示,光标闪烁,文字显示,图形显示		
**  输入参数:			无
**  输出参数:			无
**  全局变量:			无
**  调用模块:   		无
******************************************************************************************/
void OCM_init(void)
{		
	OCM_area(0, Text_Addr);			//文本显示区首地址为0X0000
	OCM_area(1, 30);				//文本显示区宽度30字节一行
	OCM_area(2, Figure_Addr);		//图形显示区首地址0X0800
	OCM_area(3, 30);				//图形显示区宽度30字节一行
	
	OCM_cursor(7);					//光标8行
	OCM_mode(0,EN_CGROM);			//逻辑或方式合成,启用CGRAM
	OCM_state((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3));//光标显示,图形文字同时显示
	
	OCM_bit(0, 0);					//防止编译器警告
	
	OCM_clr(0);						//清屏
}









/*-------------------------------------------------------------------------------------------------------------------
						Children Function End
						液晶显示子程序结束
--------------------------------------------------------------------------------------------------------------------*/

⌨️ 快捷键说明

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