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

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

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

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

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

BASIC4MCU > 질문게시판

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

페이지 정보

작성자 코딩응애 작성일18-12-10 18:34 조회10,348회 댓글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

조회수 : 10,348

master님의 댓글

master 작성일

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

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[31] master  17-10-29
질문 ATmega4809 nRF24L01 모듈을 이용한 무선… 댓글[3] Ahri 새글 24-06-12
질문 atmega128에 dht11 왜 측정을 못하죠? 댓글[1] 탈북한시민  24-06-11
질문 atmega128이 실행이 되지 않습니다 댓글[1] 첨부파일니굴  24-06-10
질문 아트메가 128 쓰는디 while 문이 안먹혀요 댓글[1] 수히  24-06-09
질문 atmega128 UART통신으로 FND출력 Rion  24-06-09
답변 답변 : atmega128 UART통신으로 FND출력 댓글[1] master  24-06-10
질문 atmega128 라인트레이서 코드와 회로도 질문...… 댓글[2] 첨부파일왕두일  24-06-06
답변 답변 : atmega128 라인트레이서 코드와 회로도 … master  24-06-07
질문 atmega128을 이용한 LCD 사용에 문제가 발생했… 댓글[3] 네넴  24-06-05
질문 Co 센서 값에 따른 ppm을 계산하려는데 댓글[1] 라칸  24-06-05
질문 17HS4401, A4988 스텝모터 제어 댓글[1] jhbaik  24-06-03
질문 코드비전avr을 이용한 아두이노 우노 제어 댓글[1] gkstntjd  24-05-29
질문 Energia 시리얼 모니터에 아무것도 출력되지않습니다… 댓글[1] 김의공  24-05-22
질문 아두이노 스위치, 에어펌프 연결 댓글[1] 첨부파일존존  24-05-20
질문 MSP430런치패드를 이용한 LCD 코딩 관련 질문 댓글[1] 뀨쥰이  24-05-16
질문 생활 속 가스 센서 첨부파일Fosen  24-05-13
질문 atmega128A로 초음파센서 바밤  24-05-13
답변 답변 : atmega128A로 초음파센서 master  24-05-13
질문 eeprom 값 출력이 다르게 나옵니다 댓글[5] 첨부파일idghte  24-05-05
답변 답변 : eeprom 값 출력이 다르게 나옵니다 master  24-05-05
질문 센서나 블루투스에서 조건문이 실행이 느립니다. 현아  24-05-03
답변 답변 : 센서나 블루투스에서 조건문이 실행이 느립니다. master  24-05-03
질문 님들 MG811 이산화탄소 센서를 쓰는데 라칸  24-05-03
답변 답변 : 님들 MG811 이산화탄소 센서를 쓰는데 master  24-05-03
질문 아두이노와 디지털 홀센서 사용 중 sampling ra… 첨부파일fjur564  24-05-03
답변 답변 : 아두이노와 디지털 홀센서 사용 중 sampli… master  24-05-03
질문 OP AMP 댓글[1] 첨부파일창원거북이  24-05-02
질문 라즈베리파이 라우팅 테이블을 영구 추가하려는데 라칸  24-04-30
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전