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

📄 lcd.c

📁 此为基于ARM的LCD液晶显示器的程序,采用C语言编写,产生正弦曲线
💻 C
📖 第 1 页 / 共 2 页
字号:
/***********************************************************************************************
** 文件名称:_LCD_C
** 功能说明:ST7920驱动LCD显示软件包
** 使用说明:软件包用到LPC213x的二个引脚,默认为P1.24,P1.25,如需修改,请修改头文件中的宏定义数据即可
			 (接触一天,时间不足,理解不深,代码有待优化,鉴谅)
***********************************************************************************************/
#include "config.h"
#include  "LCD.h"
uint8  chartab4[] = 
	{
/*0*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*1*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*2*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*3*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*4*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*5*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*6*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*7*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*8*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*9*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*10*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*11*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*12*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*13*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*14*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*15*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*16*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*17*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*18*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*19*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*20*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*21*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*22*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*23*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*24*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*25*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*26*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*27*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*28*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*29*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*30*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*31*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*32*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*33*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*34*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*35*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*36*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*37*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*38*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*39*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*40*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*41*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*42*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*43*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*44*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*45*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*46*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*47*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*48*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*49*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*50*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*51*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*52*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*53*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*54*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*55*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*56*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*57*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*58*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*59*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*60*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*61*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*62*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*63*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

 
/***********************************************************************************************
** 函数名称:LCD_Init()
** 函数功能:LCD初始化
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_Init(void)	
{
	  PIN_INITI;
	  LCD_Dly(50); 								//启动等待,等LCD进入工作状态    	 								
	  LCD_Write(0,0x30);  						//8 位介面,基本指令集
	  LCD_Write(0,0x0c);  						//显示打开,光标关,反白关
	  LCD_Write(0,0x01);  						//清屏,将DDRAM的地址计数器归零  
	  
}
void LCD_ClearScreen(void)
{
	LCD_Write(0,0x01);  						//清屏,将DDRAM的地址计数器归零  
	  
}
/***********************************************************************************************
** 函数名称:LCD_WStr()
** 函数功能:显示字符串
** 入口参数:addr	显示的地址
**			 ptr	要显示的字符串的首地址
** 出口参数:无
***********************************************************************************************/
void LCD_WStr(uint8 addr,const char *ptr)
{
	LCD_Write(WIR,addr);
	LCD_Dly(1);
	while(*ptr!=0)
	{
		LCD_Write(WDATA,*ptr++);
		LCD_Dly(1);
	}
}
/***********************************************************************************************
** 函数名称:LCD_Write()
** 函数功能:LCD写指令或数据
** 入口参数:control_flow		数据控制流,0 为写指令 1 为写数据
			 ddata				数据
** 出口参数:无
***********************************************************************************************/
void LCD_Write(unsigned char control_flow, unsigned char ddata) 
{
	  unsigned char start_data,Hdata,Ldata;
	  if(0==control_flow) start_data=0xf8;	//写指令
	           else       start_data=0xfa;  //写数据
	  
	  Hdata=ddata&0xf0;		 				//取高四位
	  Ldata=(ddata<<4)&0xf0;  				//取低四位
	  LCD_SendByte(start_data);	  			//发送起始信号
	  LCD_Dly(1); 							//延时是必须的
	  LCD_SendByte(Hdata);	      			//发送高四位
	  LCD_Dly(1);  						    //延时是必须的
	  LCD_SendByte(Ldata);		  			//发送低四位
	  LCD_Dly(1);  						    //延时是必须的
}

/***********************************************************************************************
** 函数名称:LCD_SendByte()
** 函数功能:发送一个字节
** 入口参数:bbyte		字节数据
** 出口参数:无
***********************************************************************************************/
void LCD_SendByte(unsigned char bbyte) 
{
	 unsigned char i;
	 
	 for(i=0;i<8;i++)
	 {
		if( (bbyte&0x80)!=0 ) SID_1;
    	else 
    	{
    		SID_0 ;					//SID=bbyte&0x80;取出最高位
    	}
		SCKL_1;								//SCLK=1;
		__asm
		{
			nop
		}
	 	SCKL_0;								//SCLK=0;
	 	bbyte<<=1; 							//左移
	 }  
}
/***********************************************************************************************
** 函数名称:LCD_Dly()
** 函数功能://延时
** 入口参数:dly	延时参数,值越大,延时时间越长
** 出口参数:无
***********************************************************************************************/
void LCD_Dly(unsigned int dly) 
{
 	unsigned int i,j;
 	for(i=dly;i>0;i--)
   		for(j=500;j>0;j--);
}

/***********************************************************************************************
** 函数名称:LCD_Test()
** 函数功能:图形方式下屏幕全黑
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_Test(void)	
{ 
	unsigned char i,j;
	for(i=0;i<32;i++)
	{ 
		LCD_Write(0,0x80+i);
			LCD_Write(0,0x80);
	    for(j=0;j<16;j++) 
	    	LCD_Write(1,0xff);
	 }

	/*for(i=0;i<32;i++)
	 { 
	 	LCD_Write(0,0x80+i);
	 		LCD_Write(0,0x88);
	    for(j=0;j<16;j++) 
	    	LCD_Write(1,0xff);
	 }*/
}

/***********************************************************************************************
** 函数名称:LCD_GPCLS()
** 函数功能:图形方式下清屏
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_GPCLS(void)  
{ 
	unsigned char i,j;
	for(i=0;i<32;i++)
	{ 
	  	LCD_Write(0,0x80+i);
	  	LCD_Write(0,0x80);
	    for(j=0;j<16;j++) 
	    	LCD_Write(1,0x00);
	}

	for(i=0;i<32;i++)
	{ 
		LCD_Write(0,0x80+i);
		LCD_Write(0,0x88);
	    for(j=0;j<16;j++) 
	    	LCD_Write(1,0x00);
	}
}
/***********************************************************************************************
** 函数名称:LCD_DispStr()
** 函数功能:LCD显示字符串
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_DispStr(unsigned  char *str,uint8 row,uint8 blankflag)	
{
	uint8 i=0;
	uint8 Address=0;
	//写指令此指令会将屏幕全部清屏
	//LCD_Write(0,0x01);
	
	switch(row)
	{
		case 1:
			Address = 0x80;
			break;
		case 2:
			Address = 0x90;
			break;
		case 3:
			Address = 0x88;

⌨️ 快捷键说明

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