BASIC4MCU | 질문게시판 | 세그먼트 lcd출력질문입니다.
페이지 정보
작성자 Tell 작성일2023-05-19 18:18 조회437회 댓글1건본문
lcd화면에 a,b의 값을 각각 버튼 2번, 4번 눌렀을때 세그먼트에 나오는 숫자값을 각각 누적해서 더하기로한 코드입니다. 이때 버튼 클릭 횟수 저장 변수를 다르게 하고 초기화까지 각각 a,b쪽에 작성해놨는데 a번이 자꾸 b값까지 같이 더해버립니다. 어떻게 수정해야지 a,b가 각각 누적해서 더해질까요?
코드는 아래와 같습니다.
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <time.h>
#include <LiquidCrystal.h>
// LCD 핀 설정
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int num[10] = {0x3f, 0x06, 0x5B, 0x4f, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
int main(void) {
unsigned char flag = 0, mode = 0;
int i, random_num;
int a = 0; // a 변수 초기값 0으로 설정
int b = 0; // b 변수 초기값 0으로 설정
int buttonCount = 0; // 버튼 클릭 횟수 저장 변수
int buttonCount1 = 0; // 버튼 클릭 횟수 저장 변수
DDRA = 0xFF;
DDRC = 0x0F;
PORTC = 0xF0;
srand(time(NULL));
PORTA = num[0];
_delay_ms(100);
// LCD 초기화
lcd.begin(16, 2);
// 초기 상태 출력
lcd.setCursor(2, 0);
lcd.print("Statera Game");
lcd.setCursor(0, 1);
lcd.print("A=");
lcd.setCursor(9, 1);
lcd.print("B=");
while (1) {
if (PINC & 0x10) {
if (flag == 0) {
flag = 1;
mode ^= 1;
_delay_ms(50);
buttonCount++; // 버튼 클릭 횟수 증가
buttonCount1++; // 버튼 클릭 횟수 증가
// 버튼을 두 번 눌렀을 때, a에 저장된 값을 누적하여 출력
if (buttonCount == 2) {
a += random_num;
lcd.setCursor(2, 1); // "A=" 다음 위치로 이동
lcd.print(" "); // 이전에 출력된 값 지우기
lcd.setCursor(2, 1);
lcd.print(a); // a 값 출력
buttonCount = 0; // 버튼 클릭 횟수 초기화
}
// 버튼을 네 번 눌렀을 때, b에 저장된 값을 누적하여 출력
if (buttonCount1 == 4) {
b += random_num;
lcd.setCursor(11, 1); // "B=" 다음 위치로 이동
lcd.print(" "); // 이전에 출력된 값 지우기
lcd.setCursor(11, 1);
lcd.print(b); // b 값 출력
buttonCount1 = 0; // 버튼 클릭 횟수 초기화
}
}
} else {
if (flag) {
flag = 0;
_delay_ms(50);
}
}
if (mode == 1) {
random_num = rand() % 10;
PORTA = num[random_num];
PORTC = 0xF0 | random_num;
}
if (a > 50) {
PORTC = 0xFF;
lcd.setCursor(13, 1);
lcd.print("!!");
_delay_ms(500);
lcd.setCursor(13, 1);
lcd.print(" "); // "!!" 출력 지우기
_delay_ms(500);
}
// b 값이 50을 초과하면 LED 4개 모두 켜기
if (b > 50) {
PORTC = 0xFF;
lcd.setCursor(13, 1);
lcd.print("!!");
_delay_ms(500);
lcd.setCursor(13, 1);
lcd.print(" "); // "!!" 출력 지우기
_delay_ms(500);
}
_delay_ms(50);
}
}
댓글 1
조회수 437master님의 댓글
master 작성일
if(++buttonCount>=2){ buttonCount=0;
a+=random_num; lcd.setCursor(2,1); lcd.print(" "); lcd.setCursor(2,1); lcd.print(a);
}
//
if(++buttonCount1>=4){ buttonCount1=0;
b+=random_num; lcd.setCursor(11,1); lcd.print(" "); lcd.setCursor(11,1); lcd.print(b);
}
buttonCount은 매2번마다 a를 더하고
buttonCount1은 매4번마다 b를 더하면
b 1번 더 할 때 a는 2번 더하게 됩니다.
당연한 것 아닌가요?