找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1568|回复: 10
打印 上一主题 下一主题
收起左侧

有大哥能帮我看看为啥液晶点不亮吗?两周了,难受死我了

  [复制链接]
回帖奖励 10 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
#include "ior5f10wmg.h"
#include "ior5f10wmg_ext.h"
#define CGC_SUBWAITTIME         185U
#include "stdint.h"
#define NOP     (__no_operation)

__intrinsic void __no_operation(void);
#define DI     (__disable_interrupt)

__intrinsic void __disable_interrupt(void);
#define DI      (__disable_interrupt)
#define EI      __enable_interrupt



void  R_LCD_Create (void)
{
    volatile uint16_t wt_count; //定义计数变量,延时用
   __intrinsic void __no_operation(void);
    LCDON = 0;           //让数据寄存器的数据与0相与,关闭LCD
    LCDM1 = 0x00;       //LCD模式寄存器1的初始化设定
    LCDM0 = 0x0D;       //LCD模式寄存器0的初始化设定,外部升压,A波形,4时间片,1/3偏压

    ISCLCD &= 0x02;      //LCD输入切换寄存器初始化设定
                         //怎么设定要看相应的引脚是否有参与LCD的功能
    LCDC0 = 0x07;        //LCD时钟控制寄存器0,其作用是控制帧频率,而帧频率由波形时间片等因素决定
                     //此处是fSUB/2^8 or fIL/2^8

    VLCON=0;
    VLCD = 0x04;         //LCD升压控制电平寄存器,在外部电阻分压方式下, VLCD 寄存器必须为初始值04H

    for (wt_count = 0; wt_count <= 1000; wt_count++)  //延时
    {
        NOP();
    }

   VLCON = 1;      
    for (wt_count = 0; wt_count <= 1000; wt_count++)
    {
        NOP();
    }

    SCOC = 1;           //允许LCD显示
}


void R_CGC_Create(void)//初始化时钟
{
volatile uint16_t i;
__intrinsic void __no_operation(void);
    OSMC = 0x80;   //超低消耗电流运行
    //设置时钟运行模式控制寄存器CMC
    CMC = 0x10;   // 副时钟系统XT1震荡模式,使震荡电路运行 ,且震荡模式为低功耗震荡
    //设置系统时钟控制器CKC

    //设置时钟运行状态控制寄存器
    CSC = 0x80;   //将XTSTOP位清零,使XT1震荡电路开始震荡
    //等待副时钟系统所需要的的时间
      for( i=0; i<=CGC_SUBWAITTIME; i++ )
    {
        NOP();
    }
    CKC = 0x40;  //通过CKC寄存器的CSS位将XT1振荡时钟设定为CPU/外围硬件时钟

}
void R_PORT_Create(void)
{
   PFSEG0 = 0x30;
   PFSEG1 = 0x35;
   PFSEG4 = 0xFF;
   PFSEG5 = 0x07;//根据用到的引脚设定
   //段输出引脚总共由端口模式控制寄存器(0),端口模式寄存器(0),端口寄存器(0)以及上面的LCD端口功能寄存器(1)决定,
   //所以下面还需设定端口模式寄存器,端口寄存器以及端口模式控制寄存器,原因是复用了端口
   PMC1 = 0xF0;//设置端口模式控制寄存器
   PMC2 = 0x0F;
   PMC4 = 0x00;

   //相应的端口模式寄存器需要置为0,默认复位后全为1
   PM1 = 0;
   PM2 = 0;
   PM5 = 0;
   PM7 = 0;

   PU12=0x00;
   P12=0x00;
   //相应的端口寄存器复位后都为零,所以可以不用设置?
   P1=0;
   P2=0;
   P5=0;
   P7=0;
}
void R_DISPLAY_ON (void)
{

    SEG0 = 0x0f;
    SEG1 = 0x0f;
    SEG2 = 0x0f;
    SEG3 = 0x0f;
    SEG4 = 0x0f;
    SEG5 = 0x0f;

    SEG8 = 0x0f;

    SEG10 = 0x0f;

    SEG12 = 0x0f;
    SEG13 = 0x0f;
    SEG30 = 0x0f;
    SEG31 = 0x0f;
    SEG32 = 0x0f;
    SEG33 = 0x0f;
    SEG34 = 0x0f;
    SEG35 = 0x0f;
    SEG36 = 0x0f;
    SEG37 = 0x0f;
    SEG38 = 0x0f;
    SEG39 = 0x0f;
    SEG40 = 0x0f;
    SEG41 = 0x0f;

}
void R_LCD_Start(void)
{

  LCDON = 1;  
}
int main( int argc, char **argv )
{
  R_CGC_Create();
    R_PORT_Create();
  R_LCD_Create();



  R_LCD_Start();


  while(1)
  {

    R_DISPLAY_ON ();
  }
}



1628062154310_DB09F92A-9D56-420c-A81E-D952F59D271D.png (105.77 KB, 下载次数: 44)

1628062154310_DB09F92A-9D56-420c-A81E-D952F59D271D.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:824490 发表于 2021-8-4 17:31 | 只看该作者
这 个什么MCU?
回复

使用道具 举报

板凳
ID:584195 发表于 2021-8-4 22:59 | 只看该作者
找个逻辑分析仪,看看有没有数据,时钟对不对。还有建议你发帖时,先说明你的单片机的型号,连接折方式。LCD的型号。还有代码要有注释,这样人家才能看出你哪里有问题。
还有非常重要的就是你买个开发板,开发板会带有例程的,至少,你能知道你的LCD接线对不对,LCD或MCU是不是好的。
回复

使用道具 举报

地板
ID:401564 发表于 2021-8-5 00:15 | 只看该作者
LCD什么驱动的?如果有驱动,先用8051写代码,能显示一个字母符号之类的就可以了,这样你就知道这个驱动要怎么去控制了
如果是LCD没驱动,那么,它是要交流驱动的,(但我并不知道直流会不会不亮,反正一直是用交流的)
如果你那是用导电条接触的测试板,去马云家买一个金属引脚的吧,随便一个简单点的,先保证硬件电路不会出问题,然后,用8051先点亮,先了解LCD是怎么工作的
然后再去用你这单片机写,你用的单片机在这很少有人用的......
回复

使用道具 举报

5#
ID:748788 发表于 2021-8-5 08:40 | 只看该作者
提供的信息太少,mcu、lcd是什么型号?大家帮不上忙,也难受死了
回复

使用道具 举报

6#
ID:517951 发表于 2021-8-5 08:51 | 只看该作者
最少要贴出来MCU对接LCD部分的原理图,LCD是单色还是彩色,接口是MIPI,LVDS,MPU8bit,16bit的? 有最基本的信息,别人才能帮你分析啊
回复

使用道具 举报

7#
ID:798631 发表于 2021-8-5 09:14 | 只看该作者
两周时间足够你看完器件手册了  还没解决,看你贴出来的CPU 支持的液晶是段码式的   SEG 和COM都没连对你就做蜡了
回复

使用道具 举报

8#
ID:61261 发表于 2021-8-5 11:11 | 只看该作者
提出问题也是一门学问,如何能清晰的表述,是解决问题的关键
回复

使用道具 举报

9#
ID:245053 发表于 2021-8-5 11:26 | 只看该作者
语焉不详、去头掐尾也是爱莫能助的了。。。
回复

使用道具 举报

10#
ID:958990 发表于 2021-8-5 11:29 | 只看该作者
原理图可以贴全一点,有可能是硬件设计的问题哦
回复

使用道具 举报

11#
ID:691028 发表于 2021-8-5 13:08 | 只看该作者
楼主这样提问对回答者的要求太高了,回答者得猜对你的所用的芯片,然后才能根据手册查看你的初始化代码是否正确。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表