انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: hamed_ubuntu در 26 دی 1393، 08:22 بظ
-
با سلام
دوستان میخوام یه LCD کاراکتری ۱۶*۲ راه اندازی کنم.
کتابخونه lcd.hرو هم به پروژه اضافه میکنم.
و توی قسمت LCD.h پین های LCD رو هم به پایه های میکرو(اونایی که خودم به LCD وصل کردم)معرفی میکنم.
و کد میزنم و برنامه رو مینویسم و خطا میده.
اینم بگم کامپایل که میکنم AVRdude هم فعاله و برنامه باید اگه خطایی نباشه رو آی سی منتقل بشه.
این کد های تغییر داده شده lcd.h
#ifndef _LCD_H
#define _LCD_H
#include <avr/io.h>
#include <util/delay.h>
//LCD interface
#define PORT_LCD PORTC
#define DDR_LCD DDRC
#define RS PB5
#define RW PC5
#define EN PC4
#define DB4 PC3
#define DB5 PC2
#define DB6 PC1
#define DB7 PC0
#define SETBIT(address,bit) (address |= (1<<bit))
#define CLRBIT(address,bit) (address &= ~(1<<bit))
#define SET_EN SETBIT(PORT_LCD,EN)
#define CLR_EN CLRBIT(PORT_LCD,EN)
#define SET_RS SETBIT(PORT_LCD,RS)
#define CLR_RS CLRBIT(PORT_LCD,RS)
#define SET_RW SETBIT(PORT_LCD,RW)
#define CLR_RW CLRBIT(PORT_LCD,RW)
// prototipe fungsi
void enable(void); // enable fulse for LCD
void lcd_init(void); // intialization LCD
void lcd_putchar(unsigned char c); // send character to LCD
void lcd_putstr(char *s); // send string to LCD
void lcd_clear(void); // clear display
void lcd_gotoxy(unsigned char i,unsigned char j); //move LCD cursor position
#endif
اینم کد اصلی:
#include "lcd.h"
#include <util/delay.h>
int main(void)
{
lcd_init();
while(1)
{
lcd_gotoxy(0,0);lcd_putstr("hello world");
_delay_ms(200);
lcd_clear();
}
return 0;
}
اینم خطا:
Description Resource Path Location Type
make: *** [test lcd.elf] Error 1 test lcd C/C++ Problem
-
مدل میکرو و السیدی، و کتابخونهای که استفاده ميکنی رو بذار
-
این خطای کنونی هست:
12:29:21 **** Incremental Build of configuration Debug for project AVR-LCD ****
make all
Invoking: Print Size
avr-size —format=avr —mcu=atmega8 AVRLCD.elf
AVR Memory Usage
----------------
Device: atmega8
Program: 462 bytes (5.6% Full)
(.text + .data + .bootloader)
Data: 12 bytes (1.2% Full)
(.data + .bss + .noinit)
Finished building: sizedummy
Invoking: AVRDude
/usr/bin/avrdude -pm8 -cusbasp -Uflash:w:AVRLCD.hex:a
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e931c
avrdude: Expected signature for ATmega8 is 1E 93 07
Double check chip, or use -F to override this check.
avrdude done. Thank you.
make: *** [avrdudedummy] Error 1
12:29:21 Build Finished (took 209ms)
-
مدل نمایشگر:LCD 2*16 کاراکتری
نوع میکرو ATmega8
فرکانس کاریش هم ۸مگاهرتز
-
خطای make: *** [avrdudedummy] Error 1 معمولاً به این خاطره که اکلیپس نتونسته پروگرمر رو بشناسه. با برنامههای دیگه که از السیدی استفاده نمیکنن چنین مشکلی نداری؟
-
خودم هم همچین مشکلی رو در نظر دارم که احتمالا مشکل از چیپست باشه.
چون الان کلا میکرو از کار افتاد و دلیلش رو احتمال بد پروگرم شدن میدونم.
حالا با یه آی سی دیگه امتحان کنم ببینم چی میشه.
-
برنامه رو تونستم منتقل کنم تو آی سی.
الان مشکل اینه که نمایشگر LCD واکنشی نشون نمیده.
پایه های LCD به میکرو به این ترتیب وصل هستند.
RS=PB5
RW=PC5
E=PC4
D4=PC3
D5=PC2
D6=PC1
D7=PC0