реклама на сайте
подробности

 
 
> MSP40F449 LCD модуль, проблемы с использованием LCD модуля
tvilsa
сообщение Dec 15 2010, 08:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-01-09
Пользователь №: 43 990



Всем привет! Решил поиграться с MSP430F449 контроллером. подключил к экрану с тройным мультиплексированием.
записываю подправленный код из примера
Код
//*****************************************************************************
//  Description: Displays "6543210" on MSP-EVK430S320 LCD.
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
//  //* An external watch crystal between XIN & XOUT is required for ACLK *//    
//
//                                Connections MSP430 -> LCD
//                                -------------------------
//
//                                             T.I. MSP-EVK430S320
//                            MSP430F449       6.5 digit 4 mux LCD
//                                                   #T218010
//                      /|\ ---------------       --------------
//                       | |          COM3 |-----|2    COM4     |
//                       --|RST       COM2 |-----|1    COM3     |
//                         |          COM1 |-----|3    COM2     |
//                         |          COM0 |-----|4,20 COM1     |
//                        -|XIN       SEG0 |-----|19            |
//                    32kHz|          SEG1 |-----|18            |
//                        -|XOUT      SEG2 |-----|17            |
//                         |          SEG3 |-----|16            |
//                         |          SEG4 |-----|15            |
//                         |          SEG5 |-----|14            |
//                         |          SEG6 |-----|13            |
//                         |          SEG7 |-----|12            |
//                       +-|R33       SEG8 |-----|11            |
//                    840k |          SEG9 |-----|10            |
//                       +-|R23       SEG10|-----|9             |
//                    840k |          SEG11|-----|8             |
//                       +-|R13       SEG12|-----|7             |
//                    840k |          SEG13|-----|6             |
//                       +-|R03       SEG14|-----|5 (bits C,E,H |
//                       | |               |     |   of digit 7)|
//                      Vss ---------------       --------------
//

//*****************************************************************************
#include  <msp430x44x.h>


void main(void)
{
  volatile unsigned int i;                  // Use volatile to prevent removal
                                            // by compiler optimization

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  FLL_CTL0 |= XCAP14PF;                     // Configure load caps
  for (i = 0; i < 10000; i++);              // Delay for 32 kHz crystal to
                                            // stabilize

  LCDCTL = LCDON + LCD3MUX + LCDSG0_2;      // LCD on, 3-Mux, segments S0-S19
  BTCTL = BT_fLCD_DIV32;                   // LCD clock freq
  P5SEL = 0xFF;                             // Select P5.0-7 as Com and Rxx
    unsigned char x;



    for (x=0; x<9; x++)
    {
      LCDMEM[x] = 0;                
    }
  }

потом через отладчик меняю содержимое LCDMEM и смотрю что на экране.
Проблема в том что все символы на экране ели светятся. почти не видно.
при этом в режиме STATICLCD сегменты отражаются ярко.
Между можками R03,R13,R23,R33 включены резисторы на 800кОм.
Причем в режиме STATICLCD при наличии резисторов тоже ели видно, а при отключенных нормально.
Помогите пожалуйста разобраться с этими резисторами. не пойму зачем они и какой номинал поставить.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
Shread
сообщение Dec 17 2010, 04:10
Сообщение #2


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



Попробуйте поиграться номиналами резисторов. У нас стояли 430к, и впараллель с каждым их нижних резисторов кондеры 0.1 - было более менее. Сейчас перестали использовать 4хх, вместо этого заказываем жки со встроенным драйвером ML1001 - статика, она и в Африке статика и брака по платам меньше стало))
Go to the top of the page
 
+Quote Post
tvilsa
сообщение Dec 17 2010, 04:57
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-01-09
Пользователь №: 43 990



Спасибо. Попробывал по 470кОм. все также. Гуру подскажите как выбираются эти сопротивления, а то из даташита не пойму ни как.
Go to the top of the page
 
+Quote Post
Shread
сообщение Dec 17 2010, 07:38
Сообщение #4


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



Конденсаторы пробовал ставить? Это просто резистивный делитель, для получения промежуточных уровней напряжения, по даташиту номиналы резисторов должны быть от 100к до 1м, мы попробовали когда-то для нашего жки и остановились на 430к.
Go to the top of the page
 
+Quote Post
tvilsa
сообщение Dec 17 2010, 08:48
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-01-09
Пользователь №: 43 990



Поставил кондеры по 0.1 стало еще тусклее. ярко светит если на ногу R33 подать+5В. Может экранчик на 5В расчитан?
Go to the top of the page
 
+Quote Post
Shread
сообщение Dec 17 2010, 10:32
Сообщение #6


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



Цитата(tvilsa @ Dec 17 2010, 14:48) *
Поставил кондеры по 0.1 стало еще тусклее. ярко светит если на ногу R33 подать+5В. Может экранчик на 5В расчитан?

А кто крое вас это знает?) Но этак можно и проц кончить.
Go to the top of the page
 
+Quote Post
tvilsa
сообщение Dec 18 2010, 16:25
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-01-09
Пользователь №: 43 990



Ктож его знает? :-) На халяву достался. И так ноги методом тыка искал. Странно что в режиме статика он ярко работает от 3.3В. Вот в чем вопрос.
Уже переменники поставил крутил и так и сяк все не срастается. Либо все ярко светят независимо от включенных элементах, либо не видно ничего, либо какието ярко а другие серые.
Go to the top of the page
 
+Quote Post
Andrejka
сообщение Apr 4 2011, 17:34
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 7-12-08
Пользователь №: 42 268



Доброго времени суток. Помогите подсказкой как перенастроить LCD порт. Процессор MSP430F4260, + 2 цыферный 7 сегментный дисплей, управление - статика, организация подключения такова(MSP<-->LCD):S0-1e, S1-1d, S2-1c, S3-2c, S4-2d, S5-2e, S6-2g, S7-2f, S8-2a, S9-2b, S10-1b, S11-1a, S12-1f, S13-1g, COM-com. Из-за разводки платы возникла необходимость программно перевернуть местами знакоместа(т.е. S0-2e, S1-2d ...) Буду благодарен за любые подсказки. Программа написана на асме в среде IAR.

Код
#include  <msp430x42x0.h>      
;------------------------------------------------------------------------------
            ORG     0A000h                 ; program start for MSP430F4260
;------------------------------------------------------------------------------
RESET       mov.w   #300h, SP              ; initialize stack pointer
            mov.w   #WDTPW+WDTHOLD, &WDTCTL; stop WDT
            bis.b   #XCAP14PF, &FLL_CTL0   ; set load capacitance for xtal
            mov.b   #LCDON + LCDSTATIC + LCDFREQ_128, &LCDACTL; static, ACLK/128
            mov.b   #0x0F, &LCDAPCTL0      ; configure s0-s13 for LCD

            clr.b   &P6OUT                 ; configure all ports for output
            mov.b   #0xFF, &P6DIR
            clr.b   &P5OUT
            mov.b   #0x1C, &P5DIR
            mov.b   #0x10, &P1OUT          ; preset CS=0 and CLK=1
            mov.b   #0xBF, &P1DIR          ; enable input at P1:6

            mov.b   #7, R15                ; 7 LCD memory bytes to clear
            clr.b   LCDMEM-1(R15)          ; clear display
            dec.b   R15      
            jnz     $ - 6              

            mov.b   #0x27, &BTCTL          ; basic timer1 setup ACLK/2^(16)
            clr.b   &BTCNT1                ; clear counters
            clr.b   &BTCNT2
            bis.b   #BTIE, &IE2            ; enable timer interrupt

            clr.w   R6                     ; old temperature
loop        bis.b   #BIT5, &P1OUT          ; set CS=1 to start conversion

            mov.b   #0x24, &BTCTL          ; sleep for 0.256 sec to complete
            bis.w   #LPM3 | GIE, SR        ; temp. conversion
            mov.b   #0x27, &BTCTL          ; set next timer event in 2sec

            bic.b   #BIT5, &P1OUT          ; set CS=0 and terminate conversion
            bic.b   #BIT4, &P1OUT          ; set CLK=0 and prepare for output

            clr.w   R5
            mov.b   #10, R15               ; setup input bits counter
get_bit     bis.b   #BIT4, &P1OUT          ; CLK = 1
            bit.b   #BIT6, &P1IN           ; C = input bit
            rlc     R5                     ; rotate it into R5
            bic.b   #BIT4, &P1OUT          ; CLK = 0
            dec.b   R15
            jnz     get_bit

            bis.b   #BIT4, &P1OUT          ; set CLK = 1

            bit.w   #BIT9, R5              ; temp < 0 ?
            jz      add1                   ; NO - treate is as positive
            bis.w   #0xFC00, R5            ; sign extend negative temp
            dec.w   R5                     ; rounding off negative temp
            jmp     $+4
add1        inc.w   R5                     ; rounding off non-negative temp
            rra.w   R5                     ; compute integer part in R5
            
            cmp.w   R5, R6                 ; do not process temp if it is
            jeq     sleep                  ; the same as earlier            
            mov.w   R5, R6                  ; update old temp value

            call    #bin2BCD8              ; compute BCD in R4
            call    #display               ; display temp

sleep       bis.w   #LPM3 | GIE, SR        ; enter the LPM3 mode (sleep)
            jmp     loop

            
;;;;;;;;;;;;;;;;;;;;;;;;;PROCEDURES::::::::::::::::::::
bt1_ISR     bic.w   #LPM3, 0(SP)           ; return from sleep (ISR)
            reti

bin2BCD8    mov.w   R5, R15                ; copy input number
            bit.w   #BITF, R15        
            jz      check_up
            inv.w   R15                    ; negate number if it is negative
            inc.w   R15
            cmp.w   #9, R15                ; display "-_" if the temp below
            jl      check_up               ; -9C
            mov.b   #0xBB, R4
            ret
            
check_up    cmp     #100, R15              ; exit if the number exceeds 99
            jl      process
            mov.b   #0xAA, R4
            ret

process     clr.w   R4                     ; prepare the result
            mov.b   #8, R14                ; loop cnt = # of bits

b2b_loop    rla.b   R15                    ; use the decimal addition
            dadd.b  R4, R4                 ; operation to convert the byte
            dec.b   R14                    ; into BCD
            jnz     b2b_loop               ; we assume byte value <= 99
            bit.w   #BITF, R5
            jz      $ + 6
            bis     #0xB0, R4              ; add the minus sign
            ret

display     mov.b   R4, R14                ; display a value in R4 on LCD
            mov.b   R4, R15
            and.b   #0x0F, R14             ; extract right digit in R14
            rla.b   R14
            rla.b   R14                    
            add.w   #right_digit, R14      ; R14 = address in right table
            clrc
            rrc.b   R15
            rra.b   R15                    
            and.b   #0xFC, R15
            add.w   #left_digit, R15       ; R15 = address in left table

            mov.b   @R15+, &LCDM2          ; write table data to LCD
            mov.b   @R15+, &LCDM3
            mov.b   @R15+, &LCDM4
            mov.b   @R15,  &LCDM5
            mov.b   @R14+, &LCDM1
            add.b   @R14+, &LCDM2
            mov.b   @R14+, &LCDM6
            mov.b   @R14,  &LCDM7
            ret

right_digit DW      0x0111                 ; digit 0 (LCDM1 part)
            DW      0x1110                 ; digit 0 (LCDM6 part)
            DW      0x0100                 ; digit 1 (LCDM1 part)
            DW      0x0010                 ; digit 1 (LCDM6 part)
            DW      0x0011                 ; digit 2 (LCDM1 part)
            DW      0x0111                 ; digit 2 (LCDM6 part)
            DW      0x0110                 ; digit 3 (LCDM1 part)
            DW      0x0111                 ; digit 3 (LCDM6 part)
            DW      0x0100                 ; digit 4 (LCDM1 part)
            DW      0x1011                 ; digit 4 (LCDM6 part)
            DW      0x0110                 ; digit 5 (LCDM1 part)
            DW      0x1101                 ; digit 5 (LCDM6 part)
            DW      0x0111                 ; digit 6 (LCDM1 part)
            DW      0x1101                 ; digit 6 (LCDM6 part)
            DW      0x0100                 ; digit 7 (LCDM1 part)
            DW      0x0110                 ; digit 7 (LCDM6 part)
            DW      0x0111                 ; digit 8 (LCDM1 part)
            DW      0x1111                 ; digit 8 (LCDM6 part)
            DW      0x0110                 ; digit 9 (LCDM1 part)
            DW      0x1111                 ; digit 9 (LCDM6 part)
            DW      0                      ; the overline symbol
            DW      0x0100                  
            DW      0x0010                 ; the underline symbol
            DW      0
            
left_digit ;DW      0x1110                 ; digit 0 (LCDM2 part)
           ;DW      0x1110                 ; digit 0 (LCDM4 part)
            DW      0                      ; do not display leading 0
            DW      0
            DW      0x0010                 ; digit 1 (LCDM2 part)
            DW      0x1000                 ; digit 1 (LCDM4 part)
            DW      0x1100                 ; digit 2 (LCDM2 part)
            DW      0x1101                 ; digit 2 (LCDM4 part)
            DW      0x0110                 ; digit 3 (LCDM2 part)
            DW      0x1101                 ; digit 3 (LCDM4 part)
            DW      0x0010                 ; digit 4 (LCDM2 part)
            DW      0x1011                 ; digit 4 (LCDM4 part)
            DW      0x0110                 ; digit 5 (LCDM2 part)
            DW      0x0111                 ; digit 5 (LCDM4 part)
            DW      0x1110                 ; digit 6 (LCDM2 part)
            DW      0x0111                 ; digit 6 (LCDM4 part)
            DW      0x0010                 ; digit 7 (LCDM2 part)
            DW      0x1100                 ; digit 7 (LCDM4 part)
            DW      0x1110                 ; digit 8 (LCDM2 part)
            DW      0x1111                 ; digit 8 (LCDM4 part)
            DW      0x0110                 ; digit 9 (LCDM2 part)
            DW      0x1111                 ; digit 9 (LCDM4 part)
            DW      0                      ; the overline symbol
            DW      0x0100                  
            DW      0                      ; the - symbol
            DW      0x0001
            
;------------------------------------------------------------------------------
;           Interrupt Vectors
;------------------------------------------------------------------------------
            ORG     0x0FFE0                ; basic timer 1 vector
            DW      bt1_ISR

            ORG     0x0FFFE                ; RESET Vector
            DW      RESET                  ;
            END

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 07:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.0784 секунд с 7
ELECTRONIX ©2004-2016