15080|28

1298

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

终于又碰到问题了,段码LCD屏? [复制链接]

关于上次ATMEGA169驱动段码LCD ,感觉除了规格书,没有类似的教程什么的,看了规格书也没看出方法方向,对于新手根本不知道从哪着手,虽然知道是专业的LCD屏驱动(之前直接有用过普通IO口驱动过段码LCD屏数字变化很辛苦),交流驱动应该会比普通IO要方便,但是不知道这个单片机驱动段码LCD屏的方法方式是怎样的,不知道大家最初做的时候是从哪突破的?看各位有做过类似的可否讲讲这款MCU驱动段码LCD的流程该如何?

最新回复

//timercount ext_6-2 #include #include #include #asm         .equ __lcd_port=0x15 ;PORTC     #endasm #include unsigned char TEXT[2][16]; unsigned char hour = 0; unsigned char min = 0; unsigned char sec = 0; unsigned char n = 0; bit flag = 0; bit flag_1 = 0; unsigned char key; void Display_switch(void)                        {         key = PIND & 0x03;         switch(key){                    case 0b00000010:                                       delay_ms(150);                                       if(flag_1 == 0)                    {                      flag_1 = 1;                    }                                       else                     {                       flag_1 = 0;                      }                                      break;                                       case 0b00000001:                    sec = 0;                    min = 0;                    hour = 0;                    n = 0;                    if(flag_1 == 1)                     flag = 0;                    break;                                                      default: break;                     } } -------------------------------------------- void Display_count(void)               {     if(sec >= 100){             sec = 0;             min++;             if(min >= 60){                 min = 0;                 hour++;                  if(hour >=60){                     hour = 0;                     n++;                     if(n > 12){                     n = 0;                      }                   }               }      } }         void Display_LCD(void)                            {     lcd_clear();         sprintf(TEXT[0],"%2d :%2d", n, hour);     lcd_gotoxy(0,0);     lcd_puts(TEXT[0]);              sprintf(TEXT[1],":%2d :%2d", min,sec);     lcd_gotoxy(0,1);     lcd_puts(TEXT[1]); } void main() {     DDRC = 0xff;                                PORTC =0xff;     DDRD = 0x00;         TCCR1A = 0x00;     TCCR1B = 0x0D;     OCR1A = 156;           TIMSK = 0x10;                             SREG = 0x80;                  lcd_init(16);                                   #asm("sei")                                            while(1)     {           Display_switch();         Display_count();                if(flag == 1){             flag = 0;                      Display_LCD();         }      }; } interrupt [TIM1_COMPA] void timer1_compa_isr(void) {       if(flag_1 == 1){         sec++;     }       flag = 1;     }   详情 回复 发表于 2013-6-14 23:34
点赞 关注
 

回复
举报

1298

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
看来得自已找资料了

[ 本帖最后由 gh131413 于 2013-6-13 11:25 编辑 ]

点评

毫无头绪,我希望用过的朋友能否指点一二,不吝赐教,谢谢了!:victory: [ 本帖最后由 gh131413 于 2013-6-13 16:11 编辑 ]  详情 回复 发表于 2013-6-13 11:52
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

板凳
 

回复 沙发 gh131413 的帖子

毫无头绪,我希望用过的朋友能否指点一二,不吝赐教,谢谢了!

[ 本帖最后由 gh131413 于 2013-6-13 16:11 编辑 ]
 
 
 

回复

6040

帖子

205

TA的资源

版主

4
 
最好找带有段码LCD驱动的芯片,否则你用IO会很麻烦,也未必能实现。

点评

失望:Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat::Sweat: [ 本帖最后由 gh131413 于 2013-6-13 16:12 编辑 ]  详情 回复 发表于 2013-6-13 15:24
我现在用的就是ATMEGA169V是带LCD驱动的,不知如何用,所以提问给大家?  详情 回复 发表于 2013-6-13 13:57
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

5
 

回复 4楼 lcofjp 的帖子

我现在用的就是ATMEGA169V是带LCD驱动的,不知如何用,所以提问给大家?
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

6
 

回复 4楼 lcofjp 的帖子

失望

[ 本帖最后由 gh131413 于 2013-6-13 16:12 编辑 ]

点评

这个芯片没人用?偶再等等……:@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@::@: [ 本帖最后由 gh131413 于 2013-6-13 16:12 编辑 ]  详情 回复 发表于 2013-6-13 15:52
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

7
 

回复 6楼 gh131413 的帖子

这个芯片没人用?偶再等等……

[ 本帖最后由 gh131413 于 2013-6-13 16:12 编辑 ]

点评

你这款芯片我没用过,手册也没看过。 我觉得你应该把手册的LCD驱动部分好好看看(可能没怎么涉及原理,你可以看看430的手册),我记得MSP430的user\'s guide里面的段码驱动部分讲解的很详细,如何硬件连接、内部构  详情 回复 发表于 2013-6-13 16:14
 
 
 

回复

6040

帖子

205

TA的资源

版主

8
 

回复 7楼 gh131413 的帖子

你这款芯片我没用过,手册也没看过。
我觉得你应该把手册的LCD驱动部分好好看看(可能没怎么涉及原理,你可以看看430的手册),我记得MSP430的user's guide里面的段码驱动部分讲解的很详细,如何硬件连接、内部构造原理等等。
没用过段码的人刚接触可能确实有点迷惑,其实很简单,com接com,seg接seg,就这么简单,其他基本都是软件的事了。首先要有段码LCD的资料,知道哪段对应显示哪里。剩下的就是操作寄存器了,往相应段码的地址写数据。

点评

其实我想了解的是普通单片机IO口驱动LCD因为涉及到交流所以驱动LCD非常麻烦而且占用资源,现在有了带LCD的单片机之后是不是就解决了交流的问题,网上包括资料都没提到它的区别与好处的本质在哪里,一点资料真他奶奶  详情 回复 发表于 2013-6-13 16:26
OK,那我就看一下MSP430的使用  详情 回复 发表于 2013-6-13 16:18
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

9
 

回复 8楼 lcofjp 的帖子

OK,那我就看一下MSP430的使用
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

10
 

回复 8楼 lcofjp 的帖子

其实我想了解的是普通单片机IO口驱动LCD因为涉及到交流所以驱动LCD非常麻烦而且占用资源,现在有了带LCD的单片机之后是不是就解决了交流的问题,网上包括资料都没提到它的区别与好处的本质在哪里,一点资料真他奶奶的难找,哎!
 
 
 

回复

1729

帖子

0

TA的资源

五彩晶圆(初级)

11
 
我也是看的MSP430的LCD 驱动,你先看看,对比一下你现在用的。再给你发一份资料吧!
MSP430液晶驱动.doc (123.5 KB, 下载次数: 130)

点评

我又回过头去看了中文ATMEGA69的LCD控制部分,好像大概知道了些,最主要的是流程!能详解一下流程吗?:titter:  详情 回复 发表于 2013-6-13 17:59
好人,多谢了:loveliness:  详情 回复 发表于 2013-6-13 17:50

赞赏

1

查看全部赞赏

 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

12
 

回复 11楼 cat3902982 的帖子

好人,多谢了
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

13
 

回复 11楼 cat3902982 的帖子

我又回过头去看了中文ATMEGA69的LCD控制部分,好像大概知道了些,最主要的是流程!能详解一下流程吗?

点评

流程?无非就是初始化,然后就往DATA区更新数据。其实关键的还是看你硬件要怎么接。几COM的,你想要用的驱动方式。根据用户手册里的驱动结构进行配置就可以了。  详情 回复 发表于 2013-6-13 23:15
 
 
 

回复

1729

帖子

0

TA的资源

五彩晶圆(初级)

14
 

回复 13楼 gh131413 的帖子

流程?无非就是初始化,然后就往DATA区更新数据。其实关键的还是看你硬件要怎么接。几COM的,你想要用的驱动方式。根据用户手册里的驱动结构进行配置就可以了。

点评

我看到别人的码表,比如:0X3F代表0等等,而我的想显示比如1而1是由COM1和COM2分别和SEG0组成的,也就是说1分为了两段,我该如何建码表啊,初始化那些我都晓得怎么搞了,就码表有点不太明?  详情 回复 发表于 2013-6-14 09:20
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

15
 

回复 14楼 cat3902982 的帖子

我看到别人的码表,比如:0X3F代表0等等,而我的想显示比如1而1是由COM1和COM2分别和SEG0组成的,也就是说1分为了两段,我该如何建码表啊,初始化那些我都晓得怎么搞了,就码表有点不太明?
 
 
 

回复

973

帖子

15

TA的资源

纯净的硅(高级)

16
 
只用过msp430的4系列的段码驱动,ATMEGA的没用过
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

17
 

我用的这个屏,看PDF

附件为显示屏逻辑图和LCD屏驱动MCU的PDF,如显示第一个字为“1”要两段组成,码表如何?

中文ATmega169(L)(V)_cn.pdf

2.89 MB, 下载次数: 114

收音機顯示屏.pdf

194.36 KB, 下载次数: 65

 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

18
 
IO有专门的驱动芯片,比如HT1621。现在很多MCU带有段式液晶的驱动。检索 段式液晶原理, 都说的很清楚。
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

19
 
断码和一般的LED是一样的,我取断码的做法是对显示寄存器写01,循环左移8次找到段码,同样方法再找下一个寄存器。这样最快。

点评

看看其中的算法,怎么都看不懂??:funk: LCDDR0=(lcdtable[digtal3*3]  详情 回复 发表于 2013-6-15 10:35
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

20
 

以前利用atmega128 做的秒表,lcd是最一般的2*8的, 希望对你有帮助

//timercount ext_6-2


#include
#include
#include
#asm
        .equ __lcd_port=0x15 ;PORTC
    #endasm
#include

unsigned char TEXT[2][16];
unsigned char hour = 0;
unsigned char min = 0;
unsigned char sec = 0;
unsigned char n = 0;
bit flag = 0;
bit flag_1 = 0;
unsigned char key;

void Display_switch(void)                       
{
        key = PIND & 0x03;
        switch(key){
                   case 0b00000010:
                  
                   delay_ms(150);
                  
                   if(flag_1 == 0)
                   {
                     flag_1 = 1;
                   }
                  
                   else
                    {
                      flag_1 = 0;
                     }
                 
                   break;
                  
                   case 0b00000001:

                   sec = 0;
                   min = 0;
                   hour = 0;
                   n = 0;
                   if(flag_1 == 1)
                    flag = 0;
                   break;
                                 
                   default: break;
                    }
}

--------------------------------------------

void Display_count(void)              
{
    if(sec >= 100){
            sec = 0;
            min++;
            if(min >= 60){
                min = 0;
                hour++;
                 if(hour >=60){
                    hour = 0;
                    n++;
                    if(n > 12){
                    n = 0;
                     }
                  }
              }
     }
}        
void Display_LCD(void)                           
{
    lcd_clear();
   
    sprintf(TEXT[0],"%2d :%2d", n, hour);
    lcd_gotoxy(0,0);
    lcd_puts(TEXT[0]);
        
    sprintf(TEXT[1],":%2d :%2d", min,sec);
    lcd_gotoxy(0,1);
    lcd_puts(TEXT[1]);
}


void main()
{

    DDRC = 0xff;                           
    PORTC =0xff;
    DDRD = 0x00;
   

    TCCR1A = 0x00;
    TCCR1B = 0x0D;
    OCR1A = 156;      
    TIMSK = 0x10;                        
    SREG = 0x80;
            
    lcd_init(16);                          
   
    #asm("sei")                           
  
        
    while(1)
    {  
        Display_switch();
        Display_count();
      
        if(flag == 1){
            flag = 0;
            
        Display_LCD();

        }
     };
}

interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{  
    if(flag_1 == 1){
        sec++;
    }  
    flag = 1;
   
}

点评

花了两天时间,差点就放弃了,ATMEGA169驱动段码LCD屏如果从来没玩过的话是要下点功夫,麻烦主要是码表和算法?磨一磨,单车变摩托!:Mad:  详情 回复 发表于 2013-6-17 12:25
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表