[전자공학실험] 8051 LED 제어 실험 결과레포트
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[전자공학실험] 8051 LED 제어 실험 결과레포트에 대한 보고서 자료입니다.

목차

1. 포트에 연결된 LED

2. 데이터라인에 연결된 LED

3. 7-세그먼트

본문내용

/////////////
/* 7세그먼트 구동 */
/////////////////////////////////////////////////////
#include
void delay(void)
{
unsigned int i;
for(i=0;i<0xF000;i++);
}
void main(void) // 메인 함수 본체
{
unsigned char volatile xdata *leddata = 0xFC00;
//세그먼트에 불이 들어오게 하는 포인터 선언
unsigned char volatile xdata *ledcom = 0xFE00;
// 세그먼트를 select 하는 포인터 선언
char segselect[4]={0x10,0x02,0x04,0x08};
// 세그먼트를 선별하는 배열 선언
char segnum[10]=
{0x81,0xCF,0x92,0x86,0xCC,0xA4,0xA0,0x8D,0x80,0x84};
// 세그먼트를 0부터 9까지 키게 하는 배열 선언
int j,k; //정수형 변수 j,k 선언
while(){ // 무한루프를 돌린다.
for (j=0;j<4;j++){ //j를 0부터 3까지 돌린다.
*ledcom=segselect[j]; //0xFE00 번지에 segselcet[j]를 대 //입한다.
for (k=0;k<10;k++){ //k를 0부터 9까지 돌린다.
*leddata=segnum[k]; // 0xFC00 번지에 segnum[k]
//를 대입한다.
delay(); //딜레이 함수 호출
}}
}
분석
이제는 LED 가 아닌 7segment를 다루어 보겠다. 우선 아까와 같이 세팅이 필요한데
unsigned char volatile xdata *leddata = 0xFC00;
//세그먼트에 불이 들어오게 하는 포인터 선언
unsigned char volatile xdata *ledcom = 0xFE00;
// 세그먼트를 select 하는 포인터 선언
이것이 7segment에 불이 들어오게 하는 주소 값이다. ledcom에서 7segment를 고를수 있게 해 주고 leddata에서는 셀렉트된 세그먼트가 값이 나올 수 있도록 값을 정해주는 것이다. 이렇게 세팅하고 나서는 for 문을 돌려 세그먼트를 하나씩 셀렉트 하여 그 안에서 또 for 문을 돌려서 각 숫자 0~9까지 나오게 하는 프로그램을 만들었다. 하나하나 하기 복잡하기 때문에 배열을 만들게 되었다.
char segselect[4]={0x10,0x02,0x04,0x08};
char segnum[10]={0x81,0xCF,0x92,0x86,0xCC,0xA4,0xA0,0x8D,0x80,0x84};
segselect 배열을 0xFE00 의 주소에 들어가게 되어 7segment를 select 하게 되는데 그 값을 배열로 넣어준 것이다 주소값이다.
그리고 segnum 은 각각의 세그먼트가 취하는 값으로 0에서부터 9까지 차례대로 되어 있다. 이제 각각을 알아 보겠다.
결과
ledcom 에 첫 번째 세그먼트를 인에이블 시키고 마스터 스위치에 해당하는 단자에는 항상 1이 나오게 설정하고 실행을 시켜 보았다. 0~9까지 제대로 나왔으나 너무많은걸 넣게 되면 복잡하므로 몇 개의 값을 셈플을 취하여 올려 놓았다.
①첫번째 세그먼트에 불이 들어왔음.
위에 보시다시피 숫자가 나오는 것을 확인 할수 있다. 여기서도 LED 와 마찬가지로 입력이 0이 될 때 불이 켜지게 되는 것이다. 처음의 값이 나오는 것을 관찰하자.
②두번째 세그먼트에 불이 들어 왔음
앞의 경우가 다 끝나서 9까지 넘어가게 되면 첫 번째 세그먼트의 불이 꺼지고 곧바로 2번째 세그먼트에서 0부터 시작하게 된다. 위의 사진은 0부터 증가하는 것을 찍은 것이다.
③세번째 세그먼트에 불이 들어왔음
두 번째 과정이 다 끝나면 이제 selector가 3번째 segment 에 인에이블 시키고 나머지 포트들은 다 disable로 시키면 위의 그림과 같이 나오게 된다.
④네번째 세그먼트에 불이 들어온다.
앞의 세 단계가 끝이 나면 네 번째 세그먼트에 불이 들어오게 되는데 이것 또한 0부터 9까지 연속적으로 들어오게 된다. 그 과정이 위에 사진에 나와 있다.
촐 결론
LED 와 segment를 컨트롤 하는 것이 8051을 다루는 가장 기초가 된다. 처음의 LED는 포트 1에서의 출력만으로 구동이 가능하나 두 번째 LED 는 주소를 지정해 주어서 그 주소에 적당한 값을 대입하여 LED를 컨트롤 하였다. 여기까지는 너무너무 쉬운 실험이고 그 다음에 4개의 segment를 구동하는 것이 조금 어려웠는데 우선 숫자를 나타내는 값들을 찾아내는데 조금 번거로웠고(하지만 이것은 한번 해놓으면 계속 써먹을 수 있는 것이다 ) 숫자의 변화를 배열로 나타내는 방법과 각 세그먼트를셀렉트하기 위해서 정해주는 주소와 그 주소에 따른 값으로 세그먼트가 셀렉트 되는 것을 배웠다. 비록 하나하나씩 차근차근 나갔지만 값진 경험이었다. 그리고 시리얼 포트를 통한 통신도 우리가 배운 점이었다. 하이퍼 터미널과 그 세팅 방법 그리고 통신을 할 때 그 방법 처음 접해본 우리에게는 너무나도 어려운 것이었으나. 이번 실험을 통해서 완벽히 마스터 가능했다. 그리고 케일 컴파일러도 아무것도 모르는 상태였으나 교수님의 한번 세팅을 하는 방법을 강의 하여서 정말 편하게 실험을 할 수 있었다. 만약 그런 교육이 없었다면 아직도 어떻게 해야할지 몰라서 방황했을 것이다. 이번 실험이 8051의 첫 실험이었지만 정말 많은 새로운 것들을 알게 되었다 유익한 실험이었다.
토의
이번 기판에서는 다른 조들은 에러가 많이 나서 힘들었지만 우리6조는 뛰어난 납땜실력으로 3개중에 2개가 한번에 작동하여 실험이 수월했다. 그리고 여름방학때 했던 AVR 덕분에 8051의 코딩이 이해가 빨리 되었다. 역시 고생을 했던게 이렇게 도움이 되다니.. 기판의 작동이 잘 되어 남들이 디버깅 하는 동안에는 우리조는 미리 해봤던 소스를 시리얼 포트를 통해 하이퍼 터미널로 통신을 하여 8051에 데이터를 저장시키는 것이 처음이라 생소했지만 자꾸 하다보니 많이 익숙해 져서 지금은 모든 것이 다 수월하게 되었다.

키워드

7-seg,   8051,   led,   7세그먼트,   디지털실험,   led제어,   7-segment,   MCU
  • 가격1,000
  • 페이지수10페이지
  • 등록일2006.05.31
  • 저작시기2005.3
  • 파일형식한글(hwp)
  • 자료번호#352357
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니