📄 lcd_backup.c
字号:
#include<pic.h> //Vo pin---Voltage about 0.6V is engough!!!
__CONFIG(0X3FF9);
void Delay1ms();
void DelayNms(unsigned int);
void Toggle();
unsigned char ReadBF();
void WRCommand(unsigned char);
void WRData(unsigned char);
unsigned char RDData();
void Init_LCD();
void DisplayChar(const unsigned char *str,unsigned char len,unsigned char x,unsigned char y);
void SetCGRAM(const unsigned char *,unsigned char);
void CursorScroll(unsigned char,unsigned char,unsigned char,unsigned char);
void ScreenScroll(unsigned char);
void ReturnHome();
void CleanScreen();
void HideCursor();
void Init_IO();
#define LEFT 0
#define RIGHT 1
struct Tree
{
unsigned char mark[4];
int value;
unsigned char *TitleName;
};
const unsigned int delay=100; //serve for function"Delay1ms"
const unsigned char string[11]={0x57,0x45,0x4c,0x43,0x4f,0x4d,0x45,0x20,0x59,0x4f,0x55};
/*MAIN*/
void main()
{
DelayNms(1000);
Init_IO();
Init_LCD();
CleanScreen();
DisplayChar(string,11,1,1);
DisplayChar(string,11,0,0);
HideCursor();
for(;;)ScreenScroll(RIGHT);
}
/*Build Title*/
void BuildTitle()
{
Title
/*delay 1ms*/
void Delay1ms()
{
unsigned int d=delay;
while(--d){;}
}
/*delay N ms*/
void DelayNms(unsigned int n)
{
unsigned int i;
for(i=n;i--;)
Delay1ms();
}
/*Produce a SignalE Toggle */
void Toggle()
{
RD7=1; //E=1
RD7=0; //E=0
// DelayNms(3);
}
/*Read the busy Flag*/
unsigned char ReadBF()
{
unsigned char temp;
TRISC=0XFF;
while(1)
{
RD5=0; //RS=0
RD6=1; //R/W=1
RD7=1; //E=1
temp=PORTC; //READ THE BF AND ADD
RD7=0; //E=0;
if(RC7==0) break;
}
return temp;
}
/*Write command code*/
void WRCommand(unsigned char command)
{
ReadBF();
TRISC=0;
RD6=0; //R/W=0
PORTC=command;
Toggle();
}
/*Write Display Data*/
void WRData(unsigned char data)
{
ReadBF();
TRISC=0;
RD5=1; //RS=1
RD6=0; //R/w=0
PORTC=data;
Toggle();
}
/*Read display data */
unsigned char RDData()
{
unsigned char data;
ReadBF();
RD5=1; //RS=1
RD6=1; //R/W=1
RD7=1; //E=1
data=PORTC;
RD7=0;
return data;
}
/*initial LCD*/
void Init_LCD()
{
TRISC=0X00;
PORTC=0X30;
RD5=0; //RS=0
RD6=0; //R/W=0
Toggle();
DelayNms(5);
PORTC=0X30;
RD5=0; //RS=0
RD6=0; //R/W=0
Toggle();
Delay1ms();
PORTC=0X30;
RD5=0;
RD6=0;
Toggle();
DelayNms(2);
WRCommand(0x38); //8-bit bus,2 line display,5*8 pixel
WRCommand(0x08); //Display Off
WRCommand(0x01); //Clean Screen
DelayNms(20);
WRCommand(0x06); //pattern not move,cursor move right
WRCommand(0x0F); //display,cursor,blast
}
/*Display Character String*/
void DisplayChar(const unsigned char *str,unsigned char len,unsigned char x,unsigned char y)
{ //str--name of the array;len--length of array;x--x axis;y--y axis
//if the output char contain CGRAM,must run SetCGRAM first
unsigned char i,pointer=0x80+x+y*64;
WRCommand(pointer);
for(i=0;i<len;i++)
WRData(str[i]);
}
/*Build custom character model union*/
void SetCGRAM(const unsigned char *str,unsigned char len)
{
unsigned char i;
WRCommand(0x40); //the beginning address of CGRAM
for(i=0;i<len;i++)
WRData(str[i]);
}
/*Move cursor*/
void CursorScroll(unsigned char direction,unsigned char x,unsigned char y,unsigned char len)
{
unsigned char i,pointer=0x80+x+y*64;
WRCommand(pointer);
for(i=0;i<len;i++)
{
if(direction==LEFT) WRCommand(0x10);
else WRCommand(0x14);
DelayNms(200);
}
}
/*Screen scroll*/
void ScreenScroll(unsigned char direction) //circularly move
{
while(1)
{
if(direction==LEFT) WRCommand(0x18); //Left scroll
else WRCommand(0x1C); //Right scroll
DelayNms(600);
}
}
/*Return to initial position*/
void ReturnHome()
{
WRCommand(0x02);
}
/*clean screen*/
void CleanScreen()
{
WRCommand(0x01);
}
/*hide cursor*/
void HideCursor()
{
WRCommand(0x0c);
}
/*initial I/O PORTs*/
void Init_IO()
{
TRISD=0X00;
TRISC=0X00;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -