打印
[国产单片机]

东软单片机HR8P287_LCD Keil仿真 驱动初始化

[复制链接]
689|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
准备用东软的HR8P287做个小项目,第一次用。,目前有两个问题:1,仿真器没能配置上,可以下载程序,但一仿真就断了,看了下资料,说要需通过配置字控制位DEBUG,使能调试模式,不知道要怎么做?.2,就是它的LCD段位寄存器LCD_SEL0,指的是SEG31~0;LCD_SEL1:指的是SEG15~0; 这不是重复了吗?没搞懂!我现在是全部enable了,但是按照例程,LCD还是显示不出来,有没有大神可以侃侃,感谢!

使用特权

评论回复

相关帖子

沙发
bensonsu|  楼主 | 2021-3-21 21:37 | 只看该作者
1.

2.LCD初始化
void LCDInit(void)
{
    GPIO_InitStruType x;
    LCD_InitStruType y;

    GPIO_RegUnLock();
    x.GPIO_Func = GPIO_Func_3;
    x.GPIO_Direction = GPIO_Dir_Out;
    x.GPIO_PUEN = DISABLE;
    x.GPIO_PDEN = DISABLE;
    x.GPIO_OD = DISABLE;

    GPIO_Init(GPIOB, GPIO_Pin_0, &x);      //LCD  PB0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    GPIO_Init(GPIOB, GPIO_Pin_1, &x);
    GPIO_Init(GPIOB, GPIO_Pin_2, &x);
    GPIO_Init(GPIOB, GPIO_Pin_3, &x);
          GPIO_Init(GPIOB, GPIO_Pin_4, &x);
    GPIO_Init(GPIOB, GPIO_Pin_5, &x);
    GPIO_Init(GPIOB, GPIO_Pin_6, &x);
    GPIO_Init(GPIOB, GPIO_Pin_7, &x);
    GPIO_Init(GPIOB, GPIO_Pin_8, &x);
    GPIO_Init(GPIOB, GPIO_Pin_9, &x);
    GPIO_Init(GPIOB, GPIO_Pin_10, &x);
    GPIO_Init(GPIOB, GPIO_Pin_11, &x);
               
    GPIO_Init(GPIOA, GPIO_Pin_0, &x);
    GPIO_Init(GPIOA, GPIO_Pin_1, &x);
    GPIO_Init(GPIOA, GPIO_Pin_2, &x);
    GPIO_Init(GPIOA, GPIO_Pin_3, &x);
    GPIO_Init(GPIOA, GPIO_Pin_24, &x);
    GPIO_Init(GPIOA, GPIO_Pin_25, &x);
    GPIO_Init(GPIOA, GPIO_Pin_26, &x);
    GPIO_Init(GPIOA, GPIO_Pin_28, &x);
    GPIO_Init(GPIOA, GPIO_Pin_29, &x);
    GPIO_Init(GPIOA, GPIO_Pin_30, &x);
    GPIO_Init(GPIOA, GPIO_Pin_31, &x);

    GPIO_RegLock();

    y.LCD_Coms = LCD_Coms_8;                    //公共端选择com0~com8
    y.LCD_LcdFlik = DISABLE;                    //闪烁禁止
    y.LCD_LcdWFS = LCD_WaveMode_A;              //A型波型
    y.LCD_Bias = LCD_Bias_3;                    //1/3电压偏置
    y.LCD_RS = LCD_Res_15k;                     //15k偏压电阻
    y.LCD_Grayscale = LCD_Grayscale_32_36_VLCD; //灰度选择
    y.LCD_BIAS_SEL = LCD_BiasSel_1;             //内部偏置使能设置为1
    y.LCD_PRS = 35;                             //时钟分频
    //y.LCD_SEG0 = 0xFF0F0000;                    //LCD段使能位
    //y.LCD_SEG1 = 0x0000000F;
                y.LCD_SEG0 = 0xFFFFFFFF;                    //LCD段使能位
    y.LCD_SEG1 = 0xFFFFFFFF;
    LCD_Init(&y, Sel_All);

    LCD_Enable();        //LCD使能
}

3.我准备全点亮,用这个函数将像素寄存器里的值全部置1,不知道以上哪里有问题?
                                                for(i=0;i<11;i++){
                                          LCD_PixelWriteWord(i,0XFFFFFFFF);
                                                        }

使用特权

评论回复
板凳
bensonsu|  楼主 | 2021-3-21 22:23 | 只看该作者
仿真器的配置问题已解决。我在他们家的烧录工具里发现的。把在这里把它enable了,烧进去后就好了。

使用特权

评论回复
地板
xyz549040622| | 2021-3-22 23:19 | 只看该作者
我认为原理图确实LCD屏幕的部分,所以不好判断,你的硬件是如何连接的呢?

使用特权

评论回复
5
bensonsu|  楼主 | 2021-3-23 10:30 | 只看该作者
xyz549040622 发表于 2021-3-22 23:19
我认为原理图确实LCD屏幕的部分,所以不好判断,你的硬件是如何连接的呢? ...

硬件就是IO口直接接屏了.COM接屏的COM.SEG接屏的SEG.没别啦,只是从它规格书里看LCD_SEG0,LCD_SEG1里的介绍有点蒙,不清楚SEG要怎么定义

使用特权

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

本版积分规则

3

主题

9

帖子

0

粉丝