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

📄 sed1335lcd.c

📁 SED1335控制液晶模块SHARP 32019T的显示,点阵为320x240,此外,DotMatrix.H为字库,请自行添加所需显示
💻 C
📖 第 1 页 / 共 4 页
字号:
/******************************************************************
*   文件名称: SED1335LCD . c                                                               *
*   文件用途: SED1335控制液晶模SHARP LM32019T的显示     *
*                             点阵为320x240                                                        *
*														                  *
*                                                                                                                  *
*******************************************************************/

#include "Public.h"
#include "DotMatrix.h"
#include "KeyScanf.h"
#include <absacc.h>


/*************指令代码*****************/
#define SYSTEM_SET        0x40                              //初始化设置  
#define SCROLL                 0x44                              //显示区域设置   
#define SLEEP_IN             0x53                              //休眠模式 
#define DISP_ON              0x59                              //开显示 
#define DISP_OFF             0x58                              //关显示 
#define OVLAY                   0x5B                              //显示合成设置 
#define HDOT_SCR            0x5A                              //点位移设置 
#define CSRFORM              0x5D                              //光标形状设置 
#define CGRAM_ADR         0x5C                              //CGRAM首地址 
#define CSRDIR_RIGHT     0x4C                              //光标向右移动 
#define CSRDIR_LEFT       0x4D                              //光标向左移动 
#define CSRDIR_UP          0x4E                              //光标向上移动 
#define CSRDIR_DOWN     0x4F                              //光标向左移动 
#define CSRW                    0x46                              //光标指针设置 
#define CSRR                     0x47                              //读取光标位置 
#define MWRITE                0x42                              //写数据 
#define MREAD                  0x43                              //读书据 

/*************初始化参数*****************/
#define CR             40                                   //定义显示窗口的长度,以字符为单位 
#define TCR           45                                   //定义LCD的时间常数.这个时间常数应该尽量小(场频就大),防止转换时出现闪烁 
#define LF              240                                 //定义LCD的行数 
#define APL            40                                   //定义LCD一行所占缓冲区的字节数,低8位 
#define APH           0                                      //定义LCD一行所占缓冲区的字节数,高8位 

#define SAD1         0x0000                           //定义显示一区首址 
#define SAD1L       0x00                                 //定义显示一区首址低8位 
#define SAD1H      0x00                                 //定义显示一区首址高8位 
#define SL1           240                                   //定义显示一区所占显示屏幕的行数 

#define SAD2        0x4000                             //定义显示二区首址 
#define SAD2L      0x00                                 //定义显示二区首址低8位 
#define SAD2H      0x40                                 //定义显示二区首址高8位 
#define SL2           240                                   //定义显示二区所占显示屏幕的行数 

#define SAD3        0x0000                            //定义显示三区首址 
#define SAD3L      0x00                                 //定义显示三区首址低8位 
#define SAD3H      0x00                                 //定义显示三区首址高8位 

#define SAD4        0x0000                             //定义显示四区首址 
#define SAD4L      0x00                                 //定义显示四区首址低8位 
#define SAD4H     0x00                                 //定义显示四区首址高8位 


/*************端口*******************/ 
#define LCDState             XBYTE[0x8000]     //状态
#define LCDCommand     XBYTE[0x8001]     //命令
#define LCDDataWrite     XBYTE[0x8000]     //写数据
#define LCDDataRead      XBYTE[0x8001]     //读数据


/*************函数声明*****************/  
/*------------基本操作函数------------------------*/
void    LCDInit();
void    LCDClr( uint unStartRow , uint unEndRow );
void    RegionClr( uchar ucStartRow , uchar ucStartColumn , uchar ucLength , uchar ucWidth);
void    SED1335DataWrite(  uint unAddress , uchar unData);
uchar  SED1335DataRead( uint unAddress);

/*-------------字符显示-----------------------------*/
void ChineseDisplay(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute);
void Char24Display(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute);
void Char16X24Display(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute);
void Char16Display(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute);
void CharDisplay(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute);

/*---------------图片显示---------------------------------------*/
uchar GSKFlagDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute );
uchar GSKNameDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute );
void   MultipleDisplay(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute);

/*----------------直线--------------------------------------------------*/
void QuickLineX(uchar ucY , uint unXStart , uint unXEnd);
void QuickLineY(uint unX , uchar ucYStart , uchar ucYEnd, uchar ucWidth);
void CursorDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute);

/*----------------字符串显示---------------------------------------------------*/
void LCD24Printf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar  *pStringDisplay );
void LCD16X24Printf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar  *pStringDisplay );
void LCDPrintf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar  *pStringDisplay );
void LCD8Printf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar  *pStringDisplay );
void ProgramRowPrintf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar *pStringDisplay );


/*************SYSTEM_SET与SCROLL初始化参数*****************/ 
uchar code SYSTEM_SET_INIT[8]={0x30,0x87,0x07,CR,TCR,LF,APL,APH};                          
uchar code SCROLL_INIT[10]={SAD1L,SAD1H,SL1,SAD2L,SAD2H,SL2,SAD3L,SAD3H,SAD4L,SAD4H};   


/******************函数实体******************************/  

/*------------基本操作函数------------------------*/

/***********************************************************    
*   函数名称: LCDInit()                                                              *    
*   函数用途: 初始化LCD                                                     *    
*   输入参数:无                                                                  *    
*   输出参数:无	                                                              *    
*                                                                                                      *    
***********************************************************/  

void LCDInit()
{
	uint idata  ucCounter;
	
	LCDCommand=SYSTEM_SET;							                 //初始化屏幕 
	for(ucCounter=0;ucCounter<8;ucCounter++)
	{
		LCDDataWrite=SYSTEM_SET_INIT[ucCounter];
	}			                 
	
	LCDCommand=SCROLL;							                          //设置显示区域 
	for(ucCounter=0;ucCounter<10;ucCounter++)
	{
		LCDDataWrite=SCROLL_INIT[ucCounter];
	}			
	
	LCDCommand=HDOT_SCR;                                                                      //设置点水平移动量 
	LCDDataWrite=0x00;							
	
	LCDCommand=OVLAY;							                                 //设置显示合成方式 
	LCDDataWrite=0x0C;							                                  //二重合成显示,显示方式=L1+L2+L3  
	
	LCDCommand=CSRFORM;							                           //设置光标形状 
	LCDDataWrite=0x07;                                                                                //水平点数为7 
	LCDDataWrite=0x87;                                                                                //垂直点数为7,阴影显示 
	
	LCDCommand=DISP_ON;							                            //开显示 
	LCDDataWrite=0x04;							                                   //开启一区, 关闭光标 
	
	LCDClr(0,818);                                                                                          //清屏 
	
	LCDCommand=CSRW;							                                  //设置光标位置 
	LCDDataWrite=0x00;
	LCDDataWrite=0x00;
  
    return;
} 


/*********************************************************    
*   函数名称: SED1335DataRead()                                          *    
*   函数用途:  读显存                                                      *    
*   输入参数:                                                                        *
*                           unAddress:内存单元地址                      *
*   输出参数: 无		        	                                            *    
*                                                                                                   *    
***********************************************************/  

uchar SED1335DataRead( uint unAddress)
{
   union CURSOR_ADR  POSITION;
   uchar  xdata ucDataRead;

   POSITION.Adr = unAddress;						             

   LCDCommand=CSRW;							                    //设置光标位置
   LCDDataWrite=POSITION.AdrByte.AdrL;
   LCDDataWrite=POSITION.AdrByte.AdrH; 

   LCDCommand=MREAD;                                                                 //读显存数据
   ucDataRead= LCDDataRead;

   return(ucDataRead);
} 


/*********************************************************    
*   函数名称: SED1335DataWrite()                                          *    
*   函数用途:  写显存                                                      *    
*   输入参数:                                                                        *
*                           unAddress:内存单元地址                      *
*                           ucData:写入的数据                                 *
*   输出参数: 无		        	                                            *    
*                                                                                                   *    
***********************************************************/  

void SED1335DataWrite(  uint unAddress , uchar unData)
{
   union CURSOR_ADR  POSITION;

   POSITION.Adr = unAddress;						             

   LCDCommand=CSRW;							                    //设置光标位置
   LCDDataWrite=POSITION.AdrByte.AdrL;
   LCDDataWrite=POSITION.AdrByte.AdrH; 

   LCDCommand=MWRITE;                                                                 //写显存数据
   LCDDataWrite=unData;
} 


/*********************************************************    
*   函数名称: LCDClr()                                                          *    
*   函数用途: LCD清屏                                                      *    
*   输入参数:                                                                    *
*                            unStartRow : 清屏区域的首行            *
*                            unEndRow   : 清屏区域的末行            *
*   输出参数:无			                                            *    
*                                                                                                   *    
***********************************************************/  

void LCDClr( uint unStartRow , uint unEndRow )
{
	uint  idata ucCounter;
	union CURSOR_ADR  idata POSITION;

	POSITION.Adr = unStartRow * 40 ;
	
	LCDCommand=CSRW;                                        //光标位置指向内存首地址
	LCDDataWrite= POSITION.AdrByte.AdrL;
	LCDDataWrite= POSITION.AdrByte.AdrH;

	ucCounter = (unEndRow -unStartRow + 1) * 40;
	
	LCDCommand = CSRDIR_RIGHT;

	LCDCommand = MWRITE;                                 //内存单元清零
	while(ucCounter--!= 0)
	    LCDDataWrite = 0x00;
	
	return;
} 


/**********************************************************************    
*   函数名称: RegionClr()                                                                              *    
*   函数用途: 区域清屏                                                                        *    
*   输入参数:                                                                                           *
*                            unStartRow :        清屏区域的左上角的行坐标 *
*                            ucStartColumn   : 清屏区域的左上角的列坐标 *
*   输出参数:无			                                                                   *    
*                                                                                                                         *    
***********************************************************************/  

void RegionClr( uchar ucStartRow , uchar ucStartColumn , uchar ucLength , uchar ucWidth)
{
   uchar idata ucRowCounter;
   uchar idata ucColumnCounter;  

⌨️ 快捷键说明

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