Professional Documents
Culture Documents
DS1307 - cách đọc hiểu IC
DS1307 - cách đọc hiểu IC
DS1307 - cách đọc hiểu IC
DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệm thời
gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang sử
dụng, tình bằng giây, phút, giờ…DS1307 là một sản phẩm của Dallas
Semiconductor (một công ty thuộc Maxim Integrated Products). Chip này có 7
thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng,
năm. Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi
trống có thể dùng như RAM. DS1307 được đọc và ghi thông qua giao diện nối tiếp
I2C (TWI của AVR) nên cấu tạo bên ngoài rất đơn giản. DS1307 xuất hiện ở 2 gói
SOIC và DIP có 8 chân như trong hình 1.
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup(void) {
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
delay(1000);
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the
128x64)
// init done
display.clearDisplay();
display.display();
display.setTextColor(WHITE, BLACK);
char temperature_msb;
void display_day(){
switch(day){
}
void DS3231_display(){
// End conversion
temperature_msb = abs(temperature_msb);
temperature[0] = '-';
else
temperature_lsb >>= 6;
temperature[5] = '0';
temperature[5] = '5';
void blink_parameter(){
byte j = 0;
while(j < 10 && digitalRead(button1) && digitalRead(button2)){
j++;
delay(25);
char text[3];
sprintf(text,"%02u", parameter);
while(true){
parameter++;
parameter = 1;
parameter = 1;
parameter = 0;
parameter = 0;
parameter = 0;
sprintf(text,"%02u", parameter);
blink_parameter();
blink_parameter();
display.setCursor(x_pos, y_pos);
display.setTextSize(text_size);
display.print(text);
display.display();
void loop() {
i = 0;
break;
// End conversion
Wire.requestFrom(0x68, 7); // Request 7 bytes from DS3231 and release I2C bus at
end of reading
Wire.requestFrom(0x68, 2); // Request 2 bytes from DS3231 and release I2C bus at
end of reading
display_day();
// End of code.