打印
[STM8]

stm8l152r8t6 LCD液晶显示驱动程序出现了问题

[复制链接]
2895|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
海地彼岸|  楼主 | 2016-8-20 08:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做一个基于stm8l152r8t6的段式LCD液晶显示屏的驱动程序,从网上找了一些资料,然后用官方的库函数写了一下驱动程序,但是不知道为什么LCD就是点不亮,已经调试了两三天了,请哪位大神帮忙给我看看到底是什么地方出现了问题?下边是我写的程序源代码。
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include "lcd.h"
#include "gpio.h"

const uint8_t CapLetterMap[10]=
{
  /* 0    1     2     3     4     5     6     7     8     9*/
   0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6
};

KEY_Init(void)
{
  
  GPIO_DeInit(GPIOG);
  GPIO_Init(GPIOG, GPIO_Pin_0, GPIO_Mode_In_FL_No_IT); //PG0 浮空输入无中断
  GPIO_Init(GPIOG, GPIO_Pin_1, GPIO_Mode_In_FL_No_IT); //PG1 浮空输入无中断
  GPIO_Init(GPIOG, GPIO_Pin_2, GPIO_Mode_In_FL_No_IT);
  GPIO_Init(GPIOG, GPIO_Pin_3, GPIO_Mode_In_FL_No_IT);
  
}

int main(void)
{
       
        //按键初始化
        KEY_Init();
        /*LCD 时钟使能*/
       
        CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);  //选择HSI为系统时钟  16Mhz
        CLK_RTCClockConfig(CLK_RTCCLKSource_HSI, CLK_RTCCLKDiv_64);   //16Mhz/64= 250Khz
        CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
        CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
        CLK_HSICmd(ENABLE); //使能HSI时钟

  /* Initialize the LCD */
  LCD_Init(LCD_Prescaler_2, LCD_Divider_18, LCD_Duty_1_4,
           LCD_Bias_1_3, LCD_VoltageSource_Internal);
       
        /*LCD初始化及配置使能*/
        LCD_DeInit();
        //FCK=125000/2^5*16=128000/512=244 Frame=244/4=61HZ
        //LCD_Init(LCD_Prescaler_32, LCD_Divider_16, LCD_Duty_1_4, LCD_Bias_1_3, LCD_VoltageSource_Internal);
        /*seg 0 1 2 3 4 5 6 7 */
        LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFE);
        /*seg 8 9 10 11 12 13 14 15*/
        LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xFE);
        /*seg 16 17 18 19 20 21 22 23*/
        LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0xFE);
        /*seg 24*/
        LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x01);
       
       
        LCD_ContrastConfig(LCD_Contrast_3V0); //LCD屏幕对比度
        LCD_DeadTimeConfig(LCD_DeadTime_0); //LCD液晶的死区时间
        LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); //脉冲持续时间
        LCD_BlinkConfig(LCD_BlinkMode_SEG0_AllCOM, LCD_BlinkFrequency_Div1024);
        LCD_PageSelect(LCD_PageSelection_SecondPage); //页选择 COM1 COM2 COM3 COM4
       
        LCD_Cmd(ENABLE);
       
        while(1)
        {
                LCD_WriteRAM(LCD_RAMRegister_10, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_9, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_8, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_7, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_6, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_5, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_4, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_3, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_2, 0xFF);
                LCD_WriteRAM(LCD_RAMRegister_1, 0xFF);
        }
       
        return 0;
}
沙发
xyz549040622| | 2016-8-20 08:27 | 只看该作者
可以直接移植官方Discover板的程序,他就是段式液晶的板子。

使用特权

评论回复
板凳
海地彼岸|  楼主 | 2016-8-20 08:36 | 只看该作者
xyz549040622 发表于 2016-8-20 08:27
可以直接移植官方Discover板的程序,他就是段式液晶的板子。

我也用了官方的例程程序,但是LCD还是点不亮。

使用特权

评论回复
地板
liuoulyy| | 2016-8-20 09:14 | 只看该作者
液晶的反光板点亮了吗?

使用特权

评论回复
5
海地彼岸|  楼主 | 2016-8-20 12:23 | 只看该作者
liuoulyy 发表于 2016-8-20 09:14
液晶的反光板点亮了吗?

把程序烧上以后  什么反应也没有

使用特权

评论回复
6
mmuuss586| | 2016-8-20 14:24 | 只看该作者
写入值换其它值看看;
不要用0XFF;

还有用示波器看下,有没有波形啊

使用特权

评论回复
7
海地彼岸|  楼主 | 2016-8-20 16:29 | 只看该作者
mmuuss586 发表于 2016-8-20 14:24
写入值换其它值看看;
不要用0XFF;

我先前也没有用0xFF,不亮以后  我就全部用0xFF 还是不行

使用特权

评论回复
8
海地彼岸|  楼主 | 2016-8-20 16:30 | 只看该作者
有哪位大神给我看看  我的时钟配置对了吗?我计算过了,应该可以的,但是就是没有亮,我心里也没底了。

使用特权

评论回复
9
LearningASM| | 2016-8-20 17:00 | 只看该作者
可不可以换些值,比如
LCD_WriteRAM(LCD_RAMRegister_10, 0xFF);
LCD_WriteRAM(LCD_RAMRegister_9, 0xF0);
LCD_WriteRAM(LCD_RAMRegister_8, 0x0F);

可以有对比一下

使用特权

评论回复
10
海地彼岸|  楼主 | 2016-8-20 19:07 | 只看该作者
LearningASM 发表于 2016-8-20 17:00
可不可以换些值,比如
LCD_WriteRAM(LCD_RAMRegister_10, 0xFF);
LCD_WriteRAM(LCD_RAMRegister_9, 0xF0);

用了你说的方法,还是不行

使用特权

评论回复
11
yu515301489| | 2016-8-21 07:50 | 只看该作者
之前做过,等得及的话明天回公司了给你看看。貌似就是参考例程配置值 一次成功,没有太多注意的地方。

使用特权

评论回复
12
yu515301489| | 2016-8-21 07:52 | 只看该作者
拿外用表电阻档等 去试试打一打液晶片,确实逻辑图是否正确,不会是COM起始方向搞错了吧?确认液晶没问题,确定驱动类型正确,然后看看驱动的波形。

使用特权

评论回复
13
robter| | 2016-8-21 08:23 | 只看该作者
对比度你调节了吗?

使用特权

评论回复
14
xiaofei558008| | 2016-8-21 10:30 | 只看该作者
LCD电源设置了没有

使用特权

评论回复
15
拉克丝| | 2016-8-21 21:47 | 只看该作者
一点都不亮吗,背光亮吗

使用特权

评论回复
16
海地彼岸|  楼主 | 2016-8-22 13:16 | 只看该作者
yu515301489 发表于 2016-8-21 07:50
之前做过,等得及的话明天回公司了给你看看。貌似就是参考例程配置值 一次成功,没有太多注意的地方。 ...

时间也不是很急,就是纠结为什么不亮。

使用特权

评论回复
17
海地彼岸|  楼主 | 2016-8-22 13:18 | 只看该作者
yu515301489 发表于 2016-8-21 07:52
拿外用表电阻档等 去试试打一打液晶片,确实逻辑图是否正确,不会是COM起始方向搞错了吧?确认液晶没问题, ...

没有示波器,只有万用表,我用万用表量的时候,液晶上有电压,但是就是不亮。

使用特权

评论回复
18
海地彼岸|  楼主 | 2016-8-22 13:18 | 只看该作者
robter 发表于 2016-8-21 08:23
对比度你调节了吗?

对比度我调了,用的是3V0,我换了3V3还是不行。

使用特权

评论回复
19
海地彼岸|  楼主 | 2016-8-22 13:19 | 只看该作者
拉克丝 发表于 2016-8-21 21:47
一点都不亮吗,背光亮吗

一点都不亮,也不知道是什么原因。

使用特权

评论回复
20
海地彼岸|  楼主 | 2016-8-22 13:20 | 只看该作者

LCD的电源,外部电源和内部电源我都用了,还是不行。

使用特权

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

本版积分规则

3

主题

19

帖子

0

粉丝