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

📄 lcd.cpp

📁 采用并口控制液晶显示,适合PC104的嵌入式应用
💻 CPP
字号:
#include "conio.h"
#include "dos.h"
#include "def.h"
#include "windows.h"

#define LPT_DATA 0x378
#define LPT_CTRL 0x37A

#define CHAR_0 0x10
#define CHAR_K 0x2b
/*
LPT_CTRL:
Bit3	---->	/RST 反向
Bit2	---->	/RD
Bit1	---->	C/D	反向
Bit0	---->	/WR	反向
*/


//延时子程序
void delay(unsigned int t)
{  unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<1000;j++)
         ;
}

void LCD_Reset()
{
	_outp(LPT_CTRL,0xFC);
	delay(5000);
	Sleep(100);
	_outp(LPT_CTRL,0xF6);
}


void LCD_CheckStatus()
{
	U8 status = 0; 
	do
	{
		_outp (LPT_CTRL, 0xF4);	// C/D = 1
		_outp (LPT_CTRL, 0xF0);	// RD =0
		delay(1000);
		status = _inp(LPT_DATA);// Read data
		_outp (LPT_CTRL, 0xF4); // RD = 1
	}
	while((status & 0x03) != 0x03);                             
}

void LCD_WriteCMD(U8 cmd)
{
	_outp (LPT_DATA, cmd);// Write data
	_outp (LPT_CTRL, 0xD4);	// C/D = 1
	_outp (LPT_CTRL, 0xD5);	// WR =0
	delay(1000);
	_outp (LPT_CTRL, 0xD4); // WR = 1
}

void LCD_WriteData(U8 Data)
{
	_outp (LPT_DATA, Data);// Write data
	_outp (LPT_CTRL, 0xD6);	// C/D = 0
	delay(1000);
	_outp (LPT_CTRL, 0xD7);	// WR =0
	delay(1000);
	_outp (LPT_CTRL, 0xD6); // WR = 1
}

//2 para for command
void LCD_WriteCMD2P(U8 cmd, U8 para1, U8 para2)
{
	LCD_CheckStatus();
	LCD_WriteData(para1);
	LCD_CheckStatus();
	LCD_WriteData(para2);
	LCD_CheckStatus();
	LCD_WriteCMD(cmd);
}

//1 para for command
void LCD_WriteCMD1P(U8 cmd, U8 para)
{
	LCD_CheckStatus();
	LCD_WriteData(para);
	LCD_CheckStatus();
	LCD_WriteCMD(cmd);
}

void LCD_WriteCMDNP(U8 cmd)
{
	LCD_CheckStatus();
	LCD_WriteCMD(cmd);
}

//x is 0-29, y is 0-127,pixel8 is the 8 bit of 8 pixel
void LCD_PutPixel8(U8 x, U8 y, U8 pixel8)
{
	u16 pos;
	pos = y * 30 + x;
	LCD_WriteCMD2P(0x24, (U8)(pos & 0xff), (U8)(pos >> 8));
	LCD_CheckStatus();
	LCD_WriteData(pixel8);
	LCD_WriteCMDNP(0xc0);
}

void LCD_clr()
{
	U16 i;
	LCD_WriteCMD2P(0x24, 0x00, 0x00);
	LCD_WriteCMDNP(0xB0);
	for (i=0;i<0x2000;i++)
	{		
		LCD_CheckStatus();
		LCD_WriteData(0x00);
	}
	LCD_WriteCMDNP(0xB2);
}

void LCD_Init()
{
	LCD_Reset();						//reset lcd
	LCD_WriteCMDNP(0x80);				//OR
	LCD_WriteCMD2P(0x40, 0x00, 0x00);	//Text home
	LCD_WriteCMD2P(0x41, 30, 0x00);		//TEXT AREA
	LCD_WriteCMD2P(0x42, 0x00, 0x00);	//GRAPHIC HOME
	LCD_WriteCMD2P(0x43, 30, 0x00);		//GRAPHIC AREA
	// Clear sreen
	LCD_clr();
	LCD_WriteCMDNP(0x98);				//Graphic on, Text off

}

⌨️ 快捷键说明

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