Вопрос по HD44780 срочно!

Поклонники продукции Microchip Technology Inc тусуются тут.
Закрыто
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Вопрос по HD44780 срочно!

Сообщение VHEMaster »

Пишу прошивку для темброблока на TDA8425. Всё норм, но есть вопрос.

Как вывести полосу громкости как на этом видео (0:05)? http://www.youtube.com/watch?v=15px2tKHJjM

Как заполнить полностью поле для 1 символа я заю, адрес 0xFF всё решает.. А вот как выводить по палочке я не знаю. Использую 4х битный режим. Вот библиотека:

Код: Выделить всё

#include <htc.h>
#define _XTAL_FREQ 4000000
#include	"lcd.h"

#define	LCD_RS RE2
#define	LCD_RW RE1
#define LCD_EN RE0

#define LCD_DATA	PORTA

#define	LCD_STROBE()	((LCD_EN = 1),(LCD_EN=0))

/* write a byte to the LCD in 4 bit mode */

void
lcd_write(unsigned char c)
{
	__delay_us(40);
	LCD_DATA = ( ( c >> 4 ) & 0x0F );
	LCD_STROBE();
	LCD_DATA = ( c & 0x0F );
	LCD_STROBE();
}

/*
 * 	Clear and home the LCD
 */

void
lcd_clear(void)
{
	LCD_RS = 0;
	lcd_write(0x1);
	__delay_ms(2);
}

/* write a string of chars to the LCD */

void
lcd_puts(const char * s)
{
	LCD_RS = 1;	// write characters
	while(*s)
		lcd_write(*s++);
}

/* write one character to the LCD */

void
lcd_putch(char c)
{
	LCD_RS = 1;	// write characters
	lcd_write( c );
}


/*
 * Go to the specified position
 */

void
lcd_goto(unsigned char pos)
{
	LCD_RS = 0;
	lcd_write(0x80+pos);
}
	
/* initialise the LCD - put into 4 bit mode */
void
lcd_init()
{
	char init_value;

	ADCON1 = 0x06;	// Disable analog pins on PORTA

	init_value = 0x3;
	TRISA0=0;
	TRISA1=0;
	TRISA2=0;
	TRISA3=0;
	TRISE0=0;
	TRISE1=0;
	TRISE2=0;
	LCD_RS = 0;
	LCD_EN = 0;
	LCD_RW = 0;
	
	__delay_ms(15);	// wait 15mSec after power applied,
	LCD_DATA	 = init_value;
	LCD_STROBE();
	__delay_ms(5);
	LCD_STROBE();
	__delay_us(200);
	LCD_STROBE();
	__delay_us(200);
	LCD_DATA = 2;	// Four bit mode
	LCD_STROBE();

	lcd_write(0x28); // Set interface length
	lcd_write(0xC); // Display On
	lcd_clear();	// Clear screen
	lcd_write(0x6); // Set entry Mode
}
Всем канифоли :)
https://vk.com/maks_naumchuk
Реклама
Аватара пользователя
Desutorakuta
Встал на лапы
Сообщения: 144
Зарегистрирован: Вт мар 19, 2013 15:59:51

Re: Вопрос по HD44780 срочно!

Сообщение Desutorakuta »

На видео используются пользовательские символы. Т.е. - один, два, три и четыре вертикальных столбца пикселей - это 4ре определённых пользователем символа (в режиме 10x5 точек - их как раз и есть четыре).

Т.е. при увеличении громкости код символа последовательно меняется примерно так
0x20 - пробел
0x00 - один столбец
0x02 - два столбца
0x04 - три столбца
0x06 - четыре столбца
0xff - закрашено полностью

При этом пользовательские символы нужно загружать в контролёр самому.

http://naprisar.at.ua/publ/posts/risuem ... 0/1-1-0-13 - тут мануал про использование пользовательских символов
Deshalb, liebe Kolleginnen und Kollegen,
Es werd Hölle.
Реклама
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Re: Вопрос по HD44780 срочно!

Сообщение VHEMaster »

Desutorakuta писал(а):На видео используются пользовательские символы. Т.е. - один, два, три и четыре вертикальных столбца пикселей - это 4ре определённых пользователем символа (в режиме 10x5 точек - их как раз и есть четыре).

Т.е. при увеличении громкости код символа последовательно меняется примерно так
0x20 - пробел
0x00 - один столбец
0x02 - два столбца
0x04 - три столбца
0x06 - четыре столбца
0xff - закрашено полностью

При этом пользовательские символы нужно загружать в контролёр самому.

http://naprisar.at.ua/publ/posts/risuem ... 0/1-1-0-13 - тут мануал про использование пользовательских символов
При выводе этих адресов что вы мне дали у меня получилось это..

А за ссылочку спасибо.) Посмотрю)
Вложения
IMG_9579.JPG
(86.08 КБ) 484 скачивания
Всем канифоли :)
https://vk.com/maks_naumchuk
Аватара пользователя
Desutorakuta
Встал на лапы
Сообщения: 144
Зарегистрирован: Вт мар 19, 2013 15:59:51

Re: Вопрос по HD44780 срочно!

Сообщение Desutorakuta »

Просто память знакогенератора не была инициализирована.

Хочу заметить, что в видео очень красиво работают с пользовательскими символами - загружают их динамически, так как динамики (символ mute, курсор баланса) - тоже пользовательские символы.
Deshalb, liebe Kolleginnen und Kollegen,
Es werd Hölle.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопрос по HD44780 срочно!

Сообщение Аlex »

Реклама
Закрыто

Вернуться в «PIC»