BASIC4MCU | 질문게시판 | 답변 : LCD글씨가 깨져서 나옵니다
페이지 정보
작성자 master 작성일2018-06-19 17:14 조회10,641회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2012
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-19 오후 5:16:19// by Ok-Hyun Park//#define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>#include <stdio.h>//#define RS_HIGH PORTC|=1#define RS_LOW PORTC&=~1#define EN_HIGH PORTC|=2#define EN_LOW PORTC&=~2//#define FUNCTION 0x38#define CLEAR 0x01#define DISPLAY 0x0C#define LINE1 0x80#define LINE2 0xC0//void Fn_CLCD_ctrl(char d){ RS_LOW; EN_LOW; PORTA=d; EN_HIGH; _delay_us(1); EN_LOW; _delay_ms(3); }//void Fn_CLCD_data(char line,char *s){Fn_CLCD_ctrl(line); RS_HIGH; EN_LOW; while(*s){ PORTA=*s++; EN_HIGH; _delay_us(1); EN_LOW; _delay_us(50); }}//int main(void){int vadc,vmin,vmax,vdiv; char buffer[20];DDRA=0xFF; PORTA=0xFF; // LCD사용DDRC=0x03; PORTC=0x03; // LCD 사용(RS,EN)//DDRD=0x00; // 마이크로 스위치_delay_ms(50); Fn_CLCD_ctrl(FUNCTION); Fn_CLCD_ctrl(DISPLAY); Fn_CLCD_ctrl(CLEAR); _delay_ms(2);ADCSRA=0xE7;while(1){vmin=1023; vmax=0;_delay_ms(1); vadc=ADCW;if(vadc>vmax)vmax=vadc;if(vadc<vmin)vmin=vadc;vdiv=(vmax-vmin)/3; // 구간을 3개로 나눔//if (vadc>vmax-vdiv &&vadc<=vmax ){ sprintf(buffer,"medicine(O)"); }else if(vadc>=vmin &&vadc<vmin+vdiv){ sprintf(buffer,"medicine(q)"); }else if(vadc>=vmin+vdiv&&vadc<vmin+vdiv){ sprintf(buffer,"medicine(X)"); }Fn_CLCD_data(LINE2,buffer);_delay_ms(500);}if(PIND&1){ sprintf(buffer,"mon"); Fn_CLCD_data(LINE1,buffer); vadc=Fn_ADC_read(0); } // 월}
오류가 많아서 찾다가 포기했습니다.
뭘 하려는 코드인지 이해하려면 주석과 상세한 설명이 필요하겠습니다.
댓글 0
조회수 10,641등록된 댓글이 없습니다.