BASIC4MCU | 질문게시판 | 답변 : ATmega128_V20.h 헤더파일 관련하여...
페이지 정보
작성자 master 작성일2018-12-05 19:15 조회8,284회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6408
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-05 오후 7:13:51// by Ok-Hyun Park//#define F_CPU 16000000UL // 16 MHz#include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>//#include "ATmega128_v20.H"#include "lcd_num.h"////ISR(TIMER0_OVF_vect){ // 9.984msstatic int ms10=0; static char key=0;//TCNT0=100;//if((PINB&1)==0)key=1; // PB0(key1)//if(key){ // key=1이 되면PORTB|=0x20; // led켜짐if(++ms10==500){ ms10=0; PORTB&=0x0F; key=0; } // 5000ms뒤 리셋, LED OFF}}//int ADC_read(char chan){ADMUX=0xC0|chan; // 내부 레퍼런스 2.56V 사용ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10;return ADC;}//int main(){int i=0,a=0,b=0,j=0,k=0,adresult[2];DDRB=0xF0; // LED(PB4~PB7) // KEY(PB0)DDRG=0x08; // 부저_delay_ms(50);LCD_initialize();ADCSRA=0x87;_delay_ms(10);TCNT0=100; TCCR0=7; TIMSK=1; // 9.984mssei();while(1){if(adresult[0]<500){ PORTB=0x00; LCD_string(0x80,"Detecting"); } // 가변저항else { PORTB=0x10; LCD_string(0x80,"alarming ");PORTG|=8; _delay_ms(50); PORTG&=~8; // alarm 부저}//if(adresult[1]<600){ PORTB=0x00; LCD_string(0xc0,"Dark "); }else { PORTB=0x40; LCD_string(0xc0,"Light "); }//adresult[0]=ADC_read(6); //PF6adresult[1]=ADC_read(7); //PF7LCD_command(0x8a); LCD_4d(adresult[0]);LCD_command(0xca); LCD_4d(adresult[1]);_delay_ms(50);}}
LCD가 가장 큰 문제군요
일단 LCD를 뺀 다른 부분을 보면
int ADC_read(char chan){ADMUX=0xC0|chan; // 내부 레퍼런스 2.56V 사용ADCSRA|=0x40; while(!(ADCSRA&0x10)); ADCSRA|=0x10;return ADC;}ADC는 2.56V 내부 레퍼런스 설정하고PF6,PF7을 입력받아서 LCD에 출력합니다.
//
PORTG|=8; _delay_ms(50); PORTG&=~8; // alarm 부저
PG3 부저를 50ms 동안 켜는 코드도 보이고
//
ISR(TIMER0_OVF_vect){ // 9.984msstatic int ms10=0; static char key=0;//TCNT0=100;//if((PINB&1)==0)key=1; // PB0(key1)//if(key){ // key=1이 되면PORTB|=0x20; // led켜짐if(++ms10==500){ ms10=0; PORTB&=0x0F; key=0; } // 5000ms뒤 리셋, LED OFF}}PB0 키입력이 오면
PB5 LED를 5초동안 켜는 코드도 있습니다.
//
#include "lcd_num.h"
이 헤더파일은
LCD_4d(adresult[1]);
4자리 정수값을 문자열로 바꿔서 출력하는 함수가 들어있을테고
#include "ATmega128_v20.H"
LCD 함수는 위 헤더파일에 있든지 아니면 이 헤더파일에 있겠죠
LCD_4d()
이 함수를 만드는 것은 어렵지 않습니다.
sprintf() 함수를 사용해도 그만이죠
LCD는 어느 포트에 연결할 것인지
4비트 방식으로 사용할 것인지, 8비트 방식으로 사용할 것인지 적어보세요
댓글 2
조회수 8,284답이없넹님의 댓글
답이없넹 작성일솔직히 잘 모르겠네요,, 기기명이랑 회로도를 구했는데 혹시 그 자료로 다시 부탁 드려도 될까요..
master님의 댓글
master
자료는 첨부파일에 올리면 되는데요
일부 자료는 제조사에서 공개하는 것을 원치 않기도 합니다.
이럴 때는 알고 싶은 부분만 부분자료로 첨부하면 문제가 안될겁니다.