stm32 控制 lcd1602
stm32 LCD1602 标准库例程
lcd1602.c
#include "lcd1602.h"
#include "delay.h"
#include <stdio.h>void GPIO_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOE| RCC_AHB1Periph_GPIOG,ENABLE);//使能PB,PD端口时钟GPIO_InitStructure.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_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化GPIOD0~7 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOF, &GPIO_InitStructure); //初始化GPIB15,14,13GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOG, &GPIO_InitStructure); //初始化GPIB15,14,13
}/* 等待液晶准备好 */
void LCD1602_Wait_Ready(void)
{u8 sta;DATAOUT(0xff);LCD_RS_Clr();LCD_RW_Set();do{LCD_EN_Set();delay_ms(5); //延时5ms,非常重要
// sta = GPIO_ReadInputData(GPIOF);//读取状态字sta =GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_7);LCD_EN_Clr();}while(sta & 0x80);//bit7等于1表示液晶正忙,重复检测直到其等于0为止
}/* 向LCD1602液晶写入一字节命令,cmd-待写入命令值 */
void LCD1602_Write_Cmd(u8 cmd)
{LCD1602_Wait_Ready();delay_ms(1);LCD_RS_Clr();delay_ms(1);LCD_RW_Clr();delay_ms(1);DATAOUT(cmd);delay_ms(1);LCD_EN_Set();delay_ms(1);LCD_EN_Clr();delay_ms(1);//printf("%d",cmd);
}/* 向LCD1602液晶写入一字节数据,dat-待写入数据值 */
void LCD1602_Write_Dat(u8 dat)
{LCD1602_Wait_Ready();delay_ms(1);LCD_RS_Set();delay_ms(1);LCD_RW_Clr();delay_ms(1);DATAOUT(dat);delay_ms(1);LCD_EN_Set();delay_ms(1);LCD_EN_Clr();delay_ms(1);
}/* 清屏 */
void LCD1602_ClearScreen(void)
{LCD1602_Write_Cmd(0x01);
}/* 设置显示RAM起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标 */
void LCD1602_Set_Cursor(u8 x, u8 y)
{u8 addr;if (y == 0)addr = 0x00 + x;elseaddr = 0x40 + x;LCD1602_Write_Cmd(addr | 0x80);
}/* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针 */
void LCD1602_Show_Str(u8 x, u8 y, u8 *str)
{LCD1602_Set_Cursor(x, y);while(*str != '\0'){LCD1602_Write_Dat(*str++);}
}/* 初始化1602液晶 */
void LCD1602_Init(void)
{GPIO_Configuration();LCD1602_Write_Cmd(0x38); //16*2显示,5*7点阵,8位数据口LCD1602_Write_Cmd(0x0c); //开显示,光标关闭LCD1602_Write_Cmd(0x06); //文字不动,地址自动+1LCD1602_Write_Cmd(0x01); //清屏// LCD1602_Write_Cmd(0X02);
// LCD1602_Write_Cmd(0X06);
// LCD1602_Write_Cmd(0X00);
// LCD1602_Write_Cmd(0X0C); // LCD1602_Write_Cmd(0X38);
// LCD1602_Write_Cmd(0x01); }
lcd1602.h
#ifndef __LCD1602_H
#define __LCD1602_H
#include "sys.h"//1602液晶指令/数据选择引脚
#define LCD_RS_Set() GPIO_SetBits(GPIOF, GPIO_Pin_0)
#define LCD_RS_Clr() GPIO_ResetBits(GPIOF, GPIO_Pin_0)//1602液晶读写引脚
#define LCD_RW_Set() GPIO_SetBits(GPIOF, GPIO_Pin_1)
#define LCD_RW_Clr() GPIO_ResetBits(GPIOF, GPIO_Pin_1)//1602液晶使能引脚
#define LCD_EN_Set() GPIO_SetBits(GPIOG, GPIO_Pin_15)
#define LCD_EN_Clr() GPIO_ResetBits(GPIOG, GPIO_Pin_15)//1602液晶数据端口 PD0~7
#define DATAOUT(x) GPIO_Write(GPIOE, x)void GPIO_Configuration(void);
void LCD1602_Wait_Ready(void);
void LCD1602_Write_Cmd(u8 cmd);
void LCD1602_Write_Dat(u8 dat);
void LCD1602_ClearScreen(void);
void LCD1602_Set_Cursor(u8 x, u8 y);
void LCD1602_Show_Str(u8 x, u8 y, u8 *str);
void LCD1602_Init(void);#endif
stm32 控制 lcd1602相关推荐
- STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创
STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创 A0,A1,A2全部悬空,那么PCF8574的IIC地址为0x4e.(具体原因,看PCF ...
- Ardino基础教程 21_最简单最快控制LCD1602
实验二十一:最简单最快控制LCD1602 实验接线图 下面个摇杆模块,不用接先不忙管. #include <LiquidCrystal.h> LiquidCrystal lcd(12, 1 ...
- MPU6050工作原理及STM32控制MPU6050
一·简介: 1.要想知道MPU6050工作原理,得先了解下面俩个传感器: ①陀螺仪传感器: 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的.人们根据这个道理,用它来保持 ...
- STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序
STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序 一.ULN2003驱动器 1.工作原理 2.步距角以及一圈所需步数的计算 二.硬件连接 三.STM32F103定时器中断 ...
- 物联网开发笔记(25)- 使用Micropython开发ESP32开发板之控制LCD1602显示屏
这一节我们讲解了如何控制LCD1602显示屏,显示两行字. 一.目的 使用MicroPython开发ESP32开发板控制LCD1602显示屏 二.环境 ESP32 + LCD1602显示屏 + Tho ...
- mysql gprs 程序_基于STM32控制的GPS定位与GPRS发送数据(程序源码)
一个用STM32控制的GPS与GPRS程序,GPS使用ublox的GPS,GPRS使用SIM800E,主要实现每隔几分钟(间隔时间由服务器设定,默认5分钟)将模块的定位结果数据发送到服务器中,服务器返 ...
- 51单片机控制LCD1602模块
51单片机控制LCD1602模块 视频播放:LCD1602视频 (1)LCD1602概述 先来看看LCD1602什么意思?Liquid Crystal Display(LCD)表示液晶显示,1602 ...
- STM32控制HC-05蓝牙模块进行通信
一.HC-05蓝牙模块 1. 简介 HC-05主从一体蓝牙串口模块采用英国CSR公司BlueCore4系列的芯片,符合符合蓝牙2.0+EDR规范,可以同带同种蓝牙功能的电脑.蓝牙主机和手机等智能终端配 ...
- HC-05蓝牙模块与STM32控制led灯亮详解
HC-05蓝牙模块与STM32控制led灯亮 一.HC-05蓝牙模块解析 1.简介 2.HC-05原理 3.HC-05实物图 二.使用AT指令进行配置 1.进入命令响应工作模式 2.配置串口 3.进行 ...
最新文章
- 从python开始学编程vamei_从python开始学编程-vamei(1)
- fabric 简单理解
- Linkis1.0下载地址
- postsharp初体验
- 『设计模式』开发设计的七大原则,我做人还是挺有原则,那些代码呢?
- Android APK系列4-------Android编译APK后的系统结构
- 为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。请单击这里获取选项......
- 盘点俄罗斯大神写的几款软件,你用过几个?最后1个是我的童年
- 【语料库】语料库资源汇总
- Mac删除声音输出设备
- php怎么看回调的异步通知的数据_paypal支付,异步回调(php)
- 集成学习方法及思想总结
- Win10下的外接显示器不能识别的解决方法
- niushop分销版开源商城旗舰版v3.7商城源码旗舰版PJ版
- 属于程序员的“高考”考题,我估计没准还有很多人没有看过(建议不要收藏)
- 劝说语合理使用计算机,用一句名言来劝说家长让孩子接触计算机
- iar stm32_STM32强大的生态,在这里一起总结!
- scikit-video读写视频
- 【心理咨询师考试笔记】操作技能(三)——咨询基本技能
- python中列表概念_详解python列表