Тема: ATmega8 и LCD
Показать сообщение отдельно
Старый 20.03.2012, 12:06   #1 (permalink)
WOLF007
Member
 
Аватар для WOLF007
 
Регистрация: 24.02.2009
Сообщений: 806
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 563
По умолчанию ATmega8 и LCD

Решил попробовать разобраться как сей девайс работает источник тут
код
Код:
/****Тестовая программа для LCD****/
 
#include <io.h>
#include <delay.h>   //используем стандартную процедуру задержки
 
#define RS PC0          //RS подключаем к PC0 микроконтроллера
#define EN PC2          //EN подключаем к PC2 микроконтроллера
 
/***Функция записи команды в LCD***/
 
void lcd_com(unsigned char p) //'p' байт команды
{
PORTC &= ~(1<<RS);   // RS = 0
PORTC |= (1<<EN);    // EN = 1 (начало записи команды в LCD)
PORTD = p;             // вывод команды на шину DB0-7 LCD
delay_us(100);        // длительность сигнала EN
PORTC &= ~(1 << EN);   // EN = 0 (конец записи команды в LCD)
delay_us(100);        // пауза для выполнения команды
}
 
/***Функция записи данных в LCD***/
 
void lcd_dat(unsigned char p)  //'p' байт команды
{
PORTC |= (1 << RS)|(1 << EN);  //RS = 1, EN = 1 (начало записи команды в LCD)
PORTD = p;                     //вывод команды на шину DB0-7 LCD
delay_us(100);                // длительность сигнала EN
PORTC &= ~(1 << EN);           // EN = 0 (конец записи команды в LCD)
delay_us(100);                // пауза для выполнения команды
}
 
/***Функция инициализации LCD***/
 
void lcd_init(void)
{
lcd_com(0x08);          // полное выключение дисплея
lcd_com(0x38);           // 8 бит 2 строки
delay_us(100);
lcd_com(0x38);           // 8 бит 2 строки
delay_us(100);
lcd_com(0x38);           // 8 бит 2 строки
lcd_com(0x38);
lcd_com(0x01);           // очистка дисплея
delay_us(100);
lcd_com(0x06);           // сдвиг курсора вправо
lcd_com(0x0D);           // включение дисплея, мигающий курсор
}
 
/***Основная программа***/
 
int main (void)
{
DDRC |= (1 << PC2)|(1 << PC1)|(1 << PC0); // PC0-3 выходы
PORTC = 0x00;                      // лог. 0 на выходе
DDRD = 0xff;                       // PD0-7 выходы
PORTB = 0x00;
 
lcd_init();      // инициализация дисплея
lcd_dat('H');    // выводим символы на экран
lcd_dat('e');
lcd_dat('l');
lcd_dat('l');
lcd_dat('o');
lcd_dat(' ');
lcd_dat('w');
lcd_dat('o');
lcd_dat('r');
lcd_dat('l');
lcd_dat('d');
lcd_dat('!');
}
при компиляции в CodeVisionAvr ругается
Error: C:\Users\dog\Desktop\test\test_cld.c(13): undefined symbol 'PORTC'
Error: C:\Users\dog\Desktop\test\test_cld.c(14): undefined symbol 'PORTC'
Error: C:\Users\dog\Desktop\test\test_cld.c(15): undefined symbol 'PORTD'
Error: C:\Users\dog\Desktop\test\test_cld.c(17): undefined symbol 'PORTC'
Error: C:\Users\dog\Desktop\test\test_cld.c(25): undefined symbol 'PORTC'
Error: C:\Users\dog\Desktop\test\test_cld.c(26): undefined symbol 'PORTD'
Error: C:\Users\dog\Desktop\test\test_cld.c(28): undefined symbol 'PORTC'
Error: C:\Users\dog\Desktop\test\test_cld.c(51): the 'main' function must return 'void' type
Error: C:\Users\dog\Desktop\test\test_cld.c(54): undefined symbol 'PORTC'
Error: C:\Users\dog\Desktop\test\test_cld.c(55): undefined symbol 'DDRD'
WOLF007 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070