이 튜토리얼에서는 RTC 모듈 DS3231과 MSP430을 연결 하여 디지털 시계를 만들고 16x2 LCD에 시간과 날짜를 표시합니다. MSP-EXP430G2는 Texas Instruments에서 마이크로 컨트롤러 사용 방법을 배우고 실습하기 위해 제공하는 개발 도구 (일명 LaunchPad)입니다. 이 보드는 모든 MSP430 시리즈 마이크로 컨트롤러를 프로그래밍 할 수있는 MSP430 Value Line 범주에 속합니다. MSP를 처음 사용하는 경우 MSP430 시작하기 자습서를 확인하십시오.
필요한 재료:
- MSP430
- DS3231 RTC 모듈
- POT -10k
- LCD 모듈 16 * 2
- 전선 연결
- 브레드 보드
RTC 란 ??
DS3231은 RTC (Real Time Clock) 모듈입니다. 대부분의 전자 프로젝트에서 날짜와 시간을 유지하는 데 사용됩니다. 이 모듈은 자체 코인 셀 전원 공급 장치를 사용하여 주 전원이 제거되거나 MCU가 하드 리셋을 수행 한 경우에도 날짜와 시간을 유지합니다. 따라서이 모듈에서 날짜와 시간을 설정하면 항상이를 추적합니다. DS1307, DS3231 등과 같은 여러 유형의 RTC IC를 사용할 수 있습니다.
우리는 이전 에 아래 프로젝트에서 다른 마이크로 컨트롤러와 함께 RTC를 사용 했습니다.
참고: 이 모듈을 처음 사용하는 경우 날짜와 시간을 설정해야합니다. RTC IC DS1307을 사용할 수도 있습니다. 이전에 Arduino와 함께 DS1307을 사용했습니다.
DS3231 RTC와 MSP430 연결:
MSP430 마이크로 컨트롤러 기반 디지털 시계의 회로도 는 아래와 같습니다. 앞서 말했듯이 DS3231은 I2C 통신의 도움을 받아 작동하므로 직렬 클럭 (SCL)과 직렬 데이터 (SDA) 핀이 있습니다.이 핀은 핀 9 (PIN 2.1) 인 MSP430의 I2C 핀에 연결되어야합니다., SCL) 및 핀 10 (PIN 2.2, SDA).
MSP430은 3.3V Vcc를 제공하지만 LCD 및 RTC 모듈과 연결하려면 5V가 필요합니다. 그래서 우리는 해킹을 사용할 것입니다. USB 케이블 커넥터 근처에 TP1이라는 이름의 점퍼가 있습니다. 거기에서 5V를 취할 수 있습니다.
회로도:
RTC 모듈 용 MSP430 프로그래밍:
여기에서는 프로그래밍을 위해 Energia IDE를 사용하고 있습니다. Arduino IDE와 동일하며 사용하기 쉽습니다. MSP 및 energia를 처음 사용하는 경우 Energia IDE를 사용하여 MSP를 시작하십시오. RTC 모듈을 인터페이스하려면이 보드에 대한 라이브러리가 필요합니다. 이 링크에서 RTC 라이브러리를 다운로드하여 설치하십시오.
또한 와이어 (I2C 통신에 사용됨) 및 Energia IDE에 사전 설치된 액정 라이브러리가 필요합니다.
이 MSP430 디지털 시계의 전체 코드 는이 기사의 끝에 제공됩니다. 코드는 간단하고 이해하기 쉽습니다. 여기서 우리는 그것의 몇 가지 부분을 설명합니다.
먼저 필요한 라이브러리 를 포함해야합니다.
아래 라이브러리는 RTC 모듈과 MSP430 간의 I2C 통신을위한 것입니다. SDA 및 SCK 핀은 이미이 라이브러리에 정의되어 있으므로 이러한 핀을 별도로 선언 할 필요가 없습니다.
#포함
그런 다음 RTC 클럭 용 RTClib.h 라이브러리와 LCD 기능 용 LiquidCrystal.h 를 포함 했습니다 .
#include "RTClib.h" #include
그런 다음 RTC 모듈을 초기화하기 위해 인스턴스를 만들어야합니다.
RTC_DS3231 rtc;
그런 다음 크기 7의 배열을 만들고 이름이있는 7 일을 모두 저장합니다.
char daysOfTheWeek = { "일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};
다음은 LCD 디스플레이에서 사용할 MSP430의 핀 선언입니다: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LiquidCrystal lcd (8,6, 7,11,12,13);
에서 무효 설치 () , 우리는 LCD 화면과 RTC에 대한 인터페이스를 초기화하고, 화면의 크기 (폭과 높이)를 지정한 시작 ()
다른 라이브러리 명령 전에 호출 될 필요가있다.
무효 설정 () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC 시계"); 지연 (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
이제 디스플레이에 표시된 시간은 정확하지만 문제가 있습니다. 마이크로 컨트롤러를 다시 시작 / 재설정 할 때마다 LCD에 코드를 업로드 한 시간이 표시됩니다. 이는 rtc.adjust () 함수가 컴퓨터의 시간을 저장 했기 때문에 재설정하면 해당 시간부터 시작됩니다.
이 문제를 해결하려면 먼저 rtc.adjust () 함수를 주석 처리하지 않은 상태로 프로그램을 업로드 하십시오. 그런 다음 즉시 같은 줄에 주석을 달고 프로그램을 다시 업로드하십시오. 이제 날짜와 시간이 설정되었으며 마이크로 컨트롤러를 재설정해도 영향을받지 않습니다.
에서는 루프 함수라고 우리는 미리 정의 된 변수 RTC 모듈 저장소로부터 날짜와 시간을 얻어 현재 및 사용 LCD에 표시 lcd.print () 함수.
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
완전한 코드와 비디오 가 아래에 제공됩니다.