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

📄 lcd.c

📁 ucos-II 在arm7 lpc2106 proteus仿真显示 lcd图片 。。整个工程
💻 C
字号:
/****************************************Copyright(c)************************************
**                                    内蒙古大学理工学院                                   
**                                       04级自动化系
**                                          谭新源
**-----文件说明---------------------------------------------------------------------------
**器件:         PG160*128A
**控制器:       T6963C
**说明:         PROTEUS仿真软件中的灰度LCD显示器
**功能:         LCD显示器的基本驱动函数
*****************************************************************************************/

/*****************************************LCD驱动函数************************************/
//具体连接的管脚根据实际电路选择
#include  "config.h"                                                        
#define WR (1<<8)           //写选通信号:  低电平有效,输出信号
#define RD (1<<9)           //读选通信号:  低电平有效,输出信号
#define CD (1<<10)          //通道选择信号:1为指令通道,0为数据通道

/*****************************************************************************************
**名称:ReadState()
**功能:读LCD的当前状态
**输入:无
**输出:uint8类型的LCD状态
*****************************************************************************************/
uint8 Read_State()
          {
            uint8 temp;
	        IODIR=0x700;   //输入输出连接
	        IOSET=CD;      //指令通道
	        IOCLR=RD;      //读信号有效
	        temp=IOPIN;    //读状态
	        IOSET=RD;      //恢复原始状态
	        return(temp);  //返回状态信息
          }
/*****************************************************************************************
**名称:RW_Enable()
**功能:等待可读写 
**输入:无
**输出:无
*****************************************************************************************/
void RW_Enable()	
	   {
	     uint8 temp;
	     temp=Read_State();        //读LCD状态
	     while((temp&0x03)!=0x03) //等待可读写状态
		    temp=Read_State();     //读LCD状态
	    }
/*****************************************************************************************
**名称:Read_Auto()
**功能:等待自动读
**输入:无
**输出:无
*****************************************************************************************/
void Read_Auto()
	     {
	        uint8 temp;
	        temp=Read_State();
	        while((temp&0x04)!=0x04)//判断状态
		         temp=Read_State();
	     }	
/*****************************************************************************************
**名称:Write_Auto()
**功能:等待自动写
**输入:无
**输出:无
*****************************************************************************************/ 
void Write_Auto()	//等待自动写
	{
	   uint8 temp;
	   temp=Read_State();
	   while((temp&0x08)!=0x08)
		    temp=Read_State();
	}
/*****************************************************************************************
**名称:Write_Data(uint8 data1,uint8 data2,uint8 cmd,uint8 num)
**功能:写入数据或命令
**输入:data1:输入数据1, data2:输入数据2,cmd:输入的命令1,num:参数的个数
**输出:无
*****************************************************************************************/	
void Write_Data(uint8 data1,uint8 data2,uint8 cmd,uint8 num)
	{
	uint8 temp;
	temp=num;
	if(temp==2)
		{
		RW_Enable();
		IODIR=0x7ff;
		IOCLR=CD;
		IOCLR=0xff;
		IOSET=data1;
		IOCLR=WR;
		IOSET=WR;
		}
	 if(temp==2||temp==1)
	 	{
		RW_Enable();
		IODIR=0x7ff;
		IOCLR=CD;
		IOCLR=0xff;
		IOSET=data2;
		IOCLR=WR;
		IOSET=WR;
		}
	RW_Enable();
	IODIR=0x7ff;
	IOSET=CD;
	IOCLR=0xff;
	IOSET=cmd;
	IOCLR=WR;
	IOSET=WR;
	}
/*****************************************************************************************
**名称:Read_Data()
**功能:读数据
**输入:无
**输出:返回uint8数据
*****************************************************************************************/ 
uint8 Read_Data ()	//读数据
	{
	uint8 temp;
	RW_Enable();
	IODIR=0x700;
	IOCLR=CD;
	IOCLR=RD;
	temp=IOPIN;
	IOSET=RD;
	return(temp);
	}
/*****************************************************************************************
**名称:Lcd_Init()
**功能:初始化LCD
**输入:无
**输出:无
*****************************************************************************************/
void Lcd_Init()
	{
	IODIR=CD|RD|WR;
	IOSET=CD|RD|WR;
	Write_Data(0x00,0x00,0x40,0x02);	//设置文本显示首地址
	Write_Data(0x14,0x00,0x41,0x02);	//设置文本显示宽度
	Write_Data(0x40,0x10,0x42,0x02);	//设置图形显示首地址      非常的重要
	Write_Data(0x14,0x00,0x43,0x02);	//设置图形显示宽度
	Write_Data(0x00,0x00,0xa1,0x00);	//光标形状设置
	Write_Data(0x00,0x00,0x80,0x00);	//显示方式设置,“或”
	Write_Data(0x00,0x00,0x9c,0x00);	//显示开关设置
	} 
/*-------------------------------------------------------------------------结束---------*/	

⌨️ 快捷键说明

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