질문게시판 > ATmega128 FND LED 부저 3초동안 구동

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

ATmega128 FND LED 부저 3초동안 구동

페이지 정보

작성자 master 작성일18-12-03 09:15 조회10,016회 댓글0건

본문

ATMEGA과제 관련해서 질문있습니다.
1. LED가 3초 동안 켜져야합니다.
2. FND가 "1234" 디스플레이 돼야합니다.
3. Buzzer가 3초 동안 소리나야합니다.
4. 1,2,3번이 한 거 번에 나타나야합니다.

위가 바로 저희 과제의 조건입니다. 아래는 저희가 짠 코드인데, Putty에 Select가 뜨지 않고 바로 숫자만 나옵니다. 그리고 출력을 했을때 상대의 아트메가에 뜨지 않고 제 아트메가에 출력이 됩니다. 어디를 수정을 해야 오류를 잡을 수 있을까요? 내공 100 드릴게요 ㅠㅠ  
옥현이형 도와주세요!!!!!!
 
#include <avr/io.h>      // AVR 기본 include
#define NULL 0
#define F_CPU 16000000UL
#include <util/delay.h>
unsigned char digit[4] = {0x06,0x5b,0x4f,0x66};
unsigned char fnd_sel[4] = {0x08,0x04,0x02,0x01};

void putchar0(char c)      // 1 char를 송신(Transmit)하는 함수
{
   while(!(UCSR0A & 0x20));    // UCSR0A 5번 비트 = UDRE
   UDR0 = c;         // 1 character 전송
}
char getchar0()         // 1 character를 수신(receive)하는 함수
{
   while (!(UCSR0A & 0x80));// UCSR0A 7번 비트 = RXC(Receiver Complete)
   return(UDR0);      // 1 character 수신
}
void puts0(char *ptr)   // string을 송신하는 함수
{
   while(1)
   {
      if (*ptr != NULL)   //  1글자씩 송신
         putchar0(*ptr++);
      else return;   // string 끝이면 종료
   }
}

void putchar1(char c)      // 1 char를 송신(Transmit)하는 함수
{
   while(!(UCSR1A & 0x20));    // UCSR0A 5번 비트 = UDRE
   UDR1 = c;         // 1 character 전송
}
char getchar1()         // 1 character를 수신(receive)하는 함수
{
   while (!(UCSR1A & 0x80));// UCSR0A 7번 비트 = RXC(Receiver Complete)
   return(UDR1);      // 1 character 수신
}
void puts1(char *ptr)   // string을 송신하는 함수
{
   while(1)
   {
      if (*ptr != NULL)   //  1글자씩 송신
      putchar1(*ptr++);
      else return;   // string 끝이면 종료
   }
}

void init_uart()
{
   UBRR0H = 0;      // 12비트가 의미를 가짐,
   UBRR0L = 8;      // ATmega128 datasheet 참조 요망
   // 16Mhz, 115200 baud의 경우
   UCSR0B = 0x18;   // Receive(RX) 및 Transmit(TX) Enable
   UCSR0C = 0x06;   // UART Mode, 8 Bit Data, No Parity, 1 Stop Bit   

   UBRR1H = 0;      // 12비트가 의미를 가짐,
   UBRR1L = 8;      // ATmega128 datasheet 참조 요망
   // 16Mhz, 115200 baud의 경우
   UCSR1B = 0x18;   // Receive(RX) 및 Transmit(TX) Enable
   UCSR1C = 0x06;   // UART Mode, 8 Bit Data, No Parity, 1 Stop Bit

}
int main()
{
   char prompt[]="Youngju Lee>> ";      // 본인이름 입력할것.
   char *ptr;
   char c;
   init_uart();
   
    while (1)
    {
       if((UCSR0A & 0x80)){
         c = getchar0( );      // 1 character를 받아서
         switch (c)
         {   case '1' :
            putchar0(c);
            DDRA = 0xff;
            PORTA = 0xff;
            _delay_ms(3000);
            PORTA = 0x00;
            
            break;
            
            case '2' :
            DDRC = 0xff;
            DDRG = 0x0f;
            putchar0(c);
            for(int j=0;j<150;j++){
               for(int i=0;i<4;i++)
               {   PORTC = digit[i];
                  PORTG = fnd_sel[i];
               _delay_ms(5); }
            }
            PORTC = 0x00;
            PORTG = 0x00;
            break;
            
            case '3' :
            putchar0(c);
            for(int i=0;i<1499;i++){
               PORTB = 0x10;
               _delay_ms(1);
               PORTB = 0x00;
               _delay_ms(1);
            }
            break;
            
            
            case '4' :
            putchar0(c);
            DDRA = 0xff;
            DDRC = 0xff;
            DDRG = 0x0f;
            DDRB = 0x10;
            for(int z=0;z<375;z++){
               for(int i=0;i<4;i++){
                  PORTA = 0xff;
                  PORTC = digit[i];
                  PORTG = fnd_sel[i];
                  PORTB = 0x10;
                  _delay_ms(1);
                  PORTB = 0x00;
                  _delay_ms(1);
               }
            }
            PORTA = 0x00;
            PORTC = 0x00;
            PORTG = 0x00;
            PORTB = 0x00;
            break;
            
         }
         
         
      }
      if((UCSR1A & 0x80)){
         c = getchar1( );      // 1 character를 받아서
         putchar0(c);      // 원래 character를 돌려보냄
      }
      
      if (c == '\r')      // CR(Carrage Return)이면
      {
         putchar1('\n');      // NL(New Line)을 하나 더
         // 보내서 줄바꿈을 한 뒤
         ptr = prompt;      // prompt(“JKIT-128-1> “)를 다시
         puts1(ptr);      // 내보냄
      }
    
    }
}

 

 

//

 

// DateTime : 2018-12-03 오전 9:19:37
// by Ok-Hyun Park
//
#define  F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
//
#define  NULL 0
//
unsigned char digit[4]  ={0x06,0x5b,0x4f,0x66};
unsigned char fnd_sel[4]={0x08,0x04,0x02,0x01};
//
char RxCharMy() { while(!(UCSR0A&0x80)); return(UDR0); }
char RxCharAVR(){ while(!(UCSR1A&0x80)); return(UDR1); }
void TxCharMy(char c) { while(!(UCSR0A&0x20)); UDR0=c; }
void TxCharAVR(char c){ while(!(UCSR1A&0x20)); UDR1=c; }
void TxStrMy(char*s) { while(*s)TxCharMy(*s++); }
void TxStrAVR(char*s){ while(*s)TxCharAVR(*s++); }
//
int main(){
  int i,j;
  char c,prompt[]="Youngju Lee>>"// 본인이름 입력할것.
  DDRA=0xffDDRC=0xffDDRG=0x0fDDRB=0x10;
  UBRR0L=8UCSR0B=0x18// 퓨티
  UBRR1L=8UCSR1B=0x18// 다른 AVR
  _delay_ms(2000);
  TxStrMy(prompt);
  while(1){
    if(UCSR1A&0x80){
      c=RxCharAVR(); // 다른 AVR로 부터 1 character를 받아서
      switch(c){
        case '1':{ TxCharMy(c); PORTA=0xff_delay_ms(3000); PORTA=PORTC=PORTG=PORTB=0break; }
        case '2':{ TxCharMy(c);
          for(j=0;j<750;j++){
            for(i=0;i<4;i++){ PORTC=digit[i]; PORTG=fnd_sel[i]; _delay_ms(1); }
          }
          PORTA=PORTC=PORTG=PORTB=0;
          break;
        }
        case '3':{ TxCharMy(c);
          for(i=0;i<3000;i++){ PORTB^=0x10_delay_ms(1); } PORTA=PORTC=PORTG=PORTB=0;
          break;
        }
        case '4':{ TxCharMy(c);
          PORTA=0xff;
          for(j=0;j<750;j++){
            for(i=0;i<4;i++){ PORTC=digit[i]; PORTG=fnd_sel[i]; PORTB^=0x10_delay_ms(1); }
          }
          PORTA=PORTC=PORTG=PORTB=0;
          break;
        }
      }
    }
    //
    if((UCSR0A&0x80)){ // 퓨티로 부터 1 character를 받아서
      c=RxCharMy(); TxCharAVR(c);
      if(c=='\r'){ TxCharAVR('\n'); TxStrAVR(prompt); }
    }
  }
}

 

 

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

댓글 : 0

조회수 : 10,016

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[30] master  17-10-29
질문 초음파센서에 아무것도 잡히지 않을 시 그래프를 비워놓는… idghte 새글 24-04-14
답변 답변 : 초음파센서에 아무것도 잡히지 않을 시 그래프를… master 새글 24-04-14
질문 심박 및 산소포화도 센서 오류 댓글[3] 별dl  24-04-10
질문 ATmega128 출력비교인터럽트 질문 댓글[2] Dkliekeun  24-04-09
질문 smt32405 타이머질문 댓글[4] stm32  24-04-08
질문 초음파센서 3개 동시 동작 기능구현 도와주세요,,,, 댓글[5] hmkim  24-04-08
질문 이 부품은 뭔가요? 댓글[1] 첨부파일아두이노초보보  24-04-08
질문 아두이노 코딩 문제 도움주시면 감사하겠습니다. 제발요  24-04-05
답변 답변 : 아두이노 코딩 문제 도움주시면 감사하겠습니다. 댓글[1] master  24-04-06
질문 atmega128 srf-05 초음파 센서 코딩에 FQ… 댓글[3] 도움필요  24-04-04
질문 (초보)알파벳 A만들고 행 제어하기 댓글[3] SKYUN  24-04-02
질문 CUBE Progrmammer 설정 변경 에러 해결법좀 댓글[1] 라칸  24-03-29
질문 atmega128로 압력센서를 사용하려고 합니다 댓글[2] vbn667766  24-03-28
질문 stm32f405오류 질문 댓글[2] stm32  24-03-27
질문 안녕하세요 세그먼트 질문입니다 댓글[4] stm32  24-03-21
질문 No source available for "<sign… 댓글[2] 라칸  24-03-20
질문 QA6P 압력센서를 이용한 모터제어 질문 댓글[2] 첨부파일IMAZ  24-03-17
질문 아두이노와 앱인벤터 관련 질문드립니다.. 첨부파일쏘니  24-03-12
답변 답변 : 아두이노와 앱인벤터 관련 질문드립니다.. master  24-03-12
질문 Atmega128A 초음파 3개로 led3개를 각각 제… 댓글[2] 밍토리  24-03-11
질문 서보 모터 제어 댓글[1] 제발요  24-03-07
질문 스텝모터 아두이노 제어 질무드립니다 댓글[4] 제발요  24-03-04
질문 분주비와 업/업다운 카운트 관련 질문 드립니다. 댓글[3] 412904  24-02-18
질문 stm32의 task 댓글[1] 라칸  24-02-07
질문 stm32에서 ping 같은걸 해볼수 있나요? 댓글[1] 라칸  24-01-23
질문 (초보)atmega128 led 제어 질문드립니다 댓글[1] aaa123  24-01-22
질문 UART 통신을 하는데 댓글[4] 라칸  24-01-10
질문 트랜지스터를 2개 쓰는이유 댓글[2] 첨부파일소정이  24-01-10
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전