#include "lcd1602.h"
#include "delay.h"
void GPIO_Configura
tion()
{
GPIO_InitTypeDef GPIO_InitStrue;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOF,ENABLE); //使能GPIOA时钟
GPIO_InitStrue.GPIO_PuPd = GPIO_PuPd_UP ; //推挽输出
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStrue);
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStrue.GPIO_OType = GPIO_OType_PP ;
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_InitStrue);
LCD1602_Write_Cmd(0x38); /*显示模式设置*/
delay_ms(5);
LCD1602_Write_Cmd(0x38);
delay_ms(5);
LCD1602_Write_Cmd(0x38);
delay_ms(5);
LCD1602_Write_Cmd(0x38);
LCD1602_Write_Cmd(0x08); /*显示关闭*/
LCD1602_Write_Cmd(0x01); /*显示清屏*/
LCD1602_Write_Cmd(0x06); /*显示光标移动设置*/
delay_ms(5);
LCD1602_Write_Cmd(0x0C); /*显示开及光标设置*/
LCD1602_Write_Cmd(0x01); /*显示清屏*/
delay_ms(5);
}
void LCD_busy()
{
LCD_RS_Clr();
LCD_RW_Set();
LCD_EN_Clr();
delay_us(50);
LCD_EN_Set();
while(GPIO_ReadOutputDataBit(GPIOF,GPIO_Pin_7))
{}
}
/* 向LCD1602液晶写入一字节命令,cmd-待写入命令值 */
void LCD1602_Write_Cmd(u8 cmd)
{
LCD_busy();
GPIO_Write(GPIOF,0X00FF&cmd);
delay_us(50);
LCD_RS_Clr();
LCD_RW_Clr();
delay_us(2);
LCD_EN_Set();
delay_us(50);
LCD_EN_Clr();
delay_us(50);
}
/* 向LCD1602液晶写入一字节数据,dat-待写入数据值 */
void LCD1602_Write_Dat(u8 dat)
{
LCD_busy();
GPIO_Write(GPIOF,0X00FF&dat);
delay_us(5);
LCD_RS_Set();
LCD_RW_Clr();
delay_us(50);
LCD_EN_Set();
delay_us(50);
LCD_EN_Clr();
}
#ifndef __lcd1602_H
#define __lcd1602_H
#include "sys.h"
//1602液晶指令/数据选择引脚
#define LCD_RS_Set() GPIO_SetBits(GPIOA, GPIO_Pin_6)
#define LCD_RS_Clr() GPIO_ResetBits(GPIOA, GPIO_Pin_6)
//1602液晶读写引脚
#define LCD_RW_Set() GPIO_SetBits(GPIOA, GPIO_Pin_4)
#define LCD_RW_Clr() GPIO_ResetBits(GPIOA, GPIO_Pin_4)
//1602液晶使能引脚
#define LCD_EN_Set() GPIO_SetBits(GPIOA, GPIO_Pin_5)
#define LCD_EN_Clr() GPIO_ResetBits(GPIOA, GPIO_Pin_5)
void GPIO_Configuration(void);
void LCD1602_Write_Cmd(u8 cmd);
void LCD1602_Write_Dat(u8 dat);
主函数
int main(void)
{
delay_init(168); //初始化延时函数
LED_Init();
GPIO_Configuration();
LED0=0;
LED1=1;
LCD1602_Write_Cmd(0x06);
LCD1602_Write_Dat(92);
while(1)
{
}
}
这样写为什么显示不了,我觉得是正确的啊?还是什么地方出问题了。