답변 : atmega128 질문이요!
페이지 정보
작성자 master 작성일19-11-30 06:08 조회16,307회 댓글4건본문
전체 소스가 아니라서 이해가 안됩니다.
댓글 : 4
조회수 : 16,307
에로롤님의 댓글
에로롤 작성일
위에는
#include <mega128.h>
#include <delay.h>
#include <stdlib.h>
#define FUNCSET 0x28 // Function Set
#define ENTMODE 0x06 // Entry Mode Set
#define ALLCLR 0x01 // All Clear
#define DISPON 0x0c // Display On
#define LSHIFT 0x18 // Displya Left Shift
#define RSHIFT 0x1c //Disply Right Shift
#define LINE2 0xC0 // 2nd Line Move
#define HOME 0x02 // Cursor Home
void LCD_init(void);
void LCD_String(const char * );
void Busy(void); //지연
void Command(unsigned char);
void Data(unsigned char);
뒷부분은
void Seg4_out(void)
{
PORTF = 0b01110000;
PORTB = seg_pat[N1];
delay_ms(5);
PORTF = 0b10110000;
PORTB = seg_pat[N10];
delay_ms(5);
PORTF = 0b11010000;
PORTB = seg_pat[N100];
delay_ms(5);
PORTF = 0b11100000;
PORTB = seg_pat[N1000];
delay_ms(5);
}
// LCD 초기화
void LCD_init(void)
{
DDRA = 0xFF; // 포트 A 출력 설정
PORTA &= 0xFB; //E = 0;
delay_ms(15);
Command(0x20); //command( Data(4bit), don’t care, E, RW, RS)
delay_ms(5);
Command(0x20);
delay_us(100);
Command(0x20);
Command(FUNCSET);
Command(DISPON);
Command(ALLCLR);
Command(ENTMODE);
}
// 문자열 출력 함수
void LCD_String(const char *str )
{
const char *pStr=0;
pStr = str;
while(*pStr) Data(*pStr++);
}
입니다
// 인스트럭션 쓰기 함수
void Command(unsigned char byte)
{
Busy(); //2msec delay
// 인스트럭션 상위 바이트
PORTA = (byte & 0xF0); // 데이터
PORTA &= 0xFE; //RS = 0;
PORTA &= 0xFD; //RW = 0;
delay_us(1);
PORTA |= 0x04; //E = 1;
delay_us(1);
PORTA &= 0xFB; //E = 0;
// 인스트럭션 하위 바이트
PORTA = ((byte<<4) & 0xF0); // 데이터
PORTA &= 0xFE; //RS = 0;
PORTA &= 0xFD; //RW = 0;
delay_us(1);
PORTA |= 0x04; //E = 1;
delay_us(1);
PORTA &= 0xFB; //E = 0;
}
//데이터 쓰기 함수
void Data(unsigned char byte)
{
Busy();
// 데이터 상위 바이트
PORTA = (byte & 0xF0); // 데이터
PORTA |= 0x01; //RS = 1;
PORTA &= 0xFD; //RW = 0;
delay_us(1);
PORTA |= 0x04; //E = 1;
delay_us(1);
PORTA &= 0xFB; //E = 0;
// 데이터 하위 바이트
PORTA = ((byte<<4) & 0xF0); // 데이터
PORTA |= 0x01; //RS = 1;
PORTA &= 0xFD; //RW = 0;
delay_us(1);
PORTA |= 0x04; //E = 1;
delay_us(1);
PORTA &= 0xFB; //E = 0;
}
// Busy Flag Check -> 일반적인 BF를 체크하는 것이 아니라 일정한 시간 지연을 이용한다.
void Busy(void)
{
delay_ms(2);
}
master님의 댓글
master 작성일
unsigned char led=0xff;
led=rand();
LED 개수라는 것이
led 변수의 값을 말하는 건가요?
아니면 led 변수의 1의 개수를 말하는 것인가요?
또,
led=0xff; 초기값 0xFF는 무슨 의미죠?
에로롤님의 댓글
에로롤
led에 랜덤함수를 씀으로써 실행했을때 불이 들어오는 개수를 말하는 것입니다.
led=0xff는 led의 출력상태입니다.
master님의 댓글
master
1 출력하면 OFF
0 출력하면 ON 인가요?