8051 I/O Control
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

8051 I/O Control에 대한 보고서 자료입니다.

목차

1. Title

2. Name

3. Abstract

4. Background

5.Experimental Results
1. 실험1
A. Data
1)소스
2)동작 사진
B. Discussion

6. Analysis

7. Conclusion

8. References

본문내용

ORT1(P1)에 할당하여 순차적으로 LED를 동작하게 하였다. 또한 각각의 동
작 사이에 delay를 주어 구별이 용이하게 하였다. 소스와 보드동작 사진을 비교해보면 이런것을 잘 확인할 수 있다.
3. 실험3
A. Data
1)소스
/* 이것은 8051보드 오른쪽 LED 3개를 오른쪽에서부터 왼쪽으로 하나씩 On시키는 것입니다.*/
#include
void delay(unsigned int ms)//딜레이를 주기위한 함수
{
while(ms--);
}
void main()
{
unsigned char volatile xdata *ledcom = 0xfe00 ;//0xfe00이라는 메모리 주소에 led와 세그먼트 컴단자가 연결되어있으므로 쓰기쉽게 포인터ledcom으로 정의함.
int i;
char jeh[3]={0x60, 0xa0, 0xc0};//변수 설정
while(1)
{
P1 = 0xff;
for(i=0;i<3;i++)
{
*ledcom = jeh[i];//ledcom에 변수들을 할당
delay(60000);
}
}
}
2)보드 동작 사진
B. Discussion
이 실험은 8051보드상 오른쪽에 있는 LED3개를 제어해보는 실험이다. 소스를 살펴보면
0xfe00라는 주소에 우리가 제어할 LED와 그리고 그 위에 있는 세그먼트 컴단자가 연결
되어 있다. 이것을 써야하므로 쓰기 쉽게 ledcom이라는 포인터로 정의한다. 다음에 변수
들을 설정하는데 세그먼트 컴단자는 쓰일 필요가 없으므로 상위비트 3개만 설정하고 나
머지는 모두 off되게 (1값이 되게)설정하였다. 이리하여 *ledcom에 설정한 변수들을 할당
하고 이것을 for문을 통해 반복되게하여 위 사진에서 보는 바와 같은 동작을 구현해 낼
수 있었다.
6. Analysis
`1)실험 1
이 실험은 8051소자의 I/O PORT를 이용하여 보드내의 왼쪽 LED 4개를 제어하는 실험
으로 8051소자내 PORT 1에 변수를 할당하여 8051보드내 왼쪽LED 4개를 On/Off 하
게 한다. 실험 소스를 보면 for문 처음에 변수를 0x1로 할당 하였는데, 이는 왼쪽 첫 번
째LED값에 1를 할당하고 나머지 LED에는 모두 0을 할당한다. 우리가 사용하는 8051
보드의 LED는 LOW(0V)일때 On 되기 때문에 변수를 비트 반전 (‘~’)시켜 주어 첫 번째
LED만 On되게 한다. 그런 다음에 변수 값을 비트연산자 ‘<<’를 이용하여 한비트씩 좌쪽
으로 이동되게 되는데 그렇다면 숫자는 0010이 나올것이다. 이걸 비트 반전시키므로
두 번째 LED가 On되게 되는것이다. 마찬가지로 세 번째 LED는 0100, 네 번째LED는
1000, 이런식으로 간편하게 비트 연산자를 이용하여 각각의 LED를 On시킨것이다.
이리하여 8051보드 왼쪽에 있는 4개의 LED의 구동을 확인할수 있었다.
2)실험 2
이 실험은 실험1과 다르게 모든 LED가 On인상태에서 하나씩 순차적으로 Off시키는 동작을
수행하는 것으로, 실험 1과 달리 이번에는 직접 PORT(P1)에 변수를 할당하여 동작을 하게
하여보았다. 처음에 모든 LED가 On인 상태를 만들기 위해 변수 0xf를 할당하고 이것을 비
트 반전시켜 PORT(P1)에 할당하였고, 다음에는 가장 상위 LED를 Off시키기위해 2진수
1110, 즉 0xe를 비트반전시켜 PORT(P1)에 할당, 다음에 위에서 두 번째 LED를 Off시키
기 위해 2진수 1100, 즉 0xc, 다음은 2진수 1000, 0x8, 다음에는 모두 Off이므로 2진수
0000, 0x0을 할당 하였다.
3)실험 3
3번 실험은 8051보드상에서 오른쪽 에 있는 3개의 LED를 제어해보는 실험이다. 이 LED는
0xfe00이라는 메모리 주소에서 제어를 하게 되는데, 이것은 간편하게 쓰기위해 *ledcom이
라는 포인터로 바꿔준다. 문제는 이곳에서 세그먼트의 컴단자도 함께 제어 한다는것이다.
우리가 필요로 하는것은 LED의 제어이므로 세그먼트 컴단자가제어 되는곳은 계속 Off로
하게 하는 변수를 할당하여야 한다. 0xfe00에서 세그먼트가 제어 되는곳은 메모리주소 맨
끝에 두자리 수를 2진수로 나타낸 8자리중에서 뒷자리 5자리가 세그먼트 컴단자가 제어
되는 곳이다. 그러므로 우리가 필요로 하는것은 앞에 3자리 뿐이었다. 그러므로 변수를
설정할 때 뒤 5자리는 모두 0으로 할당하고 (세그먼트는 ‘0’일때 Off이다.) 앞 세자리를 설정하여야 한다. 첫 번째 LED를 On시키기 위해서는 0110 0000 즉 0x60, 두 번째 LED는
1010 0000 즉 0xa0, 세 번째 LED는 1100 0000 즉 0xc0을 메모리주소에 할당하여 제어
를 하였다.
7. Conclusion
이번 주부터 본격적으로 8051보드를 가지고 실험을 하게 되었다. 이번주에는 기초적인 8051보드 제어인 LED 제어를 해보았는데, LED는 I/O PORT와 메모리 주소등으로 제어된다는 것을 알수 있었다. 첫 번째 실험에서 LED를 따로따로 제어할 경우 비트반전(~)과 비
트연산자를 이용하면 간단히 할수 있다는것을 알수 있었다. 복잡한제어의 경우 비트연산자등을 적절히 사용하여 좀더 간단히 만들을수 있을것 같았다. 두 번째 실험에는 직접 변수를
할당하여 LED를 제어하였는데, 비트연산자등을 사용하였으면 어땠을까 하는 생각이 들었다
세 번째 실험에서 메모리 주소 0xfe00를 가지고 LED를 제어해 보았는데, 처음에 세그먼트
까지 제어가 되어 무척 당황스러웠었다. 하지만 이 메모리 주소에서는 세그먼트의 On/Off
만 제어할뿐 세부적인 제어는 하지 못한다는것을 바로 알수 있었다.
이번 실험을 통해 변수를 이용하여 8051보드의 LED/세그먼트등을 제어할수 있다는 중요한 사실을 알 수 있었다.또한 8051보드의 기초적인 원리를 파악할수 있었다.
8. References
1. 참고문헌 및 사이트
1)C언어로 제어하는8051 인터비젼 이상구
2)I8051 실습 Ohm社 문세홍
3)http://control.cntc.ac.kr/cpu/
4)http://www.alldatasheet.co.kr (데이터시트)

키워드

8051,   led제어,   led,   LED
  • 가격2,000
  • 페이지수13페이지
  • 등록일2007.01.14
  • 저작시기2006.9
  • 파일형식한글(hwp)
  • 자료번호#387512
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니