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

📄 ts1620.c

📁 TS1602驱动程序(C51单片机),把TS1602.H文件加到项目里面直接调用即可
💻 C
字号:

#include <reg51.h>
#include <intrins.h>
#include "port.h"
#include "TS1620.h"
#include "delay.h"


bit lcd_bz()
{							// 测试LCD忙碌状态
	bit result;
	rs = 0;
	rw = 1;
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	result = (bit)(LCD_Port & 0x80);
	ep = 0;
	_nop_( );
    _nop_( );
	return result;	
}

lcd_wcmd(unsigned char cmd)
{							// 写入指令数据到LCD
	while(lcd_bz());
	rs = 0;
	rw = 0;
	ep = 0;
	_nop_();
	_nop_();	
	LCD_Port = cmd;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;		
    _nop_( );
    _nop_( );
}


lcd_wdat(unsigned char dat)	
{							//写入字符显示数据到LCD
	while(lcd_bz());
	rs = 1;
	rw = 0;
	ep = 0;
	LCD_Port = dat;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;	
	_nop_( );
	_nop_( );
}


void LocateXY(unsigned char x,unsigned char y)
{	
	unsigned char temp;
	temp=x&0x0F;	
	y&=0x01;
	if(y) 
	{
	 temp|=0x40;
	}
	temp|=0x80;		   //Send Data to DDRAM D7 H			
	lcd_wcmd(temp);
}


void DispOneChar(unsigned char x,unsigned char y,unsigned char dat)
{
 LocateXY(x,y);
 lcd_wdat(dat);	
}

/*********显示字符串*********************/
void PutStr(unsigned char x,unsigned char y, unsigned char *ptr)
{
 unsigned char i,m=0;
 unsigned char k;
 while(ptr[m]>16)
 {
	 m++;
 }
 for(i=0;i<m;i++)
 {
  k=ptr[i];
  DispOneChar(x++,y,k);
  if(x==16)
  {
   x=0;
  // y^=1;
  }
 }
}

void chang_char_string(unsigned char c,unsigned char *s)
{
 unsigned char m;
 unsigned char n;
 
 m=c&0xF0;
 m=m>>4;
 if((m>=0)&&(m<=9))
 	{*s=m+0x30;}
 else
 	{
	 if((m>=0x0A)&&(m<=0x0F))
	   {*s=m+0x37;}
	}
 s++;
 
 n=c&0x0F;
 if((n>=0)&&(n<=9))
 	{*s=n+0x30;}
 else
 	{
	 if((n>=0x0A)&&(n<=0x0F))
	   {*s=n+0x37;}
	}
}


void Send_charstr(unsigned char x,unsigned char y,unsigned char data1)
{
 unsigned char m=0;

 unsigned char strT[2];
 unsigned char data2;
 data2=data1;
 chang_char_string(data2,strT);
 
  DispOneChar(x++,y,strT[0]);
  DispOneChar(x++,y,strT[1]);
}

void lcd_init(void)
{							//LCD初始化设定
	lcd_wcmd(0x38);			//
	delay(10);

	lcd_wcmd(0x0c);			//清除LCD的显示内容
	delay(5);
	lcd_wcmd(0x06);			//清除LCD的显示内容
	delay(5);
	lcd_wcmd(0x01);			//清除LCD的显示内容
	delay(5);
}

⌨️ 快捷键说明

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