蔡老四 发表于 2017-12-8 10:03:43

stm8l052c6的lcd和pe1针脚冲突

pe1上是一个按键,用内部上拉电阻。
lcd部分初始化代码是这样的。
void LCDInit(){
CLK_PCKENR2_PCKEN23=1;    //启动lcd的时钟
CLK_CRTCR=0x84;       //设置
LCD_CR1=0x05;
LCD_CR2=0x21;
LCD_FRQ=0x00;

LCD_PM0=0x00;
LCD_PM1=0x80;
LCD_PM2=0xbf;
LCD_PM3=0x0f;

LCD_CR3_LCDEN=1;

}
只要关了lcd时钟或者不启动LCD_CR3_LCDEN。按键一切正常。一启动后,用示波器看,电压跟ac一样的曲线,然后在1.2v左右~0v之间波动。
求指导。先谢谢

蔡老四 发表于 2017-12-8 10:05:24

另外,电路板总共有14个按键,也有pe口的,也都补得很靠近,其他一切按键都不受影响。

蔡老四 发表于 2017-12-8 10:30:13

外部加上拉之后可以正常使用,开发平台用iar2.1。100块板打好了,抽6块都是一模一样的问题。。。

zhjb1 发表于 2018-2-23 09:11:39

蔡老四 发表于 2017-12-8 10:30
外部加上拉之后可以正常使用,开发平台用iar2.1。100块板打好了,抽6块都是一模一样的问题。。。 ...

只能在屏幕模块的LCDEN引脚电阻强拉到低,断开此引脚了。这样改动最小,想想是吗?

ldskendy 发表于 2018-2-23 09:12:06

是不是开启LCD时钟后,内部上拉失效了,

wenyangzeng 发表于 2018-2-23 09:49:41

本帖最后由 wenyangzeng 于 2018-2-23 09:55 编辑

参考ST官方手册:PE1是LCD的段码Segment2,楼主既然使能了片子的LCD功能,PE1当然不能再当普通IO口使用了。楼主应该仔细阅读手册,找到与LCD驱动无关的IO口来充当按键使用。
https://www.stmcu.org.cn/document/detail/index/id-213027



Tcreat 发表于 2018-2-23 09:57:58

本帖最后由 Tcreat 于 2018-2-23 10:01 编辑

LCD_CR3_LCDEN 是LCD控制器使能控制位就像6楼说的你开启了LCD时钟或者使能了LCD控制器 那么单片机默认就把PE1当成LCD控制引脚了你外部上来只是强制拉高了    LCD段码屏默认是1/3电压   供电在3.3V左右的话所以PE1口的电压在1.2左右到0V之间跳动 也是正常现象

nyszx 发表于 2018-2-23 10:12:12

PE1是LCD_SEG2,所以看看是不是哪里有把它设置为跟LCD有关了

无薪税绵 发表于 2018-2-23 11:21:25

还有一个方法,
试试在LCD_CR3_LCDEN关闭时,
快速切换到IO模式,完成按键检测后,
再切换到LED控制,
只要速度够快(比如20ms检测一次按键,每次耗时小于1ms),应该是不影响的。

Tcreat 发表于 2018-2-23 11:26:31

本帖最后由 Tcreat 于 2018-2-23 11:28 编辑

无薪税绵 发表于 2018-2-23 11:21
还有一个方法,
试试在LCD_CR3_LCDEN关闭时,
快速切换到IO模式,完成按键检测后,

如果该引脚有驱动段码屏的段位的话 肯定会影响段位的显示的,当然如果时间够短的话 可能人眼无法察觉 但是这种方式 肯定会对段位或者按键的体验有影响的
页: [1] 2
查看完整版本: stm8l052c6的lcd和pe1针脚冲突