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

📄 lcd1602.c

📁 一个实用的单片机试验程序
💻 C
字号:
#include <reg51.h>
#include "LCD1602.h"

//短延时函数:ShortDelay()
void ShortDelay(uchar i)
{
	for(;i>0;i--) ;
	}
	
//长延时函数:LongDelay()
void LongDelay(uint i)
{
	uint j;
	for(;i>0;i--)
		{ for(j=1000;j>0;j--);}
	}
	
//寄存器选择信号:SetRS()
void  SetRS(bit i)
{
	if(i==1) PinRS = 1;
	else     PinRS = 0;
	}

//读写操作控制信号:SetRW()
void SetRW(bit i)
{
	if(i==1) PinRW = 1;
	else     PinRW = 0;
	}

//使能信号:SetE()
void SetE(bit i)
{
	if(i==1) PinE = 1;
	else     PinE = 0;
	}	
	
//IO输入输出控制
void InitP0(bit i) 
{
	if(i==1) P0 = 0xff;
	else     P0 = 0x00;
	} 
		
//写指令函数:WriteInstruc()
void WriteInstruc(uint Instruc)
{
	while(StatusCheck());
	InitP0(0);
	SetRS(0);
	SetRW(0);
	//ShortDelay(1);
	SetE(0);
	PinData = Instruc;
	//ShortDelay(1);
	SetE(1);
	ShortDelay(10);
	SetE(0);
	//ShortDelay(1);
	SetRW(1);
	SetRS(1);
	}
	
//读BF以及AC的值函数:Read_BF_AC()
uint Read_BF_AC()
{
	uint temp;
	InitP0(1);
	SetRS(0);
	SetRW(1);
	//ShortDelay(1);
	SetE(0);
	//ShortDelay(1);
	SetE(1);
	ShortDelay(1);
	temp = PinData;
	ShortDelay(10);
	SetE(0);
	//ShortDelay(1);
	SetRW(0);
	SetRS(1);
	return(temp);
	}
	
//写数据到RAM函数:WriteData()
void WriteData(uint data1)
{
	InitP0(0);
	SetRS(1);
	SetRW(0);
	//ShortDelay(1);
	SetE(0);
	PinData = data1;
	//ShortDelay(1);
	SetE(1);
	ShortDelay(10);
	SetE(0);
	//ShortDelay(1);
	SetRW(1);
	SetRS(0);
	}
	
//从RAM读数据函数:ReadData()
uint ReadData(void)
{
	uint temp;
	InitP0(1);
	SetRS(1);
	SetRW(1);
	//ShortDelay(1);
	SetE(0);
	//ShortDelay(1);
	SetE(1);
	ShortDelay(1);
	temp = PinData;
	ShortDelay(10);
	SetE(0);
	//ShortDelay(1);
	SetRW(0);
	SetRS(0);
	return(temp);
	}

//检测LCD控制器状态函数:StatusCheck()
//返回一bit数:1 —— 忙;0 —— 闲
bit StatusCheck()
{
	return((bit)(Read_BF_AC() & 0x80));
	}

//在指定位置显示字符函数: DispCharacter()
//  x为行号,y为列号,        
//  data为显示字符的码字数据   
void DispCharacter(uint x, uint y, uint data1)
{
	uint temp;       
	while(StatusCheck());  //若LCD控制器忙,则等待
	
	temp = y & 0x0f;
	x &= 0x01;
	if(x) temp |= 0x40;
	SetDDRAM_Add(temp);	  //设置显示位置
	
	WriteData(data1);	
	}

//LCD复位函数:LCDReset()
void LCDReset()
{
	ClearScreen();
	CursorReturn();
	}

⌨️ 快捷键说明

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