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

📄 lcd.c

📁 电机PID调速程序
💻 C
字号:
/*****************************************************************************************/
/*																						 */
/*                               LCD串行驱动程序                                         */
/*																						 */
/*****************************************************************************************/
#include <ADUC842.H>
#include"lcd.h"

sbit cs   = P2^0;											//只需修改此三口即可使用
sbit std  = P2^1;											//
sbit sclk = P2^2;											//

void wr_lcd (uchar dat_comm,uchar content);
void ldelay (uint us);

uchar x[4]={0x80,0x90,0x88,0x98};							//行地址						

bit   flag_LCD;								                 //为0时关闭液晶显示,1时打开
/*------------------初始化-----------------*/
void init_lcd (void)										//使用前须调用此函数初始化	 
{
  flag_LCD=1;
  wr_lcd (comm,0x30);  /*30---基本指令动作*/   
  wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
  ldelay (100);
  wr_lcd (comm,0x06);  /*光标的移动方向*/
  wr_lcd (comm,0x0c);  /*开显示,关游标*/
}
/*--------------清DDRAM------------------*/
/*void clrram (void)
{
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x01);
//  ldelay (180);
}*/
/*---------------------------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
  uchar a,i,j;
  ldelay (30);
  a=content;
  cs=1;
  sclk=0;
  std=1;
  for(i=0;i<5;i++)
  {
    sclk=1;
    sclk=0;
  }
  std=0;
  sclk=1;
  sclk=0;
  if(dat_comm)
    std=1;   //data
  else
    std=0;   //command
  sclk=1;
  sclk=0;
  std=0;
  sclk=1;
  sclk=0;
  for(j=0;j<2;j++)
  {
    for(i=0;i<4;i++)
    {
      a=a<<1;
      std=CY;
      sclk=1;
      sclk=0;
    }
    std=0;
    for(i=0;i<4;i++)
    {
      sclk=1;
      sclk=0;
    }
  }
}

/*-----------------------------------*/
void ldelay (uint us)   //delay time
{
  uint i,temp;  
  for(i=0;i<10;i++)
  for(temp=us;temp>0;temp--)
  ;
}


/*-----------write string------------*/

void putstr(char *str,uchar line)			//在第line行输出一个字符串
{
	uchar i=0;
	
	if(!flag_LCD)
	{
		return;
	}	

 	wr_lcd (comm,0x30);
	wr_lcd (comm,x[line-1]);

	while(str[i] != '\0' )
	{
	   	if(str[i]=='\n')	
			{
				wr_lcd (comm,x[line]);	
				i++;
				continue;
			}    	
		if(str[i]=='\t')	
			{
				wr_lcd (comm,x[line-1]+8);
				i++;	
				continue;
			}

		wr_lcd (cdat,str[i++]);
  	}
}

/*void putcar(char *str)					     //在默认位置输出一个字符串		
{
	uchar i=0;
	if(!flag_LCD)
	{
		return;
	}
	while(str[i] != '\0' )
	{
		wr_lcd (cdat,str[i++]);
  	}

}
*/
/*-----------write number------------

void put2num(int num)						//在默认位置输出两位数字num			
{
	if(!flag_LCD)
	{
		return;
	}
	wr_lcd (comm,0x30);

	wr_lcd (cdat,num/10+0x30);
	wr_lcd (cdat,num%10+0x30);

}
/*-----------write number------------*/

void putnum(int num)						//在默认位置输出四位数字num			
{
	uchar out[4],i;
	
	if(!flag_LCD)
	{
		return;
	}
	wr_lcd (comm,0x30);

	if(num<0)
		{
			wr_lcd(cdat,'-');
			num=-num;	
		}


	out[0]=num/1000-num/10000*10;
	out[1]=num/100-out[0]*10;
	out[2]=num/10-out[0]*100-out[1]*10;
	out[3]=num%10;

	for(i=0;i<4;i++)
	wr_lcd (cdat,out[i]+0x30);   

//	ldelay(8000);
}

⌨️ 快捷键说明

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