打印
[STM8]

STM8L152R8段式LCD 8com口32seg 1/4偏压COM口没有波型

[复制链接]
8030|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weiweiwsk|  楼主 | 2013-7-26 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 weiweiwsk 于 2013-7-26 15:53 编辑

初用STM8,根据官网上的例子还有网上的一些资料段式液晶驱动流程都差不多,我也是用库函数来驱动的,不知道是不是硬件有问题,只接了一个32768的晶振,另外屏的引脚比较多,因此走线也相对长了点,最长的大概有个5cm.
程序如下:
(时钟部分初始化,官网例子里有这部分)
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
RTC_DeInit();
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);
RTC_SetWakeUpCounter(0x400);
RTC_ITConfig(RTC_IT_WUT, ENABLE);
TimingDelay_Init();
(LCD初始化部分,下面的是详细内容)
LCD_GLASS_Init();

CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);

  LCD_Init(LCD_Prescaler_2, LCD_Divider_18, LCD_Duty_1_8,
           LCD_Bias_1_4, LCD_VoltageSource_Internal);

seg脚全部配上了,有些没有用上
  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_4, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_5, 0xFF);

  LCD_ContrastConfig(LCD_Contrast_Level_7);
  LCD_DeadTimeConfig(LCD_DeadTime_0);
  LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1);

  LCD_Cmd(ENABLE);


然后就是往RAM里写数据了
while (1)
{   
               LCD_WriteRAM(LCD_RAMRegister_0,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_1,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_2,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_3,0xFF);
               LCD_WriteRAM(LCD_RAMRegister_4,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_5,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_6,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_7,0xFF);
}

但COM口一直没有波型,也没有电压,弄了几天了,求帮助!
沙发
IJK| | 2013-7-26 15:43 | 只看该作者
COM口一直没有波型,那SEGMENT呢?

使用特权

评论回复
板凳
outstanding| | 2013-7-26 15:52 | 只看该作者
没有波形是什么意思?没有信号么?

使用特权

评论回复
地板
weiweiwsk|  楼主 | 2013-7-26 15:58 | 只看该作者
IJK 发表于 2013-7-26 15:43
COM口一直没有波型,那SEGMENT呢?

SEGMENT脚也是一样,没有波型,也没有电压,现在正在调试,下面是程序
void main(void)
{
        SYS_CLK_Configuration();
        LCD_Configuration();
        while (1)
        {   
               LCD_WriteRAM(LCD_RAMRegister_0,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_1,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_2,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_3,0xFF);
               LCD_WriteRAM(LCD_RAMRegister_4,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_5,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_6,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_7,0xFF);
        }
}
void SYS_CLK_Configuration(void)
{
  //使能系统时钟切换
  CLK_SYSCLKSourceSwitchCmd(ENABLE);   
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
  
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_2);
  
  while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
         {  

         }
  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
}

void LCD_Configuration(void)
{
  CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);

  LCD_Init(LCD_Prescaler_2, LCD_Divider_18, LCD_Duty_1_8,
           LCD_Bias_1_4, LCD_VoltageSource_Internal);

  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_4, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_5, 0xFF);

  LCD_ContrastConfig(LCD_Contrast_Level_7);
  LCD_DeadTimeConfig(LCD_DeadTime_0);
  LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1);

  LCD_Cmd(ENABLE);
}

使用特权

评论回复
5
weiweiwsk|  楼主 | 2013-7-26 15:59 | 只看该作者
outstanding 发表于 2013-7-26 15:52
没有波形是什么意思?没有信号么?

嗯,没有信号

使用特权

评论回复
6
outstanding| | 2013-7-26 16:01 | 只看该作者
0 或 1都没有,那就是完全没有驱动了

使用特权

评论回复
7
weiweiwsk|  楼主 | 2013-7-26 16:06 | 只看该作者
outstanding 发表于 2013-7-26 16:01
0 或 1都没有,那就是完全没有驱动了

也奇怪了,之前调串口都可以通信,后来LCD一直不出来,现在专门弄LCD了,4楼贴了程序,帮忙看看有没有问题!

使用特权

评论回复
8
outstanding| | 2013-7-26 16:11 | 只看该作者
weiweiwsk 发表于 2013-7-26 16:06
也奇怪了,之前调串口都可以通信,后来LCD一直不出来,现在专门弄LCD了,4楼贴了程序,帮忙看看有没有问题! ...

seg脚全部配上了,有些没有用上
  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_4, 0xFF);
  LCD_PortMaskConfig(LCD_PortMaskRegister_5, 0xFF);


while (1)
{   
               LCD_WriteRAM(LCD_RAMRegister_0,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_1,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_2,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_3,0xFF);
               LCD_WriteRAM(LCD_RAMRegister_4,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_5,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_6,0xFF);
                LCD_WriteRAM(LCD_RAMRegister_7,0xFF);
}
不是差不多么?我不清楚,猜测的,我没有玩过。至少要上电路图部分,不然怎么知道 com和段的关系。

使用特权

评论回复
9
weiweiwsk|  楼主 | 2013-7-26 16:39 | 只看该作者
outstanding 发表于 2013-7-26 16:11
seg脚全部配上了,有些没有用上
  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);
  LCD_PortMaskCo ...

貌似硬件出问题了,仿真单步执行的时候出错

Fri Jul 26, 2013 16:37:56: Failed to read memory at 0xFFC: SWIM error [30004]: Comm timeout

这是什么意思呢?

之前仿真不会出现这问题

使用特权

评论回复
10
outstanding| | 2013-7-26 17:02 | 只看该作者
weiweiwsk 发表于 2013-7-26 16:39
貌似硬件出问题了,仿真单步执行的时候出错

Fri Jul 26, 2013 16:37:56: Failed to read memory at 0xFFC ...

读内存失败,comm口超时么?
那好好检查一下。。。

使用特权

评论回复
11
outstanding| | 2013-7-26 17:03 | 只看该作者
weiweiwsk 发表于 2013-7-26 16:39
貌似硬件出问题了,仿真单步执行的时候出错

Fri Jul 26, 2013 16:37:56: Failed to read memory at 0xFFC ...

读内存失败,comm口超时么?

那好好检查一下吧。。。。

使用特权

评论回复
12
weiweiwsk|  楼主 | 2013-7-26 17:16 | 只看该作者
outstanding 发表于 2013-7-26 17:03
读内存失败,comm口超时么?

那好好检查一下吧。。。。

现在测得的com口和seg口都是下边失真的正弦波,!!!!!!

使用特权

评论回复
13
cjhk| | 2013-7-26 19:04 | 只看该作者
比较奇怪   这个问题   有点意思   楼主

使用特权

评论回复
14
hkcj| | 2013-7-27 08:51 | 只看该作者
有可能是哪里的寄存器出了问题  楼主  仔细查一查  看看先  

使用特权

评论回复
15
weiweiwsk|  楼主 | 2013-7-29 10:00 | 只看该作者
hkcj 发表于 2013-7-27 08:51
有可能是哪里的寄存器出了问题  楼主  仔细查一查  看看先

可不可以说一下STM8L152R8驱动8个COM口40个seg脚,1/4偏压的LCD的具体配置方法,比如时钟,IO口,LCD,还有RTC!拜谢!

使用特权

评论回复
16
weiweiwsk|  楼主 | 2013-7-29 17:22 | 只看该作者
找了N久的问题,今天找到了,是因为硬件上的LCD电压源我是外接的,程序里面一直是内部的,所以一直不出来!谢谢各位的热心参与!

使用特权

评论回复
17
vergoo| | 2015-1-29 15:18 | 只看该作者
啊,又不用库函数的吗?

使用特权

评论回复
18
TFT| | 2015-11-23 22:38 | 只看该作者
weiweiwsk 发表于 2013-7-29 17:22
找了N久的问题,今天找到了,是因为硬件上的LCD电压源我是外接的,程序里面一直是内部的,所以一直不出来!谢谢 ...

驱动8COM时,对应的COM4-COM7的RAM中的值,要不要通过PAGE_COM的值来选择映射?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

26

帖子

2

粉丝