LCD подключал еще на CVAVR первой версии. Использовал и встроенную библиотеку и свою. С этих позиций мне кажется херню вы пишите.kras писал(а):Собрал новую схему с другим дисплеем LCM1602K - нет ответа от нее. Поэтому вопрос в алгоритме, наверное, что-то не так понимаю. Все делаю на CVAvr.
4. Для теста припаял диод к выходу PORTB.0 и сделал делитель напряжения для ножки PORTA.0 (подумал, может АЦП есть).
5. Написал программу для мигания PORTB.0, заработала, но время идет некорректно: delay_ms(999) длится не 1секунду, а дольше раз в 8.
6. Пошел дальше, кинул стандартный код LCD с нета. Не заработало, хотя в PROTEUS все ок!
7. Решил воспользоваться генератором кода, там по умолчанию частота 8МГц, подключил LCD, добавил 3 строчки из проекта пункта 6, итог:Прошиваю FLASH, при этом фьюзы не меняю. Дисплей молчит! А в Proteus все ок.Код: Выделить всё
#include <mega8515.h> // Alphanumeric LCD functions #include <alcd.h> // Declare your global variables here void main(void) { char *_str="Hell!"; //Создаем выводимую строку // Declare your local variables here // Input/Output Ports initialization // Characters/line: 16 lcd_init(16); //#asm // .equ __lcd_port=0x15 ;PORTC //#endasm // Инициализируем PORTC как порт ЖКИ }
8. Кручу резистор вправо-влево - ноль эмоций у LCD.
Больше ничего не делал. Если я все необходимое назвал, то где мог ошибиться?
Надо сначало
//#asm
// .equ __lcd_port=0x15 ;PORTC
//#endasm // Инициализируем PORTC как порт ЖКИ
а потом
lcd_init(16);
А то как вы иницизируете lcd, если вы порт не установили, где вход, где выход?
Возмите автоматически генерируемый код CVAVR.
А вот фьюзы менять надо. Судя по всему в мк используется внутренний генератор на 1МГц. А вы пишете код на 8МГц
ЧИТАЙТЕ ДАТАШИТ. СКОЛЬКО РАЗ ВАМ ЭТО НАДО ПОВТОРИТЬ.
(подумал, может АЦП есть) А ДАТАШИТ ДЛЯ КОГО?
Привожу рабочий код для меги 8. Две штуки. Сам изучал чей-то пример. Если и это не поможет, то
- Вложения
-
- v2.c
- (3.61 КБ) 271 скачивание
-
- volt_lcd.c
- (4.13 КБ) 412 скачиваний


