BASIC4MCU | 질문게시판 | avr 재질문입니다 ㅜㅜ
페이지 정보
작성자 랄라 작성일2018-06-05 16:34 조회8,293회 댓글0건본문
#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[]=" LED ON OFF ";
unsigned char display_data2[]=" BLING ";
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_write_char(unsigned char lcd_data)
{lcd_busy();
delay(1000);
LCD_RW_CLEAR;
LCD_RS_SET;
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_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]);}
//
int main(void)
{DDRA=0x00;
DDRC=0xFF;
outp(0xFF,DDRB);
outp(0x0F,DDRD);
outp(0x00,PORTD);while(1){
PORTC=PINA;
lcd_init();
lcd_display();}
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
알려주신 파일을 넣어서 입력해봤는데 출력이 됩니다!
그런데 LCD출력이 깜빡깜빡 점등이 되는데 원래 이런건가요? 그냥 딱! 출력만 나왔으면 좋겠어서요 ㅠㅠ
댓글 0
조회수 8,293등록된 댓글이 없습니다.