Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Atmega16+LCD 16*2 не могу прицепить
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Vny4ek
Всем доброго времени суток! Есть небольшая просьба помочь разобраться!
Я только начинаю изучать АВР.
Установил CODEVISION и Proteus. В реале есть Атмега16-16 и 16символьный 2х строчный дисплей Bolymin. Хочу хотя бы вывести для начало на него Hello world, но не получается.
В кодвизион в примерах нашел вот такой исходник, который по идее это должен делать, в протеусе смоделировал устройство, но ничего не получается. Подскажите плиз чайнику в чем ошибка.
Подключил так:


// Исходник:
/*
LCD Demo

CodeVisionAVR C Compiler
© 2000-2007 HP InfoTech S.R.L.
www.hpinfotech.ro

Chip: ATmega8515
Memory Model: SMALL
Data Stack Size: 128 bytes

Use an 2x16 alphanumeric LCD connected
to the STK500 PORTC header as follows:

[LCD] [STK500 PORTC HEADER]
1 GND- 9 GND
2 +5V- 10 VCC
3 VLC- LCD contrast control voltage 0..1V
4 RS - 1 PC0
5 RD - 2 PC1
6 EN - 3 PC2
11 D4 - 5 PC4
12 D5 - 6 PC5
13 D6 - 7 PC6
14 D7 - 8 PC7
*/

// the LCD is connected to PORTC outputs
// see the file lcd.h in the ..\inc directory
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm

// include the LCD driver routines
#include <lcd.h>

void main(void)
{
// initialize the LCD for
// 2 lines & 16 columns
lcd_init(16);

// go on the second LCD line
lcd_gotoxy(0,1);

// display the message
lcd_putsf("Hello world");

// stop here
while (1);
}



p.s. Всем заранее спасибо кто поможет, и ткните плиз носом потом как построить меню на этом дисплее и 4 кнопочки вверх вниз энтер отмена
archi2000
Пытался и я когда-то в Протеусе такую задачу выполнить - ничего не получилось. Спаял макет, залил прошивку и работало. Когда будешь работать с реальным ЖКИ, то нужно выставить контрастность, чтобы без посылки данных с процессора засветилась одна строчка. Это будет означать, что ЖКИ исправен.
Еще - при работе с реальным ЖКИ нужно правильно выполнить инициализацию. Некоторые типы ЖКИ этой процедурой инициализации (таймингами) отличаются.
Vny4ek
Да дело в том что есть у меня одна прошивка, рабочего девайса там используется такой же дисплей, в протеусе все работает, он светит текст. Только там на порт Д все повешено, и у меня только прошивка той программы исходников нет, вот а хочется самому разобраться
archi2000
Чтобы разобраться как работает ЖКИ тебе поможет этот симулятор
http://www.geocities.com/dinceraydin/djlcdsim/djlcdsim.html
По даташиту делаешь инициалазацию а затем выводишь символы.
Чтобы разобраться в твоем hex файле прошивки можно его дизасемблировать.
Также две статьи
http://www.atmel.ru/Spec/LCD.htm
http://www.atmel.ru/Articles/Atmel17.htm
Vny4ek
Тоесть примеры кодвижена не подходят и нужна инициалицация для каждого типа дисплея своя? Зачем же тогда интересно привели такие примеры. Сейчас пробую разобраться с инициализацией

забыл, просто я читал другие источники ну типа пособия пошаговые для начинающих, там ничего небыло про инициализацию. Типа подключите дисплей, и откомплируйте код. Хотя может я не прав. Жду еще советов, точно ли в этом дело?
Дюс
Проверь порты. Снизь частоту МК, дело может быть действительно в таймингах. Советую скачать даташит на Bolymin ЖК и сверить инициализацию. Прикрепляю описание на русском работы с подобными ЖК. ДУмаю пригодится.

PS В свое время писал библиотеки для winstar инициализация немного от МЭЛТ отличалось. Может и у Bolymin свои тараканы есть.

Удачи
DiMomite
а почему у Вас в коде написано "Chip: ATmega8515", #include с именем камня в коде вообще никакого нет, а в Протеусе стоит Mega16 ?
backa
Я пробовал в Proteus - все работает.
Одно но - я писал сам все. На ассемблере и на С (IAR).
Работает как часы:-).
Особое внимание на выдержку временных интервалов!!!
Goodefine
А вы порт С на выход сконфигурировали? Все работает. Для меги16 а не 8515. Вот:
Код
This program was produced by the
CodeWizardAVR V1.25.3 Professional
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

......



Moderator:
Cтоль обширные исходники (да еще сгененрированные роботом) оформленные не ввиде приложения удалены. Тем более, что тема избитая донельзя.....
andrvisht
Попробуйте при инициализации портов добавить вот такие строки.
Код
MCUCSR |= 0x80;
MCUCSR |= 0x80;
KisaLove
Конечно поздно пишу, но сам с этим сталкивался - proteus не обрабатывал работу LCD в случае если используется mega16 и LCD, вешающийся на PORTC. Сам долго ломал голову, пока кто-то на этом сайте не написал про это. Теперь приходится в исходниках писать типа такого
Код
; EU KIT-Mega16
    .equ PORTC = 0x15
    .equ DDRC  = 0x14
    .equ PINC  = 0x13
    .equ PORTD = 0x12
    .equ DDRD  = 0x11
    .equ PIND  = 0x10
; proteus
;    .equ PORTC = 0x1B
;    .equ DDRC  = 0x1A
;    .equ PINC  = 0x13
;    .equ PORTD = 0x18
;    .equ DDRD  = 0x17
;    .equ PIND  = 0x16

То есть на время эмуляции "переназначать" адрес PORT'а C.

Может и криво ответил, но тем кто впервые сталкивается думаю поможет - надо в модели под протеусом просто повесить LCD на другой порт и переназначать адреса на момент эмуляции если в живой схеме хотите все таки на PORTC вешать. (правда это возможно если оставшиеся порты свободны smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.