STM32--12864应用

主要记录实际使用中的一些注意点。

一应用实例

1.LCD

1.LCD1602

电路图:

看手册:电源和背光可以使用5v或者3.3v,数据和控制引脚直接和单片机引脚连接即可。

单片机型号:stm32c031c6t6  可以直接使用推完输出连接D0--D7,RS,EN,RW引脚,3.3v就可以驱动(我使用的是这种方式);或者使用开漏输出,外面加上拉电阻5v驱动(没有用,不知道效果)。

两个间隔时间:

1.控制时序的延时:这个用的多,时间太短会显示不正常,或者不显示。

2.发给lcm指令之间的延时:一般初始化的时候回用一下

/*液晶初始化*/
void Lcm1602A_Init(void) 
{    Lcm1602A_Wr_Command(0x38);
    Lcm1602A_Wr_Command(0x38); //2次显示模式设置
    Lcm1602A_Wr_Command(0x0c); //显示及光标设置
    Lcm1602A_Wr_Command(0x01); //显示清屏
    HAL_Delay(2);
    Lcm1602A_Wr_Command(0x06); //显示光标移动设置
    Lcm1602A_Display_String();
}
/*发送指令给lcd*/
void Lcm1602A_Wr_Command(uint8_t wrcommand) 
{
    RS_1602A(0);//控制引脚
    RW_1602A(0);//控制引脚
    Lcm_Delay(LCM_DELAY_TIME);//这个延时很重要
    Lcm1602A_Data_Write(wrcommand);//写入数据(指令)
    Lcm_Delay(LCM_DELAY_TIME);
    E_1602A(1);//使能引脚
    Lcm_Delay(LCM_DELAY_TIME);
    E_1602A(0);
}

遇到的问题:减少Lcm_Delay(LCM_DELAY_TIME)时间;导致初始化失败,可是看手册的话,接受一个指令1us就够了,可是实际使用却需要几十us或者更长时间才够,不知道哪里的问题。先不管了。

Lcm_Delay(LCM_DELAY_TIME)不同时间下:

初始化效果:

正常如下


间隔100us如下

 间隔50us:

间隔10us如下

间隔2us如下

其他状况:

本来应该是第一行显示0--9 符号  第二行显示字母的,

不知道是程序被动过了,还是编译环境,还是什么有变化,初始化完成就变成了这样。

同样的时间下,连续两行显示全部显示不成功,但是一次显示几个字符却可以正常显示,当时调试的时候,就是这原因没注意到初始化没成功。

处理方式:增长延时的时间,lcd显示不需要很实时。

原因:同样的Lcm_Delay(LCM_DELAY_TIME) (大概延时10us),

(外部晶振用的是25mhz)定时器tim3的Prescaler = 47; Period = 1;可以正常初始化

改成Prescaler = 24; Period = 999; 初始化会出错。

2.LCD12864

字体显示:

横置横排:平时看的从左到右显示的那种

竖置横排:古代的那种排版

常用芯片:ST7567

调试问题:闪烁,电源线虚焊了;    有些闪烁和时间有关,刷新太快,还没有遇到。

电源线掉了,只剩下信号线和gnd,也能显示,会出现水平镜像,闪烁的问题。

sh1106的12864屏幕正常3.3v,实测2.2v,会出现水平镜像显示问题。


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值