完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
第一次尝试用STM32写LCD1602程序,但1602就是不显示,已经绞尽脑汁了没解决才麻烦各位大神的,请问是哪的问题呢?
#ifndef __LCD_H #define __LCD_H #include "stm32f10x.h" #include "sys.h" //LED端口定义 #define EN PAout(13) #define RS PAout(14) #define RW PAout(15) #define DATAOUT(x) GPIO_Write(GPIOB, x) void IO_Init(void); void write_com(u16); void write_data(u16); void LCD_Init(void);//初始化 #endif #include "lcd.h" #include "delay.h" void IO_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTD时钟,RCC->APB2ENR操作时钟寄存器 GPIOA口时钟使能 RCC->APB2ENR|=1<<3; //GPIOB口时钟使能 GPIOA->CRH&=0XFF0FFFFF; GPIOA->CRH|=0X00300000;//PA.13 推挽输出 //GPIOD->ODR=1; //PA.13 输出高 GPIOA->CRH&=0X00FFFFFF; GPIOA->CRH|=0X33000000;//PA.1415推挽输出 //GPIOD->ODR|=0XC001; //PG.14输出高 GPIOB->CRH&=0X00000000;//PB8~15推挽输出 GPIOB->CRH|=0X33333333; //GPIOE->ODR|=0XFF<<8; } //这一段对寄存器操作实际就相当于是对GPIO_Init进行操作 //写指令函数 //入口:com //出口:无 void write_com(u16 com) { RS=0; RW=0; EN=0; //GPIOB->ODR=com<<8; DATAOUT(com); delay_ms(10); EN=1; delay_ms(10); EN=0; } //写数据 //入口:data //出口:无 void write_data(u16 data) { RS=1; RW=0; EN=0; //GPIOB->ODR=data<<8; //输入一个16位的数据,移掉高8位就还剩低8位(此时低8位移位到高8位,低8位补0) DATAOUT(data); delay_ms(10); EN=1; delay_ms(10); EN=0; } //初始化函数 //入口:无 //出口:无 void LCD_Init(void) { EN=0;//使能端为低电平 write_com(0X3800);//显示模式设置 delay_ms(1); write_com(0X0800);//显示开关及光标设置 delay_ms(1); write_com(0X0100);;//地址指针自动+1,光标+1,屏幕不懂 delay_ms(1); write_com(0X0600); delay_ms(1); write_com(0X0c00); delay_ms(1); } #include "lcd.h" #include "delay.h" //按键输入实验 int main(void) { //u8 t; // u32 i; // i=0; // Stm32_Clock_Init(9); //系统时钟设置 // delay_init(72); //延时初始化 delay_init(); IO_Init(); //初始化与LED连接的硬件接口 LCD_Init(); write_com(0x8100); write_data(0x3000); write_com(0xc000); write_data(0x3000+1); } |
|
相关推荐
8个回答
|
|
寄存器配置的问题
最佳答案
|
|
|
|
用STM32干嘛用寄存器呢?库函数不好么?
|
|
|
|
没有对1602进行查忙
|
|
|
|
你好,这个我是根据之前51单片机的1602改过来的,之前51单片机上的1602就没有查忙,也是可以进行显示的,我加了验忙感觉作用不大,我觉得有可能是数据口那出了问题 |
|
|
|
|
|
|
|
STM32的速度比51快很多,原来51足够的延时,在STM32不一定够,试试加长延时
|
|
|
|
调好了没? 借鉴一下
|
|
|
|
谢谢,已经调试好了,做的是一个电子密码锁的东西,届时会把整个项目发出来 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1129 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1075 浏览 2 评论
2175 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1269 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1693 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 08:07 , Processed in 0.786111 second(s), Total 59, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号