📄 lcd_send.c
字号:
/*=================================================================================*/
//LCD显示函数
/*=================================================================================*/
#include <c8051f020.h> // SFR 声明
#include <intrins.h>
#include <ABSACC.H>
#include "LCD_send.h"
/*************************************************************************************
函数功能:us延时
输入参数:延时时间timer
输出参数:无
*************************************************************************************/
void delay_us(int timer)//us沿时
{
timer*=20;//时钟周期调整
for(;timer>0;timer--)
_nop_();
}
/*************************************************************************************
函数功能:ms延时
输入参数:延时时间timer
输出参数:无
*************************************************************************************/
void delay_ms(unsigned int i)//ms沿时
{
while(--i)
delay_us(500);
}
/************************************************************************************
函数功能:LCD 初始化
输入参数:无
输出参数:无
************************************************************************************/
void lcd_init(void)
{
LCDRES=0;
delay_ms(5);
LCDRES=1;
LCDREQ=0;
LCDBUSY=0;
delay_ms(5);
}
/************************************************************************************
函数功能:写数据到LCD
输入参数:写数据 (char) writedata
输出参数:无
*************************************************************************************/
void write_data(unsigned char data writedata)
{
LCDBUSY=1;
while(LCDBUSY!=0);
OE573=0;
LCDDATA=writedata;
delay_us(2);
LCDREQ=1;
delay_us(10);
LCDBUSY=1;
while(LCDBUSY==0);
LCDREQ=0;
OE573=1;
}
/*************************************************************************************
函数功能:显示8*8ASCII字符
输入参数:X坐标X从0x04到0x13共16个字符以字符为单位递增;(0--15)
Y坐标Y从0到0x3F共64个点以点为单位递增; (0--63)
输出参数:无
*************************************************************************************/
void send_ascii8(unsigned char x,unsigned char y,unsigned char ascii)
{
write_data(0xf1);
write_data(x+0x04);
write_data(y);
write_data(ascii);//写要显示的ASCII码;
}
/**************************************************************************************
函数功能:显示8*16ASCII字符变量
输入参数:X坐标X从0x04到0x13共16个字符以字符为单位递增;(0--15)
Y坐标Y从0到0x3F共64个点以点为单位递增; (0--63)
输出参数:无
**************************************************************************************/
void send_ascii16(unsigned char x,unsigned char y,unsigned char ascii)
{
write_data(0xF9);
write_data(x+0x04);
write_data(y);
write_data(ascii);//写要显示的ASCII码;
}
/*************************************************************************************
函数功能:显示8*8ASCII字符串
输入参数:X坐标从0x04到0x13共16个字符以字节为单位递增 (0--15)
Y坐标从0到0x3F共64个点以点为单位递增 (0--63)
输出参数:无
*************************************************************************************/
void send_asc8str(unsigned char x,unsigned char y,unsigned char *ascii)
{
while((*ascii)!=0)
{
write_data(0xf1);
write_data(x+0x04);
write_data(y);
write_data(*ascii);//写要显示的ASCII码;
ascii++;
if(x<0x0f)
x++;
else
{
x=0x00;
y+=8;
if(y==0x40)
y=0;
}
}
}
/**************************************************************************************
函数功能:显示8*16ASCII字符串
输入参数:X坐标X从0x04到0x13共16个字符以字符为单位递增;(0--15)
Y坐标Y从0到0x3F共64个点以点为单位递增; (0--63)
输出参数:无
**************************************************************************************/
void send_asc16str(unsigned char x,unsigned char y,unsigned char *ascii)
{
while((*ascii)!=0)
{
write_data(0xF9);
write_data(x+0x04);
write_data(y);
write_data(*ascii);//写要显示的ASCII码;
ascii++;
if(x<0x0f)
x++;
else
{
x=0x00;
y+=16;
if(y==0x40)
y=0;
}
}
}
/*************************************************************************************
函数功能:显示16*16汉字
输入参数:x为横坐标(0x02-0x09); (0--7)
y为纵坐标(0x00-0x03); (0--3)
输出参数:无
*************************************************************************************/
void send_hz(unsigned char x,unsigned char y,unsigned char *hz_p)
{
while((*hz_p)!=0)
{
write_data(0xf0);
write_data(x+0x02);
write_data(y);
write_data(*hz_p-0xa0);
hz_p++;
write_data(*hz_p-0xa0);
hz_p++;
if(x<0x07)
x++;
else
{
x=0x00;
y++;
if(y==0x05)
y=0;
}
}
}
/**********************************************************************************************************
函数功能:显示字节点阵
输入参数:x为横轴起始坐标(0x04-0x13) (0--17)
y为纵轴起始坐标(0x00-0x3f) (0--63)
显示字节点阵宽度为widh共16个字节 (0--16)
高度为high(0x00-0x3f)共64个点 (0--64)
输出参数:无
**********************************************************************************************************/
void send_zjdz(unsigned char x,unsigned char y,unsigned char widh,unsigned char high,unsigned char *bmp_p)
{
unsigned char high_extent,widh_extent;
for(high_extent=0;high_extent<high;high_extent++)
{
for(widh_extent=0;widh_extent<widh;widh_extent++)
{
write_data(0xf3);
write_data(x+0x04);
write_data(y);
write_data(*bmp_p);
bmp_p++;
x++;
}
x-=widh;
y++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -