Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/48: Рейтинг темы: голосов - 48, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 19.09.2009
Сообщений: 25

PIC16f84a. Работа с LCD дисплеем

20.02.2012, 12:54. Показов 10016. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Такая проблема, нужна программа ( ни С или асме) для pic16f84a и lsd WH0802A (http://chipenable.ru/files/course/lcd/WH0802A.pdf) его контроллер http://chipenable.ru/files/course/lcd/ks0066.pdf.
Нашел много примеров его программирования на различных контроллерах, но ничего(результат проб ниже)
Начил этим заниматься недавно поэтому сильно не пинайте)))
Дайте пожалуйста программу простенькую, что бы хоть что то выводила или объясните алгоритм (лучше и то и то)
Зранее благодарин)
Вложения
Тип файла: rar Mytest(2).rar (715 байт, 133 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2012, 12:54
Ответы с готовыми решениями:

Вывод двух строк на LCD LM016L с микроконтроллером PIC16F84A
Соберите в среде моделирования цифровых устройств PROTEUS Simulator Integration схему на основе микроконтроллера PIC и двухстрочного...

Написать программу для PIC16F877 для работы с LCD дисплеем LM016L
День добрый, форумчане. Только начинаю разбираться с пиками и асмом. Столкнулся с недопониманием, почему во время старта симуляции в...

Работа с LCD дисплеем на Arduino
Здравствуйте читатели. Произошла такая проблема, писал код для контролера Arduino NANO и получилась такая путаница. Написал код основываясь...

7
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
20.02.2012, 16:21
Схемы нет, поэтому общий алгоритм работы с LSD:

Инициализация:
1. Подаем питание
2. Ждем >40 мс
3. Подаем команду Function set
4. Подаем команду Display ON/OFF
5. Подаем команду Clear Display
6. Ждем > 1,5 мс
7. Подаем команду Entry Mode Set

Собственно сама работа:
1. Послать букву 'H'
2. Послать букву 'E'
3. Послать букву 'L'
4. Послать букву 'L'
5. Послать букву 'O'
5. Послать букву ' '
6. Послать букву 'W'
7. Послать букву 'O'
8. Послать букву 'R'
9. Послать букву 'L'
10. Послать букву 'D'
0
0 / 0 / 0
Регистрация: 19.09.2009
Сообщений: 25
20.02.2012, 19:33  [ТС]
Спасибо) я видел это но не понял( Вы не могли бы сказать на какие порты какие сигналы подавать?
Какие это функции и какие библиотеки нужны? Я пользуюсь с компилятором Hi-tech, но ничего там не нашел(
0
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
20.02.2012, 19:53
Примерно так: https://www.cyberforum.ru/micr... post959464
Только надо программу подкорректировать под другие задержки и названия портов... а то я использовал компилятор MCC18 и контроллер PIC18. Но основные принципы такие же.
1
0 / 0 / 0
Регистрация: 19.09.2009
Сообщений: 25
21.02.2012, 13:03  [ТС]
Спасибо, буду пробовать.

Добавлено через 16 часов 31 минуту
Эх... Ничего так и не выходит( во всех примерах используются какие то непонятные функции, которые есть в компиляторе, а я в этом не разбираюсь попробовал в CCS PICC Compiler v4.120. он вообже на собственные библиотеки ругается(Если кому не сложно объясните подробно как всетаки заставить выводить хоть что-нибудь на lcd
0
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
21.02.2012, 17:50
Какие именно функции? Delay100TCYx и Delay1TCY ? Это просто задержки. memcmp и memcpy должны присутствовать в string.h Вроде, большие никаких функций нету.
0
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
22.02.2012, 11:55
Из рабочей программы (pic16F876) PORTB - data; порты C0,C1,C2 - управляющие(вроде так
RW,RS,E)
Инициализация, если непонятно см. алгоритм 8-Bit Interface в pdf:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;----------------------------------------------------------
INDICATE_INITIALIZATION
    bsf STATUS, RP0
    clrf    TRISB       ;PORTB - выходы
    bcf STATUS, RP0
 
    bcf     PORTC,  1
        bcf     PORTC,  0
        bcf     PORTC,  2
    
    movlw   0x0F
    movwf   RCT
    
    movlw   0xFF
        call    DELAY       ;Задержка 15 мс
    decfsz  RCT,    1
    goto    $-3   
                                ;Busy Flag пока недоступен
    movlw   0x0F            ;-------------------------
    andwf   PORTB,  1
        movlw   0x30
    iorwf   PORTB,  1   ;Function Set (Interface is 8 bits long.)
    bsf     PORTC,  2
    bcf     PORTC,  2
 
    movlw   0x05
    movwf   RCT
    
    movlw   0xFF
        call    DELAY       ;Задержка 4.5 мс
    decfsz  RCT,    1
    goto    $-3 
 
    movlw   0x0F
    andwf   PORTB,  1
        movlw   0x30
    iorwf   PORTB,  1   ;Function Set (Interface is 8 bits long.)
    bsf     PORTC,  2
    bcf     PORTC,  2
 
    movlw   0xF0
        call    DELAY       ;Задержка 100 мкс
 
    movlw   0x0F
    andwf   PORTB,  1
        movlw   0x30
    iorwf   PORTB,  1   ;Function Set (Interface is 8 bits long.)
    bsf     PORTC,  2
    bcf     PORTC,  2
 
                                ;Busy Flag уже доступен
                                ;----------------------
        movlw   0x3C        ;Function Set (Interface is 8 bits long. Line=2)
        call    LCD_Send_Cmd
 
        movlw   0x0C        ;Display ON
        call    LCD_Send_Cmd
 
        movlw   0x01        ;Clear Display
        call    LCD_Send_Cmd
 
        movlw   0x06        ;Entry Mode Set
        call    LCD_Send_Cmd
 
    bsf STATUS, RP0
    movlw   0xFF        ;PORTB - входы
    movwf   TRISB
    bcf STATUS, RP0
    return
Посылка команды в LSD:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
;----------------------------------------------------------
LCD_Send_Cmd
    bsf STATUS, RP0
    clrf    TRISB       ;PORTB - выходы
    bcf STATUS, RP0
 
    movwf   LCD_WBUF
    call    LCD_Busy_Check
 
    bcf     PORTC,  1
        bcf     PORTC,  0
 
    movf    LCD_WBUF,0
    movwf   PORTB
    bsf     PORTC,  2
        bcf     PORTC,  2
 
    bsf STATUS, RP0
    movlw   0xFF        ;PORTB - входы
    movwf   TRISB
    bcf STATUS, RP0
    return
Проверка Busy Flag, если непонятно см. картинку из "Example of Busy Flag Check Timing Sequencе" в pdf:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
;----------------------------------------------------------
LCD_Busy_Check  
    bsf STATUS, RP0
    movlw   0xFF
    movwf   TRISB       ;PORTB - входы
    bcf STATUS, RP0
 
    bcf PORTC,  1
    bsf PORTC,  0
 
BF_Check_Loop:
    bsf PORTC,  2
    nop
    movf    PORTB,  0
    bcf PORTC,  2
    
    movwf   LCD_RBUF
    
    btfsc   LCD_RBUF,7  ;Проверка бита "Занят" (бит 7)
    goto    BF_Check_Loop
 
    bsf STATUS, RP0
    clrf    TRISB       ;PORTB - выходы
    bcf STATUS, RP0
 
    return
Пример работы
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
;----------------------------------------------------------
INDICATE_MONTH
    movwf   TEMP_IND
 
        movlw   0x01        ;Clear Display
        call    LCD_Send_Cmd
 
    movlw   0x81        ;Set DDRAM Address 0x01
    call    LCD_Send_Cmd
 
    movlw   0x4D        ;Индикация "M"
    call    LCD_Send_Char
 
    movlw   0x65        ;Индикация "e"
    call    LCD_Send_Char
 
    movlw   0x63        ;Индикация "c"
    call    LCD_Send_Char
 
    movlw   0xC7        ;Индикация "я"
    call    LCD_Send_Char
 
    movlw   0xE5        ;Индикация "ц"
    call    LCD_Send_Char
 
    movf    TEMP_IND,0
    call    CONVERT_HEX_TO_DEC
    call    INDICATE_00_99
    
    return
1
0 / 0 / 0
Регистрация: 19.09.2009
Сообщений: 25
22.02.2012, 12:10  [ТС]
Всем огромное спасибо, разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2012, 12:10
Помогаю со студенческими работами здесь

Работа с LCD дисплеем HD44780 из МК Atmega16 (GCC)
Здравствуйте, пытаюсь подключить LCD дисплей к микроконтроллеру, скачал библиотеку, но уже на начальном этапе появились проблемы. Пытаюсь...

Амперметр на Atmega8 с LCD дисплеем
Может кто то делал или подскажет как написать самый простой амперметр на assembler! (именно на этом языке) модель в протеусе похожа на...

Работа с дисплеем и прерыванием
Необходимо задать три колонки символов в правой части экрана и задать их перемещение в левую часть экрана. Получилось создать только три...

Работа с дисплеем и прерывания
Задание: Задать вывод строки символов и ее перемещение снизу вверх. Как эту программу написать? Помогите пожалуйста разобраться

Работа с Дисплеем покупателя на Delphi
Привет всем. Пишу программу для управления дисплеем покупателя Posiflex. работает через COM-Порт. Проблема состоит вот вчем. при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru