Atmega16 и ЖКИ PC-1601A

Здесь вопросы новичков
Ответить
Алекс.
Сообщения: 4
Зарегистрирован: 18 фев 2009, 07:02

Atmega16 и ЖКИ PC-1601A

Сообщение Алекс. » 18 фев 2009, 07:59

Добрый день!
Такой вот казус: в первы раз делаю устройство, где Mega16 сопряжен с ЖКИ РС1601А. Написал простую программу для проверки работоспособности, где после нажатия на кнопку активируется выход и на ЖКИ появляется символ. Пользуюсь CVAVR, включая мастер начального кода. В Proteus все работает, а в реальности получается так: при включении питания ЖКИ (подключен к контр. или не подключен) на дисплее после регулировки V0 (контраст) появляются 8 закрашенных старших разрядов. Контроллер на нажатие кнопки реагирует, но символ на ЖКИ не появляется. Непонятно, куда двигаться дальше. Если можете, подскажите:
1. Можно ли проверить исправность ЖКИ?
2. Можно ли проверить выход контроллера на ЖКИ?
3. Существет ли предпочтительный тип ЖКИ для использования функций, включаемых мастером начального кода CVAVR?

Спасибо.

Аватара пользователя
Radioded
Site Admin
Сообщения: 184
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва
Контактная информация:

Re: Atmega16 и ЖКИ PC-1601A

Сообщение Radioded » 18 фев 2009, 22:01

Здравствуйте! Выложите, исходники. Насчет Proteus, не стоит сильно обольщаться, у меня было обратное, на виртуальной модели в протеусе не работало, а на "железе" всё было ОК.
Не нашел даташит на ЖКИ РС1601А, я обычно использую цифро-буквенные 16x2 с контроллером HD44780. Под эти дисплеи куча исходников, я выкладывал свою библиотечку для работы с ним под WinAVR: http://radioded.ru/index.php?option=com ... &Itemid=58

Алекс.
Сообщения: 4
Зарегистрирован: 18 фев 2009, 07:02

Re: Atmega16 и ЖКИ PC-1601A

Сообщение Алекс. » 19 фев 2009, 11:41

Здравствуйте!
Спасибо Вам за ответ. Скажите, пожалуйста, какие форматы допустимы для вложений?

Алекс.
Сообщения: 4
Зарегистрирован: 18 фев 2009, 07:02

Re: Atmega16 и ЖКИ PC-1601A

Сообщение Алекс. » 19 фев 2009, 15:12

Представляю папку с проектом. Извините, но я, к сожалению, не знаю, что значит выложить с помощью тегов.
Вложения
Proverka.rar
(86.07 КБ) 751 скачивание

Аватара пользователя
Radioded
Site Admin
Сообщения: 184
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва
Контактная информация:

Re: Atmega16 и ЖКИ PC-1601A

Сообщение Radioded » 19 фев 2009, 21:14

Вот исходник:

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

/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard

Chip type           : ATmega16
Program type        : Application
Clock frequency     : 1,000000 MHz
Memory model        : Small
External RAM size   : 0
Data Stack size     : 256
*****************************************************/

#include <mega16.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

char lcd_buffer[15];  


// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=Out Func5=In Func4=Out Func3=In Func2=In Func1=In Func0=In 
// State7=P State6=0 State5=P State4=0 State3=P State2=P State1=P State0=P 
PORTD=0xAF;
DDRD=0x50;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// LCD module initialization

delay_us(500);
lcd_init(16);

while (1)
      {
      if (PIND.0==0) 
      {PORTD.4=1;        
      lcd_clear();
      lcd_gotoxy(0,0);
      sprintf(lcd_buffer,"1"); 
      lcd_puts(lcd_buffer); 
      }
      if (PIND.1==0)
      {
      PORTD.4=0;
      lcd_clear();
      lcd_gotoxy(0,0);
      sprintf(lcd_buffer,"01"); 
      lcd_puts(lcd_buffer); 
      }
      if (PIND.2==0) 
      {
      PORTD.6=1;
      lcd_clear();
      lcd_gotoxy(0,0);
      sprintf(lcd_buffer,"2"); 
      lcd_puts(lcd_buffer); 
      }
      if (PIND.3==0) 
      {
      PORTD.6=0;
      lcd_clear();
      lcd_gotoxy(0,0);
      sprintf(lcd_buffer,"02"); 
      lcd_puts(lcd_buffer); 
      }
      };
}
Вложения
lcd.PNG
принципиальная схема
lcd.PNG (21.69 КБ) 8059 просмотров

Аватара пользователя
Radioded
Site Admin
Сообщения: 184
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва
Контактная информация:

Re: Atmega16 и ЖКИ PC-1601A

Сообщение Radioded » 19 фев 2009, 21:20

По коду понятно, что должен использоваться дисплей совместимый с контроллером HD44780. У Вас точно такой дисплей (не нашел никакой инфы про PC-1601A), проверьте правильность пайки, распиновку по даташиту, проверьте частоту тактирования микроконтроллера (дисплеи капризно себя ведут при изменении таймингов в меньшую сторону). Попробуйте написать тестовую программку для проверки работоспособности дисплея.

Алекс.
Сообщения: 4
Зарегистрирован: 18 фев 2009, 07:02

Re: Atmega16 и ЖКИ PC-1601A

Сообщение Алекс. » 20 фев 2009, 08:22

Большое спасибо за внимание. Ошибку устранил запретом JTAG.

uaq23
Сообщения: 1
Зарегистрирован: 15 ноя 2009, 13:44

Re: Atmega16 и ЖКИ PC-1601A

Сообщение uaq23 » 29 дек 2009, 21:13

char lcd_buffer[15];//для чего это объясните пожалуйсто.Это переменная lcd где может храниться до 15 бит?

Аватара пользователя
Radioded
Site Admin
Сообщения: 184
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва
Контактная информация:

Re: Atmega16 и ЖКИ PC-1601A

Сообщение Radioded » 05 янв 2010, 22:46

char lcd_buffer[15];//для чего это объясните пожалуйста.
Это массив char`ов для хранения ASCII символов. Своеобразный буфер символов для вывода на дисплей.
Это переменная lcd где может храниться до 15 бит?
Нет, lcd_buffer[15] - это массив из 16 элементов (lcd_buffer[0], lcd_buffer[1], ... , lcd_buffer[15]) в котором хранятся символы ASCII т.е. каждый длиной по 8 бит.

Ответить

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

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