STM32F103-LCD1602驱动

STM32驱动LCD1602,不是很难,主要注意GPIO_Write(GPIOD,(GPIO_ReadOutputData(GPIOD) & 0xff00) | cmd);对电平的读取是整个驱动的核心,其他均与51驱动一致。

 

 

lcd.h文件


#ifndef     __LCD_H__
#define     __LCD_H__
#include "stm32f10x.h"

#define LED0 PBout(5)
#define LED1 PEout(5)
#define RS PDout(9)
#define RW PDout(10)
#define EN PDout(11)

void LCD_init(void);
void Wcmd(u8 cmd);
void Wdat(u8 dat);

#endif

lcd.c文件


#include "sys.h"
#include "LCD.h"
#include "delay.h"


//发送命令
void Wcmd(u8 cmd)
{
	RS = 0;
	RW = 0;
	EN = 1;
	GPIO_Write(GPIOD,(GPIO_ReadOutputData(GPIOD) & 0xff00) | cmd);
	delay_ms(2);
	EN = 0;
}
//发送数据
void Wdat(u8 dat)
{
	RS = 1;
	RW = 0;
	EN = 1;
	GPIO_Write(GPIOD,(GPIO_ReadOutputData(GPIOD) & 0xff00) | dat);
	delay_ms(2);
	EN = 0;
}
//
void LCD_init()
{
	GPIO_InitTypeDef  GPIO_Initlcd;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//
	
	GPIO_Initlcd.GPIO_Mode=GPIO_Mode_Out_PP;    //设置工作模式
	GPIO_Initlcd.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_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;  //选定引脚
	GPIO_Initlcd.GPIO_Speed=GPIO_Speed_50MHz;   //选择工作频率
	GPIO_Init(GPIOD,&GPIO_Initlcd);             //控制寄存器写入
	
	GPIO_Initlcd.GPIO_Mode=GPIO_Mode_Out_PP;    //设置工作模式
	GPIO_Initlcd.GPIO_Pin=GPIO_Pin_5;  //选定引脚
	GPIO_Initlcd.GPIO_Speed=GPIO_Speed_50MHz;   //选择工作频率
	GPIO_Init(GPIOB,&GPIO_Initlcd);
	
	GPIO_Initlcd.GPIO_Mode=GPIO_Mode_Out_PP;    //设置工作模式
	GPIO_Initlcd.GPIO_Pin=GPIO_Pin_5;  //选定引脚
	GPIO_Initlcd.GPIO_Speed=GPIO_Speed_50MHz;   //选择工作频率
	GPIO_Init(GPIOE,&GPIO_Initlcd);
	
	Wcmd(0x01); //清屏
	Wcmd(0x02); //光标归位
	Wcmd(0x06); //设置输入模式
	Wcmd(0x0C); //显示设置
	Wcmd(0x38); //功能设置
}

个人见解,感谢阅读。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值