📄 lcddriver.h
字号:
#include <intrins.h>
#define dataport P0
//Port Definitions**********************************************************
sbit lcd_rs = P2^0;
sbit lcd_rw = P2^1;
sbit lcd_en = P2^2;
unsigned char lcd_wait(void)
{
lcd_rs=0;
lcd_rw=1;
_nop_();
lcd_en=1;
_nop_();
//while(dataport&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用gotoxy()时,会进入死循环,
//可能在写该控制字时,该模块没有返回写入完备命令,即dataport&0x80==0x80
//实际硬件时打开此语句
lcd_en=0;
return dataport;
}
void write_instruction(unsigned char input)
{
lcd_en=0;
lcd_rs=0;
lcd_rw=0;
_nop_();
dataport=input;
_nop_();//注意顺序
lcd_en=1;
_nop_();//注意顺序
lcd_en=0;
_nop_();
lcd_wait();
}
void write_data(unsigned char input)
{
lcd_en=0;
lcd_rs=1;
lcd_rw=0;
_nop_();
dataport=input;
_nop_();//注意顺序
lcd_en=1;
_nop_();//注意顺序
lcd_en=0;
_nop_();
lcd_wait();
}
//移动光标或屏幕************************************************************
/*
#define 0x02 0x02
#define LCD_SCREEN 0x08
#define LCD_LEFT 0x00
#define LCD_RIGHT 0x04
void LCD_Move(unsigned char object, unsigned char direction)
{
if(object==0x02)
lcd_instruction(lcd_command,0x10|direction);
if(object==LCD_SCREEN)
lcd_instruction(lcd_command,0x18|direction);
}
*/
//初始化LCD************************************************************
void lcd_initial()
{
lcd_en=0;
write_instruction(0x38); //8位数据端口,2行显示,5*7点阵
write_instruction(0x38);
write_instruction(0x0e);
write_instruction(0x01);
write_instruction(0x06);
}
//************************************************************************
//void cursor_flash(uchar a,uchar b)
//{
//write_instruction(0x80+a*0x40+b);
//write_instruction(0x14);
//write_instruction(0x0f);
//write_instruction(0x80+a*0x40+b);
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -