컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부
계측제어계의 구성요소
1개의 LED의 출력 인터페이스
1개의 스위치의 입력인터페이스
COMI-SD104 디지털 출력함수 (1) BOOL COMI_DO_PutOne (HANDLE hDevice, int ch, int status) : 하나의 채널에 대하여 디지털 출력을 내보냅니다. -. hDevice : 디바이스 핸들 -. ch : 디지털 출력 채널 번호 -. status : 디지털 출력 Status (0은 OFF, 1은 ON)
COMI-SD104 디지털 출력함수 (2) BOOL COMI_DO_PutAll (HANDLE hDevice, DWORD dwStatuses) : 모든 디지털 출력 채널에 대하여 출력을 내보낸다. -. hDevice : 디바이스 핸들 -. ch : 디지털 출력 채널 번호 -. status : 전채널의 출력 상태를 지시하는 32비트값. COMI-SD104는 8개의 디지털출력 채널만 제공되므로 하위 8비트만 사용된다.
LED 및 7세그먼트 실험 1
실험목적 LED 순차 점등 회로 및 7 세그먼트 출력 회로를 구성하고 구동 프로그램을 작성, 구동시킴으로써 디지털신호의 출력 원리 및 방법을 이해한다.
LED 출력 인터페이스
LED 구동 프로그램 OnLedStart OnLedEnd
프로그램 설명 XXXXDlg.h 헤더파일에 디바이스 핸들 변수 선언 class CASISTDlg : public CDialog { public: //user parameter HANDLE m_hDevice; }; XXXXDlg.cpp 소스파일에 Comidas.h 인클루드
라이브러리 및 디바이스 로딩
라이브러리 및 디바이스 언로딩
void CASISTDlg::OnLedStart() { SetTimer (0, 10, NULL); // OnTimer 함수를 0.01초 간격으로 실행한다. }
void CASISTDlg::OnTimer(UINT nIDEvent) { for (int i=0 ; i<8 ; i++) COMI_DO_PutAll (m_hDevice, 0x01<<i); Sleep(200); } CDialog::OnTimer(nIDEvent);
void CASISTDlg::OnLedEnd() { KillTimer (0); // OnTimer 함수를 종료한다. COMI_DO_PutAll (m_hDevice, 0xff); Sleep (200); COMI_DO_PutAll (m_hDevice, 0x00); }
7세그멘트 구동 인터페이스
74LS48과 7세그먼트와의 인터페이스
7세그먼트 구동 프로그램 On7segDisplay On7segReset Int m_7value
프로그램 설명 void CASISTDlg::On7segDisplay() { UpdateData (TRUE); // 화면에서 숫자를 입력 받는다. COMI_DO_PutAll (m_hDevice, m_7value); // 7세그먼트에 숫자를 출력한다. }
void CASISTDlg::On7segReset() { m_7value = 0; // 멤버변수에 0을 입력한다. COMI_DO_PutAll (m_hDevice, m_7value); // 7세그먼트에 0을 출력한다. UpdateData(FALSE); // 화면에 0을 출력한다. }
스테핑 모터 실험 2
실험목적 스테핑 모터의 구동회로를 구성하고 구동 프로그램을 작성, 구동시킴으로써 스테핑 모터의 구동 원리와 디지털 신호의 출력 원리 및 방법을 이해한다.
스테핑 모터 구동 인터페이스
스테핑 모터 구동 프로그램 OnStepmotorStart OnStepmotorEnd OnHighSpeed OnLowSpeed
프로그램 설명 void CASISTDlg::OnStepmotorStart() { SetTimer (0, 10, NULL); } void CASISTDlg::OnStepmotorEnd() KillTimer (0);
void CASISTDlg::OnHighSpeed() { m_vel = 10; // 전역변수 m_vel } void CASISTDlg::OnLowSpeed() m_vel = 100;
void CASISTDlg::OnTimer(UINT nIDEvent) { for (int j=0 ; j<4 ; j++) COMI_DO_PutAll (m_hDevice, 0x01<<j); Sleep (m_vel); } CDialog::OnTimer(nIDEvent);
전역변수의 지정 class CASISTDlg : public CDialog { ………... 전역변수는 Head File에서 지정한다. (예 : ASISTDLG.H) class CASISTDlg : public CDialog { ………... public: //user parameter HANDLE m_hDevice; int m_vel; };