임베디드 실습 # LED, 7’Segment 제어

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

조건문, 함수 정대진 ( ) C Programming -3 일차 ITA 8 월 강의.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
제3장 게임기본모듈 Page 153 ~ 182.
#include <stdio.h> int main(void) { float radius; // 원의 반지름
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
6장. printf와 scanf 함수에 대한 고찰
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
Unix Project2 <test character device 생성>
어셈블리 문법 보강 4월 10일.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
FND (Flexible Numeric Display)
12장 파이프.
Input/Output Control.
임베디드 실습 #1 기초 실습 Hanbat National University Prof. Lee Jaeheung.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
8 메모리 매핑.
파일 기술자 파일 기술자 현재 열려있는 파일을 구분하는 정수값 저수준 파일 입출력에서 열린 파일을 참조하는데 사용
(ioctl, mmap, fsync&flush)
4장 파일.
6장 파일 및 레코드 잠금.
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
프로그래밍 랩 – 7주 리스트.
C#.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
8051 IO-PORT 정보통신•컴퓨터 공학부 송명규
Mar 김 준 영 (juny924@gmail.com)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
연산자 (Operator).
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
아두이노 매트릭스 코딩 매트릭스 기본 명령어 실습 01차시 ㈜헬로앱스 김영준.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
마이크로소프트 박종호.
Chapter 11. 배열과 포인터.
Stepper Motor 디바이스 드라이버
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
1. 2진 시스템.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
계산기.
회로해석 및 논리회로실험 (정승기 교수님, 김신아 조교님)
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
9주차: Using Files and Others
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
어서와 C언어는 처음이지 제23장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
실 습 2.
어서와 C언어는 처음이지 제22장.
3장 파일 다루기 한빛미디어(주).
                                  6장 엔코드 디코드 회로 10진수와 2진수의 변환 및 표시 4 7 A B C D BCD 변환.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

임베디드 실습 # LED, 7’Segment 제어 Hanbat National University Prof. Lee Jaeheung

차례 비트 제어 연산자 랜덤 처리 LED 제어 7’Segment 제어 Hanbat National University Prof. Lee Jaeheung

비트 제어 연산자 비트 제어 연산자 정의 종류 2진수로 이루어진 수체계에서 각 비트들을 제어하기 위한 연산자 비트 논리 연산자 &, |, ^, ~ 비트 이동 연사나 >>, << 논리 연산자 &&, ||, ! Hanbat National University Prof. Lee Jaeheung

비트 제어 연산자 비트 제어 연산자 2진수의 이해 정보 저장 단위 2를 기수로 하여 0과 1의 2종류 숫자로 나타내는 수체계 컴퓨터 내 정보의 최소 단위(1Bit) 정보 저장 단위 8Bit = 1Byte = BYTE 16Bit = 2Byte = WORD 32Bit = 4Byte = DWORD Hanbat National University Prof. Lee Jaeheung

비트 제어 연산자 1 1 0 1 0 1 0 1 = 213(10) 비트 제어 연산자 2진수 변환 2진수 -> 10진수 각 자릿값(Weight Value)을 이용하여 계산 1 1 0 1 0 1 0 1 = 213(10) 27 26 25 24 23 22 21 20 128x1 + 64x1 + 32x0 + 16x1 + 8x0 + 4x1 + 2x0 + 1x1 Hanbat National University Prof. Lee Jaeheung

비트 제어 연산자 1 1 0 1 0 1 0 1 = D5(16) 비트 제어 연산자 2진수 변환 2진수 -> 16진수 2진수 4자리는 16진수 한자리에 해당 1 1 0 1 0 1 0 1 = D5(16) 23 22 21 20 23 22 21 20 8x1 + 4x1 + 2x0 + 1x1 8x0 + 4x1 + 2x0 + 1x1 Hanbat National University Prof. Lee Jaeheung

랜덤 처리 랜덤 처리 정의 함수 현재 시드를 기준으로 랜덤 숫자 생성 시드 설정 함수 void srand(unsigned int seed); 난수 생성 함수 int rand(); Hanbat National University Prof. Lee Jaeheung

랜덤 처리 랜덤 처리 사용 방법 100보다 작은 난수 생성 프로그램 ex) vi /work/ex4/rand.c #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", rand()%100); return 0; } #include <time.h> int main() { srand(time(NULL)); } Hanbat National University Prof. Lee Jaeheung

LED 제어 LED 제어하기 물리메모리 LED 제어값 0x00 0x01 0x02 0x03 0x0F 0xF0 0xFF 메모리 주소에 제어값 할당 Hanbat National University Prof. Lee Jaeheung

LED 제어 LED On/Off 반복 8bit_led.c (1/2) #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/mman.h> #include <fcntl.h> #define FPGA_BASE_ADDRESS 0x88000000 #define LED_OFFSET 0x20 int main(){ int fd; unsigned short *addr_fpga, *addr_led; unsigned short val1, val2; if((fd = open("/dev/mem", O_RDWR | O_SYNC)) < 0){ printf("mem open fail.\n"); exit(1); } addr_fpga = (unsigned short *)mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, FPGA_BASE_ADDRESS); addr_led = addr_fpga + LED_OFFSET / sizeof(unsigned short); if(*addr_led == (unsigned short)-1){ close(fd); printf("mmap error\n"); Hanbat National University Prof. Lee Jaeheung

LED 제어 LED On/Off 반복 8bit_led.c (2/2) while(1){ *addr_led = 0xFF; // LED 전체켜기 sleep(1); //1초 sleep *addr_led = 0x00; // LED 전체끄기 } munmap(addr_fpga, 4096); close(fd); return 0; Hanbat National University Prof. Lee Jaeheung

LED 제어 LED 제어 실습 랜덤 한 위치의 LED가 켜지는 프로그램을 작성하시오. Hanbat National University Prof. Lee Jaeheung

7’Segment 제어 7’Segment 정의 구조 세그먼트 방식의 숫자 표시 소자로서 최대 7개의 세그먼트로 숫자를 표시하는 방식 구조 Hanbat National University Prof. Lee Jaeheung

7’Segment 제어 7’Segment 원리 ABCDEFGH 11011010 0xDA 구조에서의 ABCDEFGH가 1Byte(8Bit)에 해당 예) 숫자 2를 켜는 방법 ABCDEFGH 11011010 0xDA F A B G E C D Hanbat National University Prof. Lee Jaeheung

LED 제어 7’Segment (0,1,2,3,4,5 띄우기) 7-segment.c (1/2) #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/mman.h> #include <fcntl.h> #define FPGS_BASE_ADDRESS 0x88000000 #define SEG_GRID_OFFSET 0x30 #define SEG_DATA_OFFSET 0x32 int main(){ int fd, i; unsigned short *addr_fpga; unsigned short *addr_grid, *addr_data; unsigned short led_pos[6]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20}; unsigned short digit[10]={0xfc, 0x60, 0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe4, 0xf3, 0xf6}; if((fd = open("/dev/mem", O_RDWR | O_SYNC)) < 0){ printf("mem open fail.\n"); exit(1); } addr_fpga = (unsigned short *)mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, FPGS_BASE_ADDRESS); addr_grid = addr_fpga + SEG_GRID_OFFSET / sizeof(unsigned short); addr_data = addr_fpga + SEG_DATA_OFFSET / sizeof(unsigned short); Hanbat National University Prof. Lee Jaeheung

LED 제어 7’Segment (0,1,2,3,4,5 띄우기) 7-segment.c (2/2) if(*addr_data == (unsigned short)-1 || *addr_grid == (unsigned short)-1){ close(fd); printf("mmap error\n"); exit(1); } while(1){ for(i = 0; i < 6; ++i){ *addr_grid = led_pos[i]; *addr_data = digit[i]; usleep(10); munmap(addr_fpga, 4096); return 0; Hanbat National University Prof. Lee Jaeheung

7’Segment 제어 7’Segment 실습 Hanbat National University Prof. Lee Jaeheung

LED, 7’Segment 제어 LED, 7’Segment 실습 엘리베이터 프로그램 작성(1층~8층) 층수는 키보드로 입력받음 이전 위치 1층 LED: 7’ Segment: -> 키보드로 층 입력 : ex (3층) 1초 후 위치 2층 LED: 7’ Segment: 1초 후 현재 위치 3층 LED: 7’ Segment: Hanbat National University Prof. Lee Jaeheung