Отговори на тема  [ 8 мнения ] 
Как да се инициализира диспеля като 16x1 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Юни 03, 2012 10:28 pm
Мнения: 99
Мнение Как да се инициализира диспеля като 16x1
Какво трябва да се промени в инициализиращата подпрограма, за да работи 16х1 дисплеят в 16х1 режим. Програмата в микроконтролера PIC16F628A работи като за 16х1 дисплей, но дясната половина на изображението не се изобразява.
Код:
;
; *****************************************************************************
; *                                                                           *
; * Purpose:  Power on initialization of Liquid Crystal Display.  The LCD     *
; *           controller chip must be equivalent to an Hitachi 44780.  The    *
; *           LCD is assumed to be a 8x1 or a 16x1 display.                   *
; *                                                                           *
; *   Input:  None                                                            *
; *                                                                           *
; *  Output:  None                                                            *
; *                                                                           *
; *****************************************************************************
;

init_LCD
        call    wait_64ms         ; Wait for LCD to power up
        movlw   CMD_RESET_LCD     ; LCD init instruction (First)
        movwf   PORTB             ; Send to LCD via RB3..RB0
        bsf     PORTB,LCD_e       ; Set the LCD E line high,
        call    wait_64ms         ;   wait a "long" time,
        bcf     PORTB,LCD_e       ;   and then Clear E
        movlw   CMD_RESET_LCD     ; LCD init instruction (Second)
        movwf   PORTB             ; Send to LCD via RB3..RB0
        bsf     PORTB,LCD_e       ; Set E high,
        call    wait_32ms         ;   wait a while,
        bcf     PORTB,LCD_e       ;   and then Clear E
        movlw   CMD_RESET_LCD     ; LCD init instruction (Third)
        movwf   PORTB             ; Send to LCD via RB3..RB0
        bsf     PORTB,LCD_e       ; Set E high,
        call    wait_32ms         ;   wait a while,
        bcf     PORTB,LCD_e       ;   and then Clear E
        movlw   PICEL_IFC1        ; Set the LCD for 4-bit mode I/O
        movwf   PORTB             ; Send to LCD via RB3..RB0
        bsf     PORTB,LCD_e       ; Set E high,
        call    wait_16ms         ;   wait a while,
        bcf     PORTB,LCD_e       ;   and then Clear E
        movlw   PICEL_IFC2        ; Set operational characteristics of LCD
        call    cmnd2LCD          ; Send command in w to LCD
        movlw   PICEL_DISPLAY_OFF ; Display off, cursor and blink off
        call    cmnd2LCD          ; Send command to LCD
        movlw   CMD_CLEAR_LCD     ; Clear and reset cursor
        call    cmnd2LCD          ; Send command in w to LCD
        movlw   PICEL_CURSOR_RT   ; Set cursor to move right, no display shift
        call    cmnd2LCD          ; Send command in w to LCD

        movlw   PICEL_DISPLAY_ON  ; Display on, cursor on, blink off
        call    cmnd2LCD          ; Send command to LCD
        return                    ; Done!


Нед Дек 02, 2012 8:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение Re: Как да се инициализира диспеля като 16x1
Втората половина на дисплея започва на друг адрес , в даташита на дисплея трябва да се види изместването колко беше. Това не касае изнициализацията ,а адресацията на символите в дисплейния РАМ.


Нед Дек 02, 2012 9:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Как да се инициализира диспеля като 16x1
Вторите 8 символа са на адрес 40(втори ред). Диспля трябва да се инициализира, като двуредов 5х8.

_________________
Warriors of the Night, ASSEMBLER!!!


Нед Дек 02, 2012 10:15 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Юни 03, 2012 10:28 pm
Мнения: 99
Мнение Re: Как да се инициализира диспеля като 16x1
Ето го целият код, ако някой може да помогне къде и какво трябва да се промени:
Ето и datasheet-а на дисплея: AC161AYA


Прикачени файлове:
Коментар на файл: Сорс код (асемблер)
PEGen2-1f.rar [26.52 KiB]
149 пъти
Нед Дек 02, 2012 11:14 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение Re: Как да се инициализира диспеля като 16x1
като прибавиш старшата единица, указваща адрес за индикация, става 0xC0


Пон Дек 03, 2012 9:53 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Юни 03, 2012 10:28 pm
Мнения: 99
Мнение Re: Как да се инициализира диспеля като 16x1
Понеже не разбирам от програмиране, моля ако може някой да преправи кода с необходимите промени.
Благодаря предварително!


Пон Дек 03, 2012 8:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение Re: Как да се инициализира диспеля като 16x1
Цитат:
Function: calibrate
;
; Purpose: This routine is entered at start up if the calibrate
; push button is (PIC-EL PB_1) is pressed at power-on time.
;
; If a 8-character LCD is used,"10000000" is displayed
; If a 16-character LCD is used," 10,000.000 CAL " is displayed

Какво ти се изписва при калибрацията с бутона? Последните 8 квадратчета светят ли? Светят - в смисъл да се виждат черните им точки при засилен контраст.


Пон Дек 03, 2012 11:02 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Юни 03, 2012 10:28 pm
Мнения: 99
Мнение Re: Как да се инициализира диспеля като 16x1
10,000. като най-лявата позиция е свободна. С контраста не съм пробвал, в момента съм зашил една по-нова версия на сорса и с нея работи нормално. При нея поне лесно се избира типа дисплей - с коментиране и откоментиране на съответен ред. Само функциите са малко по-други.


Пон Дек 03, 2012 11:28 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни