Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
inquisitor
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,763
1

Как включить LCD в 4 бита и 2 строки

03.12.2018, 18:37. Просмотров 104. Ответов 4
Метки нет (Все метки)

У вас на сайте нашел статью.


В ней рассматривается 2 строчный ЖКИ в режиме включения 8 бит.Мне нужно запитать его в 4 бит. Схему+код+протеус проект прилагаю.
Я в инициализации включил команду
lcd_com(0x28); //связь с 2х строчным ЖКИ по 4 линиям
но это не помогло.
Как включить LCD в 4 бита и 2 строки.zip
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2018, 18:37
Ответы с готовыми решениями:

Си - как передать вых. порт и номер бита как переменные?
Преамбула: Есть у меня некий проект, там много сдвиговых регистров типа 595. Строб я на них...

Как определить порядковый номер бита в байте
Здравствуйте. Контроллеру передается некое число от 0 до 7, соответствующее порядковому номеру...

как вывести элемент массива на lcd?
Есть массив структур, не могу на lsd вывести элемент массива((((

Как подключить к LCD от старого сотового телефона к МК
День добрый, имеется 2 сотовых Motorola Razr V3i, Samsumg SGH-B320, и LCD от китайской Nokyo...

как организовать передачу МК>МК>UART>МК>LCD 16х2
Заказал темброблок на МК с дисплеем, дисплей аналоговый. как сделать так чтобы дисплей находился на...

4
inquisitor
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,763
03.12.2018, 18:38  [ТС] 2
Схема+код под atmel studio+hex в архиве.
0
inquisitor
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,763
03.12.2018, 22:04  [ТС] 3
Хочу по своей схеме включить 4 х битный дисплей
RS lcd -> PB4
ENlcf ->PB3
выводы PORTD2-PORTD5 -> LCD D4-D7
Компиляция без ошибок но на дисплей ничего не выводиться.
Как включить LCD в 4 бита и 2 строки


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
#define F_CPU 8000000UL
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdlib.h>
 
#define RS PB4 // RS подключаем к PC0 микроконтроллера
#define EN PB3 // EN=E подключаем к PC2 микроконтроллера
 
// Функция записи команды в ЖКИ
void lcd_com(unsigned char p)
{
    PORTB &= ~(1 << RS); // RS = 0 (запись команд)
    PORTB |= (1 << EN);  // EN = 1 (начало записи команды в LCD)
    PORTD &= 0x0F;
    PORTD |= (p & 0xF0); // Выделяем старший нибл
    _delay_us(100);
    PORTB &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
    _delay_us(100);
    PORTB |= (1 << EN); // EN = 1 (начало записи команды в LCD)
    PORTD &= 0x0F;
    PORTD |= (p << 4); // Выделяем младший нибл
    _delay_us(100);
    PORTB &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
    _delay_us(100);
}
 
// Функция записи данных в ЖКИ
void lcd_dat(unsigned char p)
{
    PORTB |= (1 << RS)|(1 << EN); // RS = 1 (запись данных), EN - 1 (начало записи команды в LCD)
    PORTD &= 0x0F;
    PORTD |= (p & 0xF0); // Выделяем старший нибл
    _delay_us(100);
    PORTB &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
    _delay_us(100);
    PORTB |= (1 << EN); // EN = 1 (начало записи команды в LCD)
    PORTD &= 0x0F;
    PORTD |= (p << 4); // Выделяем младший нибл
    _delay_us(100);
    PORTB &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
    _delay_us(100);
}
// Функция инициализации ЖКИ
void lcd_init(void)
{
    DDRB |= (1 << PB3)|(1 << PB4); // PB4, PB3 - выходы
    PORTB &= ~(1 << PB4)|(1 << PB3);//0
    
    DDRD |= (1 << PD2)|(1 << PD3)|(1 << PD4)|(1 << PD5); // порт D2 - D5 выход
    PORTD &= ~(1 << PD2)|(1 << PD3)|(1 << PD4)|(1 << PD5);//0
    
    _delay_ms(50); // Ожидание готовности ЖК-модуля
    
    // Конфигурирование четырехразрядного режима
    PORTD |= (1 << PD5);
    PORTD &= ~(1 << PD4);
    
    // Активизация четырехразрядного режима
    PORTB |= (1 << EN);
    PORTB &= ~(1 << EN);
    _delay_ms(5);
    
    lcd_com(0x28); // Шина 4 бит, LCD - 2 строки
    lcd_com(0x08); // Полное выключение дисплея
    lcd_com(0x01); // Очистка дисплея
    _delay_us(100);
    lcd_com(0x06); // Сдвиг курсора вправо
    _delay_ms(10);
    lcd_com(0x0C); // Включение дисплея, курсор не видим
}
void lcd_print (char str1[])
{
    int n;
    for(n=0;str1[n]!='\0';n++)
    lcd_dat(str1[n]);
}
 
int main(void)
{
    lcd_init(); // Инициализация дисплея
    lcd_print("Count: "); 
    while(1)
    {
         
    }
}
0
inquisitor
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,763
03.12.2018, 22:07  [ТС] 4
Сам код взял с
там др схема подключения и в оригинале она работает. Я хочу изменить ее под себя,что бы работало.
У них RS PC0
EN PC2
D4-D7 LCD-> PORTD4-PORTD7.
0
COKPOWEHEU
1158 / 820 / 193
Регистрация: 09.09.2017
Сообщений: 3,530
04.12.2018, 11:15 5
Эта прошивка не очень подходит для произвольного перемещения выводов дисплея. А ведь у вас изменен даже порядок!
Лучше всего вам переместить дисплей на те же выводы, что у авторов, раз не хотите разбираться как переделать программу под себя.
Впрочем, можете попробовать мою библиотеку, там линии данных можно назначить с любого места, правда тоже по порядку. Впрочем, как раз это я давно хотел исправить.
2
04.12.2018, 11:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2018, 11:15

Как совместить управление LCD, LED через 74hc595 в CVAVR
Решил добавить в основную программу на ATMEGA16 и отображением информации на LCD еще и управление...

Как включить внешний кварц
МК AT Miko16, припоял внешний кварц на 11.0592 МГц. как выставить фьюзы чтобы он работал ? ...

Как включить спящий режим в IAR-e?
Всем привет. Подскажите кто знает, как перевести атмегу48 в режим power down? Программу пишу в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru