질문게시판 > LCD다시 부탁드립니다

TODAY699 TOTAL241,214
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


BASIC4MCU 후원업체 최신 정보

BASIC4MCU | 질문게시판 | LCD다시 부탁드립니다

페이지 정보

작성자 아아어야우유 작성일2018-06-19 17:42 조회465회 댓글2건

본문

	

설명드립니다

7개의 마이크로 스위치와 cds모듈이 약통에 붙여있는데

각요일별 스위치가 oN이될때 요일별 cds가 약이 있는지 없는지 판별해서

LCD에 표시가 됩니다 라인1에는 월 화 수 목....

라인2에는 약이 있으면 medicine O

없으면 medicine x라고 뜨게 하려고 하는데 사진처럼 배열이 잘못됬는지 글자가 깨지는 현상이 나타나네요

#define  F_CPU   16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>

#define RS_HIGH PORTC |=0x01
#define RS_LOW PORTC &=~(0x01)
#define EN_HIGH PORTC |=0x02
#define EN_LOW PORTC &=~(0x02)
#define FUNCTION 0x38
#define CLEAR 0x01
#define DISPLAY 0x0C
#define LINE1 0x80
#define LINE2 0xC0

void Init_io(void)
{
 {
  DDRA = 0xFF; // LCD사용
  PORTA = 0xFF;
  DDRC = 0x03;
  PORTC = 0x03; // LCD 사용(RS,EN)
  DDRD = 0xFF; // 마이크로 스위치
          
 }
}

void Init_adc(void) // ADC설정함수
{
 ADCSRA |= (1<<ADEN)|(1<<ADSC)|(1<<ADFR);
 ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
}

int Fn_ADC_read(char ch) //ADC값 읽는 함수
{
 ADMUX = ch;
 _delay_us(300);
 return ADCW;
}

void Fn_CLCD_ctrl(unsigned char data)
{
 RS_LOW;
 EN_LOW;
 PORTA = data;
 EN_HIGH;
 _delay_us(50);
 EN_LOW;
}
void Fn_CLCD_data(unsigned char line, char *str)
{
 Fn_CLCD_ctrl(line);
 RS_HIGH;
 EN_LOW;
 while(*str)
 {
  PORTA = *str++;
  EN_HIGH;
  _delay_us(50);
  EN_LOW;
 }
}


int main(void)
{
 Init_io();
 Init_adc();
 Fn_CLCD_ctrl(FUNCTION);
 Fn_CLCD_ctrl(DISPLAY);
 Fn_CLCD_ctrl(CLEAR);
 _delay_ms(2);
 
 int vadc, vmin, vmax, vdiv;
 vmin = 1023, vmax = 0;

 char buffer[20];
 
 while (1)
 {
  
 if((PIND & 0x01) == 0x01) // 스위치1번 ON일때 
 {
 sprintf(buffer,"mon"); // 월
 Fn_CLCD_data(LINE1,buffer);
 vadc = Fn_ADC_read(0); // cds모듈
 if(vadc > vmax) vmax = vadc;
 if(vadc < vmin) vmin = vadc;
 vdiv = (vmax - vmin) / 2; // 구간을 2개로 나눔
 
 if (vadc > vmax - vdiv && vadc <= vmax) // 어두우면 약이 있는걸로 표시
 {
  sprintf(buffer,"medicine O");
 }
 
 else if (vadc >= vmin + vdiv && vadc < vmin +vdiv) // 밝으면 약이 없는걸로 표시
 {
  sprintf(buffer, "medicine X");
 }
 Fn_CLCD_data(LINE2,buffer);
 _delay_ms(500);
 
 }
 

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

댓글 2

조회수 465

master님의 댓글

master 작성일

전체소스 첨부하세요
괄호가 맞지 않습니다.
//
올린 소스에는 LCD 증상을 일으킬만한 소스가 없습니다.

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.

ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017