📄 lcd_dis.c
字号:
//========================================================================
// 文件名: LCD_Dis.c
// 作 者: xinqiang Zhang(小丑) (email: xinqiang@Mzdesign.com.cn)
// 日 期: 2009/02/10
// 描 述: MzLH04-12864 LCD显示模块驱动V1.0版
// 基本功能接口函数集
//
// 参 考: 无
// 版 本:
// 2009/02/10 First version Mz Design
//========================================================================
#include "LCD_Config.h"
#include "stm32f10x_lib.h"
#include "LCD_Dis.h"
unsigned char X_Witch=6;
unsigned char Y_Witch=10;
unsigned char X_Witch_cn=16;
unsigned char Y_Witch_cn=16;
unsigned char Dis_Zero=0;
//========================================================================
// 函数: void LCD_Init(void)
// 描述: LCD初始化程序,主要在里面完成端口初始化以及LCD模块的复位
// 参数: 无
// 返回: 无
// 备注:
// 版本:
// 2009/02/10 First version Mz Design
//========================================================================
//========================================================================
void TimeDelay(unsigned int Timers)
{
unsigned int i;
while(Timers)
{
Timers--;
for(i=0;i<100;i++) asm("nop");
}
}
/* 发送一个字节 */
void SPI_Send(u8 data)
{
while( SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)== RESET) ;
/* Send SPI2 data */
SPI_I2S_SendData(SPI1, data);
TimeDelay(10); //10
}
//============================================================================
//========================================================================
// 函数: void LCD_Init(void)
// 描述: LCD初始化程序,主要在里面完成端口初始化以及LCD模块的复位
// 参数: 无
// 返回: 无
void LCD_Init(void)
{
//SS和SCK预先设置为高电平
//SPI_SCK = 1;
GPIO_SetBits(GPIOB, GPIO_Pin_2); // SPI_CS = 1;
//复位LCD模块
GPIO_ResetBits(GPIOA, GPIO_Pin_6); // SPI_RES = 0;
TimeDelay(80); //保持低电平大概2ms左右
GPIO_SetBits(GPIOA, GPIO_Pin_6); // SPI_RES = 1;
TimeDelay(600); //延时大概2ms左右
}
//========================================================================
// 函数: void SPI_SSSet(unsigned char Status)
// 描述: 置SS线状态
// 参数: Status =1则置高电平,=0则置低电平
// 返回: 无
//========================================================================
void SPI_SSSet(unsigned char Status)
{
if(Status) //判断是要置SS为低还是高电平?//SS置高电平
GPIO_SetBits(GPIOB, GPIO_Pin_2); //SPI_CS = 1;
else //SS置低电平
GPIO_ResetBits(GPIOB, GPIO_Pin_2); //SPI_CS = 0;
}
//========================================================================
// 函数: void FontSet(unsigned char Font_NUM,unsigned char Color)
// 描述: ASCII字符字体设置
// 参数: Font_NUM 字体选择,以驱动所带的字库为准
// Color 文本颜色,仅作用于ASCII字库
// 返回: 无
// 备注:
// 版本:
// 2007/07/19 First version
//========================================================================
void FontSet(unsigned char Font_NUM,unsigned char Color)
{
unsigned char ucTemp=0;
if(Font_NUM==0)
{
X_Witch = 6;//7;
Y_Witch = 10;
}
else
{
X_Witch = 8;
Y_Witch = 16;
}
ucTemp = (Font_NUM<<4)|Color;
//设置ASCII字符的字型
SPI_SSSet(0); //SS置低电平
SPI_Send(0x81); //传送指令0x81
SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色
SPI_SSSet(1); //完成操作置SS高电平
}
//========================================================================
// 函数: void FontMode(unsigned char Cover,unsigned char Color)
// 描述: 设置字符显示覆盖模式
// 参数: Cover 字符覆盖模式设置,0或1
// Color 覆盖模式为1时字符显示时的背景覆盖色
// 返回: 无
// 备注:
// 版本:
// 2008/11/27 First version
//========================================================================
void FontMode(unsigned char Cover,unsigned char Color)
{
unsigned char ucTemp=0;
ucTemp = (Cover<<4)|Color;
//设置ASCII字符的字型
SPI_SSSet(0); //SS置低电平
SPI_Send(0x89); //传送指令0x81
SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色
SPI_SSSet(1); //完成操作置SS高电平
}
//========================================================================
// 函数: void FontSet_cn(unsigned char Font_NUM,unsigned char Color)
// 描述: 汉字库字符字体设置
// 参数: Font_NUM 字体选择,以驱动所带的字库为准
// Color 文本颜色,仅作用于汉字库
// 返回: 无
// 备注:
// 版本:
// 2007/07/19 First version
//========================================================================
void FontSet_cn(unsigned char Font_NUM,unsigned char Color)
{
unsigned char ucTemp=0;
if(Font_NUM==0)
{
X_Witch_cn = 12;
Y_Witch_cn = 12;
}
else
{
X_Witch_cn = 16;
Y_Witch_cn = 16;
}
ucTemp = (Font_NUM<<4)|Color;
//设置ASCII字符的字型
SPI_SSSet(0); //SS置低电平
SPI_Send(0x82); //传送指令0x81
SPI_Send(ucTemp); //选择8X16的ASCII字体,字符色为黑色
SPI_SSSet(1); //完成操作置SS高电平
}
//========================================================================
// 函数: void PutChar(unsigned char x,unsigned char y,unsigned char a)
// 描述: 写入一个标准ASCII字符
// 参数: x X轴坐标 y Y轴坐标
// a 要显示的字符在字库中的偏移量
// 返回: 无
// 备注: ASCII字符可直接输入ASCII码即可
// 版本:
// 2007/07/19 First version
//========================================================================
void PutChar(unsigned char x,unsigned char y,unsigned char a)
{
//显示ASCII字符
SPI_SSSet(0); //SS置低电平
SPI_Send(7); //传送指令0x07
SPI_Send(x); //要显示字符的左上角的X轴位置
SPI_Send(y); //要显示字符的左上角的Y轴位置
SPI_Send(a); //要显示字符ASCII字符的ASCII码值
SPI_SSSet(1); //完成操作置SS高电平
}
//========================================================================
// 函数: void PutString(int x,int y,char *p)
// 描述: 在x、y为起始坐标处写入一串标准ASCII字符
// 参数: x X轴坐标 y Y轴坐标
// p 要显示的字符串
// 返回: 无
// 备注: 仅能用于自带的ASCII字符串显示
// 版本:
// 2007/07/19 First version
//========================================================================
void PutString(unsigned char x,unsigned char y,unsigned char *p)
{
while(*p!=0)
{
PutChar(x,y,*p);
x += X_Witch;
if((x + X_Witch) > Dis_X_MAX)
{
x = Dis_Zero;
if((Dis_Y_MAX - y) < Y_Witch) break;
else y += Y_Witch;
}
p++;
}
}
//========================================================================
// 函数: void PutChar_cn(unsigned char x,unsigned char y,unsigned short * GB)
// 描述: 写入一个二级汉字库汉字
// 参数: x X轴坐标 y Y轴坐标
// a GB码
// 返回: 无
// 备注:
// 版本:
// 2007/07/19 First version
// 2007/07/24 V1.2 for MCS51 Keil C
//========================================================================
void PutChar_cn(unsigned char x,unsigned char y,unsigned char * GB)
{
//显示ASCII字符
SPI_SSSet(0); //SS置低电平
SPI_Send(8); //传送指令0x08
SPI_Send(x); //要显示字符的左上角的X轴位置
SPI_Send(y); //要显示字符的左上角的Y轴位置
SPI_Send(*(GB++)); //传送二级字库中汉字GB码的高八位值
SPI_Send(*GB); //传送二级字库中汉字GB码的低八位值
SPI_SSSet(1); //完成操作置SS高电平
}
//========================================================================
// 函数: void PutString_cn(unsigned char x,unsigned char y,unsigned short *p)
// 描述: 在x、y为起始坐标处写入一串汉字字符
// 参数: x X轴坐标 y Y轴坐标
// p 要显示的字符串
// 返回: 无
// 备注: 同PutChar_cn中的解释
// 版本:
// 2007/07/19 First version
// 2007/07/24 V1.2 for MCS51 Keil C
//========================================================================
void PutString_cn(unsigned char x,unsigned char y,unsigned char *p)
{
while(*p!=0)
{
if(*p<128)
{
PutChar(x,y,*p);
x += X_Witch+1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -