📄 1602b_lcd.c
字号:
#include <iom64v.h>
#include <macros.h>
#include "1602B_LCD.h"
#include "control.h"
unsigned data_temp;
void LCD_init(void)
{
delay_nms(50);
LCD_write_char(0,0x30);
delay_nms(6);
LCD_write_char(0,0x30);
delay_nms(4);
LCD_write_char(0,0x30);
delay_nms(4);
LCD_write_char(0,0x02);
delay_nms(4);
LCD_write_char(0,0x28); //4bit test 显示模式设置(不检测忙信号)
delay_nms(4);
LCD_write_char( 0, 0x08); // 显示关闭
delay_nms(4);
LCD_write_char(0, 0x01); // 显示清屏
delay_nms(4);
LCD_write_char( 0, 0x06); // 显示光标移动设置
delay_nms(4);
LCD_write_char( 0, 0x0c); // 显示开及光标设置
delay_nms(10);
}
/*-----------------------------------------------------------------------
LCD_write_char : 英文字符串显示函数
输入参数:*s :英文字符串指针;
X、Y : 显示字符串的位置,X:0-15,Y:0-1
LCD第一行显示寄存器地址:0X80-0X8F
LCD第一行显示寄存器地址:0XC0-0XCF
编写日期 :2003-11-19
最后修改日期 :2004-8-19
-----------------------------------------------------------------------*/
void LCD_write_char(unsigned command,unsigned data)
{
LCD_EN_PORT &= ~LCD_EN;
if (command == 0)
LCD_RS_PORT &= ~LCD_RS; //RS=0 发送命令
else
LCD_RS_PORT |= LCD_RS; //RS=1 发送数据
data_temp = data;
data_temp=data_temp >> 4;
LCD_Write_half_char();
data_temp = data;
LCD_Write_half_char();
delay_nms(1);
}
/*---------写高4bit到LCD----*/
void LCD_Write_half_char(void)
{
LCD_DATA_PORT &= 0Xf0; //portc0~3=0
LCD_DATA_PORT |= data_temp&0x0f; //send LOW 4bit
LCD_EN_PORT |= LCD_EN; //EN端产生一个由低电平变高电平,写LCD
delay_nms(1);
LCD_EN_PORT &= ~LCD_EN; //EN端产生一个由高电平变低电平,写LCD
LCD_DATA_PORT &= 0Xf0;
delay_nms(1);
}
/*-----------------------------------------------------------------------
LCD_set_xy : 设置LCD显示的起始位置
输入参数:x、y : 显示字符串的位置,X:0-15,Y:0-1
LCD第一行显示寄存器地址:0X80-0X8F
LCD第一行显示寄存器地址:0XC0-0XCF
编写日期 :2004-8-19
最后修改日期 :2004-8-19
-----------------------------------------------------------------------*/
void LCD_set_xy( unsigned char address )
{
LCD_write_char(0,address);
}
/*-----------------------------------------------------------------------
LCD_write_string : 英文字符串显示函数
输入参数:*s :英文字符串指针;
X、Y : 显示字符串的位置
编写日期 :2004-8-19
最后修改日期 :2004-8-19
-----------------------------------------------------------------------*/
/*void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y );
while (*s)
{
LCD_write_char(1,*s);
s ++;
}
}*/
void LCD_write_string(unsigned char address,unsigned char *s)
{
LCD_set_xy(address );
while (*s)
{
LCD_write_char(1,*s);
s ++;
}
}
/*---------------------------------------------------------
显示单个字符函数
输入参数:data :'w'或字符型数据0x37(数字7的ascii码)
X、Y : 显示字符串的位置
---------------------------------------------------------*/
/*void LCD_write_onechar(unsigned char X,unsigned char Y,unsigned char data)
{
LCD_set_xy( X, Y );
LCD_write_char( 1, data );
} */
void LCD_write_onechar(unsigned char address,unsigned char data)
{
LCD_set_xy( address );
LCD_write_char( 1, data );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -