資源簡介
本例基于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序列號
評論
共有 條評論