📄 lcd.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 + -