新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2021-11-25
- 在线时间
- 2 小时
|
RS-----PC8
RW----PC7
EN-----PC6
D0~D7---------------PB0~PB7
VDD接5.5v
VO接地
A接5.5v
k接地
***********************************************LCD1602.c******************************
#include "lcd1602.h"
#include "sys.h"
#include "delay.h"
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=LCDDATA;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_SetBits(GPIOB,LCDDATA);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=LCDDATA1;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStruct);
GPIO_SetBits(GPIOC,LCDDATA1);
}
//初始化液晶屏
void LCD1602_Init()
{
GPIO_Configuration(); //初始化引脚
delay_ms( 15 );
LCD1602_Write_Cmd( 0x38 ); //显示模式设置
delay_ms( 5 );
LCD1602_Write_Cmd( 0x0C ); //显示开及光标设置
delay_ms( 5 );
LCD1602_Write_Cmd( 0x01 ); //显示清屏
delay_ms( 5 );
LCD1602_Write_Cmd( 0x06 ); //显示光标移动位置
delay_ms( 5 );
LCD1602_Write_Cmd( 0x80 );
delay_ms( 5 );
}
//判忙
//写命令函数
void LCD1602_Write_Cmd( u8 cmd ){
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 1;
DATAOUT( cmd );
delay_ms( 5 );
LCD_EN = 0;
}
//写数据函数
void LCD1602_Write_Dat( u8 data )
{
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 1;
DATAOUT( data );
delay_ms( 5 );
LCD_EN = 0;
}
//函数功能:1602清屏函数
void LCD1602_ClearScreen(){
LCD1602_Write_Cmd( 0x01 );
}
//函数功能:设置1602位置函数
void LCD1602_Set_Cursor( u8 x, u8 y )
{
u8 addr;
if ( y == 0 )
addr = 0x00 + x;
else
addr = 0x40 + x;
LCD1602_Write_Cmd( addr | 0x80 );
}
//函数功能:指定位置显示字符串函数
void LCD1602_Show_Str( u8 x, u8 y, u8 *str ){
LCD1602_Set_Cursor( x, y );
while ( *str != '\0' )
{
LCD1602_Write_Dat( *str++ );
}
}
**************************LCD1602.h***************************
#ifndef __LCD1602_H
#define __LCD1602_H
#include "sys.h"
#define LCD_RS PCout(8)
#define LCD_RW PCout(7)
#define LCD_EN PCout(6)
#define LCDDATA GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7
#define LCDDATA1 GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8
#define DATAOUT( x ) GPIO_Write( GPIOB, x ) //1602的8条数据控制线
void GPIO_Configuration(void);
void LCD1602_Init(void);
void LCD1602_Write_Cmd( u8 cmd );
void LCD1602_Write_Dat( u8 data );
void LCD1602_ClearScreen(void);
void LCD1602_Set_Cursor( u8 x, u8 y );
void LCD1602_Show_Str( u8 x, u8 y, u8 *str );
#endif
****************************************main.c****************************
#include "lcd1602.h"
int main(void)
{
u8 word[]={"I LOVE YOU"};
LCD1602_Init();
LCD1602_Show_Str(2,0,word);
while(1)
{}
}
|
-
实验现象只有上面一行方格亮
|