ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

27 624 2
ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ) ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

ĐỒ ÁN ĐỒNG HỒ SỐ SỬ DỤNG VI ĐIỀU KHIỂN i MỤC LỤC DANH MỤC CÁC HÌNH VẼ III DANH MỤC CÁC BẢNG BIỂU .IV DANH MỤC CÁC TỪ VIẾT TẮT .V TỔNG QUAN VỀ ĐỒNG HỒ SỐ SỬ DỤNG VI ĐIỀU KHIỂN GIỚI THIỆU LINH KIỆN CHÍNH .2 THIẾT KẾ HỆ THỐNG ĐÁNH GIÁ THỰC NGHIỆM KẾT LUẬN 12 TÀI LIỆU THAM KHẢO 13 PHỤ LỤC A 14 ii DANH MỤC CÁC HÌNH VẼ HÌNH 2-1: DS1307 ĐỒ CHÂN [1] BẢNG 2-1:GIẢI THÍCH CÁC CHÂN CỦA DS1307 .3 BẢNG 2-2: BẢY THANH GHI ĐẦU CỦA DS1307 HÌNH 2-2: I2C [5] HÌNH 2-3: KEYPAD ĐỒ NGUYÊN LÝ CỦA KEYPAD [2] .4 HÌNH 2-4: MÀN HÌNH LCD CÁC CHÂN GIAO TIẾP [3] .4 BẢNG 2-3: CHỨC NĂNG CÁC CHÂN CỦA LCD HÌNH 2-5: ATMEGA328P ĐỒ CHÂN [4] .6 HÌNH 3-1: ĐỒ KHỐI HỆ THỐNG HÌNH 3-2: ĐỒ NGUYÊN LÝ KHỐI MẠCH NGUỒN HÌNH 3-3: PCB CỦA MẠCH NGUỒN HÌNH 3-4: ĐỒ NGUYÊN LÝ CỦA DS1307 HÌNH 3-5: PCB DS1307 HÌNH 3-6: ĐỒ NGUYÊN LÝ CỦA VI ĐIỀU KHIỂN ATMEGA328P HÌNH 3-7: PCB VI ĐIỀU KHIỂN .10 HÌNH 3-8: ĐỒ GIẢI THUẬT 10 HÌNH 3-9: MÔ HÌNH KIỂM TRA HIỂN THỊ THỜI GIAN THỰC 11 iii DANH MỤC CÁC BẢNG BIỂU BẢNG 2-1:GIẢI THÍCH CÁC CHÂN CỦA DS1307 ERROR: REFERENCE SOURCE NOT FOUND BẢNG 2-2: BẢY THANH GHI ĐẦU CỦA DS1307 ERROR: REFERENCE SOURCE NOT FOUND BẢNG 2-3: CHỨC NĂNG CÁC CHÂN CỦA LCD ERROR: REFERENCE SOURCE NOT FOUND iv DANH MỤC CÁC TỪ VIẾT TẮT COL E Columm Enable EEPROM GND I2C IC LCD LED PWM R/W RAM RS RTC SCL SDA SW VEE VSS Gesta Normannorum Ducum Inter-Integrated Circuit Integrated Circuit Liquid Crystal Display Light-Emitting Diode Pulse Width Modulation Read/Write Random Access Memory Register Select Real Time Clock Serial Data Serial Clock Switch Voltage Emitor emitor Voltage for substrate and source v ĐỒ ÁN Trang 1/23 TỔNG QUAN VỀ ĐỒNG HỒ SỐ SỬ DỤNG VI ĐIỀU KHIỂN 1.1 Giới thiệu Ngày nay, với phát triển khoa học công nghệ nhu cầu người không ngừng tăng cao, thiết bị máy móc đòi hỏi phải cải tiến theo hướng đại hơn, tích hợp nhiều chức để phù hợp với nhu cầu người bắt kịp xu thế giới Một thiết bị gần gũi với người đồng hồ, với đồng hồ dùng kim giờ, kim phút để thời gian gây khó khăn cho số người sử dụng Đồng hố số giải khó khăn thời gian hiển thị chữ số dễ dàng cho nhận biết thời gian Với việc áp dụng kiến thức học mạch đồng hồ số thiết kế nhằm giải vấn đề 1.2 Hướng nghiên cứu So với việc thiết kế đồng hồ số dùng IC số sử dụng vi điều khiển để thiết kế đồng hồ số dễ dàng nhiều, đỡ thời gian hàn linh kiện sử dụng nhiều IC mạch ĐỒ ÁN Trang 2/23 GIỚI THIỆU LINH KIỆN CHÍNH 1.3 DS1307-IC thời gian thực Hình 2-1: DS1307 đồ chân [1] - DS1307 chip thời gian thực hay RTC, IC tích hợp thời gian thực nghĩa thời gian tuyệt đối mà người sử dụng tính giờ, phút, giây Hai mode DS1307 Data Read Data Write - DS1307 có ghi đầu dùng cho chức “đồng hồ”, với ghi chứa thông tin thời gian đồng hồ bao gồm: thứ, giờ, phút, giây, ngày, tháng, năm - Các thông số kỹ thuật DS1307:  Điện áp hoạt động: V  Sử dụng nguồn Pin V bên điện  Giao chuẩn I2C  Có 56 Byte RAM trống để người dùng tùy ý sử dụng  Có thể xuất xung có tần số Hz, 8.192 KHz, 32.768 KHz ĐỒ ÁN Trang 3/23 Bảng 2-1:Giải thích chân DS1307 X1, X2 đầu vào dao động cho DS1307 Cần dao động thạch anh 32.768 KHz VBAT Cực dương nguồn pin V nuôi chip GND Chân mass chung cho pin V VCC Nguồn cho giao diện I2C thường 5V dùng chung với vi điều VCC khiển SQW/OUT Ngõ phụ tao xung vuông SCL, SDA bus liệu DS1307, tin truyền ghi truyền qua đường Bảng 2-2: Bảy ghi đầu DS1307 BIT CH 0 BIT BIT 10 SECONDS 10 MINUTES 12 10 HR 24 0 0 0 10 YEARS BIT CAO BIT 10 HR AM/PM 0 10 DATES 10 MONTHS BIT BIT SECONDS MINUTES BIT HOURS DAY DATE MONTH YEAR BIT THẤP 1.4 I2C Hình 2-2: I2C [5] BIT ĐỒ ÁN Trang 4/23 - Bus I2C sử dụng làm bus giao tiếp ngoại vi cho nhiều loại IC khác như: vi điều khiển 8051, IC điều khiển LCD - Một giao tiếp I2C gồm có hai dây: Serial Data (SDA) Serial Clock (SCL) Trong SDA đường truyền liệu hai hướng, SCL đường truyền xung đồng hồ theo hướng Master phát (thông thường 100 KHz 400 KHz Mức cao MHz 3.4 MHz) 1.5 Keypad 4x4 Hình 2-3: Keypad đồ nguyên lý keypad [2] - Keypad thiết bị nhập cho phép người dùng nhập chữ số, chữ ký hiệu vào điều khiển.Gọi keypad 4x4 keypad có 16 nút nhấn kết nối thành hàng, cột - Trong đề tài này, ta dùng keypad để nhập liệu báo thức cho đồng hồ 1.6 Màn hình LCD 16x2 Hình 2-4: Màn hình LCD chân giao tiếp [3] BẢNG 2-3: Chức chân LCD ĐỒ ÁN Trang 5/23 Chân Ký hiệu Mô tả Vss Chân nối đất cho LCD, thiết kế mạch ta nối chân với GND mạch điều khiển VDD Chân cấp nguồn cho LCD, thiết kế mạch ta nối chân với VCC=5 V mạch điều khiển VEE Điều chỉnh độ tương phản LCD RS Chân chọn ghi (Register select) R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để LCD hoạt động chế độ ghi, nối với logic “1” để LCD chế độ đọc E Chân cho phép (Enable) Sau tín hiệu đặt lên bus DB0DB7, lệnh chấp nhận có xung cho phép chân E - 14 DB0 - Tám đường bus liệu dùng để trao đổi thông tin với MPU DB7 15 Nguồn dương cho đèn 16 - GND cho đèn - LCD loại hình tinh thể lỏng, nhỏ dùng để hiển thị dòng chữ số, chia sẵn thành ô ô hiển thị ký tự - LCD có hai mode giao tiếp bit có cách giao tiếp nối tiếp song song - Trong đề tài này, ta sử dụng loại LCD 16x2 gồm có hàng, hàng chứa tối đa 16 ký tự, sử dụng cách giao tiếp song song mode bit để hiển thị thời gian (giờ, phút, giây, ngày, tháng, năm) ĐỒ ÁN Trang 8/23 điện áp chiều DC, qua tụ lọc C5 làm điện áp đầu vào giảm độ gợn sóng trở nên phẳng LM7805 IC ổn áp có, chịu điện áp 7-20 VDC tác dụng chuyển điện áp đầu vào thành điện áp ổn định VDC đầu Tụ C3, C4 có tác dụng làm điện áp đầu trỏ nên phẳng giảm độ gợn sóng Cuối LED dùng để báo có nguồn mạch Hình 3-3: PCB mạch nguồn 1.10.2 Mạch DS1307 Hình 3-4: đồ nguyên lý DS1307 - Nguyên lý hoạt động: Khi cấp nguồn V, thạch anh dao động tạo tần số 32, 768 KHz DS1307 hoạt động Pin V ghi nhớ thời gian không cấp nguồn ĐỒ ÁN Trang 9/23 Hình 3-5: PCB DS1307 1.10.3 Mạch vi điều khiển Atmega328P Hình 3-6: đồ nguyên lý vi điều khiển Atmega328P ĐỒ ÁN Trang 10/23 Hình 3-7: PCB vi điều khiển 1.11 đồ giải thuật Hình 3-8: đồ giải thuật 1.12 Nguyên lý hoạt động: Sau cấp nguồn cho vi điều khiển, vi điều khiển đọc thời gian thực từ DS1307 thông qua kết nối I2C với LCD, thời gian hiển thị qua LCD Để hẹn giờ, dùng keypad nhập thời gian hẹn sau lưu lại, sau so sánh thời gian thời gian hẹn báo qua speaker ĐỒ ÁN Trang 11/23 1.13 Phần cứng Hình 3-9: Mô hình kiểm tra hiển thị thời gian thực ĐỒ ÁN Trang 12/23 KẾT LUẬN 1.14 Kết luận Hoàn thành đề tài giao, thiết kế mạch hoàn chỉnh Ưu điểm, khuyết điểm:  Mạch chạy ổn định  Ít tốn sử dụng IC số  Còn sai số thời gian 1.15 Hướng phát triển Thêm tính báo nhiệt độ, chỉnh báo thức giờ, phút, giây ĐỒ ÁN Trang 13/23 TÀI LIỆU THAM KHẢO Tiếng Việt: [1] ĐIỆN TỬ MÁY TÍNH, http://www.dientumaytinh.com/ [2] Arduino Việt Nam, http://arduino.vn/ [3] Điễn đàn vi điều khiển, http://mcu.banlinhkien.vn/ Tiếng Anh: [4] Digole Digital Solutions, http://www.digole.com/ [5] MODTRONIX, http://modtronix.com/ ĐỒ ÁN Trang 14/23 PHỤ LỤC A Chương trình thiết lập cho DS1307 void setup () { Serial.begin(9600); lcd.init(); //Khởi động hình Bắt đầu cho phép Arduino sử dụng hình lcd.backlight(); //Bật đèn Rtc.Begin(); pinMode(13, OUTPUT); //xuất giá trị RtcDateTime compiled = RtcDateTime( DATE , TIME ); //printDateTime(compiled); Serial.println(); if (!Rtc.IsDateTimeValid()) { Serial.println("RTC lost confidence in the DateTime!"); Rtc.SetDateTime(compiled); } ĐỒ ÁN Trang 15/23 if (!Rtc.GetIsRunning()) { Serial.println("RTC was not actively running, starting now"); Rtc.SetIsRunning(true); } RtcDateTime now = Rtc.GetDateTime(); if (now < compiled) { Serial.println("RTC is older than compile time! (Updating DateTime)"); Rtc.SetDateTime(compiled); } // never assume the Rtc was last configured by you, so // just clear them to your needed state //Rtc.Enable32kHzPin(false); //Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone); Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low); } ĐỒ ÁN Trang 16/23 Chương trình xuất thời gian LCD void setup () { Serial.begin(9600); lcd.init(); //Khởi động hình Bắt đầu cho phép Arduino sử dụng hình lcd.backlight(); //Bật đèn Rtc.Begin(); pinMode(13, OUTPUT); //xuất giá trị RtcDateTime compiled = RtcDateTime( DATE , TIME ); //printDateTime(compiled); Serial.println(); if (!Rtc.IsDateTimeValid()) { Serial.println("RTC lost confidence in the DateTime!"); Rtc.SetDateTime(compiled); } if (!Rtc.GetIsRunning()) { Serial.println("RTC was not actively running, starting now"); Rtc.SetIsRunning(true); } RtcDateTime now = Rtc.GetDateTime(); if (now < compiled) { Serial.println("RTC is older than compile time! (Updating DateTime)"); ĐỒ ÁN Trang 17/23 Rtc.SetDateTime(compiled); } // never assume the Rtc was last configured by you, so // just clear them to your needed state //Rtc.Enable32kHzPin(false); //Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone); Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low); } Chương trình khai báo cà đặt hẹn #include #include #include #include #define buzzer 13 LiquidCrystal_I2C lcd(0x3f, 16, 2); RtcDS1307 Rtc(Wire); const byte ROWS = 4; //four rows const byte COLS = 4; //four columns char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'U'}, // UP {'4', '5', '6', 'D'}, // DOWN {'7', '8', '9', 'M'}, // MENU {'A', '0', 'B', 'E'} // ADD }; BACK ENTER ĐỒ ÁN Trang 18/23 byte rowPins[ROWS] = {5, 4, 3, 2}; byte colPins[COLS] = {9, 8, 7, 6}; Keypad Key_Pad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); const char* days[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; int hc, hdv, mc, mdv; int set_hc, set_hdv, set_mc, set_mdv; int menu1 = 0, alarm_setting = 0; boolean alarm_off, al_en; void loop () { RtcDateTime now = Rtc.GetDateTime(); printDateTime(now); int cur_h = now.Hour(); int cur_m = now.Minute(); set_hc = int(hc) - 48; set_hdv = int(hdv) - 48; set_mc = int(mc) - 48; set_mdv = int(mdv) - 48;; int alarm_h = set_hc * 10 + set_hdv; int alarm_m = set_mc * 10 + set_mdv; ĐỒ ÁN Trang 19/23 char Key = Key_Pad.getKey(); menu1 = (Key == 'M') ? : 0; if (menu1) lcd.clear(); while (menu1) // Enter menu { if (Key == 'B') { lcd.clear(); break; } lcd.setCursor(1, 0); lcd.print("Enter Command"); Key = Key_Pad.getKey(); alarm_setting = (Key == 'M') ? : 0; if (alarm_setting == 1) { lcd.clear(); hc = 0; hdv = 0; mc = 0; mdv = 0; } while (alarm_setting) ĐỒ ÁN Trang 20/23 { Key = Key_Pad.getKey(); if (Key == 'B') { lcd.clear(); break; } al_en = true; lcd.setCursor(1, 0); lcd.print("Alarm Setting"); lcd.setCursor(5, 1); lcd.print("hh:mm"); if (!hc) hc = Key_Pad.getKey(); // hc chưa có giá trị gán hc = giá trị nhập từ bàn phím,nếu hc có giá trị bỏ qua câu lệnh if (!hdv && hc) hdv = Key_Pad.getKey(); // hc chưa có giá trị gán hc = giá trị nhập từ bàn phím,nếu hc có giá trị bỏ qua câu lệnh if (!mc && hdv && hc) mc = Key_Pad.getKey(); if (!mdv && mc && hdv && hc) mdv = Key_Pad.getKey(); int a, b, c, d; if ((int(hc) - 48) < 0) a = 0; else a = int(hc) - 48; ĐỒ ÁN Trang 21/23 if ((int(hdv) - 48) < 0) b = 0; else b = int(hdv) - 48; if ((int(mc) - 48) < 0) c = 0; else c = int(mc) - 48; if ((int(mdv) - 48) < 0) d = 0; else d = int(mdv) - 48; lcd.setCursor(5, 1); lcd.print(a); lcd.print(b); lcd.print(':'); lcd.print(c); lcd.print(d); Serial.print("hc: "); Serial.print(int(hc) - 48); Serial.print(" hdv: "); Serial.print(int(hdv) - 48); Serial.print(" mc: "); Serial.print(int(mc) - 48); Serial.print(" mdv: "); Serial.println(int(mdv) - 48); } } // Turn Alarm On/Off if ( (alarm_h == cur_h) && (alarm_m == cur_m)) { if ((Key != 'E') && al_en ) { ĐỒ ÁN Trang 22/23 alarm_off = false; al_en = true; } else { alarm_off = true; al_en = false; } } else alarm_off = true; if (alarm_off) digitalWrite(buzzer, LOW); else } digitalWrite(buzzer, HIGH); ... học mạch đồng hồ số thiết kế nhằm giải vấn đề 1.2 Hướng nghiên cứu So với việc thiết kế đồng hồ số dùng IC số sử dụng vi điều khiển để thiết kế đồng hồ số dễ dàng nhiều, đỡ thời gian hàn linh... người đồng hồ, với đồng hồ dùng kim giờ, kim phút để thời gian gây khó khăn cho số người sử dụng Đồng hố số giải khó khăn thời gian hiển thị chữ số dễ dàng cho nhận biết thời gian Với việc áp dụng. .. 48; if ((int(mdv) - 48) < 0) d = 0; else d = int(mdv) - 48; lcd.setCursor(5, 1); lcd.print(a); lcd.print(b); lcd.print(':'); lcd.print(c); lcd.print(d); Serial.print("hc: "); Serial.print(int(hc)

Ngày đăng: 19/09/2017, 21:03

Hình ảnh liên quan

Hình 2-1: DS1307 và sơ đồ chân [1] - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 2.

1: DS1307 và sơ đồ chân [1] Xem tại trang 7 của tài liệu.
Bảng 2-1:Giải thích các chân của DS1307 - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Bảng 2.

1:Giải thích các chân của DS1307 Xem tại trang 8 của tài liệu.
Hình 2-3: Keypad và sơ đồ nguyên lý của keypad [2] - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 2.

3: Keypad và sơ đồ nguyên lý của keypad [2] Xem tại trang 9 của tài liệu.
1.6 Màn hình LCD 16x2 - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

1.6.

Màn hình LCD 16x2 Xem tại trang 9 của tài liệu.
- LCD là loại màn hình tinh thể lỏng, nhỏ dùng để hiển thị các dòng chữ hoặc số, được chia sẵn thành từng ô và mỗi ô chỉ hiển thị một ký tự. - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

l.

à loại màn hình tinh thể lỏng, nhỏ dùng để hiển thị các dòng chữ hoặc số, được chia sẵn thành từng ô và mỗi ô chỉ hiển thị một ký tự Xem tại trang 10 của tài liệu.
Hình 2-5: ATmega328P và sơ đồ chân [4] - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 2.

5: ATmega328P và sơ đồ chân [4] Xem tại trang 11 của tài liệu.
Hình 3-2: Sơ đồ nguyên lý khối mạch nguồn - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

2: Sơ đồ nguyên lý khối mạch nguồn Xem tại trang 12 của tài liệu.
Hình 3-1: Sơ đồ khối hệ thống - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

1: Sơ đồ khối hệ thống Xem tại trang 12 của tài liệu.
Hình 3-4: Sơ đồ nguyên lý của DS1307 - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

4: Sơ đồ nguyên lý của DS1307 Xem tại trang 13 của tài liệu.
Hình 3-3: PCB của mạch nguồn - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

3: PCB của mạch nguồn Xem tại trang 13 của tài liệu.
Hình 3-6: Sơ đồ nguyên lý của vi điều khiển Atmega328P - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

6: Sơ đồ nguyên lý của vi điều khiển Atmega328P Xem tại trang 14 của tài liệu.
Hình 3-5: PCB DS1307 - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

5: PCB DS1307 Xem tại trang 14 của tài liệu.
Hình 3-8: Sơ đồ giải thuật - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

8: Sơ đồ giải thuật Xem tại trang 15 của tài liệu.
Hình 3-7: PCB vi điều khiển - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

7: PCB vi điều khiển Xem tại trang 15 của tài liệu.
Hình 3-9: Mô hình kiểm tra hiển thị thời gian thực - ĐỒNG hồ số sử DỤNG vdk (code và mạch in đầy đủ)

Hình 3.

9: Mô hình kiểm tra hiển thị thời gian thực Xem tại trang 16 của tài liệu.

Từ khóa liên quan

Mục lục

  • 1.1 Giới thiệu

  • 1.2 Hướng nghiên cứu

  • 1.3 DS1307-IC thời gian thực

  • 1.4 I2C

  • 1.5 Keypad 4x4

  • 1.6 Màn hình LCD 16x2

  • 1.7 Vi điều khiển ATmega328P

  • 1.8 Các linh kiện khác

  • 1.9 Sơ đồ khối hệ thống

  • 1.10 Sơ đồ mạch và nguyên lý hoạt động

    • 1.10.1 Mạch nguồn

    • 1.10.2 Mạch DS1307

    • 1.10.3 Mạch vi điều khiển Atmega328P

    • 1.11 Sơ đồ giải thuật

    • 1.12 Nguyên lý hoạt động:

    • 1.13 Phần cứng

    • 1.14 Kết luận

    • 1.15 Hướng phát triển

    • 1. Chương trình thiết lập cho DS1307

    • 2. Chương trình xuất thời gian ra LCD

    • 3. Chương trình khai báo và cà đặt hẹn giờ

Tài liệu cùng người dùng

Tài liệu liên quan