BASIC4MCU | 질문게시판 | avr 질문이요 ㅠㅠ
페이지 정보
작성자 비공개 작성일2018-06-05 15:21 조회7,127회 댓글1건본문
#include <avr/io.h>
#include <avr/delay.h>
#include <util/delay.h>#define outp(x,y) ((y)=(x))
#define inp(x) (x)
#define LCD_RS_SET sbi(PORTD,0)
#define LCD_RS_CLEAR cbi(PORTD,0)
#define LCD_RW_SET sbi(PORTD,1)#define LCD_RW_CLEAR cbi(PORTD,1)
#define LCD_E_SET sbi(PORTD,2)
#define LCD_E_CLEAR cbi(PORTD,2)
#define LCD_LIGHT_SET sbi(PORTD,3)
#define LCD_LIGHT_CLEAR cbi(PORTD,3)
#define sbi(PORTX,bitX)PORTX |= (1<<bitX)
#define cbi(PORTX,bitX)PORTX &= ~(1<<bitX)
unsigned char display_data1[]=" 123456789 ";
unsigned char display_data2[]=" BANG ";
int main(void)
{
{
DDRA=0x00;
DDRC=0xFF;
while(1)
{
PORTC=PINA;
}
}{
outp(0xFF ,DDRB);
outp(0x0F ,DDRD);
outp(0x00 ,PORTD);lcd_init();
lcd_display();
while(1){};
}}
void delay(unsigned int i)
{
while(--i);
}
void lcd_busy(void)
{
unsigned char busy_data;
busy_data=0;
LCD_E_CLEAR;
outp(0x00, DDRB);
do{
LCD_RS_CLEAR;
LCD_RW_SET;
LCD_E_SET;
busy_data=inp(PINB);
LCD_E_CLEAR;
}while(busy_data & 0x80);outp(0xFF,DDRB);
}
void lcd_enable(void){
LCD_E_SET;
delay(100);
LCD_E_CLEAR;
}
void lcd_func_set(void){
LCD_RW_CLEAR;
LCD_RS_CLEAR;
outp(0x38, PORTB);
lcd_enable();
}
void lcd_command(unsigned char lcd_data){
lcd_busy();
delay(1000);
LCD_RW_CLEAR;
LCD_RS_CLEAR;
outp(lcd_data,PORTB);
lcd_enable();
}
void lcd_init(void)
{
LCD_E_CLEAR;
delay(50000);
lcd_func_set();
delay(10000);
lcd_func_set();
delay(1000);
lcd_func_set();
delay(1000);lcd_command(0x38);
lcd_command(0x0C);
lcd_command(0x01);
lcd_command(0x06);
}
void lcd_write_char(unsigned char lcd_data){
lcd_busy();
delay(1000);
LCD_RW_CLEAR;
LCD_RS_SET;
outp(lcd_data, PORTB);
lcd_enable();
}
void lcd_display(void){
unsigned char i;
LCD_LIGHT_SET;
lcd_command(0x02);
for(i=0;i<16;i++){
lcd_write_char(display_data1[i]);
}lcd_command(0xC0);
for(i=0;i<16;i++)
{lcd_write_char(display_data2[i]);
}
}
////////////////////////
이렇게 써서 avr을 돌려봤는데
LCD에 출력이 되면 LED는 안들어오고
또 반대로
LED가 출력이 되면 LCD에는 또 안들어오거든요
검색해봤더니 인터럽트를 써서 하라고 나오던데 어떻게 해야 하는지 잘 모르겠습니다..
아니면 다른 방법이 있나요?
댓글 1
조회수 7,127master님의 댓글
master 작성일
PORTC=PINA;
LED 포트가 PC 인가요?