资源简介
本例基于stm32单片机的lcd12864液晶的串行显示程序。测试稳定。
代码片段和文件信息
#include“stm32f10x.h“
#define CLR_RS GPIO_ResetBits(GPIOD GPIO_Pin_11)
#define SET_RS GPIO_SetBits(GPIOD GPIO_Pin_11)
#define CLR_RW GPIO_ResetBits(GPIOD GPIO_Pin_12)
#define SET_RW GPIO_SetBits(GPIOD GPIO_Pin_12)
#define CLR_EN GPIO_ResetBits(GPIOD GPIO_Pin_13)
#define SET_EN GPIO_SetBits(GPIOD GPIO_Pin_13)
/****************************************************************
函数名称:LCD_PortInit
函数功能:初始化LCD端口
入口参数:void
出口参数:void
备 注:
*****************************************************************/
void LCD_PortInit()
{
GPIO_InitTypeDef GPIO_Config;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIODENABLE);
GPIO_Config.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Config.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Config.GPIO_Pin=GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
GPIO_Init(GPIOD&GPIO_Config);
}
/****************************************************************
函数名称:LCD_WriteByte
函数功能:串行方式向12864写入一字节数据
入口参数:dat 8bit
出口参数:无
备 注:
void GPIO_Write(GPIO_TypeDef* GPIOx uint16_t PortVal)
*****************************************************************/
void LCD_WriteByte(u8 dat)
{
u8 i;
for(i=0;i<8;i++)
{
CLR_EN;
delay(30);
if(dat & 0x0080)
SET_RW;
else
CLR_RW;
SET_EN;
delay(30);
CLR_EN;
delay(30);
dat = dat << 1;
}
}
/****************************************************************
函数名称:LCD_WriteCom
函数功能:向12864写入命令
入口参数:com
出口参数:无
备 注:
*****************************************************************/
void LCD_WriteCom(u8 com)
{
SET_RS;
LCD_WriteByte(0xf8);
LCD_WriteByte(com & 0xf0);
LCD_WriteByte(0xf0 & com << 4); //先执行<<
CLR_RS;
}
/****************************************************************
函数名称:LCD_WriteData
函数功能:向12864写入数据
入口参数:dat
出口参数:无
备 注:
*****************************************************************/
void LCD_WriteData(u8 dat)
{
SET_RS;
LCD_WriteByte(0xfa);
LCD_WriteByte(dat&0xf0);
LCD_WriteByte(0xf0&dat<<4);
CLR_RS;
}
/****************************************************************
函数名称:Init_LCD
函数功能:初始化12864液晶
入口参数:无
出口参数:无
备 注:严格按照资料给的初始化流程编写
*****************************************************************/
void LCD_Init()
{
GPIO_ResetBits(GPIOD GPIO_Pin_8);
delay(5000);
LCD_WriteCom(0x30); //功能设定指令,表示为基本指令
delay(5000);
LCD_WriteCom(0x02);
delay(5000);
LCD_WriteCom(0x0c); //显示状态指令,表示不显示游标
delay(5000);
LCD_WriteCom(0x01); //清楚显示
delay(5000);
LCD_WriteCom(0x06); //进入点设定,这条指令貌似只有0x06的时候才能正常显示
}
/****************************************************************
函数名称:Clear_Screen
函数功能:清楚屏幕
入口参数:无
出口参数:无
备 注:
*****************************************************************/
void LCD_ClearScreen()
{
LCD_WriteCom(0x01);
delay(6000);
}
/****************************************************************
函数名称:LCD_Write_String
函数功能:向12864写入字符串
入口参数:x~(0-7)y~(0-3)---设定第一个字符的坐标
*s ----需要显示的字符串
出口参数:无
备 注:
*****************
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-07-27 10:38 stm32lcd12864串行程序\
文件 4249 2013-07-26 23:07 stm32lcd12864串行程序\stm32f10x_lcddispaly.c
文件 384 2013-07-26 22:48 stm32lcd12864串行程序\stm32f10x_lcddisplay.h
- 上一篇:ECDSA签名
- 下一篇:TFS2013及TFS2015序列号
评论
共有 条评论