질문게시판 > atmega 128 lcd와 온도센서 합친코드

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

atmega 128 lcd와 온도센서 합친코드

페이지 정보

작성자 코딩응애 작성일18-12-10 18:34 조회7,250회 댓글1건

첨부파일

본문

#define F_CPU 16000000
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include "UART1.h"

FILE OUTPUT\
=FDEV_SETUP_STREAM(UART1_transmit,NULL,_FDEV_SETUP_WRITE);
FILE INPUT\
=FDEV_SETUP_STREAM(NULL,UART1_receive,_FDEV_SETUP_READ);
//
#define FUNCSET 0x28 //Function Set
#define ENTMODE 0x06 //Entry Mode Set
#define ALLCLR  0x01 //Clear Display
#define DISPON  0x0c //Display On
#define LINE2   0xC0 //Set DDRAM Address(0x40)
#define LINE3   0x94 //Set DDRAM Address(0x14)
#define LINE4   0xD4 //Set DDRAM Address(0x54)
//
#define PORT_DATA PORTD
#define DDR_DATA  DDRD
//
#define Byte unsigned char
//
volatile Byte flag=0,sec=0,min=0,hour=0;
//
void ADC_init(unsigned char channel)
{
 ADMUX|=(1<<REFS0); // AVCC를기준전압으로선택
 ADCSRA|=0x07; // 분주비설정
 ADCSRA|=(1<<ADEN); // ADC 활성화
 ADCSRA|=(1<<ADFR); // 프리러닝모드
 ADMUX|=((ADMUX&0xE0)|channel); // 채널선택
 ADCSRA|=(1<<ADSC); // 변환시작
}
//
int read_ADC(void)
{
 while(!(ADCSRA&(1<<ADIF))); // 변환종료대기
 return ADC; // 10비트값을반환
}
//
void LCD_CMD(unsigned char byte){
 PORT_DATA=(byte&0xF0)|4; _delay_us(1); PORT_DATA&=0xFB;
 PORT_DATA=(byte<<0x4)|4; _delay_us(1); PORT_DATA&=0xFB; _delay_ms(3);
}
//
void LCD_CHAR(unsigned char byte){
 PORT_DATA=(byte&0xF0)|5; _delay_us(1); PORT_DATA&=0xFB;
 PORT_DATA=(byte<<0x4)|5; _delay_us(1); PORT_DATA&=0xFB; _delay_us(50);
}
//
void LCD_STR(Byte*s){ while(*s)LCD_CHAR(*s++); }
//
void LCD_INIT(void){
 DDR_DATA=0xFF; _delay_ms(15); LCD_CMD(0x20); LCD_CMD(0x20); LCD_CMD(0x20);
 LCD_CMD(FUNCSET); LCD_CMD(DISPON); LCD_CMD(ALLCLR); LCD_CMD(ENTMODE);
}
//
ISR(TIMER1_COMPA_vect){
 if(++sec>59){ sec=0;
  if(++min>59){ min=0; if(++hour>23)hour=0; }
 }
 flag=1;
}

int main(void){
 int read,temperature;
 float input_voltage;
 Byte str1[]="Current Time"; Byte str2[]=" 00:00:00";
 Byte str3[]="Temperature"; Byte str4[]=" 00C";
 LCD_INIT();
 LCD_STR(str1);
 LCD_CMD(LINE2); LCD_STR(str2);
 LCD_CMD(LINE3); LCD_STR(str3);
 LCD_CMD(LINE4); LCD_STR(str4);
 TCCR1B=0x0D; OCR1A=15624; TIMSK=0x10;
 stdout=&OUTPUT;
 stdin=&INPUT;
 UART1_init(); // UART 통신초기화
 ADC_init(3); // AD 변환기초기화.채널3 사용
 SREG=0x80;
 while(1){
  if(flag){ flag=0;
   LCD_CMD(LINE2);
   LCD_CHAR(' '); LCD_CHAR((hour/10)+'0'); LCD_CHAR((hour%10)+'0'); LCD_CHAR(':');
   LCD_CHAR((min /10)+'0'); LCD_CHAR((min%10)+'0'); LCD_CHAR(':');
   LCD_CHAR((sec /10)+'0'); LCD_CHAR((sec%10)+'0');
  }
  //
  read=read_ADC(); // ADC 값읽기
  // 0에서1023 사이의값을0V에서5V 사이값으로변환한다.
  input_voltage=read*5.0/1023.0;
  // 10mV에1℃이므로100을곱해서현재온도를얻는다.
  temperature=(int)(input_voltage*100.0);
  LCD_CMD(LINE4);
  LCD_CHAR(' '); LCD_CHAR(temperature); LCD_CHAR('   C');

 printf("%d\r\n", temperature);

  _delay_ms(1000); // 1초에한번읽음
 }
 return 0;
}

 

lcd에 시간 재주는 기능이랑 온도까지 뜨게하려고 코드를 합쳤는데

시간만 재는 코드는 작동이 되는데

두개를 합치니까 둘다 아무것도 작동이 안됩니다  ㅜ ㅜ 뭐가 문제일까요 ㅠㅠㅠ 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 1

조회수 : 7,250

master님의 댓글

master 작성일

답변을 적어드리면 답변소스를 기반으로 수정을 하셔야하는데
자꾸 원래 소스를 가지고 작업을 합니다.
이래서는 답변을 달아드리지 못합니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[28] master  17-10-29
질문 아두이노 lcd 디지털시계 (도와주시면 감사하겠습니다!… 첨부파일김리 새글 05:43
질문 아두이노 디지털 시계 첨부파일1233 새글 02:03
질문 dfplayer 블루투스 연결 앱인벤터 첨부파일아두이노우 새글 01:28
질문 아두이노 LCD 글자 출력질문입니다. Tell 새글 23-06-10
답변 답변 : 아두이노 LCD 글자 출력질문입니다. master 새글 23-06-10
질문 아두이노 delay함수를 millis함수로 대체하는방법 댓글[1] 첨부파일이게아닌데 새글 23-06-09
답변 답변 : 아두이노 delay함수를 millis함수로 대… master 새글 23-06-09
질문 atmega128 적외선센서 관련질문입니다. 댓글[7] 춘배  23-06-08
질문 아두이노 whillis 함수 delay처럼 사용하는방법… 댓글[1] 이게아닌데  23-06-08
질문 아두이노 로드셀 질문 댓글[3] 첨부파일아두이노노노논  23-06-08
질문 아트메가 128 DHT22온도센서 댓글[1] tmet  23-06-08
질문 압력센서에 따른 진동모터를 버튼으로 제어 회로도 질문 도와주세용용  23-06-07
질문 아두이노 리니어 제어 모듈 설계중입니다. 도와주세요 갓비타  23-06-06
답변 답변 : 아두이노 리니어 제어 모듈 설계중입니다. 도와… master  23-06-07
질문 dc모터 제어 관련 질문 드려요 ㅠㅠ!! 댓글[2] dpwl  23-06-06
답변 답변 : dc모터 제어 관련 질문 드려요 ㅠㅠ!! master  23-06-07
질문 pixy2 cam 을 이용한 색상인식 모터 제어 댓글[1] 가나다라  23-06-05
질문 안녕하세요 제품 품목 이름에 대해서 궁금합니다. 첨부파일알려주시면감사합니다  23-06-05
질문 Atmega128 온도센서로 led제어 질문드려요 댓글[1] 첨부파일얍얍  23-06-05
질문 아구이노 코드를 atmega 128 코드로 변환 하고 … 댓글[1] 기로롱  23-06-05
질문 atmega128 uart 질문입니다. 댓글[1] bme12  23-06-05
질문 라즈베리파이에 풀 프레임 이미지센서 활용에 대한 질문이… 댓글[1] 첨부파일KYLO  23-06-04
질문 아두이노 시리얼 번호를 이용해 led 제어 wnion  23-06-04
답변 답변 : 아두이노 시리얼 번호를 이용해 led 제어 master  23-06-07
질문 ATMEGA128 혹시 여기서 왜 인터럽트 기능이 안되… 댓글[1] IEEE  23-06-04
질문 stm32f767을 이용해서 자이로가속도 센서의 값 받… 댓글[1] rlchwjswk  23-06-03
질문 아두이노 모터제어 관련해서 질문드립니다! 댓글[1] 첨부파일아두이노어렵잖아  23-06-03
질문 atmega128 디지털조도센서 코드오류 댓글[1] 까미  23-06-02
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전