BASIC4MCU | 질문게시판 | 답변 : AVR로 LCD출력 질문입니다ㅜㅜ
페이지 정보
작성자 master 작성일2018-12-20 17:47 조회12,224회 댓글5건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=7120
작성일
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-20 오후 5:55:01// by Ok-Hyun Park////주차공간 6개//LCD에 표시//#include <avr/io.h>#define F_CPU 16000000#include <util/delay.h>#include <stdio.h>//void lcd_cmd(unsigned char c) { PORTB=c; PORTG=4; _delay_us(1); PORTG=0; _delay_ms( 3); }void lcd_char(unsigned char c){ PORTB=c; PORTG=6; _delay_us(1); PORTG=2; _delay_us(50); }void lcd_str(char *s){ while(*s)lcd_char(*s++); }//void display_on_off(uint8_t status){uint8_t loop=0;for(loop=0;loop<6;loop++){ // SWITCH 6ea=>loop cycle 6.if((status>>loop)&1){ // SWITCH ON/OFF DETECT // IF '1' SWITCH ON.// ELSE '0' SWITCH OFF.switch(loop){case 0: lcd_cmd(0x80); lcd_str("ON "); break;case 1: lcd_cmd(0x86); lcd_str("ON "); break;case 2: lcd_cmd(0x8C); lcd_str("ON "); break;case 3: lcd_cmd(0xC0); lcd_str("ON "); break;case 4: lcd_cmd(0xC6); lcd_str("ON "); break;case 5: lcd_cmd(0xCC); lcd_str("ON "); break;}}else{switch(loop){case 0: lcd_cmd(0x80); lcd_str("OFF"); break;case 1: lcd_cmd(0x86); lcd_str("OFF"); break;case 2: lcd_cmd(0x8C); lcd_str("OFF"); break;case 3: lcd_cmd(0xC0); lcd_str("OFF"); break;case 4: lcd_cmd(0xC6); lcd_str("OFF"); break;case 5: lcd_cmd(0xCC); lcd_str("OFF"); break;}}}}//int main(void){int16_t i,COUNTA=0;char buf[30];uint8_t SW_Status=0;//DDRA=0x01; // Fan(PA0) on//DDRC=0x20; // Servo Motor Output //----------------////DDRE=0xFF; // Photo Interrpter Input--//DDRB=0xFF; // LCD dataDDRG=0x06; // LCD_RS(PG1), LCD_E(PG2)//_delay_ms(50);lcd_cmd(0x38); // 8bit,2linelcd_cmd(0x38); // 8bit,2linelcd_cmd(0x38); // 8bit,2linelcd_cmd(0x01); // Clear Screen.lcd_cmd(0x06); // Cusor,display movement not used.lcd_cmd(0x0C); // Cusor,display movement not used.//ADMUX=0xC0; // PF0, 내부 레퍼런스 2.56VADCSRA=0xE7;while(1){_delay_ms(100);SW_Status=PINE>>2; // SWITCH READ.(PE2~PE7)display_on_off(SW_Status); // ON/OFF DISPLAY FUNC.///*COUNTA=ADC/4; // since the resolution(2.56/2^10=0.0025)is 2.5mV there will be an increment of 4 for every 10mV//if(COUNTA>100){// lcd_cmd(0xC0); lcd_str("Open ");PORTA=1; // Fan onfor(i=0; i<100; i++){ PORTC=0x20; _delay_us(600); PORTC=0x00; _delay_us(19400); } // Servo}if(COUNTA<100){// lcd_cmd(0xC0); lcd_str("Close");PORTA=0; //Fan offfor(i=0; i<100; i++){ PORTC=0x20; _delay_us(2400); PORTC=0x00; _delay_us(17600); } // Servo}// sprintf((char*)buf,"Temp(C)=%3d 'C",COUNTA); lcd_cmd(0xC0); lcd_str((char*)buf);*/}}
DDRB=0xFF; // LCD dataDDRG=0x06; // LCD_RS(PG1), LCD_E(PG2)이 코드로 표시가 안된다면연결 체크 해보세요
댓글 5
조회수 12,224모모님의 댓글
모모 작성일여기에 각 회로마다 led추가해서 차가 들어가면 led가 꺼지고 안들어오면 켜지게끔 만들었었습니다. 그런데 전압이 부족해서 현재 1개의 led만 놔둔 상태인데 1개만 있으면 나머지 다시 해도 코딩을 다시 짜야할까요?
master님의 댓글
master
LED 전류가 얼마나 된다고 6개의 LED를 사용하지 못할까요?
LED 저항을 큰 것으로 바꿔서 소모전류를 줄이거나
9V 배터리를 병렬로 몇개 연결해서 전원 공급장치의 전류를 늘리세요
master님의 댓글
master
고휘도 적색 LED 경우에는 1K옴을 걸어도 충분히 인식될만큼 밝습니다.
(5V-2.1V) / 1K옴 = 약 3mA
LED 6개를 사용해도 18mA 밖에 안되죠
물론 330옴을 사용해도
(5V-2.1V) / 330옴 = 약9mA
LED 6개 전체 전류는 54mA 밖에 안됩니다.
//
LED 회로 구성을 어떻게 했을까요?
모모님의 댓글
모모 작성일
Led +는 센서 시그널에 연결하고 -는 접에지 연결한 상태입니다
녹색 led사용하며 100k 저항을 사용하는데 안되네요ㅜㅜ
master님의 댓글
master
회로도 있으면 첨부해보세요
100K 저항으로는 LED 켜지지 않습니다.