마이크로컴퓨터 실험 레포트(3)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

마이크로컴퓨터 실험 레포트(3)에 대한 보고서 자료입니다.

목차

1. 하드웨어 연결

2. SW bounce(Chattering) 설명

3. Debounce 설명

4. Debounce.c 프로그램 설명

5. 레포트를 쓰고 나서...

본문내용

h>
bit SW_ON;
void main(void)
RB0를 입력포트로 사용하겠다.
{
OSCCON = 0b0110000;
ANSEL = 0b00000000;
TRISB = 0b00000001;
while문 아래의 값을 반복한다.
TRISD = 0b00000000;
PORTD = 0b00000000;
while(1)
SW_ON = SW_ON ^ 1;
{
if(!RB0)
SW_ON ^=1;
\"^\"은 XOR 게이트를 표현한 것이다.
if(SW_ON)
RD0=1;
else
RD0=0;
}
}
SW_ON
SW_ON^1
1
0
0
1
Toggle 동작을 표현한 것이다.
-RD0의 LED가 SW를 누를 때 마다 켜짐과 꺼짐이 반복 되어야 하는데 잘 되지 않았다. push 스위치로 toggle 스위치를 만들었지만 SW 바운싱 현상이 일어났다.
· Debounce3.c
주기를 4000000 으로 선언했다.
#include
비트의 형식(1또는0)으로 SW_ON 변수를 선언하겠다.
#define _XTAL_FREQ 4000000
bit SW_ON;
void main(void)
{while문 아래의 값을 반복한다.
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISB = 0b00000001;
TRISD = 0b00000000;
PORTD = 0b00000000;
RB0를 입력포트로 사용하겠다.
delay를 0.003초로 주었다.
while(1){
__delay_ms(3);
if(!RB0)
SW3을 누를 때, RD0의 LED가 켜지고 한번 더 SW를 누를 때, RD0의 LED가 꺼짐을 반복한다.
SW_ON ^=1;
if(SW_ON)
RD0 = 1;
else
RD0 = 0;
}
}
-RD0의 LED가 SW를 누를 때 마다 켜짐과 꺼짐이 반복 되어야 하는데 Debounce2.c 프로그램 보다 잘 되었다. push 스위치로 toggle 스위치를 만들었고 SW 바운싱 현상이 잘 일어나지 않았다.
· Debounce4.c
주기를 4000000 으로 선언했다.
#include
비트의 형식(1또는0)으로 SW_ON 변수를 선언하겠다.
#define _XTAL_FREQ 4000000
bit SW_ON;
void main(void)
RB0를 입력포트로 사용하겠다.
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISB = 0b00000001;
TRISD = 0b00000000;
while문 아래의 값을 반복한다.
PORTD = 0b00000000;
while(1){
PORTD가 왼쪽방향으로 1씩 0.5초 간격으로 이동한다.
if(!RB0)
SW_ON ^=1;
if(SW_ON){
__delay_ms(500);
PORTD <<= 1;
만약 PORTD가 0b00000000이 된다면, PORTD를 초기값 0b00000001로 선언한다.
if(PORTD == 0b00000000)
PORTD = 0b00000001;
}
else{
__delay_ms(500);
PORTD >>= 1;
if(PORTD == 0b00000000)
PORTD = 0b10000000;
SW3을 한번 누르면 주기가 0.5초인 PORTD값을 1씩 오른쪽으로 이동시킨다.
}
}
}
PORTD의 초기 값 0b10000000을 선언 해 주었다.
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
RD3
RD0
RD1
RD2
RD4
RD5
RD6
RD7
SW3 Push
SW3 Push
-RD0의 LED가 왼쪽 방향으로 1개식 shift 되었고, SW3을 누를 때 방향의 전환되어 동작된다. SW을 한번 더 누르면 다시 원래 방향으로 동작된다. 이 과정을 반복할 수 있다. 결과는 아래의 그림처럼 나타난다.
5. 레포트를 쓰고 나서...
-PIC16F917 MCU의 RD7에서 RD0를 발광 다이오드 D7에서 D0에 각각 연결하여 컴퓨터와 연결하고 스위치(SW)3을 가지고 컴퓨터가 인식하여 스위치로 LED를 작동 시킬 수 있는 프로그램을 작성하여 실험 하여, RB0를 입력포트로 사용하여, SW3을 누를 때마다 RD0의 LED가 ON/OFF를 반복하는 프로그램을 작성하였습니다. 이 프로그램을 조금 바꿔 SW_ON을 XOR게이트로 Push 하여 Toggle 스위치를 만들었지만 SW 바운싱 현상이 일어났습니다. 짧은 시간동안 0과 1을 반복하는 SW 바운싱 현상을 줄이기 위해 주기를 선언하여 Delay 시간을 주어 디바운드 하였다. 수업을 통해 SW 바운싱 현상이 무엇인지 배웠고, SW 바운싱 현상을 제거하기 위해 디바운스하는 법의 여러 종류에 대해 배웠고 디바운스가 무엇인지에 대해 배웠습니다. 이 프로그램들을 응용하여 RD0의 LED가 왼쪽 방향으로 1개식 이동되고, SW3을 누를 때마다 방향이 전환되는 프로그램을 작성할 수 있었습니다. 레포트를 쓰면서 강의 내용을 이해했지만 완벽히 숙지하려면 몇 번 더 프로그램을 작성해 봐야할 것 같습니다. 스위치 하나로 이동하는 LED의 방향을 제어 하는 프로그램을 동작 시켰을 때, 신기하고 재미를 느꼈습니다. 감사합니다.^^

키워드

전자,   전기,   컴퓨터,   마이컴,   공학
  • 가격1,000
  • 페이지수12페이지
  • 등록일2021.02.09
  • 저작시기2013.3
  • 파일형식한글(hwp)
  • 자료번호#1145119
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니