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

📄 lcd1602vcdriver.cpp

📁 用并口去驱动液晶屏LCD1602的源代码
💻 CPP
字号:
#include "stdafx.h"
#include "Lcd1602VcDriver.h"

CLcd1602Driver::CLcd1602Driver()
{
	m_ParallelPort.InitPort(0x378);
}
CLcd1602Driver::~CLcd1602Driver()
{

}
void CLcd1602Driver::delay()
{
	UINT CNT;
	for(CNT=0;CNT<10000;CNT++)
	{
	}
}

BOOL CLcd1602Driver::GetPinState(int n)
{
	BOOL Logic;
	m_ParallelPort.SetDataDir(0);//设置DATA口为读状态
	Logic=m_ParallelPort.GetPinLogic(n);
	return Logic;
}

BOOL CLcd1602Driver::lcd_bz()
{       // 测试LCD忙碌状态
	//BOOL result;
	m_ParallelPort.SetDataDir(0);//设置DATA口为读状态
	m_ParallelPort.SetPinL(RS);
	m_ParallelPort.SetPinH(RW);
	m_ParallelPort.SetPinH(EP);
	//result = !m_ParallelPort.GetPinLogic(PIN_D7);
	delay();
	m_ParallelPort.SetPinL(EP);
	//return result; 
	return FALSE;
}

BOOL CLcd1602Driver::lcd_wcmd(unsigned char cmd)
{       // 写入指令数据到LCD
	while(lcd_bz());
	m_ParallelPort.SetDataDir(1);//设置DATA口为写状态
	m_ParallelPort.SetPinL(RS);
	m_ParallelPort.SetPinL(RW);
	m_ParallelPort.SetPinL(EP);
	m_ParallelPort.WriteData(cmd);
	m_ParallelPort.SetPinH(EP);
	m_ParallelPort.SetPinL(EP);
	return TRUE;
}
BOOL CLcd1602Driver::lcd_pos(unsigned char pos)
{   
	//设定显示位置
	lcd_wcmd(pos | 0x80);
	return TRUE;
}
BOOL CLcd1602Driver::lcd_wdat(unsigned char dat) 
{       //写入字符显示数据到LCD
	while(lcd_bz());
	m_ParallelPort.SetDataDir(1);//设置DATA口为写状态
	m_ParallelPort.SetPinH(RS);
	m_ParallelPort.SetPinL(RW);
	m_ParallelPort.SetPinL(EP);
	m_ParallelPort.WriteData(dat);
	m_ParallelPort.SetPinH(EP);
	m_ParallelPort.SetPinL(EP);
	return TRUE;
}
BOOL CLcd1602Driver::lcd_init()
{       
	//LCD初始化设定
	lcd_wcmd(0x38);   //function set
	Sleep(1);
	lcd_wcmd(0x38);   //function set
	Sleep(1);
	lcd_wcmd(0x08);   //display on/off
	Sleep(1);
	lcd_wcmd(0x01);   //清除LCD的显示内容
	Sleep(1);
	lcd_wcmd(0x06);   //entry mode set
	Sleep(1);
	lcd_wcmd(0x0c);   //entry mode set
	Sleep(1);
	return TRUE;
}
/*---------------
函数名称:display()
功能 :在LCD上显示数组的数据
说明 :先写显示地址,后写显示数据
调用 :lcd_wcmd(), lcd_pos()
入口参数:pos 写入的位置,q指向要写入的数据所在的数组
返回值 :TRUE
----------------*/
BOOL CLcd1602Driver::display(unsigned char pos, unsigned char *q)
{ 
 char i;
 lcd_pos(pos);
 for(i=0;i<16;i++)
 {
  lcd_wdat(*q);
  q++;
 } 
 return TRUE;
}

⌨️ 快捷键说明

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