lcd.c
来自「SPI FLASH,SL811HST驱动」· C语言 代码 · 共 105 行
C
105 行
#include<pic18.h>
#include "lcd.h"
#ifndef LCD_CHAR_1602_2005_4_9
#define LCD_CHAR_1602_2005_4_9
////////////////////////////////////////////////
#define Rs RB2
#define En RB3
////////////////////////////////////////////////
//#define unsigned char unsigned char //在编译时用unsigned char替代unsigned char
//#define uint unsigned int
//void LCD_Write(unsigned char c); //写字节函数
//void ClearLcd(void); // 清屏函数
//void Print(const char * s); //写字符串
//void GotoXY(unsigned char x,unsigned char y); //确定显示位置x=线号 y=位置
//void Delay10Us(unsigned char x); //约延时x*10Us
//void Delay1Ms(unsigned char x); //约延时x*1Ms
void LCD_Write(unsigned char c)
{
PORTB=(PORTB&0x0f)|(c&0xf0);
En=1;
En=0;
PORTB=(PORTB&0x0f)|(c<<4);
En=1;
En=0;
Delay10Us(4);
}
void ClearLcd(void)
{
Rs = 0;
LCD_Write(0x01);
Delay1Ms(2);
}
void Print(const char * s)
{
Rs = 1; // RS=1表示写入数据寄存器
while(*s)
LCD_Write(*s++);
}
void GotoXY(unsigned char x,unsigned char y)
{
Rs = 0;
if(x==1)
LCD_Write(0x80+y);
else
LCD_Write(0xC0+y);
}
void InitLcd(void)
{
Rs = 0; // RS=0,以下数据写入的是LCD命令寄存器
Delay1Ms(15);
PORTB = 0x03;
En=1;
En=0;
Delay1Ms(5);
En=1;
En=0;
Delay10Us(10);
En=1;
En=0;
Delay1Ms(5);
PORTB = 0x20; // 设定LCD为四线数据传输方式工作
En=1;
En=0;
Delay10Us(4);
LCD_Write(0x28); // 4位传输,5*8的字体
LCD_Write(0x08); // 关闭LCD
LCD_Write(0x0c); // 开LCD,不打开滑标不闪烁
LCD_Write(0x06);
}
void Delay10Us(unsigned char x)
{
unsigned char i;
while(x--)
{
for(i=0;i<7;i++)
continue;
}
}
void Delay1Ms(unsigned char x)
{
while(x--)
Delay10Us(100);
}
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?