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

📄 240160b.c

📁 基于C8051F020单片机的LCD显示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               重庆东电通信技术有限公司
**                                     生产技术部
**
**                                 http://www.dodem.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文   件   名: 240160b.c
** 创   建   人: 陈龙永
** 最后修改日期: 2004年7月5日
** 描        述: 台湾晶采光电液晶240x160B,控制器SED1335F的驱动模块,包括图形方式下字符,汉字的显示程式
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈龙永
** 版  本: V1.0
** 日 期: 2004年7月5日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人: 
** 版  本: 
** 日 期: 
** 描 述: 
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 陈龙永
** 日 期: 2004年7月5日
** 描 述: 240x160B液晶驱动函数
**            
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/*******************************************************************************************************
** 液晶接口情况表述:
**	No: LCM ----- F022
**	---------------------
**	1...RESET..... 复位					复位信号,低电平有效,阻容式复位电路
**	2.../RD  ..... P13					读有效
**	3.../WR  ..... P14					写有效
**	4.../CS  ..... P15					液晶片选信号,低有效
**	5...A0   ..... P16					寄存器选择信号,命令数据方式选择
**	6...D0   ..... P6.0					数据总线 D0
**	7...D1   ..... P6.1					数据总线 D1
**	8...D2   ..... P6.2					数据总线 D2
**	9...D3   ..... P6.3					数据总线 D3
**	10..D4   ..... P6.4					数据总线 D4
**	11..D5   ..... P6.5					数据总线 D5
**	12..D6   ..... P6.6					数据总线 D6
**	13..D7   ..... P6.7					数据总线 D7
**	14..VDD  ..... +3.3V				电源
**	15..VSS  ..... GND					地线                                   
**	16..VLCD ..... +25V					25V电压输出
**	17..VADJ ..... VO                   对比度调整输入
**	18..ELON ..... P17					背光打开/关闭
	19,20    ..... NC

**	间接方式,无须上拉电阻,所以数据口和控制口应设置为推挽输出方式
********************************************************************************************************/


#include "c8051F020.h"
#include "dotlib1.h"


#define Uchar unsigned char 
#define Uint unsigned int
//240x160b,SED1335定义
#define	paraP9		0x1e		//相对于240x160
//光标移动方向设置,后续参数:无
#define CsrDirR		0x4c
#define CsrDirL		0x4d
#define CsrDirU		0x4e
#define CsrDirD		0x4f
/* 该指令规定了光标指针CSR在计算机读写显示数据后自动修复的方向,从显示效果来说,
就是光标移动的方向设置.该指令的两个参数位DR1,DR0:
		===========================
		  DR1 DR0   自动定位方向
		===========================
		   0   0    右
		   0   1    左
		   1   0    上
		   1   1    下
		===========================
*/

//光标指针设置
#define	CsrW		0x46
/* 该指令设置了光标指针CSR.该指针有两个功能:1.作为当前光标显示的位置;2.作为
显示存储器当前的地址指针.2个参数:CSRL,CSRH
[说明]:当光标指针指向有效显示区域之外时,光标将自动消失,但不影响显示数据的读写.
光标指针在计算机的每次读写显示数据操作后,将根据最近设置的光标指针移动方向而自动
修正.光标指针不受画面滚动操作的影响.
*/

//读取光标指针
#define	CsrR		0x47
/* 该指令代码写入后,计算机将从SED1335等数据通道读出当前的光标指针值.光标指针读
出的顺序是先CSRL再CSRH.
*/

//数据写入设置,后续参数N字节
#define	mWrite		0x42
/*该指令写入后将允许计算机连续的向显示存储器内写入数据,写入的单元地址由光标指针
CSR提供,写操作完成后光标指针自动根据所设置的光标指针移动方向进行修改,显示数据
写入操作在计算机写入下一指令代码后结束.
*/

//数据读取设置,后续参数N字节
#define	mRead		0x43
/*该指令写入将允许计算机连续地从显示存储器内读取数据,读取的单元地址由光标指针
CSR提供读操作完成后,光标指针自动根据所设定的光标移动方向进行修改.显示数据读取
操作在计算机写入下一个指令代码后结束.
*/

////////////////////////////////////////////////////////////////////
//
/////////////液晶MODULE 240x160b,SED1335F0B驱动函数/////////////////
//
////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
// 函数:void WriteCmd(unsigned char cmd)(私有函数,其他模块不能调用)
//-----------------------------------------------------------------------------
/******************************************************************************
 调用方式(Function):WriteCmd()  
 函数描述(Description):指令写入函数
 入口参数(Parameters):无
 返回值(Returns):无
 创建时间:16:07,PM,2004.4.19
 修改时间:无
 修改原因:无
******************************************************************************/
void WriteCmd(Uchar cmd)	
{
	RD=1;
	A0=1;
	P6=cmd;
	CS=0;
	WR=0;
	WR=1;
	CS=1;
}


//-----------------------------------------------------------------------------
// 函数:void WriteData(unsigned char datalcd) (私有函数,其他模块不能调用)
//-----------------------------------------------------------------------------
/******************************************************************************
 调用方式(Function):WriteData(datalcd) 
 函数描述(Description):数据和指令的附属参数写入函数
 入口参数(Parameters):
 					  datalcd--待写入的显示数据或指令的附属参数
 返回值(Returns):无
 创建时间:16:07,PM,2004.4.19
 修改时间:无
 修改原因:无
******************************************************************************/
void WriteData(Uchar datalcd){
	
	RD=1;
	A0=0;
	P6=datalcd;
	CS=0;
	WR=0;
	WR=1;
	CS=1;

}

//-----------------------------------------------------------------------------
// 函数:unsigned char ReadfromLcd(void) (私有函数,其他模块不能调用)
//-----------------------------------------------------------------------------
/******************************************************************************
 调用方式(Function):ReadfromLcd() 
 函数描述(Description):数据和光标地址读出函数
 入口参数(Parameters):无
 返回值(Returns):数据或光标地址
 创建时间:16:07,PM,2004.4.19
 修改时间:无
 修改原因:无
******************************************************************************/
Uchar ReadfromLcd(void){

	Uchar rdata;

	P6=0xff;
	A0=1;
	RD=0;
	rdata=P6;
	CS=0;
	RD=1;
	CS=1;
	return(rdata);
}

//-----------------------------------------------------------------------------
// 函数:void LcdInit(void)
//-----------------------------------------------------------------------------
/******************************************************************************
 调用方式(Function):LcdInit() 
 函数描述(Description):液晶初始化函数
 入口参数(Parameters):无
 返回值(Returns):无
 创建时间:16:07,PM,2004.4.19
 修改时间:无
 修改原因:无
******************************************************************************/

void LcdInit(void){

	WriteCmd(0x40);		//进行system set,要写入8个参数     
	WriteData(0x30);	//单屏结构,8×8点阵
	WriteData(0x87);	//字符宽度位7
	WriteData(0x07);	//字符高度为7
	WriteData(0x1d);	//一行显示30个字符	(C/R)
	WriteData(0x42);	//频率转化
	WriteData(0x9f);	//每帧扫描160行 	(L/F)
	WriteData(0x1e);	//一行共有30个字符  
	WriteData(0);   

	WriteCmd(0x44);		//进行Scroll,要写入10个参数   
	WriteData(0x00);
	WriteData(0x00);
	WriteData(0xa0);	//第一显示区地址和所占的行数160行
	WriteData(0xc0);
	WriteData(0x12);
	WriteData(0xa0); 	//第二显示区地址和所占的行数160行
	WriteData(0x80);  
	WriteData(0x25); 	//第三显示区地址高8位、低8位和所占的行数160行
//	WriteData(0x00);  
//	WriteData(0x00);	//第四显示区地址高8位、低8位和所占的行数160行

	WriteCmd(0x5a);					//以点为单位的水平移动量
	WriteData(0x00);				//水平卷动,初始化时必须清零

	WriteCmd(0x5b);					//显示合成方式设置
	WriteData(0x0c);				//三屏图形方式相加,或逻辑

	WriteCmd(0x59);					// 写入指令代码0x59
	WriteData(0x04);				// 显示1区开显示,2、3、4区关显示;光标关显示
}

//-----------------------------------------------------------------------------

⌨️ 快捷键说明

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