MẠCH ĐỒNG hồ điện tử dùng PIC 16f877a (có code) .......................... MẠCH ĐỒNG hồ điện tử dùng PIC 16f877a (có code) .......................... MẠCH ĐỒNG hồ điện tử dùng PIC 16f877a (có code) .......................... MẠCH ĐỒNG hồ điện tử dùng PIC 16f877a (có code) ..........................
MẠCH ĐỒNG HỒ ĐIỆN TƯ MỤC LỤC CHƯƠNG TỔNG QUAN VỀ MẠCH ĐỒNG HỒ ĐIỆN TƯ -1 1.1 GIỚI THIỆU 1.1.1 Cách thức hoạt động của mạch đồng hồ -1 1.1.2 PIC 16F877A -1 1.1.3 LCD 16x2 -2 1.2 HƯỚNG NGHIÊN CỨU 1.2.1 Đặt vấn đề 1.2.2 Giới hạn đề tài 1.2.3 Mục đích nghiên cứu CHƯƠNG MẠCH ĐỒNG HỒ HIỂN THỊ GIỜ, PHÚT, GIÂY CÓ SƯ DỤNG NÚT NHẤN -3 2.1 CÁC LINH KIỆN SƯ DỤNG TRONG MẠCH 2.1.1 PIC 16F877A -3 2.1.1.1 Thông số PIC 16F877A 2.1.1.2 Sơ đồ chân của PIC 16F877A 2.1.2 LCD 16x2 2.1.2.1 Thông số LCD 16x2 -5 2.1.2.2 Sơ đồ chân của LCD 16x2 2.1.3 Điện trở 2.1.4 Biến trở volume 2.1.5 Tụ điện gốm -8 2.1.6 Diode phát quang ( LED) 2.1.7 Nút nhấn 2.1.8 Thạch anh -9 CHƯƠNG THIẾT KẾ MẠCH TỔNG QUÁT -10 3.1 SƠ ĐỒ KHỐI CỦA MẠCH -10 3.2 SƠ ĐỒ NGUYÊN LÝ TỪNG KHỐI 10 3.2.1 Khối điều khiển -10 3.2.1 Khối xử lý -11 3.2.1 Khối hiển thị 12 3.3 SƠ ĐỒ NGUYÊN LÝ CỦA MẠCH 13 3.4 SƠ ĐỒ IN MẠCH -14 CHƯƠNG KẾT QUẢ THỰC TẾ 14 CHƯƠNG KẾT LUẬN -15 5.1 KẾT QUẢ -15 5.2 ỨNG DỤNG 15 5.3 HƯỚNG PHÁT TRIỂN 15 TÀI LIỆU THAM KHẢO 16 DANH MỤC HÌNH VE Hình 1-1 : PIC 16F877A Hình 1-2 : LCD 16x2 Hình 2-1 : Sơ đồ chân PIC 16F877A Hình 2-2 Sơ đồ chân LCD 16x2 Hình 2-3 Điện trơ Hình 2-4 Biến trơ volume Hình 2-5 Tụ gốm Hình 2-6 LED Hình 2-7 Nút nhấn Hình 2-8 Thạch anh Hình 3-1 Sơ đồ nguyên lý khối điều khiển Hình 3-2 Sơ đồ nguyên lý khối xử lý Hình 3-3 Sơ đồ nguyên lý khối hiển thi Hình 3-4 Sơ đồ nguyên lý của mạch Hình 3-5 Sơ đồ mạch in Hình 4-1 Kết quả thực tế DANH MỤC VIẾT TẮT AC AlternatingCurrent DC DicrectCurrent PIC Programable Intelligent Computer LCD Liquid Crystal Display VCC VoltageColector to Colector VEE VoltageEmitorEmitor VDD VoltageDrainDrain ĐỒ ÁN TRANG 1/16 CHƯƠNG TỔNG QUAN VỀ MẠCH ĐỒNG HỒ ĐIỆN TƯ 1.1 GIỚI THIỆU Mạch đồng hồ là mạch điện sử dụng LCD 16x2 để hiển thị giờ, phút, giây thông qua việc xử lý từ PIC ( code được nạp vào PIC) Có thể điều chỉnh thời gian bằng cách sử dụng nút nhấn 1.1.1 Cách thức hoạt động của mạch đồng hồ Khi được cấp nguồn 5V vào, mạch sẽ hoạt động, LCD sáng đồng thời hiển thị thời gian khởi điểm là 00:00:00 tương ứng Giờ:Phút:Giây Sau được chỉnh đúng thời gian hiện tại đồng hồ sẽ chạy liên tục với điện áp trì suốt quá trình 1.1.2 PIC 16F877A Hình 1-1 : PIC 16F877A [1] PIC là viết tắt của "Programable Intelligent Computer", có thể tạm dịch là máy tính thông minh PIC 16F877A thuộc họ vi điều khiển PIC, hiện Việt Nam và thế giới họ vi điều khiển này được sử dụng khá rộng rãi Việc này tạo nhiều thuận lợi cho việc tìm hiểu và phát triển cũng trao đổi học tập MẠCH ĐỒNG HỒ ĐIỆN TƯ SVTH : NGUYÊN NHÂT KHÁNH 1.1.3 LCD 16x2 Hình 1-2 : LCD 16x2 [1] Ngày nay, thiết bị hiển thị LCD( Liquid Crystal Display) được sử dụng rất nhiều các ứng dụng của vi điều khiển LCD có rất nhiều ưu điểm so với các dạng hiển thị khác : Nó có khả hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẽ 1.2 HƯỚNG NGHIÊN CỨU 1.2.1 Đặt vấn đề Qua phần giới thiệu bên chúng ta cũng hiều được một phần thông dụng của mạch đồng hồ sử dụng PIC 16F877A và LCD 16x2 Đồng hồ là vật thiết yếu cuộc sống vì vậy việc chế tạo và phát triển một chiếc đồng hồ thông dụng, dễ sử dụng và tốn ít chi phí là khá quan trọng, bằng việc sử dụng PIC 16F877A và LCD chúng ta có thể giúp ta dễ dàng làm việc đó 1.2.2 Giới hạn đề tài Mạch đồng hồ số hiển thị Giờ, Phút, Giây Sử dụng nút nhấn để chỉnh thời gian 1.2.3 Mục đích nghiên cứu Mạch đồng hồ số hiển thị Giờ, Phút, Giây đã biết là vật dụng thiết yếu của người hiện Qua việc nghiên cứu và chế tạo, sinh viên đã có điều kiện tổng hợp lại kiến thức đã được truyền đạt tại trường Đại Học Tôn Đức Thắng, từ đó có thể áp dụng thực tế và nâng cao kỹ kiến thức chuyên môn cho mình CHƯƠNG MẠCH ĐỒNG HỒ HIỂN THỊ GIỜ, PHÚT, GIÂY CÓ SƯ DỤNG NÚT NHẤN 2.1 CÁC LINH KIỆN SƯ DỤNG TRONG MẠCH 2.1.1 PIC 16F877A 2.1.1.1 Thông số PIC 16F877A [4] -Nguồn cấp 2-5V -Thạch anh tối đa 20MHz -Tụ C1 và C2 15-30pF -PIC 16F877A độ dài lệnh gồm 35 lệnh có độ dài 14 bit -Tốc độ tối đa cho phép là 20MHz với một chu kỳ lệnh là 200ns -Bộ nhớ chương trình 8Kx14bit -Bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte -Số Port I/O là với 33 PIN I/O -Các đặc tính ngoại vi bao gồm các khối chức sau: +Timer : bộ đếm bit +Timer : bộ đếm 16 bit +Timer : bộ đếm bit -Đặc tính Analog : +8 kênh chuyển đổi ADC 10 bit +Hai bộ so sánh -Bên cạnh đó là một vài đặc tính khác của vi điều khiển như: +Bộ nhớ flash với khả ghi và xóa 100.000 lần +Bộ nhớ EEPROM với khả ghi và xóa 1.000.000 lần +Dữ liệu bộ nhớ EEPROM có thể lưu trữ 40 năm +WatchDog Time 2.1.1.2 Sơ đồ chân của PIC 16F877A Hình 2-1 : Sơ đồ chân PIC 16F877A [1] PIC 16F877A CÓ TỔNG CỘNG 40 CHÂN GỒM CỔNG XUẤT NHẬP LÀ : PORTA,PORTB,PORC,PORTD,PORTE [2] -PORT A : gồm I/O pin (2,3,4,5,6,7) Đây là các chân chiều nghĩa là có thể xuất nhập Chức I/O này được điều khiển bởi ghi TRISA(địa chỉ 85H) -PORT B : gồm I/O pin ( 33,34,35,36,37,38,39,40) Thanh ghi điều khiển xuất nhập tương ứng là TRISB( địa chỉ 86H)) PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 -PORT C : gồm I/O pin ( 15,16,17,18,23,24,25,26) Thanh ghi điều khiển xuất nhập tương ứng là TRISC( địa chỉ 87H) Bên cạnh đó PORT C còn chứa chức của bộ so sánh, bộ Timer1, bộ PWM vad các chuẩn giao tiếp nối tiếp I2C,SPI,SSP,USART -PORT D : gồm I/O pin ( 19,20,21,22,27,28,29,30) Thanh ghi điều khiển xuất nhập tương ứng là TRISD PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP(parallel Slave Port) -PORT E : gồm I/O pin ( 8,9,10) Thanh ghi điều khiển xuất nhập tương ứng là TRISE Các chân của TRISE có ngõ vào analog Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP PIC 16F877A CÓ CÁC CHÂN CHỨC NĂNG CÒN LẠI NHƯ: -Các chân nguồn : gồm VDD ( 11,32) là chân cấp nguồn dương và VSS( 12,31 ) là đất -Chân reset là chân số 1(MLCR) chân này có nhiệm vụ khởi động lại chip được tích cực -Chân mạch dao động : gồm chân số 13(OSC1) và 14(OSC2) Tốc độ dao động được xác định thông qua tần số dao động của bộ tạo dao động 2.1.2 LCD 16x2 2.1.2.1 Thông số LCD 16x2 [4] -Nguồn cấp 2,2V-5V -Dòng điện ngõ vào -1uA đến 1uA -Tần số dao động nội 190KHz- 350KHz ( điển hình 270KHz) -Có ghi bit quan trọng : Thanh ghi lệnh IR(Instructor Register) và ghi dữ liệu DR(Data Register) +Thanh ghi lệnh IR dùng điều khiển LCD người dùng phải lệnh thông qua tám đường BUS DB0-DB7 Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào ghi IR +Thanh ghi DR dùng để chứa dữ liệu bit ghi vào cùng RAM DDRAM hoặc CGRAM(ở chế độ ghi ) hoặc dùng để chứa dữ liệu từ vùng RAM này gởi cho MPU ( ở chế độ đọc ) Nghĩa là MPU sẽ ghi thông tin vào DR, mạch nội chip sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM 2.1.2.2 Sơ đồ chân của LCD 16x2 Hình 2-2 Sơ đồ chân LCD 16x2 [1] -Chân GND : chân này nối đất -Chân VDD : chân này nối với nguồn 5V -Chân VSS : chân này điều chỉnh độ tương phản của LCD -Chân RS : Chân chọn ghi (Register Select) Nối chân RS với logic hoặc logic để chọn ghi +Logic : BUS DB0-DB7 sẽ nối với ghi lệnh IR của LCD +Logic : BUS DB0-DB7 sẽ nối với ghi dữ liệu DR của LCD -Chân R/W : chân chọn chế độ đọc ghi ( mức là ghi và là đọc ) -Chân E : là chân cho phép (Enable) Sau các tín hiệu được đặt lên BUS DB0-DB7, các lệnh chỉ được chấp nhận có xung cho phép chân E -DB0-DB7 : đường dữ liệu, có cách chọn sử dụng, nếu ở chế độ bit ta chọn từ chân DB0 đến DB7 còn ở chế độ bit thì ta chỉ sử dụng từ DB4 đến DB7 -Ngoài còn có chân A-K : là chân đèn nền ( A là nguồn dương, K là nguồn âm) CHƯƠNG THIẾT KẾ MẠCH TỔNG QUÁT 3.1 SƠ ĐỒ KHỐI CỦA MẠCH KHỐI ĐIỀU KHIỂN KHỐI XỬ LY KHỐI HIỂN THI 3.2 SƠ ĐỒ NGUN LÝ TỪNG KHỚI 3.2.1 Khới điều khiển Hình 3-1 Sơ đồ nguyên lý khối điều khiển -Khi được cấp nguồn 5V qua điện trở , một đầu của nút nhấn được nối chung nút với điện trở và PIN của PIC, đầu còn lại nối đất -Trong sơ đồ ta có thể thấy được nút nhấn đảm nhiệm vai trò chính và các điện trở giúp giảm dòng điện Khi cấp nguồn 5V, ta nhấn nút nhấn thì sẽ kích một giá trị vào PIN của PIC từ đó ta có thể điều khiển PIC mong muốn 3.2.2 Khối xử lý Hình 3-2 Sơ đồ nguyên lý khối xử lý -Trong khối điều khiển này có thạch anh và reset +Thạch anh ở sử dụng 8M và tụ điện là tụ gốm 33p +Reset : Khi cấp nguồn 5V, ta nhấn nút nhấn thì sẽ kích một giá trị vào PIN của PIClàm cho PIC trở về trạng thái ban đầu 3.2.2 Khối hiển thi Hình 3-3 Sơ đồ nguyên lý khối hiển thi -Khối hiển thị đó LCD đóng vai trò chính, nhận dữ liệu từ PIC, LCD hiển thị màn hình -LCD 16x2 gồm 16 cột và hàng hoạt động được cấp nguồn 5V vào chân VDD và 0V vào chân VSS, chân VEE sẽ điều chỉnh độ tương phản của LCD thông qua một biến trở Trong thực tế LCD có đến 16 chân đó là thêm chân đèn nền : A và K, chân này cũng được cấp nguồn 5V với A và 0V với K 3.3 SƠ ĐỜ NGUN LÝ CỦA MẠCH Hình 3-4 Sơ đờ nguyên lý của mạch -Sau cấp nguồn, sử dụng nút nhấn để điều chỉnh thời gian Duy trì nguồn để thời gian được hiển thị liên tục 3.4 SƠ ĐỜ IN MẠCH Hình 3-5 Sơ đờ mạch in -Mạch in được được thiết kế bằng phần mềm Orcad CHƯƠNG KẾT QUẢ THỰC TẾ Hình 4-1 Kết quả thực tế CHƯƠNG KẾT LUẬN 5.1 KẾT QUẢ -Mạch hoạt động bình thường và không tốn nhiều chi phí -Sau đã hoàn chỉnh ta có thể sử dụng một cách dễ dàng 5.2 ỨNG DỤNG -Sử dụng xem thời gian 5.3 HƯỚNG PHÁT TRIỂN -Dựa nguyên lý hoạt động của mạch, có thể nâng cấp lên đồng hồ đếm thời gian, ngày tháng năm, báo thức TÀI LIỆU THAM KHẢO TIẾNG VIỆT: [1] https://www.google.com.vn [2] http://www.dientumaytinh.com [3] http://codientu.org TIẾNG ANH: [4] http://www.alldatasheet.com PHỤ LỤC A #include " \DOAN1\mp.h" #include "lcd.h" #use delay(clock=8000000) unsigned int16 t=0; #define Menu PIN_B0 #define Set PIN_B1 #define Down PIN_B2 #define Up PIN_B3 char QuetNutNhan(void); char QuetNutNhan(void) { if(INPUT(Menu)==0) { return 1; } else if(INPUT(SET)==0) { return 2; } else if(INPUT(UP)==0) { return 3; } else if(INPUT(Down)==0) { return 4; MẠCH ĐỒNG HỒ ĐIỆN TƯ SVTH : NGUYÊN NHÂT KHÁNH } else { return 0; } } void main() { signed int8 Giay=0,Phut=0,Gio=0; char CoMenu=0,CoSet=0; setup_timer_0(T0_INTERNAL|T0_DIV_256); set_timer0(0); enable_interrupts(INT_TIMER0); enable_interrupts(GLOBAL); output_bit(PIN_B4,0); lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc," Thoi Gian "); while(TRUE) { for(Gio=0;Gio23) { Gio=0; } break; } case 2: { Phut=Phut+10; if(Phut>59) { Phut=0; } break; } case 3: { Giay=Giay+10; if(Giay>59) { Giay=0; } break; } } } MẠCH ĐỒNG HỒ ĐIỆN TƯ SVTH : NGUYÊN NHÂT KHÁNH if (QuetNutNhan()==4) { while (QuetNutNhan()==4); switch(CoSet) { case 1: { Gio=Gio-1; if(Gio