概述
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); //功能设置
}
个人见解,感谢阅读。
最后
以上就是负责小伙为你收集整理的STM32F103-LCD1602驱动的全部内容,希望文章能够帮你解决STM32F103-LCD1602驱动所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复