MẠCH ĐỒNG hồ số HIỂN THỊ THỜI GIAN THỰC TRÊN LCD DÙNG PIC16F877A (có code và sơ đồ mạch) MẠCH ĐỒNG hồ số HIỂN THỊ THỜI GIAN THỰC TRÊN LCD DÙNG PIC16F877A (có code và sơ đồ mạch) MẠCH ĐỒNG hồ số HIỂN THỊ THỜI GIAN THỰC TRÊN LCD DÙNG PIC16F877A (có code và sơ đồ mạch) MẠCH ĐỒNG hồ số HIỂN THỊ THỜI GIAN THỰC TRÊN LCD DÙNG PIC16F877A (có code và sơ đồ mạch)
ĐỒ ÁN MẠCH ĐỒNG HỒ SỐ HIỂN THỊ THỜI GIAN THỰC TRÊN LCD DÙNG PIC 16F877A Đồ án MỤC LỤC DANH MỤC HÌNH ẢNH Đồ án CHƯƠNG TỔNG QUAN VỀ MẠCH ĐỒNG HỒ SỐ HIỂN THỊ THỜI GIAN THƯC TRÊN LCD DÙNG PIC 16F877A 1.1 Giới thiệu Mạch đồng hồ số hiển thị thời gian thực LCD dùng PIC 16F877A cho hiển thị xác thời gian thực sử dụng IC DS1307 Ngoài ta tùy chỉnh thời gian theo ý muốn nút nhấn cài đặt, tăng, giảm ok 1.2 Mô tả chức hoạt động mạch Thời gian tự động lưu vào nhớ ta cài đặt thời gian lần Để chỉnh ta nhấn nút cài đặt lần nhấn nút tăng giảm để chỉnh theo ý muốn Sau nhấn ok để hồn tất phần chỉnh Tương tự ta thực cho phần chỉnh phút chỉnh giây Nhấn nút cài đặt thêm lần để chỉnh ngày, tháng, năm tương tự chỉnh phút giây Nhấn nút cài đặt thêm lần để hoàn tất phần cài đặt 1.3 Nguyên lý chung 1.3.1 Giao tiếp I2C 1.3.1.1 Giới thiệu Vào năm 1980, Phillips phát chuẩn giao tiếp dây gọi I2C( Inter-Intergrated Circuit) Hình 1- 1: BusI2C thiết bị ngoại vi Đồ án 1.3.1.2 Đặc điểm giao tiếp I2C Một giao tiếp I2C gồm có dây : SDA( Serial Data) SCL( Serial Clock) SDA đường truyền liệu hai hướng, SCL đường xung đồng hồ theo hướng Hình 1-2: Kết nối thiết bị vào bus I2C Hình 1- 2:Kết nối thiết bị vào bus I2C Trong giao tiếp I2C hoạt động truyền hay nhận tùy thuộc vào thiết bị Master( thiết bị chủ ) hay Slave (thiết bị tớ) Trong quyền điều khiển thuộc thiết bị chủ Thiết bị chủ có vai trò tạo xung clock cho tồn hệ thống quản lí địa thiết bị tớ Dựa vào hình thấy liệu truyền từ thiết bị chủ sang thiết bị tớ hay ngược lại, xung clock truyền theo hướng từ thiết bị chủ sang thiết bị tớ 1.3.1.3 Các chế độ truyền liệu giao tiếp I2C + Standard mode : Chế độ chuẩn + Fast mode : Chế độ nhanh + High-Speed mode : Chế độ cao tốc Đồ án - Quá trình truyền liệu giao tiếp I2C: bao gồm hai - trình đọc ghi liệu Dấu hiệu Start Stop điều kiện bắt buộc - Master muốn thiết lập giao tiếp với Slave Dấu hiệu Start : SDA đưa từ mức sang mức - SCL mức Dấu hiệu Stop : SDA đưa từ mức sang mức SCL mức Hình 1- 3: Quá trình Start / Stop I2C C Hình 1-4: Quá trình truyền liệu I2C Hình 1- 5: Truyền từ Master sang Slave (Ghi liệu) Hình 1-6: Truyền từ Slave sang Master ( Đọc liệu) Đồ án 1.1.1.1 1.4 Giới thiệu linh kiện 1.4.1 PIC 16F877A 1.4.1.1 Giới thiệu chung PIC16F877A có chân với phân chia cấu trúc sau : + Có port xuất/nhập + Có kênh chuyển đổi A/D 10-bit + Có PWM + Có định thời: Timer0, timer1 timer2 + Có giao tiếp truyền nối tiếp: chuẩn RS 232, I2C… + Có giao tiếp LCD Hình 1- 7: Hình ảnh PIC 16F877A Đồ án 1.4.1.2 Sơ đồ chân chức chân PIC 16F877A Hình 1- 8: Sơ đồ chân PIC 16F877A • Chân MCLR/Vpp : có chúc MCLR: ngõ vào reset tích cực mức thấp Vpp: ngõ vào nhận điện áp ghi liệu vào nhớ nội • • • • flash Chân RA0/AN0: có chức RA0: xuất / nhập số AN0: ngõ vào tương tự kênh Chân RA1/NA1: RA1: xuất / nhập số AN1: ngõ vào tương tự kênh Chân RA2/AN2/VREF-/CVREF: RA2: xuất / nhập số AN2: ngõ vào tương tự kênh thứ VREF-: ngõ vào điện áp chuẩn (thấp) ADC CVREF: điện áp tham chiếu VREF ngõ so sánh Chân RA3/AN3/VREF+: RA3: xuất / nhập số AN3: ngõ vào tương tự kênh Đồ án • • • • • • VREE+: ngõ vào điện áp chuẩn (cao) A/D Chân RA4/TOCKI/C1OUT: RA4: xuất / nhập số - mở cấu tạo ngõ TOCKI: ngõ vào xung clock từ bên cho Timer0 C1OUT: ngõ so sánh Chân RA5/AN4/ SS /C2OUT: RA5: xuất / nhập số AN4: ngõ vào tương tự kênh SS: ngõ vào chọn lựa SPI phụ C2OUT: ngõ so sánh Chân RE0/ RD /AN5: RE0: xuất / nhập số RD: điều khiển đọc port song song AN5: ngõ vào tương tự kênh5 Chân RE1/ WR /AN6: RE1: xuất / nhập số WR: điều khiển ghi port song song AN6: ngõ vào tương tự kênh6 Chân RE2/ CS /AN7: RE2: xuất / nhập số CS: Chip chọn lựa điều khiển port song song AN7: ngõ vào tương tự kênh Chân OSC1/CLKI: OSC1: ngõ vào dao động thạch anh ngõ vào nguồn xung bên ngồi Ngõ vào có mạch Schmitt Trigger sử dụng dao động RC CLKI: ngõ vào nguồn xung bên ngồi • Chân OSC2/CLKO: OSC2: ngõ dao động thạch anh Kết nối đến thạch anh cộng hưởng CLKO: chế độ RC, ngõ OSC2, ¼ tần số OSC1 tốc độ chu kì lệnh • Chân RC0/T1OSO/T1CKI: RC0: xuất / nhập số T1OSO: ngõ dao động Timer1 T1CKI: ngõ vào xung Clock từ bên ngồi Timer1 • Chân RC1/T1OSI/CCP2: RC1: xuất / nhập số Đồ án T1OSI: ngõ vào dao động Timer1 CCP2: ngõ vào Capture2, ngõ Compare2, ngõ PWM2 • Chân RC2/CCP1: RC2: xuất / nhập số CCP1: ngõ vào Capture1, ngõ Compare1, ngõ PWM1 • Chân RC3/SCK/SCL: RC3: xuất / nhập số SCK: ngõ vào xung clock nối tiếp đồng bộ/ngõ chế độ SPI SCL: ngõ vào xung clock nối tiếp đồng bộ/ngõ chế độ I2C • Chân RD0/PSP0: RD0: xuất / nhập số PSP0: liệu port song song • Các chân RD1/PSP1, RD2/PSP2, RD3/PSP3, RD4/PSP4, RD5/PSP5, • • • • • • • • • RD6/PSP6, RD7/PSP7 chức tương tự chân RD0/PSP0 Chân RB0/INT: RB0: xuất / nhập số INT: ngõ vào nhận tin hiệu ngắt Chân RB1: xuất / nhập số Chân RB2: xuất nhập số Chân RB3/PGM: RB3: xuất / nhập số PGM: chân cho phép lập trình điện áp thấp ICSP Chân RB4, RB5: xuất / nhập số Chân RB6/PGC: RB6: xuất / nhập số PGC: mạch gở rối xung clock cho lập trình ICSP Chân RB7/PGD: RB7: xuất / nhập số PGD: mạch gở rối liệu cho lập trình ICSP Chân RC4/SDI/SDA: RC4: xuất / nhập số SDI: liệu vào SPI SDA: xuất nhập liệu I2C Chân RC5/SDO: RC5: xuất / nhập số SDO: liệu SPI Đồ án • Chân RC6/TX/CK: RC6: xuất / nhập số TX: truyền bất đồng USART CK: xung đồng USART • Chân RC7/RX/DT: RC7: xuất / nhập số RX: nhận liệu bất đồng USART DT: liệu đồng USART • Chân Vdd chân Vss: chân nguồn PIC 1.4.2 DS1307 1.4.2.1 Giới thiệu DS1307 DS1307 chip đồng hồ thời gian thực (RTC : Real-ime clock), khái niệm thời gian thực dùng với ý nghĩa thời gian tuyệt đối mà người sử dụng, tính giây, phút, Chip có ghi bit chứa thời gian : giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm Ngồi DS1307 có ghi điều khiển ngõ phụ 56 ghi trống dùng RAM 1.1.1.2 Sơ đồ chân Hình 1- 9: Sơ đồ chân DS1307 Các chân DS1307 mô tả sau: X1vàX2 2ngõ kết nối với thạch anh 32.768KHz -> tạo dao động cho chip VBAT kết nối với cực dương pin dự phòng ta dùng Pin CMOS 3V GND nối đất VCC nối với nguồn 5VDC SQW / OUT ngõ xuất xung vuông SCL chân nhận xung clock đồng két nối bus I2C SDA chân liệu kết nối với I2C 10 Đồ án void Read_Bytes_From_DS1307_RTC(unsigned char Address, unsigned char* pData, unsigned int NoOfBytes) { unsigned int i; unsigned char temp; i2c_start();//khoi dong i2c while(i2c_write(Device_Address_DS1307_EEPROM + 0) == 1)//Kiem tra xem slave co ban ron gi khong { i2c_start(); } i2c_write(Address);//gui lenh lam viec voi thoi gian i2c_start();//khoi dong lai i2c i2c_write(Device_Address_DS1307_EEPROM + 1);//khi muon doc du lieu tu slave thi phai cong them: pData[0] =i2c_read(1);//doc du lieu for(i=1;i>4)*10 + (Temp&0x0F); pRTCArray[3] = TwentyFourHoursMode; } return pRTCArray; } 28 Đồ án void Set_DS1307_RTC_Date(unsigned char Date, unsigned char Month, unsigned char Year, unsigned char Day) { // chuyen cac gia tri sau ve gia tri BCD pRTCArray[0] = (((unsigned char)(Day/10))