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

Реконфигурация дисплея HD44780

15.06.2015, 17:14. Показов 2115. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, столкнулся с очень неприятной проблемой. В ходе работы моего устройства, есть необходимость инициализировать дисплей несколько раз, с разными параметрами, например изменение шины данных с 4 на 8 бит или наоборот. При попытке инициализировать дисплей несколько раз происходит отображение мусора и дисплей виснет. Может кто сталкивался, как это можно вылечить программно?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2015, 17:14
Ответы с готовыми решениями:

Резистор с каким сопротивлением нужен для дисплея HD44780
Имею LCD дисплей WH1601B на базе HD44780. По даташиту требуется пин контрастности припаять к переменному резистору. Но я припаял его тупо к...

Нужна полная инициализация для дисплея на базе HD44780.
Имею плату STM32F4 Dyscovery и дисплейчик(WH1601B) на базе HD44780. Сам я новичок, уже всё перепробывал, разные инициализации брал, сам...

Что такое реконфигурация мобильных компьютерных сетей?
Мне нужны только преимущества и недостатки известных методов реконфигурации мобильных компьютерных сетей. Кто то, может быть, сталкивался с...

6
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
16.06.2015, 08:54
Лучший ответ Сообщение было отмечено raxp как решение

Решение

В статье описан способ реконфигурации дисплея http://makesystem.net/?p=2128#.VX-5FfntlBc
1
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 8
20.06.2015, 07:36  [ТС]
кажется все получилось, спасибо =)
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
23.06.2015, 23:28
Цитата Сообщение от Gennadiusisus Посмотреть сообщение
кажется все получилось, спасибо
так заделитесь, если не жалко...
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
23.06.2015, 23:46
Цитата Сообщение от Voland_ Посмотреть сообщение
так заделитесь, если не жалко...
так в статейке все написано
залил я себе эту библиотеку, буду пробовать
для начала попытался из lcd_cfg.h сделать Keilо-вский визард(мой первый опыт)
зацените
Кликните здесь для просмотра всего текста
C
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
//------------------------------------------------------
/* File:       Library for HD44780 compatible displays  */
/* Version:    v2.01                                    */
/* Author:     GrAnd/www.MakeSystem.net                 */
/* Tested on:  AVR, STM32F10X                           */
/* License:    GNU LGPLv2.1                             */
//------------------------------------------------------
/* Copyright (C)2014 GrAnd. All right reserved          */
//------------------------------------------------------
 
/*
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.
 
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
Contact information :
                        [email]mail@makesystem.net[/email]
                        [url]http://makesystem.net/?page_id=2[/url]
*/
 
#ifndef LCD_CFG_H
#define LCD_CFG_H
 
/* Include here the header file of your microcontroller */
#include "stm32f10x.h"
//#include <avr/io.h>
//<<< Use Configuration Wizard in Context Menu >>>
//-------------------------------
/* SET LCD<->MCU CONNECTIONS */
//-------------------------------
 
 
//<h> PinConfig
//<h> E
// <i> E - Starts data read/write. 
//<o0>  port<1=> GPIOA  <2=> GPIOB  
//<3=> GPIOC  <4=> GPIOD  
//<5=> GPIOE  <6=> GPIOF  
//<7=> GPIOG  
//<o2>  pin <0-15>
//</h>
#define TMP_E 1
#define LCD_E                       (1<<16)u    /* Pin number */
#if TMP_E==1
#define LCD_E_OUT                   GPIOA->ODR  /* Output register */
#elif TMP_E==2
#define LCD_E_OUT                   GPIOB->ODR  /* Output register */
#elif TMP_E==3
#define LCD_E_OUT                   GPIOC->ODR  /* Output register */
#elif TMP_E==4
#define LCD_E_OUT                   GPIOD->ODR  /* Output register */
#elif TMP_E==5
#define LCD_E_OUT                   GPIOE->ODR  /* Output register */
#elif TMP_E==6
#define LCD_E_OUT                   GPIOF->ODR  /* Output register */
#elif TMP_E==7
#define LCD_E_OUT                   GPIOG->ODR  /* Output register */
#endif
//<h> RS
//<i> wwwwwwwww
//<o0> port<1=> GPIOA  <2=> GPIOB  
//<3=> GPIOC  <4=> GPIOD  
//<5=> GPIOE  <6=> GPIOF  
//<7=> GPIOG  
//<o1>pin <0-16>
//</h>
/* RS - Selects registers.
 * 0:   Instruction register (for write)
 * 0:   Busy flag + address counter (for read)
 * 1:   Data register (for write and read) */
 
#define TMP_RS 4
#define LCD_RS                      3   /* Pin number */
#if TMP_RS==1
#define LCD_RS_OUT                  GPIOA->ODR  /* Output register */
#elif TMP_RS==2
#define LCD_RS_OUT                  GPIOB->ODR  /* Output register */
#elif TMP_RS==3
#define LCD_RS_OUT                  GPIOC->ODR  /* Output register */
#elif TMP_RS==4
#define LCD_RS_OUT                  GPIOD->ODR  /* Output register */
#elif TMP_RS==5
#define LCD_RS_OUT                  GPIOE->ODR  /* Output register */
#elif TMP_RS==6
#define LCD_RS_OUT                  GPIOF->ODR  /* Output register */
#elif TMP_RS==7
#define LCD_RS_OUT                  GPIOG->ODR  /* Output register */
#endif
 
 
/* R/W - Selects read or write.
 * 0:   Write
 * 1:   Read */
//<h> R/W
//<o0>port<1=> GPIOA  <2=> GPIOB  <3=> GPIOC  <4=> GPIOD  
//<5=> GPIOE  <6=> GPIOF  <7=> GPIOG  
//<o1>pin <0-16>
//</h>
#define TMP_RW 3
#define LCD_RW                      2u  /* Pin number */
#if TMP_RW==1
#define LCD_RW_OUT                  GPIOA->ODR  /* Output register */
#elif TMP_RW==2
#define LCD_RW_OUT                  GPIOB->ODR  /* Output register */
#elif TMP_RW==3
#define LCD_RW_OUT                  GPIOC->ODR  /* Output register */
#elif TMP_RW==4
#define LCD_RW_OUT                  GPIOD->ODR  /* Output register */
#elif TMP_RW==5
#define LCD_RW_OUT                  GPIOE->ODR  /* Output register */
#elif TMP_RW==6
#define LCD_RW_OUT                  GPIOF->ODR  /* Output register */
#elif TMP_RW==7
#define LCD_RW_OUT                  GPIOG->ODR  /* Output register */
#endif
 
/* DB4 to DB7 - Four high order bidirectional tristate data bus pins.
 * Used for data transfer and receive between the MPU and the HD44780U.
 * DB7 can be used as a busy flag. */
//<h> D7
//<o0>port<1=> GPIOA  <2=> GPIOB  <3=> GPIOC  <4=> GPIOD  
//<5=> GPIOE  <6=> GPIOF  <7=> GPIOG  
//<o1>pin<0-16>
//</h>
#define TMP_D7                      1
#define LCD_D7                      4u  /* Pin number */
 
//<h> D6
//<o0>port<1=> GPIOA  <2=> GPIOB  <3=> GPIOC  <4=> GPIOD  
//<5=> GPIOE  <6=> GPIOF  <7=> GPIOG  
//<o1>pin<0-16>
//</h>
#define TMP_D6                      1
#define LCD_D6                      4u  /* Pin number */
//<h> D5
//<o0>port<1=> GPIOA  <2=> GPIOB  <3=> GPIOC  <4=> GPIOD  
//<5=> GPIOE  <6=> GPIOF  <7=> GPIOG  
//<o1>pin<0-16>
//</h>
#define TMP_D5                      1
#define LCD_D5                      4u  /* Pin number */
//<h> D4
//<o0>port<1=> GPIOA  <2=> GPIOB  <3=> GPIOC  <4=> GPIOD  
//<5=> GPIOE  <6=> GPIOF  <7=> GPIOG  
//<o1>pin<0-16>
//</h>
#define TMP_D4                      1
#define LCD_D4                      4u  /* Pin number */
 
 
 
 
#if TMP_D7==1
#define LCD_D7_OUT                  GPIOA->ODR  /* Output register */
#define LCD_D7_IN                   GPIOA->IDR  /* Input register */
#elif TMP_D7==2
#define LCD_D7_OUT                  GPIOB->ODR  /* Output register */
#define LCD_D7_IN                   GPIOB->IDR  /* Input register */
#elif TMP_D7==3
#define LCD_D7_OUT                  GPIOC->ODR  /* Output register */
#define LCD_D7_IN                   GPIOC->IDR  /* Input register */
#elif TMP_D7==4
#define LCD_D7_OUT                  GPIOD->ODR  /* Output register */
#define LCD_D7_IN                   GPIOD->IDR  /* Input register */
#elif TMP_D7==5
#define LCD_D7_OUT                  GPIOE->ODR  /* Output register */
#define LCD_D7_IN                   GPIOE->IDR  /* Input register */
#elif TMP_D7==6
#define LCD_D7_OUT                  GPIOF->ODR  /* Output register */
#define LCD_D7_IN                   GPIOF->IDR  /* Input register */
#elif TMP_D7==7
#define LCD_D7_OUT                  GPIOG->ODR  /* Output register */
#define LCD_D7_IN                   GPIOg->IDR  /* Input register */
#endif
 
#if TMP_D6==1
#define LCD_D6_OUT                  GPIOA->ODR  /* Output register */
#elif TMP_D6==2
#define LCD_D6_OUT                  GPIOB->ODR  /* Output register */
#elif TMP_D6==3
#define LCD_D6_OUT                  GPIOC->ODR  /* Output register */
#elif TMP_D6==4
#define LCD_D6_OUT                  GPIOD->ODR  /* Output register */
#elif TMP_D6==5
#define LCD_D6_OUT                  GPIOE->ODR  /* Output register */
#elif TMP_D6==6
#define LCD_D6_OUT                  GPIOF->ODR  /* Output register */
#elif TMP_D6==7
#define LCD_D6_OUT                  GPIOG->ODR  /* Output register */
#endif
 
#if TMP_D5==1
#define LCD_D5_OUT                  GPIOA->ODR  /* Output register */
#elif TMP_D5==2
#define LCD_D5_OUT                  GPIOB->ODR  /* Output register */
#elif TMP_D5==3
#define LCD_D5_OUT                  GPIOC->ODR  /* Output register */
#elif TMP_D5==4
#define LCD_D5_OUT                  GPIOD->ODR  /* Output register */
#elif TMP_D5==5
#define LCD_D5_OUT                  GPIOE->ODR  /* Output register */
#elif TMP_D5==6
#define LCD_D5_OUT                  GPIOF->ODR  /* Output register */
#elif TMP_D5==7
#define LCD_D5_OUT                  GPIOG->ODR  /* Output register */
#endif
 
#if TMP_D4==1
#define LCD_D4_OUT                  GPIOA->ODR  /* Output register */
#elif TMP_D4==2
#define LCD_D4_OUT                  GPIOB->ODR  /* Output register */
#elif TMP_D4==3
#define LCD_D4_OUT                  GPIOC->ODR  /* Output register */
#elif TMP_D4==4
#define LCD_D4_OUT                  GPIOD->ODR  /* Output register */
#elif TMP_D4==5
#define LCD_D4_OUT                  GPIOE->ODR  /* Output register */
#elif TMP_D4==6
#define LCD_D4_OUT                  GPIOF->ODR  /* Output register */
#elif TMP_D4==7
#define LCD_D4_OUT                  GPIOG->ODR  /* Output register */
#endif
 
 
 
 
//</h>
//-------------------------------
//<h> DEFAULT CONFIGURATIONS
//-------------------------------
#define DEFAULT_DISPLAY_CONFIG      DISPLAY_CONFIG_4bit_2L_5x8
#define DEFAULT_ENTRY_MODE          ENTRY_MODE_INC_NO_SHIFT
#define DEFAULT_VIEW_MODE           VIEW_MODE_DispOn_BlkOff_CrsOff
//<q0.0> USE_BUSY_FLAG
#define USE_BUSY_FLAG               0u  /* 1 (true) or 0 (false) */
 
//</h>
//-------------------------------
//<h> SET MCU TIMINGS
// <o>   MCU frecurency (MHz)  MHz. Minimal value = 1 MHz  <1-72> 
#define MCU_FREQ_VALUE              1u      /* MHz. Minimal value = 1 MHz */
//<o> BUSY_CYCLE_TIME       x 10us        <1-100>
#define BUSY_CYCLE_TIME             2u      /* x 10us. See datasheet for minimal value. */
//<o> CLRSCR_CYCLE_TIME     x 10us        <1-400>
#define CLRSCR_CYCLE_TIME           200u    /* x 10us. See datasheet for minimal value. */
//<o> RETHOME_CYCLE_TIME    x 10us        <1-100>
#define RETHOME_CYCLE_TIME          200u    /* x 10us. See datasheet for minimal value. */
//</h>
//-------------------------------
//<h>CONFIGURE LCD WITH 4 LINES
//-------------------------------
#define START_ADDRESS_3rd_LINE      0x10u
#define START_ADDRESS_4th_LINE      0x50u
//</h>
 
 
//-------------------------------
//  <h>SET FORMATTED OUTPUT OPTIONS
//-------------------------------
//<q0.0> USE_FORMATTED_OUTPUT
#define USE_FORMATTED_OUTPUT        1u  /* 1 (true) or 0 (false) */
//<o> Tab Space  1 .. 255 <1-255>
#define TAB_SPACE                   4u  /* 1 .. 255 */
//</h>
//-------------------------------
//  <h>PROGRESS BAR OPTIONS
//-------------------------------
//<q0.0> USE_PROGRESS_BAR
#define USE_PROGRESS_BAR            1u  /* 1 (true) or 0 (false) */
//<q0.0> USE_REGRESS_BAR
#define USE_REGRESS_BAR             0u  /* 1 (true) or 0 (false) */
#define PROGRESS_BAR_LINE           LCD_2nd_LINE    /* Select lcd line: 1, 2, 3, 4, ... */
 
//<o> PROGRESS_BAR_HEIGHT  in pixel: 1(min), 2, 3, 4, 5, 6, 7, 8(max) <1-8>
#define PROGRESS_BAR_HEIGHT         3u  /* in pixel: 1(min), 2, 3, 4, 5, 6, 7, 8(max) */
//<o> PROGRESS_BAR_WIDTH  in pixel: 1(min), 2, 3, 4, 5, 6, 7, 8(max) <1-20>
#define PROGRESS_BAR_WIDTH          10u /* Number of chars in lcd line:  1, 2, .. , 8, 16, 20 */
//</h>
//<<< end of configuration section >>>
 
 
//-------------------------------
// LCDlib CALLBACKS
//-------------------------------
#if (USE_BUSY_FLAG)
 
#define Set_D7_as_Input()   \
    GPIOA->CRL &= 0xFFF0FFFFu;  \
    GPIOA->CRL |= 0x00040000u;
 
#define Set_D7_as_Outut()   \
    GPIOA->CRL &= 0xFFF0FFFFu;  \
    GPIOA->CRL |= 0x00030000u;
 
#endif /* USE_BUSY_FLAG */
 
 
 
extern void gpio_init(void);
#define Set_All_pins_as_Outputs()   gpio_init()
 
#endif /* LCD_CFG_H */
 
//-------------------------------
/* THE END */
//-------------------------------

с именами полей пока бяда, не могу нормальные простые и понятные придумать
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
24.06.2015, 10:50
Цитата Сообщение от ValeryS Посмотреть сообщение
не могу нормальные простые и понятные придумать
давайте вместе придумаем. Что за поля?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.06.2015, 11:12
Цитата Сообщение от Витальич Посмотреть сообщение
Что за поля?
ну как бы сказать?
с Keil-ом в режиме визарда работал?
там появляются слева что редактируем, справа как редактируем
вот это слева и есть названия полей( ну я их так называю) я просто повыдергивал их из исходного файла
все что после тегов <h> <o> <q> <e>

но пока это снимается сегодня посмотрел свежим взглядом, косяков еще много
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2015, 11:12
Помогаю со студенческими работами здесь

Подойдет-ли пленка от цветного дисплея (например от мобилы) для монохромного дисплея?
Здравствуйте. Подойдет-ли пленка от цветного дисплея (например от мобилы) для монохромного дисплея? Или надо искать пленку для...

Уменьшение яркости дисплея 7 сегментов дисплея
Здравствуйте. Есть плата nucleo f103, на которую подключена плата расширения Arduino Multi-function Shield. На ней использую 4 разрядный...

STM8L + HD44780
Доброе время суток. Подскажите, пожалуйста, хватает ли лог уровня на ножках STM8L (на питание МК будет подано 3.3В) для работы с HD44780...

AVR и HD44780
Всем привет! Возможно топик должен висеть в &quot;детских вопросах&quot;, тем не менее пишу сюда, вдруг подойдет. Итак, промучался подключая...

HD44780 + ATMega16
Добрый день всем, возниккла следующая проблема аппаратного плана - при подключении 4-х строчного жк индикатора hd44780 к микроконтроллеру...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru