BASIC4MCU | 질문게시판 | 답변 : 도트매트릭스 avr studio ( atmaga 128)질문이요!
페이지 정보
작성자 master 작성일2018-12-17 11:03 조회8,417회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6965
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-17 오전 11:06:08// by Ok-Hyun Park//안녕하세요..바쁘신데 도와주시면 정말 감사하겠습니다..현재 간단하게 도트매트릭스를 이용해 점자게임을 만들려고 합니다.설명 먼저하면PORTC,D=도트매트릭스1,2PORTB=부저(1개)PORTF=LED(5개)스위치(3개)1.처음에 글자(도트매트릭스1에나옴)를 스위치로 선택합니다.2.스위치로 점자를 선택합니다.(점 6개●●●●●●)도트매트릭스에 표기3.맞으면 O(도트매트릭스에 표기)글자와 소리,또LED 불빛이 1개 들어옵니다.(점자 특성상 다맞게 설계해야할것같습니다.)4.이런식으로 계속 반복하고 불 5개가 들어오면 종료 부저와 맨처음으로 초기화?~이정도할려고 하는데문제는 글자 표기및 스위치로 바꾸는건 가능한데 점자를 표기할려고하면 기존에있던 도트매트릭스 점자가 저장이 안되고옆으로 시프트되서 문제입니다.예를 들어 1 2● ● 이렇게 먼저 할려면 첫번째줄 점 1개 선택후 오른쪽으로 시프트 과정에○ ● 있어서 왼쪽께 사라지는경우가있어서요..○ ● 너무어렵네요.어려운건 아니지만 ㅠㅠ 머리가 나빠서 스스로 해결을 못할것같습니다..코드를 도와주시면 그거보고 이해하고 공부하겠습니다...바쁘신데 부탁한번 드려보겠습니다..도와주세요//#include <avr/io.h>#include <avr/interrupt.h>#define F_CPU 8000000UL#include <util/delay.h>//int num1[]={0x01,0x02,0x03};//int num[10][8]={{ 0x00,0x00,0x17,0x14,0x74,0x14,0x14,0x00},// 가{ 0x00,0x02,0x02,0x02,0x3E,0x08,0x08,0x3E},// 노{ 0x00,0x00,0x52,0x52,0x75,0x55,0x50,0x50},// 새{ 0x00,0x00,0x17,0x14,0x77,0x11,0x17,0x00},// 라{ 0x08,0x08,0x14,0x14,0x00,0x3E,0x08,0x08},// 수{ 0x00,0x00,0x3c,0x20,0x3c,0x20,0x00,0xff},// 크{ 0x00,0x20,0x2f,0x21,0x21,0xe1,0x2f,0x20},// 다{ 0x04,0x44,0x4E,0x40,0x6E,0x4A,0x4E,0x40},// 허 //{ 0x00,0x04,0x44,0x4E,0x40,0x6E,0x4A,0x4E,0x40},//허{ 0x20,0x20,0x2f,0x29,0x29,0x2f,0x20,0x20},// 미{ 0x00,0x40,0x5c,0x50,0x5c,0x44,0x5c,0x40},// 리};//char mode=1,Jin=0,Jout=0,j=0,i=0,c=0; a=0,b=0,d=0,y=0;int Val=0,Vmax=0;//ISR(INT4_vect){ // sw2if(mode==1){ if(++c>9)c=0; }if(mode>=2){ if(++d>7)d=0; }}//ISR(INT5_vect){ // sw2if(mode>=2){ if(++y>2)y=0; }}//ISR(INT6_vect){ // sw3,mode 선택(enter)if(++mode>3)mode=0;if(Jin==0&&Jout>0)Val++;if(Jout==0&&Jin>0)Val--;}//int main(void){int i,count;DDRA=0xff; DDRB=0xff; DDRF=0xff; DDRC=0xff; DDRD=0xff;EICRB=0xAA; EIMSK=0x70; SREG=0x80;while(1){Jin=Jout=0;while(mode==1){ // 점자 선택for(i=0; i<8; i++){ PORTA=1<<i; PORTC=num[c][i]; _delay_ms(2); }}while(mode==2){for(i=0; i<3; i++){ PORTA=d; PORTC=1<<y; _delay_ms(2); }}}}
소스도 이해가 어렵고
무엇을 원하는지 모르겠습니다.
동영상을 첨부하고 소스 주석을 달고
더 상세하게 작성해보세요
//
while(mode==1){ 에서 선택한 c 를
while(mode==2){ 에서 표시하고 싶다는 건가요?
PORTA=1<<i; PORTC=num[c][i];
이 코드는 문자를 표시한다는 것을 알겠는데
PORTA=d; PORTC=1<<y;
이 코드는 무엇을 출력하는 것일까요?
댓글 0
조회수 8,417등록된 댓글이 없습니다.