Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 12 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 03.02.2004
Откуда: Пушкино
"Микроконтроллерное управление звуком" так называется цикл статей в журнале Радиохобби. Описывается регулятор громкости стерео. Хотел бы поинтересоваться, может кто нибудь собирал что то подобное либо читал данную статью и собирает этот регулятор.

Я хочу собрать регулятор 5.1 уже есть в наличии МК ATmega8-16PI, LCD 16S2D (МЭЛТ) управляться будет по 4х битной шине. Микросхемы для регулировки наверно возьму TDA7314 (по i2с) 3 штуки, т.к. TDA7448 негде достать.

В общем нужна помощь по написанию прошивки.

_________________
Греется - значит работает! :)



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Собственно говоря, а в чем проблема?
Подключить hardware или написать программу? С первым разобраться не трудно, а вот программа ... в AVR достаточно простая структура и система команд. :)
Какие проблемы с аппаратурой? (судя по спецификации - ничего сверхсложного)


 

Member
Статус: Не в сети
Регистрация: 03.02.2004
Откуда: Пушкино
Да с подключением особых проблем пока не возникает. А вот с программной частью проблемы т.к. только начинаю осваивать. Хотел написать программу на С. Сейчас пытаюсь разобраться с иницилизацией ЖК. Программу саму дали, а что там еще дописать надо не говорят (все же крутые программисты :( ). Вот программа:
Цитата:
// индикатор на младшем ниббле порта PDATA
#define Strobe EN=1; asm("nop"); asm("nop");EN=0;
#define CStrobe RS=0; asm("nop"); asm("nop"); Strobe; ei(); Delay5ms();di();
#define DStrobe RS=1; asm("nop"); asm("nop"); Strobe; ei(); DelayUs(60);di();
//-------------------------------------------------
void putch (char DAT){
byte tmp;
di();
tmp = DAT & 0xF0; // use high nibble
PDATA = (tmp>>4) & 0x0F; DStrobe; // sent high nibble first
PDATA = (DAT) & 0x0F; DStrobe; // send low nibble
ei();
}
//-------------------------------------------------
void WriteWCMD(byte DAT){
byte tmp;
di();
tmp = DAT & 0xF0; // use high nibble
PDATA = (tmp>>4) & 0x0F;
CStrobe; // send high nibble first
ei();
Delay5ms();
di();
PDATA = (DAT) & 0x0F;
CStrobe; // send low nibble
ei();
}
//-------------------------------------------------------
void lcd_init(void){ // Initialise the LCD Display.
byte i;
Delay5ms();Delay5ms();Delay5ms();
// data length is 8 at this point
WriteWCMD(0x33); //set data length to 8
WriteWCMD(0x32);
WriteWCMD(0x28); // 4 bit, 2 lines, 5x7 dots
//"Mode set, display shift, inc address"
WriteWCMD(0x06); //
//"Set display ON, cursor OFF, blink OFF"
WriteWCMD(0x0C);
//"Reset and blank display"
WriteWCMD(0x01);
}
//-------------------------------------------------------
#define lcd_blank() WriteWCMD(0x01);
//-------------------------------------------------------


Добавлено спустя 1 минуту, 54 секунды:
Надо определить к каким ногам подключен индикатор, ei(), di(), byte вроде пока все.

_________________
Греется - значит работает! :)


 

Я правильно понимаю, что это Ваше первое устойство на микроконтроллере? В таком случае лучше начать с простого (например светодиодная мигалка) и разобраться как следует в фукционировании микроконтроллера. Что касается инициализации жки, даташит на его контроллер hd44780 изучили? В нем есть блок схема инициализации. Делаете по ней и всё.


 

Member
Статус: Не в сети
Регистрация: 03.02.2004
Откуда: Пушкино
andrey_ev писал(а):
Я правильно понимаю, что это Ваше первое устойство на микроконтроллере? В таком случае лучше начать с простого (например светодиодная мигалка) и разобраться как следует в фукционировании микроконтроллера.

Делал мигалку.
andrey_ev писал(а):
Что касается инициализации жки, даташит на его контроллер hd44780 изучили?

Да.
andrey_ev писал(а):
В нем есть блок схема инициализации. Делаете по ней и всё.

Как все просто.

_________________
Греется - значит работает! :)


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Chip_SET, подключи как тебе удобнее и напиши сам.
Если что-то не понятно - спрашивай.
Я подключал подобный LCD к 8 битам параллельного порта LPT (с 4-битным обменом), проблем небыло. Могу привести ASM текст ... но смысла мало.
В твоем примере все есть, осталось описать уровень работы с битами порта.


 

Member
Статус: Не в сети
Регистрация: 03.02.2004
Откуда: Пушкино
Ладно определяем выводы:
#define PDATA PD4-PD7
Так? С RS и E так же делать? RS подключен на PD2, Е на PD3

_________________
Греется - значит работает! :)


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Зачем тебе занимать еще один порт? Повесь на тот-же.
Или ты что-то другое замышлял насчет порта PD?
Я бы сделал так (ща гляну):
; pin description:
; d0,d1,d2,d3 = data 0,1,2,3
; d4 = 0
; d5 = wr/RD
; d6 = 0
; d7 = RS
Зачем-то пропустил 2 бита ... наверно, что-то задумывал, но забыл.

О! ... слушай, у тебя же есть 8 бит порт, зачем ты хочешь работать в 4х-битном режиме? Это же в 2 раза медленее. Впрочем, это важно только для графических LCD.

Добавлено спустя 54 минуты, 1 секунду:
remark: если интересно - я тут развлекался Написано на ASM и только как технологическая версия. Нормальная версия куда-то сгинула.


 

Member
Статус: Не в сети
Регистрация: 03.02.2004
Откуда: Пушкино
serj писал(а):
Зачем тебе занимать еще один порт? Повесь на тот-же.

Это ты про что?
4х битный режим для экономии ног :) Нога Чтение/Запись на индикаторе подключена на землю, считывать ничего не надо с него. Хотя я посмотрю на 8-ми битный режим может получиться.

Ссылку посмотрю.

_________________
Греется - значит работает! :)


 

Member
Статус: Не в сети
Регистрация: 03.02.2004
Откуда: Пушкино
У меня уже крыша едет. Нечего не получается :bandhead:

_________________
Греется - значит работает! :)


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Не получается ЧТО? Написать программу или подключить аппаратуру?


 

Member
Статус: Не в сети
Регистрация: 03.02.2004
Откуда: Пушкино
Программа сама. Уже и на Асме и на Си пробовал. Нивкакую.
Наверно начну пока что с семисегментных индикаторов.

_________________
Греется - значит работает! :)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 12 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan