• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签:

资源简介

本例基于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

评论

共有 条评论