Как подключать контроллеры к дисплеям
Пт, 05.02.2016, 18:40 | Сообщение # 21
pavasilich
Постов: 101
Друзья
Цитата dimon-ru-80 (
)
Кварца нет
А, ну да, это я затупил насчет кварца, забыл уже схему. Видать LCD ваш "потек".
Вт, 22.03.2016, 13:27 | Сообщение # 22
Kot
Постов: 120
ОК
Не подскажете как подключить экранчик от nokia1280? Лучше в месте с библиотекой для ардуино.
Вт, 05.04.2016, 13:05 | Сообщение # 23
ELK
Постов: 81
Друзья
Недавно пришел дисплей nokia 3310 (китай), пытаюсь подключить его к avr (tiny 2313 или mega8). Нашел в интернете готовую библиотеку и программу на Си (все из одной статьи, программа для для Mega8), но есть проблема, atmel studio при компиляции выдает 2 ошибки: '_delay_ms' was not declared in this scope 'itoa' was not declared in this scope (ошибки отметил в тексте) Может кто-нибудь подправить программу?
#define F_CPU 8000000 #include <avr/io.h> //объявим библиотеку #include "n5110.h" int main(void) { //Инициализируем дисплей Lcd_init(); //объявим переменные float f_data = 14.43; //дробное int i_data = 123; //целое char s_data[5] = "He"; //строка while(1) { //согласно шпаргалке //очистим дисплей Lcd_clear(); //Lcd_prints для вывода статичных данных Lcd_prints(0, 0, FONT_1X,(unsigned char *)PSTR("Привет!")); //Lcd_print для вывода из переменной Lcd_print(0, 1, FONT_1X,(unsigned char *)s_data); //Lcd_printf для вывода дробного числа (преобразование float в string) //2 - число знаков после зяпятой Lcd_printf(0, 2, FONT_1X, f_data, 2); //Для вывода числа преобразуем его в строку при помощи встроенной //функции itoa(число, массив,система счисления) char buff[20]; itoa(i_data, buff, 10); // ошибка 'itoa' was not declared in this scope Lcd_print(0, 3, FONT_1X,(unsigned char *)buff); //передадим данные Lcd_update(); //подождем 2 секунды _delay_ms(2000); //очистим дисплей Lcd_clear(); //Нарисуем кружки for (int i=0;i<=10;i++) { Lcd_circle(40, 24, i, PIXEL_ON); } //передадим данные Lcd_update(); //подождем 2 секунды _delay_ms(2000); //ошибка '_delay_ms' was not declared in this scope } }
Вт, 05.04.2016, 14:52 | Сообщение # 24
caha2011
Постов: 766
Друзья
нет этой строки #include <util/delay.h>Добавлено (05.04.2016, 15:52) ---------------------------------------------Цитата ELK (
)
itoa(i_data, buff, 10);
насколько я помню надо написать Так #include <stdlib.h> указать эту библиотеку
Вт, 05.04.2016, 15:19 | Сообщение # 25
ELK
Постов: 81
Друзья
Спасибо, одной ошибкой меньше.Цитата caha2011 (
)
насколько я помню надо написать Так #include <stdlib.h> указать эту библиотеку
Библиотека подключена в начале программы #include "n5110.h". Или нужно подключить какую то из стандартных библиотек? Библиотека:
#include <avr/pgmspace.h> #include <avr/interrupt.h> #ifndef _N5110_H_ #define _N5110_H_ // закомментируйте эту директиву, если ваш дисплей оригинальный //#define CHINA_LCD // Порт к которому подключен LCD (здесь пример распиновки для ATmega8A) // Библиотека использует аппаратный SPI, поэтому если хотите иной порт - придется реализовать SPI программно) #define LCD_PORT PORTB #define LCD_DDR DDRB // Распиновка порта #define LCD_DC_PIN PB1 // DC #define LCD_CE_PIN PB2 // SCE #define SPI_MOSI_PIN PB3 // SDIN #define LCD_RST_PIN PB4 // RESET #define SPI_CLK_PIN PB5 // SCLK // Разрешение дисплея в пикселях #define LCD_X_RES 84 // разрешение по горизонтали #define LCD_Y_RES 48 // разрешение по вертикали // Настройки для рисования группы прямоугольников функцией LcdBars ( byte data[], byte numbBars, byte width, byte multiplier ) #define EMPTY_SPACE_BARS 2 // расстояние между прямоугольниками #define BAR_X 30 // координата x #define BAR_Y 47 // координата y // Размер кэша ( 84 * 48 ) / 8 = 504 байта #define LCD_CACHE_SIZE ( ( LCD_X_RES * LCD_Y_RES ) / 8 ) #define FALSE 0 #define TRUE 1 // Для возвращаемых значений #define OK 0 // Безошибочная отрисовка #define OUT_OF_BORDER 1 // Выход за границы дисплея #define OK_WITH_WRAP 2 // Переход на начало (ситуация автоинкремента указателя курсора при выводе длинного текста) typedef unsigned char byte; // Перечисления typedef enum { LCD_CMD = 0, // Команда LCD_DATA = 1 // Данные } LcdCmdData; typedef enum { PIXEL_OFF = 0, // Погасить пиксели дисплея PIXEL_ON = 1, // Включить пиксели дисплея PIXEL_XOR = 2 // Инвертировать пиксели } LcdPixelMode; typedef enum { FONT_1X = 1, // Обычный размер шрифта 5x7 FONT_2X = 2 // Увеличенный размер шрифта } LcdFontSize; // Прототипы функций, детальную информацию смотрим внутри n5110lcd.c void Lcd_init ( void ); // Инициализация void Lcd_clear ( void ); // Очистка буфера void Lcd_update ( void ); // Копирование буфера в ОЗУ дисплея void LcdContrast ( byte contrast ); // Установка контрастности дисплея byte LcdGotoXY ( byte x, byte y ); // Установка курсора в позицию x,y byte LcdChr ( LcdFontSize size, byte ch ); // Вывод символа в текущей позиции byte Lcd_print ( byte x, byte y, LcdFontSize size, byte dataArray[] ); // Вывод строки из переменной byte Lcd_prints ( byte x, byte y, LcdFontSize size, const byte *dataPtr ); // Вывод статичной строки void Lcd_printf ( byte x, byte y, LcdFontSize size, float data, int accuracy ); // Вывод дробного значения byte Lcd_pixel ( byte x, byte y, LcdPixelMode mode ); // Точка byte Lcd_line ( byte x1, byte y1, byte x2, byte y2, LcdPixelMode mode ); // Линия byte Lcd_circle ( byte x, byte y, byte radius, LcdPixelMode mode); // Окружность byte Lcd_rect_empty ( byte x1, byte y1, byte x2, byte y2, LcdPixelMode mode ); // Прямоугольник byte Lcd_rect ( byte baseX, byte baseY, byte height, byte width, LcdPixelMode mode ); // Один /* * Таблица для отображения символов (ASCII[0x20-0x7F] + CP1251[0xC0-0xFF] = всего 160 символов) */ static const byte FontLookup [][5] PROGMEM= { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x20 32 { 0x00, 0x00, 0x5F, 0x00, 0x00 }, // ! 0x21 33 // {............................ и т.д }; #endif /* _N5110_H_ */
Вт, 05.04.2016, 15:27 | Сообщение # 26
caha2011
Постов: 766
Друзья
ELK , попробуй указать #include <stdlib.h> она нужна для itoa,
Вт, 05.04.2016, 18:18 | Сообщение # 27
ELK
Постов: 81
Друзья
Почти заработало. Не знаешь что нужно писать в скобках Lcd_clear() и т.д. И вместо (unsigned char *)?
Ср, 06.04.2016, 04:36 | Сообщение # 28
caha2011
Постов: 766
Друзья
Цитата ELK (
)
Lcd_clear()
Эта функция для очистки дисплея, Я давно не писал, и сейчас не помню, на сайте паяльник есть видео уроки, посмотри там
Сб, 09.04.2016, 06:38 | Сообщение # 29
mitre
Постов: 90
ОК
Вт, 12.04.2016, 12:31 | Сообщение # 30
gfgeuf
Постов: 2
ОК
Так кто-ни-будь смог определить неисправность с отсутствием инициализации датчика DS18B20? Вижу , что здесь обсуждается монохромьій вариант показометра, но проблема с инициализацией датчика перекочевала и в цветной вариант Сразу себе (может и не только себе) и отвечаю: Проблема с неверно установленьіми фьюзами, должно бьіть как на восьмой странице сообщение №76
Внимание! Форум переехал на Tehnodium.ru