搜索
bottom↓
回复: 9

跪求中颖MCU断码式 LCD实例

[复制链接]

出0入0汤圆

发表于 2015-1-20 11:22:39 | 显示全部楼层 |阅读模式
跪求哪位高手分享中颖单片机断码式LCD实例应用,要做个带LCD显示的产品,不知道怎么取码和应用。望高手们指点指点,谢谢了!

出0入8汤圆

发表于 2015-1-20 11:38:26 | 显示全部楼层
随便去个台网的MUC芯片公司的主页 都是这种的应用例子。

出0入0汤圆

 楼主| 发表于 2015-1-20 16:58:24 | 显示全部楼层
kebaojun305 发表于 2015-1-20 11:38
随便去个台网的MUC芯片公司的主页 都是这种的应用例子。

没有看到有段码式LCD的实例,我现在不知道怎么取那些段码值的,阁下有没有取LCD码值方法或者SH79F6431这颗IC的实例。先谢了!

出0入0汤圆

发表于 2015-1-20 17:40:57 | 显示全部楼层
坛里有中颖原厂的,可以找找看

出0入10汤圆

发表于 2015-1-20 21:11:02 | 显示全部楼层
SH88F166A部分代码,供参考
#define LongToBin(n) \
(                    \
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >>  9) & 0x08) | \
((n >>  6) & 0x04) | \
((n >>  3) & 0x02) | \
((n      ) & 0x01)   \
)
#define Bin(n) LongToBin(0x##n##l)        //write binary charactor set,exsample : Bin(11111111) = 0xff
#define LCDRAM        0x1E0

void LCD_Init()
{
    uint8_t i;
    DISPCON = Bin(01101111);  // DUTY: 1/4   BIAS 1/3
    DISPCON1 = Bin(00010011);
    DISPCLK1 =  1;
    DISPCLK0 =  0x6E;
    P0SS = 0X00;                     // P0 IS GPIO.
    P1SS = Bin(00111111);   // P1.0 ~ P1.5 IS SEGMENT.
    P2SS = Bin(00000000);
    P3SS = Bin(00001111);        // P3.0~P3.3 IS COMM


    for(i=0; i<7; i++)      //  Test LCD RAM.
        XBYTE[LCDRAM+i]=0XFF;
    DelayMs(100);
    for(i=0; i<7; i++)      // clear lcd ram.
        XBYTE[LCDRAM+i]=0;
    //DelayMs(30);
}
void LCD_Power(uint8_t power)
{
    if( power == 0 ) //
    {
        DISPCON = 0;  // DUTY: 1/4   BIAS 1/3
        DISPCON1 = 0;
        DISPCLK1 =  0;
        DISPCLK0 =  0x6E;
    }
    else
    {
        DISPCON = Bin(01101111);  // DUTY: 1/4   BIAS 1/3
        DISPCON1 = Bin(00010011);
        DISPCLK1 =  1;
        DISPCLK0 =  0x6E;
    }
}

void LCD_ShowTemp(uint16_t temp)  //ÏÔʾζÈ
{
    uint8_t t;
    temp = temp/10;
    t = digtab[temp/10];
    LCD_Power(1);
    XBYTE[LCDRAM+2] = t>>4;
    XBYTE[LCDRAM+3] = t&0x0F;
    t = digtab[temp%10];
    XBYTE[LCDRAM+4] = t>>4;
    XBYTE[LCDRAM+5] = t&0x0F;
    LCD_ShowFlag(S9,1);
    if( sys_status == SYS_LOCK)     LCD_ShowFlag(S10,1);

}
void LCD_ShowFlag(uint8_t xbit , uint8_t flag)        //ÏÔʾ±ê¼ÇS1~S10
{
    if( xbit == S1 )        //   LOW
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+0] , 0);
        else CLR_BIT(XBYTE[LCDRAM+0] , 0);
    }
    else if( xbit == S2 )   // MID
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+0] , 1);
        else CLR_BIT(XBYTE[LCDRAM+0] , 1);
    }
    else if( xbit == S3 )   //  HIGH
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+0] , 2);
        else CLR_BIT(XBYTE[LCDRAM+0] , 2);
    }
    else if( xbit == S4 )   // AUTO
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+0] , 3);
        else CLR_BIT(XBYTE[LCDRAM+0] , 3);
    }
    else if( xbit == S5 )   // COOL
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+1] , 0);
        else CLR_BIT(XBYTE[LCDRAM+1] , 0);
    }

    else if( xbit == S6 )   // HOT
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+1] , 1);
        else CLR_BIT(XBYTE[LCDRAM+1] , 1);
    }

    else if( xbit == S7 )   // SET
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+1] , 2);
        else CLR_BIT(XBYTE[LCDRAM+1] , 2);
    }
    else if( xbit == S8 )   //  ROOM
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+1] , 3);
        else CLR_BIT(XBYTE[LCDRAM+1] , 3);
    }
    else if( xbit == S9 )   // oC
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+3] , 0);
        else CLR_BIT(XBYTE[LCDRAM+3] , 0);
    }
    else if( xbit == S10 )  //  LOCK TEMP
    {
        if( flag )
            SET_BIT( XBYTE[LCDRAM+5] , 0);
        else CLR_BIT(XBYTE[LCDRAM+5] , 0);
    }
}

出0入0汤圆

 楼主| 发表于 2015-1-21 08:37:50 | 显示全部楼层
mmiker 发表于 2015-1-20 21:11
SH88F166A部分代码,供参考
#define LongToBin(n) \
(                    \

谢谢大神的分享,请问大神有没有这份LCD的增值表,我还是没有搞懂怎么取那些字的段码值,能否详细讲解一下取值方法。谢谢了!

出0入8汤圆

发表于 2015-1-21 09:07:57 | 显示全部楼层
zjsdlt2013 发表于 2015-1-21 08:37
谢谢大神的分享,请问大神有没有这份LCD的增值表,我还是没有搞懂怎么取那些字的段码值,能否详细讲解一 ...

你直接在网上搜 IO口直接驱动LCD   就能搜出很多例子 和讲解。

出0入0汤圆

发表于 2015-1-21 09:16:46 | 显示全部楼层
LZ,我最近在用6488,其实6431官网是有例程的,可以去看看

出0入10汤圆

发表于 2015-1-21 10:37:03 | 显示全部楼层
zjsdlt2013 发表于 2015-1-21 08:37
谢谢大神的分享,请问大神有没有这份LCD的增值表,我还是没有搞懂怎么取那些字的段码值,能否详细讲解一 ...

这个要看你的LCD是怎么定义的,我的是这样定义的,供参考

#define DA 0X80
#define DF 0X40
#define DE 0X20
#define DD 0X10
#define DB 0X08
#define DG 0X04
#define DC 0X02
#define DS 0X01

code uint8_t digtab[]=
{
    DA+DB+DC+DD+DE+DF,  // 0
    DB+DC,                                // 1
    DA+DB+DG+DE+DD,                // 2
    DA+DB+DG+DC+DD,                // 3
    DF+DG+DB+DC,                // 4
    DA+DF+DG+DC+DD,                // 5
    DA+DF+DG+DC+DE+DD,        // 6
    DA+DB+DC,                        // 7
    DA+DB+DC+DD+DE+DF+DG,//8
    DA+DB+DC+DG+DF+DD,  //9
    0
};

出0入0汤圆

 楼主| 发表于 2015-1-21 18:46:08 | 显示全部楼层
谢谢大神们的指点,我先去找找看,如果还是不懂再来请教师傅们吧。谢谢了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 14:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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