完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include "lcd1602.h"
#include "delay.h" void GPIO_Configuration() { 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) { } } 这样写为什么显示不了,我觉得是正确的啊?还是什么地方出问题了。 |
|
相关推荐
5个回答
|
|
stm32的引脚在读写功能改变的时候需要重新设置引脚模式的
|
|
1 条评论
|
|
LCD1602需要调节对比度,在LCD上电后,单片机未能正确操作LCD时,LCD会显示一行方块
|
|
3 条评论
|
|
程序实测可以的,引脚配置有点杂
LCD_RS PA_Pin_11 LCD_RW PB_Pin_11 LCD_EN PA_Pin_12 LCD_DB0 PA_Pin_15 LCD_DB1 PC_Pin_10 LCD_DB2 PC_Pin_11 LCD_DB3 PC_Pin_12 LCD_DB4 PD_Pin_2 LCD_DB5 PB_Pin_3 LCD_DB6 PB_Pin_4 LCD_DB7 PB_Pin_5 |
|
3 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2183 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2011 浏览 3 评论
4612 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2154 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2687 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 06:48 , Processed in 1.722589 second(s), Total 136, Slave 102 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号