📄 lcd.c
字号:
#include "pic18fxx2.H"
#include "lcd.h"
char int2charLCD[]="0123456789";
//void lcd_wait(void);
#include "pic18fxx2.h"
#define RS RC5
#define RS_DIR TRISC5
#define RW RC6
#define RW_DIR TRISC6
#define EN RC7
#define EN_DIR TRISC7
#define INPUT 0X01
#define OUTPUT 0X00
#define RS_HIGH() RS=1;RS_DIR=OUTPUT
#define RS_LOW() RS=0;RS_DIR=OUTPUT
#define RW_HIGH() RW=1;RW_DIR=OUTPUT
#define RW_LOW() RW=0;RW_DIR=OUTPUT
#define EN_HIGH() EN=1;EN_DIR=OUTPUT
#define EN_LOW() EN=0;EN_DIR=OUTPUT
#define Key_CLK RB0
#define CLK_DIR TRISB0
#define Key_Data RB5
#define Data_DIR TRISB5
#define uchar unsigned char
#define TRUE 1
#define FALSE 0
//static uchar reciv_data=0X00;
static uchar keynumber[17]={0X89,0X9F,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static uchar dis[32]={0X30,0X30,0X30,0X32,0X33,0X34,0X35,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00};
//const uchar table1[ ] = {"DATA 07-090-7"};
//const uchar table2[ ] = {"TIME 17:53:34"};
//uchar PARITY;
static uchar error=0x00;
//bit result;
void delay1(uchar ms)
{uchar w;
while(ms--)
{
for(w=250;w!=0;w--)
;
;
;
;
}
}
void delay_us(uchar us)
{
while(us--);
}
uchar lcd_busy()
{
uchar result;
TRISD=0XFF;
PORTD=0XFF;
RS_LOW ();
RW_HIGH();
EN_HIGH();
result=(PORTD&0x80);
EN_LOW();
TRISD=0X00;
return result;
}
void lcd_wcmd(uchar cmd)
{
while(lcd_busy());
RS_LOW();
RW_LOW();
EN_LOW();
;
;
;
;
PORTD =cmd ;
;
;
;
;
EN_HIGH();
;
;
;
;
EN_LOW();
}
void lcd_wdat(uchar dat)
{
while(lcd_busy());
TRISD=0X00;
RS_HIGH();
RW_LOW();
EN_LOW();
PORTD = dat;
;
;
;
;
EN_HIGH();
;
;
;
;
EN_LOW();
}
void lcd_init()
{ delay1(15);
lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x0c); //显示开,关光标
delay1(5);
lcd_wcmd(0x06); //移动光标
delay1(5);
lcd_wcmd(0x01); //清除LCD的显示内容
delay1(5);
}
void lcd_pos(uchar pos)
{
lcd_wcmd(pos | 0x80); //数据指针=80+地址变量
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -