Mục Lục
LỜI NÓI ĐẦU 4
CHƯƠNG 1. PHÂN TÍCH HỆ THỐNG 5
1.1. KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN 5
1.2. LỰA CHỌN GIẢI PHÁP 7
1.2.1. Giải pháp công nghệ 7
1.2.2. Giải pháp thiết kế 7
1.2.3. Xác định bài toán và giới hạn của đề tài 7
CHƯƠNG 2. THIẾT KẾ HỆ THỐNG 8
2.1. SƠ ĐỒ KHỐI TỔNG QUÁT CỦA HỆ THỐNG 8
2.2. SƠ ĐỒ CALL GRAPH. 9
2.3. SƠ ĐỒ ĐẶC TẢ CỦA HỆ THỐNG. 9
2.4. CÁC MODULE TRONG HỆ THỐNG. 10
2.4.1. Module khối nguồn. 10
2.4.2. Module Reset 10
2.4.3. Module điều khiển. 10
2.4.4. Module tạo xung giao động. 10
2.4.5. Module hiển thị. 10
2.4.6. Module tạo thời gian thực. 11
2.4.7. Module xử lý. 11
2.5. LỰA CHỌN LINH KIỆN 11
2.5.1. Vi Điều Khiển AT89C52. 11
2.5.2. Led 7 đoạn 13
2.5.3. IC thời gian thực DS1307 16
2.5.4. IC giải mã 74138 23
2.6. SƠ ĐỒ NGUYÊN LÝ 26
2.7. NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH 27
2.7.1. Khối điều khiển. 27
2.7.2. Khối hiển thị 27
2.7.3. Khối tạo thời gian thực IC DS1307. 28
2.8. LƯU ĐỒ THUẬT TOÁN 29
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG 37
3.1. XÂY DỰNG PHẦN CỨNG. 37
3.2.1.Sơ đồ bố trí linh kiện. 37
3.2.2.Sơ đồ mạch in. 38
3.2 XÂY DỰNG PHẦN MỀM. 39
3.2.1. Chương trình nạp vào Vi điều khiển IC AT89S52 39
3.2.2. Mã lập trình 39
KẾT LUẬN 44
TÀI LIỆU THAM KHẢO: 45
LỜI NÓI ĐẦU
Ngày nay thế giới đã bước sang kỷ nguyên mới, kỷ nguyên của kỹ thuật công nghệ nói chung, kỹ thuật điều khiển nói riêng. Hệ thống điều khiển khiển tự động có ứng dụng rộng rãi trong các lĩnh vực như: Kỹ thuật điện tử, Viễn thông, Điều khiển tự động Trong xu thế phát triển hiện nay mọi hoạt động đều được tự động hóa bằng các thiết bị điện tử. Các thiết bị điện tử đang dần thay thế mọi hoạt động của con người. Theo dòng phát triển công nghệ, công nghệ bán dẫn đã và đang phát triển rất mạnh. Thành tựu của nó là sự ra đời của các hệ thống nhúng. Từ khi ra đời đến nay các hệ thống nhúng đóng góp vai trò hết sức quan trọng trong các hệ thống điều khiển .
Sau gần 4 năm học tập và nghiên cứu ở trường, chúng em đã được làm quen với các môn học chuyên ngành.Với mục đích nhằm hiểu rõ, nắm bắt công nghệ dòng vi xử lý vi điều khiển và khai thác các ứng dụng của nó trong cuộc sống, để gắn liền được lý thuyết với thực tế và để thấy được những tính năng ưu việt của dòng vi xử lý vi điều khiển ta đi tìm hiểu về đề tài : “Thiết kế hệ thống đồng hồ thời gian thực hiển thị lịch âm dương”.
Tuy nhiên do kiến thức chuyên môn còn hạn chế,tài liệu tham khảo có giới hạn nên còn xảy ra nhiều sai sót. Chúng em rất mong mong thầy và các bạn góp ý bổ sung để bản đồ án của chúng em được hoàn thiện hơn và giúp chúng em hiểu biết hơn trong quá trình học tập tiếp theo.
45 trang |
Chia sẻ: banmai | Lượt xem: 2561 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Thiết kế hệ thống đồng hồ thời gian thực hiển thị lịch âm dương, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nhận xét của giáo viên hướng dẫn
………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
Thái Nguyên, Ngày Tháng Năm 2011
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên )
Nhận xét của giáo viên chấm
……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
Thái Nguyên, Ngày Tháng Năm 2011
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
Mục Lục
LỜI NÓI ĐẦU
Ngày nay thế giới đã bước sang kỷ nguyên mới, kỷ nguyên của kỹ thuật công nghệ nói chung, kỹ thuật điều khiển nói riêng. Hệ thống điều khiển khiển tự động có ứng dụng rộng rãi trong các lĩnh vực như: Kỹ thuật điện tử, Viễn thông, Điều khiển tự động… Trong xu thế phát triển hiện nay mọi hoạt động đều được tự động hóa bằng các thiết bị điện tử. Các thiết bị điện tử đang dần thay thế mọi hoạt động của con người. Theo dòng phát triển công nghệ, công nghệ bán dẫn đã và đang phát triển rất mạnh. Thành tựu của nó là sự ra đời của các hệ thống nhúng. Từ khi ra đời đến nay các hệ thống nhúng đóng góp vai trò hết sức quan trọng trong các hệ thống điều khiển .
Sau gần 4 năm học tập và nghiên cứu ở trường, chúng em đã được làm quen với các môn học chuyên ngành.Với mục đích nhằm hiểu rõ, nắm bắt công nghệ dòng vi xử lý vi điều khiển và khai thác các ứng dụng của nó trong cuộc sống, để gắn liền được lý thuyết với thực tế và để thấy được những tính năng ưu việt của dòng vi xử lý vi điều khiển ta đi tìm hiểu về đề tài : “Thiết kế hệ thống đồng hồ thời gian thực hiển thị lịch âm dương”.
Tuy nhiên do kiến thức chuyên môn còn hạn chế,tài liệu tham khảo có giới hạn nên còn xảy ra nhiều sai sót. Chúng em rất mong mong thầy và các bạn góp ý bổ sung để bản đồ án của chúng em được hoàn thiện hơn và giúp chúng em hiểu biết hơn trong quá trình học tập tiếp theo.
Chúng em xin chân thành cảm ơn!
CHƯƠNG 1. PHÂN TÍCH HỆ THỐNG
1.1. KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN
Giới thiệu về hệ thống thời gian thực
Trong lĩnh vực công nghệ thông tin, người ta nói về hệ thống thông tin thời gian thực khi hệ thống đó điều khiển một vật thể vật lý với một tốc độ phù hợp với sự tiến triển của tiến trình chủ. Một ví dụ dễ hiểu (hệ thống thông tin điều khiển màn hình hiển thị giờ chính xác của các tàu điện ngầm sẽ đến và đi tại một gare nhất định). Hệ thống thông tin thời gian thực khác với những hệ thống thông tin khác bởi sự gò bó về thời gian, do đóviệc tuân thủ các nguyên tắc cũng quan trọng như độ chính xác của kết quả, nói một cách khác, hệ thống không chỉ đơn giản là
đưa ra kết quả chính xác mà nó còn phải thực hiện một xử lý trong một thời gian rất ngắn. Hệ thống thông tin thời gian thực ngày nay được ứng dụng trong rất nhiều lĩnh vực như: trong ngành công nghiệp sản xuất, kiểm soát tiến trình (trong nhà máy, hay trong viện hạt nhân, trong hệ thống hàng không, thông qua các hệ thống dẫn đường tích hợp trên máy bay và vệ tinh). Sự phát triển của hệ thống thông tin thời gian thực yêu cầu mỗi phần tử của hệ thống phải ở thời gian thực.
Khái niệm về hệ thống thời gian thực
Một hệ thời gian thực (RTC) là một hệ thống mà sự hoạt động tin cậy của nó không chỉ phụ thuộc vào sự chính xác của kết quả, mà còn phụ thuộc vào thời điểm đưa ra kết quả, hệ thống có lỗi khi yêu cầu về thời gian không được thoả mãn.
Hệ thống thời gian thực thiết kế nhằm cho phép trả lời lại các yếu tố kích thích phát sinh từ các thiết bị phần cứng trong một ràng buộc thời gian xác định. Ở đây ta có thể hiểu thế nào là một RTS(real time systems) bằng cách hiểu thế nào là một tiến trình, một công nghệ thời gian thực. Nhìn chung, trong những RTS chỉ có một số công việc được gọi là công việc thời gian thực, các công việc này có một mức độ khẩn cấp riêng phải hoàn tất. Sự thay đổi của sự kiện trong thế giới thực xảy ra rất nhanh, mỗi tiến trình giám sát sự kiện này phải thực hiện việc xử lý trong một khoảng thời gian ràng buộc gọi là deadline, khoảng thời gian ràng buộc này được xác định bởi thời gian bắt đầu và thời gian hoàn tất công việc. Trong thực tế, các yếu tố kích thích này xảy ra trong thời gian rất ngắn vào khoảng vài mili giây, thời gian mà hệ thống trả lại yếu tố kích thích đó tốt nhất vào khoảng dưới một giây, thường vào khoảng vài chục mili giây, khoảng thời gian này bao gồm thời gian tiếp nhận kích thích, xử lý thông tin và trả lời kích thích. Một yếu tố khác cần quan tâm trong RTS là những công việc thời gian thực này có tuần hoàn hay không? Công việc tuần hoàn thì ràng buộc thời gian ấn định trong từng chu kỳ xác định, công việc không tuần hoàn xảy ra với ràng buộc thời gian vào lúc bắt đầu và kết thúc công việc, ràng buộc này chỉ được xác định vào lúc bắt đầu công việc. Các biến cố kích hoạt công việc không tuần hoàn thường dựa trên kỹ thuật xử lý ngắt của hệ thống phần cứng.
Về cấu tạo, RTS thường được cấu thành từ các thành tố chính sau:
-Đồng hồ thời gian thực: Cung cấp thông tin thời gian thực.
-Bộ điều khiển ngắt: Quản lý các biến cố không theo chu kỳ.
-Bộ định hiểu: Quản lý các quá trình thực hiện.
-Bộ quản lý tài nguyên: Cung cấp các tài nguyên máy tính.
- Bộ điều khiển thực hiện: Khởi động các tiến trình.
Các thành tố trên có thể được phân định là thành phần cứng hay phần mềm tùy thuộc vào hệ thống và ý nghĩa sử dụng. Thông thường các RTS được kết hợp vào phần cứng có khả năng tốt hơn so với phần mềm có chức năng tương ứng và tránh được chi phí quá đắt cho việc tối ưu hóa phần mềm. Ngày nay chi phí phần cứng ngày càng rẻ, chọn lựa ưu tiên phần cứng là một xu hướng chung.
Các loại hệ thống thơi gian thực
Các RTS thường được phân thành hai loại Hệ thống thời gian thực cứng (Hard reatime system) và Hệ thống thời gian thực mềm(Soft reatime system ):
Hệ thống thời gian thực cứng là hệ thống mà các hành động của nó phải không bao giờ vi phạm các ràng buộc thời gian trong đó có thời hạn lập lịch,hệ thống phải tiếp nhận và nắm bắt được thời hạn lập lịch của nó tại mọi thời điểm.Hệ thống có lỗi hoặc sai sót trong việc tiếp nhận thời hạn sẽ gây ra hậu quả nghiêm trọng,thiệt hại về vật chất,gây ảnh hưởng sấu đến sức khỏe,đời sống con người,thậm chí chết người. Vói hệ thống thời gian thực cứng dữ liệu trễ là không tốt.một ví dụ về hệ thống thời gian thực cứng là hệ thống kiểm soát không lưu .Trong hệ thống này,một phân phối đường bay,thời gian cất cánh,thời gian hạ cánh không hợp lý,không đúng lúc có thể gây ra tai nạ máy bay mà hậu quả của nó khó mà lường trước được.
Ngược lại, hệ thống thời gian thực mềm,thời gian trả về của hệ thống cho các yểu tố kích thích quan trọng, tuy nhiên trong trường hợp ràng buộc này bị vi phạm, tức là thời gian trả về của hệ thống vượt quá giới hạn trễ cho phép, hệ thống vẫn cho phép tiếp tục hoạt động bình thường, không quan tâm đến các tác hại do sự vi phạm này gây ra.
Trong cả hai loại này, máy tính thường can thiệp trực tiếp hoặc gián tiếp đến các thiết bị vật lý để kiểm soát cũng như điều khiển sự hoạt động của thiết bị này. Đứng trên góc độ này người ta chia các RTS ra làm hai loại sau:
- Embededed system: Bộ xử lý điều khiển là một phần trong toàn bộ thiết bị, nó được sản xuất trọn gói từ yếu tố cứng từ nhà máy, người ta sử dụng không biết về chi tiết của nó mà thông qua các nút điều khiển, các bảng số. Với hệ thống này, ta không thấy được các thiết bị như trong máy tính bình thường như bàn phím, màn hình… mà thay vào đó là các nút điều khiển, các bảng số, các bảng số hay các màn hình chuyên dụng đặc chưng cho các hệ thống, máy giặt là một ví dụ. Người sử dụng chỉ việc bấm nút chọn chương trình giặt, xem kết quả qua hệ thống đèn tín hiệu…Bộ vi xử lý trong Embeded system này đã được lập trình trước và gắn chặt vào ngay từ khi sản xuất và không thể lập trình lại những chương trình này hoạt động độc lập, không có sự giao tiếp với hệ điều hành cũng như không cho phép người sử dụng can thiệp vào.
- Loại thứ hai là bao gồm những hệ thống có sự can thiệp của máy tính thông thường. Thông qua máy tính ta hoàn toàn có thể kiểm soát cũng như điều khiển mọi hoạt động của thiết bị phần cứng của hệ thống này. Những chương trình điều khiển này có rất nhiều loại, phục vụ cho nhiều mục đích khác nhau và có thể viết lại cho phù hợp với yêu cầu thực tế. Hiển nhiên thì loại hệ thống này hoạt động được phải cần một hệ điều hành(HĐH) điều khiển máy tính. HĐH này phải có khả năng nhận biết được thiết bị phần cứng, có khả năng hoàn tất công việc trong giới hạn thời gian nghiêm ngặt. HĐH này phải là HĐH hỗ trợ xứ lý thời gian thực Realtime operation system (RTOS)
1.2. LỰA CHỌN GIẢI PHÁP
1.2.1. Giải pháp công nghệ
Qua phân tích ở trên, nhóm chúng em đưa ra giải pháp xây dựng hệ thống đồng hồ thời gian thực hiển thị lịch âm dương: hiển thị thời gian giờ, phút, thứ, ngày, tháng, năm dương lịch và ngày, tháng âm lịch qua led 7 đoạn. Thời gian cập nhật tự đông và hiển thị qua led 7 đoạn có thể quan sát từ khoảng cách xa.
1.2.2. Giải pháp thiết kế
- Đầu vào hệ thống lấy dữ liệu từ DS1307, là IC thời gian thực nhằm cung cấp giờ cho hệ thống, để cập nhật thời gian, ngày tháng năm.
- Xử lý,điều khiển dùng viđiều khiển AT89C52. Lập trình vi điều khiển để xử lý đọc ghi giờ, tính toán hiển thị thời gian.
- Để hiển thị dùng led 7 thanh: lấy tín hiệu ra từ viđiều khiển thông báo thời gian,ngày,tháng năm.
- Điều chỉnh thời gian thông qua nút bấm: lựa chọn cài đặt giờ, tăng giảm thời gian.
1.2.3. Xác định bài toán và giới hạn của đề tài
Hệ thống đồng hồ thời gian thực hiển thị lịch âm dương:
- Đầu vào hệ thống lấy dữ liệu từ DS1307, là IC thời gian thực nhằm cung cấp giờ cho hệ thống. Đầu ra được hiển thị trên LED 7 thanh.
- Hiển thị chính xác thời gian thực, ngày tháng âm dương lịch.
- Làm việc với điện áp cấp từ pin
- Làm việc được lâu dài và ổn định
- Quan sát dễ dàng,có thể quan sát được thời gian ở khoảng cách tương đối xa.
CHƯƠNG 2. THIẾT KẾ HỆ THỐNG
2.1. SƠ ĐỒ KHỐI TỔNG QUÁT CỦA HỆ THỐNG
Khối xử lý
Khối nguồn
Tạo thời gian thực
Khối hiển thị
Điều khiển
Tạo xung dao động
Reset
Hình 2.1: Sơ đồ tổng quát hệ thống đồng hồ thời gian thực
Khối Nguồn: Cung cấp nguồn cho hệ thống.
Khối Hiển thị: Lấy tín hiệu ra từ chân IC để hiển thị thời gian, ngày tháng trên Led 7 thanh.
Khối RESET có tác dụng đưa vi điều khiển về trạng thái ban đầu.
Khối tạo xung dao động: có tác dụng tạo xung nhịp với tần số 12MHz cho VĐK hoạt động.
Khối tạo thời gian thực: cung cấp thông tin về giờ,phút,giây ,thứ,ngày,tháng, năm.
Khối xử lý: Dùng VDK để lấy tín hiệu từ khối điều khiển, tạo xung giao động, tạo thời gian thực… và đưa ra khối hiển thị.
Khối điều khiển: Gồm 4 nút ấn có tác dụng điều chỉnh thời gian, ngày tháng trong mạch.
2.2. SƠ ĐỒ CALL GRAPH.
CT
điều khiển chính
Giao tiếp RTC
Điều khiển hiển thị
RTC
Hiển thị
Nút bấm
Đọc, bấm nút
Hình 2.2.Sơ đồ call graph
2.3. SƠ ĐỒ ĐẶC TẢ CỦA HỆ THỐNG.
Tính toán thời gian
Đọc thời gian (RTC)
Càiđặt
Hiện thị
Bấm nút
Dò phím
Chọn led
Vị trí led
Đọc dữ liệu
Cài đặt
Hình 2.3.Sơ đồ đặc tả hệ thống thời gian thực
2.4. CÁC MODULE TRONG HỆ THỐNG.
2.4.1. Module khối nguồn.
Đây là module cấp nguồn cho hệ thống nhằm cung cấp điện áp chuẩn +5V.
-Yêu cầu đối với khối này:
+ Có thể lấy nguồn từ điện áp xoay chiều (hoặc pin) để cấp nguồn cho hệ thống.
+ Điện áp đầu ra của khối ( điện áp đầu vào của hệ thống) luôn ổn định tại mọi thời điểm.Mạch ổn áp cần cho vi điều khiển vì nếu nguồn cho vi điều khiển không ổn định thì sẽ treo VĐK, không chạy đúng hoặc reset liên tục thậm chí là chết chíp.
Với yêu cầu như trên ta lựa chọn mạch biến đổi điện áp xoay chiều thành 1 chiều qua máy biến thế.Sử dụng IC7805 để ổn áp.
2.4.2. Module Reset
Khối RESET có tác dụng đưa vi điều khiển về trạng thái ban đầu. Khi nút Reset được ấn điện áp +5V từ nguồn được nối vào chân Reset của vi điều khiển được chạy thẳng xuống đất lúc này điện áp tại chân vi điều khiển thay đổi đột ngột về 0, VĐK nhận biết được sự thay đổi này và khởi động lại trạng thái ban đầu cho hệ thống.
2.4.3. Module điều khiển.
Module dùng để điều khiển hệ thống.Yêu cầu :
+Thiết lập được cho vi điều khiển là thể làm việc bình thường hay chuyển sang chế độ cài đặt thời gian.
+Điều chỉnh tang(giảm) thời gian,ngày,tháng năm.Kết thúc việc thiết lập thời gian và điều chỉnh thời gian bằng một nút điều khiển.
Vậy ta lựa chọn bộ điều khiển gồm 4 nút ấn.
2.4.4. Module tạo xung giao động.
Đây là bộ dao động thạch anh có tác dụng tạo xung nhịp với tần số 12MHz cho VĐK hoạt động. Hai đầu này được nối vào 2chân XTAL1 và XTAL2 của VĐK.
2.4.5. Module hiển thị.
Khối Hiển thị: Lấy tín hiệu ra từ chân IC để hiển thị thời gian, ngày thángnăm.Khối hiển thị yêu cầu:
+Sử dụng nguồn chung toàn hệ thống,hoặc có thể dùng nguồn riêng tùy người thiết kế.
+Độ sáng đủ lớn để có thể quan sát được trong phạm vi trong phòng,góc nhìn rộng.màu sắc của số khi hiển thị dễ quan sát.
Lựa chọn hiển thị qua led 7 thanh,màu đỏ.
2.4.6. Module tạo thời gian thực.
- IC thời gian thực cần hoạt động được với nguồn cung cấp nhỏ, dùng để cập nhật thời gian và ngày tháng.Cung cấp thông tin về giờ,phút,giây ,thứ,ngày ,tháng, năm.Ngày cuối tháng sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31 ngày,bao gồm cả việc tự động nhảy năm. Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM.
- Khi mất nguồn IC thời gian thực vẫn duy trỳ hoạt động không cần điều chỉnh lại thời gian.IC có thêm nguồn riêng từ pin 3V.
- Với điều kiện như trên ta lựa chọn IC thời gian thực là IC DS1307.
2.4.7. Module xử lý.
Dùng VDK để lấy tín hiệu từ khối điều khiển, tạo xung giao động, tạo thời gian thực… và đưa ra khối hiển thị. Yêu cầu.
+ Tốc độ xử lý nhanh, chính xác.
+ Bộ nhớ không cần lớn.
Lựa chọn vi điều khiển AT89C52.
2.5. LỰA CHỌN LINH KIỆN
2.5.1. Vi Điều Khiển AT89C52.
a) Cấu tạo và chức năng các khối của AT89C52.
CPU( CPU centralprocessing unit) bao gồm:
ØThanh ghi tích lũy A
ØThanh ghi tích lũy phụ B
ØĐơn vị logic học (ALU)
ØThanh ghi từ trạng thái chương trình
ØBốn băng thanh ghi
ØCon trỏ ngăn xếp
Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash.
Bộ nhớ dữ liệu( RAM) gồm 256 byte.
Bộ UART, có chức năng truyền nhận nối tiếp.
3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện.
Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong.
Bộ lập trình( ghi chương trình lên Flash ROM) cho phép người sử dụng có thể nạp các chương trình cho chíp mà không cần các bộ nạp chuyên dụng.
Bộ chia tần số với hệ số chia là 12.
4 cổng xuất nhập với 32 chân.
b) Chức năng các chân của AT89C52
Port 0( P0.0=>P0.7): Port 0 gồm 8 chân, ngoài chức năng xuất nhập, port 0 còn là bus đa hợp dữ liệu và địa chỉ( AD0-AD7), chức năng này sẽ được sử dụng khi 89c52 giao tiếp với các thiết bị ngoài có kiến trúc Bus như các vi mạch nhớ, mạch PIO…
Port 1( P1.0=>P1.7): Chức năng duy nhất củaPort 1 là chức năng xuất nhập cũng như cácPort khác. Port1 có thể xuất nhập theo bit và theo byte.
Port 2( P2.0=>P2.7); Port 2 ngoài chức năng là cổng vào/ra nhưPort 0 và 1 còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài.
Port 3: Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thể
như sau:
Bit
Tên
Chức năng
P3.0
RXD
Dữ liệu nhận choPort nối tiếp
P3.1
TXD
Dữ liệu truyền choPort nối tiếp
P3.2
INT0
Ngắt bên ngoài 0
P3.3
INT1
Ngắt ngoài 1
P3.4
TO
Ngõ vào của Timer/counter0
P3.5
T1
Ngõ vào của Timer/counter1
P3.6
/WR
Xung ghi bộ nhớ dữ liệu ngoài.
P3.7
/RD
Xung đọc bộ nhớ dữ liệu ngoài.
Chân /PSEN : là chân điều khiển đọc chương trình ở bộ nhớ ngoài.
Chân ALE: ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển. Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như 7473.
Chân /EA: Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngoài. EA=1 thì thực hiện chương trình trong RAM nội. EA=0 thực hiện ở RAM ngoài.
RST( reset): Ngõ vào reset trên chân số 9. khi RST=1 thì bộ vi điều khiển sẽ được khởi động lại thiết lập ban đầu.
XTAL1, XTAL2: 2 chân này được nối song song với thạch anh tần số max=33 Mhz. Để tạo dao động cho bộ vi điều khiển.
Vcc, GND : cung cấp nguồn nuôi cho bộ vi điều khiển. cấp qua chân 20 và 40.
c) Sơ đồ AT89C52 trong mạch.
2.5.2. Led 7 đoạn
a)Các khái niệm cơ bản :
Trong các thiết bị, để báo trạng thái hoạt động của thiết bị đócho người sử dụng với thông số chỉ là các dãy số đơn thuần, thườngngười ta sử dụng "led 7 đoạn". Led 7 đoạn được sử dụng khi cácdãy số không đòi hỏi quá phức tạp, chỉ cần hiện thị số là đủ, chẳnghạn led 7 đoạn được dùng để hiển thị nhiệt độ phòng, trong cácđồng hồ treo tường bằng điện tử, hiển thị số lượng sản phẩm đượckiểm tra sau một công đoạn nào đó...
Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hìnhvà có thêm. ột led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn.
7 led đơn trên led 7 đoạn có Anode(cực +) hoặc Cathode(cực -) được nối chung vớinhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch điện. 8 cực còn lại trênmỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với mạchđiện. Nếu led 7 đoạn có Anode(cực +) chung, đầu chung này được nối với +Vcc, cácchân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tínhiệu đặt vào các chân này ở mức 0. Nếu led 7 đoạn có Cathode(cực -) chung, đầu chungnày được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng tháisáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1.
Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòngqua mỗi led đơn trong khoảng 10mA-20mA để bảo vệ led. Nếu kết nối với nguồn 5V cóthể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển.
Hình 2.5.2: Sơ đồ chân 7 SEG-COM-ANODE và hình ảnh minh họa
b) Sơ đồ vị trí các led :
Các điện trở 330Ω là các điện trở bên ngoài được kết nối để giới hạn dòng điện qua led nếu led 7 đoạn được nối với nguồn 5V.
c) Kết nối với Vi điều khiển:
Ngõ nhận tín hiệu điều khiển của led 7 đoạn có 8 đường, vì vậy có thể dùng 1 Port nào đó của Vi điều khiển để điều khiển led 7 đoạn. Như vậy led 7 đoạn nhận một dữ liệu 8 bit từ Vi điều khiển để điều khiển hoạt động sáng tắt của từng led đơn trong nó, dữ liệu được xuất ra điều khiển led 7 đoạn thường được gọi là "mã hiển thị led 7 đoạn". Có hai kiểu mã hiển thị led 7 đoạn: mã dành cho led 7 đoạn có Anode(cực +) chung và mã dành cho led 7 đoạn có Cathode(cực -) chung. Chẳng hạn, để hiện thị số 1 cần làm cho các led ở vị trí b và c sáng, nếu sử dụng led 7 đoạn có Anode chung thì phải đặt vào hai chân b và c điện áp là 0V(mức 0) các chân còn lại được đặt điện áp là 5V(mức 1), nếu sử dụng led 7 đoạn có Cathode chung thì điện áp(hay mức logic) hoàntoàn ngược lại, tức là phải đặt vào chân b vàc điện áp là 5V(mức 1).
Phần cứng được kết nối với 1 Port bất kì của Vi điều khiển, để thuận tiện choviệc xử lí về sau phần cứng nên được kết nối như sau: Px.0 nối với chân a, Px.1nối với chân b, lần lượt theo thứ tự cho đến Px.7 nối với chân h.
d) Bảng mã của Led Anode chung
- Bảng mã cho Led Anode chung (a là MSB, dp là LSB):
Số
a
b
c
d
e
f
g
dp
Mã Hex
0
0
0
0
0
0
0
1
1
03h
1
1
0
0
1
1
1
1
1
9Fh
2
0
0
1
0
0
1
0
1
25h
3
0
0
0
0
1
1
0
1
0Dh
4
1
0
0
1
1
0
0
1
99h
5
0
1
0
0
1
0
0
1
49h
6
0
1
0
0
0
0
0
1
41h
7
0
0
0
1
1
1
1
1
1Fh
8
0
0
0
0
0
0
0
1
01h
9
0
0
0
0
1
0
0
1
09h
- Bảng mã cho Led Anode chung (a là LSB, dp là MSB):
Số
dp
g
f
e
d
C
b
a
Mã Hex
0
1
1
0
0
0
0
0
0
C0h
1
1
1
1
1
1
0
0
1
F9h
2
1
0
1
0
0
1
0
0
A4h
3
1
0
1
1
0
0
0
0
B0h
4
1
0
0
1
1
0
0
1
99h
5
1
0
0
1
0
0
1
0
92h
6
1
0
0
0
0
0
1
0
82h
7
1
1
1
1
1
0
0
0
F8h
8
1
0
0
0
0
0
0
0
80h
9
1
0
0
1
0
0
0
0
90h
2.5.3. IC thời gian thực DS1307
a)Giới thiệu chung về DS1307:
- IC thời gian thực là họ vi điều khiển của hãng Dalat. DS1307 có một số đặc trưng cơ bản sau:
+ DS1307 là IC thời gian thực với nguồn cung cấp nhỏ dùng để cập nhật thời gian và ngày tháng
+ SRAM :56bytes
+ Địa chỉ và dữ liệu được truyền nối tiệp qua 2 đường bus 2 chiều
+ DS1307 có môt mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động đóng ngắt với nguồn pin cung cấp 3V:
+ DS1307 có 7 byte dữ liệu nằm từ địa chỉ 0x00 tới 0x06, 1 byte điểu khiển, và 56 byte lưu trữ ( dành cho người sủ dụng ).
+ Khi xử lý dữ liệu từ DS1307, họ đã tự chuyển cho ta về dạng số BCD, ví dụ như ta đọc được dữ liệu từ địa chỉ 0x04 (tưong ứng với Day- ngày trong tháng) và tại 0x05 (tháng) là 0x15, 0x11.
+ Lưu ý đến vai trò của chân SQW/OUT. Đây là chân cho xung ra của DS1307 có 4 chế độ 1Hz, 4.096HZ, 8.192Hz, 32.768Hz...các chế độ này đuợc quy định bởi các bít của thanh ghi Control Register (địa chỉ 0x07).
+ Địa chỉ của DS1307là 0xD0.
- Cơ chế hoạt động : DS1307 hoạt động với vai trò slave trên đường bus nối tiếp.Việc truy cập được thi hành với chỉ thị start và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi. Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị stop đươc thực thi.
b)Cơ chế hoạt động và chức năng của DS1307:
Vcc: nối với nguồn
X1,X2: nối với thạch anh 32,768 kHz
Vbat: đầu vào pin 3V
GND: đất
SDA: chuỗi data
SCL: dãy xung clock
SQW/OUT: xung vuông/đầu ra driver
• DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhật thời gian và ngày tháng với 56 bytes SRAM. Địa chỉ và dữ liệu được truyền nối tiếp qua 2 đường bus 2 chiều. Nó cung cấp thông tin về giờ,phút,giây ,thứ,ngày ,tháng, năm.Ngày cuối tháng sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31 ngày,bao gồm cả việc tự động nhảy năm. Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM. DS1307 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động đóng ngắt với nguồn pin cung cấp.
• DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp. Việc truy cập được thi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi. Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thực thi.
Sơ đồ khối của DS1307:
*Mô tả hoạt động của các chân:
• Vcc,GND: nguồn một chiều được cung cấp tới các chân này. Vcc là đầu vào 5V. Khi 5V được cung cấp thì thiết bị có thể truy cập hoàn chỉnh và dữ liệu có thể đọc và viết. Khi pin 3 V được nối tới thiết bị này và Vcc nhỏ hơn 1,25Vbat thì quá trình đọc và viết không được thực thi,tuy nhiên chức năng timekeeping không bị ảnh hưởng bởi điện áp vào thấp. Khi Vcc nhỏ hơn Vbat thì RAM và timekeeper sẽ được ngắt tới nguồn cung cấp trong (thường là nguồn 1 chiều 3V).
• Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V . Điện áp pin phải được giữ trong khoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị. • SCL(serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu trên đường dây nối tiếp.
• SDA(serial data input/out): là chân vào ra cho 2 đường dây nối tiếp. Chân SDA thiết kế theo kiểu cực máng hở , đòi hỏi phải có một điện trở kéo trong khi hoạt động.
• SQW/OUT(square wave/output driver)- khi được kích hoạt thì bit •SQWE được thiết lập 1 chân SQW/OUT phát đi 1 trong 4 tần số (1Hz,4kHz,8kHz,32kHz). Chân này cũng được thiết kế theo kiểu cực máng hở vì vậy nó cũng cần có một điện trở kéo trong. Chân nàysẽ hoạt động khi cả VccvàVbat được cấp.
• X1,X2: được nối với một thạch anh tần số 32,768kHz. Là một mạch tạo dao động ngoài, để hoạt động ổn định thì phải nối thêm 2 tụ 33pF .
• Cũng có DS1307 với bộ tạo dao động trong tần số 32,768kHz, với cấu hình này thì chân X1 sẽ được nối vào tín hiệu dao động trong còn chân X2 thì để hở.
c)Sơ đồ địa chỉ RAM và RTC:
• Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte thanh ghi thích hợp. thời gian và ngày tháng được thiết lập cũng thông qua các byte thanh ghi này bằng cách viết vào đó những giá trị thích hợp. nội dung của các thanh ghi dưới dạng mã BCD(binary coded decreaseimal). Bit 7 của thanh ghi seconds là bit clock halt(CH),khi bit này được thiết lập 1 thì dao động disable, khi nó được xoá về 0 thì dao động được enable.
Chú ý: enable dao động trong suốt quá trình cấu hình thiết lập(CH=0). Thanh ghi thời gian thực được mô tả như sau:
• DS1307 có thể chạy ở chế độ 24h cũng như 12h. Bit thứ 6 của thanh ghi hours là bit chọn chế độ 24h hoặc 12h. khi bit này ở mức cao thì chế độ 12h được chọn. ở chế độ 12h thì bit 5 là bit AM/PM với mức cao là là PM. ở chế độ 24h thì bit 5 là bit chỉ 20h(từ 20h đến 23h).
• Trong quá trình truy cập dữ liệu, khi chỉ thị START được thực thi thì dòng thời gian được truyền tới một thanh ghi thứ 2,thông tin thời gian sẽ được đọc từ thanh ghi thứ cấp này,trong khi đó đồng hồ vẫn tiếp tục chạy. Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của chân SQW/OUT :
• OUT(output control): bit này điều khiển mức ra của chân SQW/OUT khi đầu ra xung vuông là disable. Nếu SQWE = 0 thì mức logic ở chân SQW/OUT sẽ là 1 nếu OUT=1 và OUT = 0 nếu OUT = 0 .
• SQWE(square wave enable): bit này được thiết lập 1 sẽ enable đầu ra của bộ tạo dao động. Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của RS1 và RS0.
DS1307 hỗ trợ bus 2 dây 2 chiều và giao thức truyền dữ liệu. thiết bị gửi dữ liệu lên bus được gọi là bộ phát và thiết bị nhận gọi là bộ thu. thiết bị điều khiển quá trình này gọi là master. thiết bị nhận sự điều khiển của master gọi là slave. Các bus nhận sự điều khiển của master,là thiết bị phát ra chuỗi xung clock(SCL),master sẽ điều khiển sự truy cập bus,tạo ra các chỉ thị START và STOP.
d)Sự truyền nhận dữ liệu trên chuỗi bus 2 dây :
Tuỳ thuộc vào bit R/ w mà 2 loại truyền dữ liệu sẽ được thực thi:
• Truyền dữ liệu từ master truyền và slave nhận: Master sẽ truyền byte đầu tiên là địa chỉ của slave. Tiếp sau đó là các byte dữ liệu . slave sẽ gửi lại bit thông báo đã nhận được (bit acknowledge) sau mỗi byte dữ liệu nhận được. dữ liệu sẽ truyền từ bit có giá trị nhất (MSB).
• Truyền dữ liệu từ slave và master nhận: byte đầu tiên (địa chỉ của slave) được truyền tới slave bởi master. Sau đó slave sẽ gửi lại master bit acknowledge. tiếp theo đó slave sẽ gửi các byte dữ liệu tới master. Master sẽ gửi cho slave các bit acknowledge sau mỗi byte nhận được trừ byte cuối cùng,sau khi nhận được byte cuối cùng thì bit acknowledge sẽ không được gửi .
Master phát ra tất cả các chuỗi xung clock và các chỉ thị START và STOP. sự truyền sẽ kết thúc với chỉ thị STOP hoặc chỉ thị quay vòng START. Khi chỉ thị START quay vòng thì sự truyền chuỗi dữ liệu tiếp theo được thực thi và các bus vẫn chưa được giải phóng. Dữ liệu truyền luôn bắt đầu bằng bit MSB.
e)DS1307 có thể hoạt động ở 2 chế độ sau:
• Chế độ slave nhận( chế độ DS1307 ghi):chuỗi dữ liệu và chuỗi xung clock sẽ được nhận thông qua SDA và SCL. Sau mỗi byte được nhận thì 1 bit acknowledge sẽ được truyền. các điều kiện START và STOP sẽ được nhận dạng khi bắt đầu và kết thúc một truyền 1 chuỗi. nhận dạng địa chỉ được thực hiện bởi phần cứng sau khi chấp nhận địa chỉ của slave và bit chiều. Byte địa chỉ là byte đầu tiên nhận được sau khi điều kiện START được phát ra từ master. Byte địa chỉ có chứa 7 bit địa chỉ của DS1307, là 1101000, tiếp theo đó là bit chiều (R/ w) cho phép ghi khi nó bằng 0. sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ phát đi 1 tín hiệu acknowledge lên đường SDA. Sau khi DS1307 nhận dạng được địa chỉ và bit ghi thì master sẽ gửi một địa chỉ thanh ghi tới DS1307 , tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng byte dữ liệu cho DS1307 sau mỗi bit acknowledge nhận được. sau đó master sẽ truyền điều kiện STOP khi việc ghi hoàn thành.
• Chế độ slave phát ( chế độ DS1307 đọc): byte đầu tiên slave nhận được tương tự như chế độ slave ghi. Tuy nhiên trong chế độ này thì bit chiều lại chỉ chiều truyền ngược lại. Chuỗi dữ liệu được phát đi trên SDA bởi DS 1307 trong khi chuỗi xung clock vào chân SCL. Các điều kiện START và STOP được nhận dạng khi bắt đầu hoặc kết thúc truyền một chuỗi. byte địa chỉ nhận được đầu tiên khi master phát đi điều kiện START. Byte địa chỉ chứa 7 bit địa chỉ của slave và 1 bit chiều cho phép đọc là 1. Sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ nhận 1 bit acknowledge trên đường SDA. Sau đó DS1307 bắt đầu gửi dữ liệu tới địa chỉ con trỏ thanh ghi thông qua con trỏ thanh ghi.Nếu con trỏ thanh ghi không được viết vào trước khi chế độ đọc được thiết lập thì địa chỉ đầu tiên được đọc sẽ là địa chỉ cuối cùng chứa trong con trỏ thanh ghi .DS1307 sẽ nhận được một tín hiệu Not Acknowledge khi kết thúc quá trình đọc. Đọc dữ liệu-chế độ slave phát. • Thời gian thực hiện việc đọc,ghi dữ liệu của DS1307: Sơ đồ đồng bộ:
(0oC to 70oC or -40oC to +85oC; Vcc=4.5V to 5.5V)
PARAMETER
SYMBOL
MIN
TYP
MAX
UNITS
NOTE
SCL Clock Frequency
fSCL
0
100
kHz
Bus free Time Bettween a STOP and START Condition
tBUF
4.7
µs
5
Hold Time (Repeated) START Condition
tHDSTA
4.0
µs
LOW Period of SCL Clock
tLOW
4.7
µs
HIGH Period of SCL Clock
tHIGH
4.0
µs
Set-up Time for a Repeated START Condition
µs
Data Hold Time
µs
Data Set-up Time
Rise Time of Both SDA and SCL Singnals
Fall Time of Both SDA and SCL Singnals
Set-up Time for STOP Condition
Capactive Load for each Bus Line
I/O Capacitance
Crystal Specified Load Capacitance
2.5.4. IC giải mã 74138
IC 74138 là loại IC dùng giải mã/ giải đa hợp (Decoder/Demultiplexer) làm việc được với tần số cao, nó đặc biệt thích hợp khi dùng làm bộ giải mã địa chỉ tác động vào chân chọn IC (Chip Select) của các IC nhớ lưỡng cực.
16
1
2
3
4
5
6
7
8
15
14
13
12
11
9
10
VCC
GND
A0
E1\
A2
A1
E2\
E3
O7\
O0\
O1\
O2\
O3\
O4\
O5\
O6\
74138
IC 74138 có sơ đồ chân như sau:
Chức năng các chân của IC 74138:
VCC ,GND: dùng cấp nguồn cho IC hoạt động. VCC được nối đến cực dương của nguồn (+5V do là IC họ TTL), GND được nối với cực âm của nguồn (0V).
A0,A1,A2: các ngõ vào chọn trạng thái ngõ ra (có thể coi như đây là các đường địa chỉ của IC 74138). Tổ hợp trạng thái logic của 3 ngõ vào này ta sẽ được 8 trạng thái logic khác nhau ở 8 ngõ ra của IC (23 =8).
E1, E2, E3: 3 ngõ vào điều khiển IC. IC chỉ được phép hoạt động bình thường khi cả 3 chân này đều ở mức logic cho phép IC hoạt động (cụ thể là E1, E2 ở mức logic thấp, E3 ở mức logic cao). Chỉ cần 1 trong 3 chân này ở mức logic không phù hợp thì IC sẽ bị cấm ngay lập tức (tất cả các ngõ ra đều ở mức logic cao) bất chấp trạng thái ở các ngõ vào còn lại.
O0 – O7 : các ngõ ra của IC. Tuỳ thuộc vào trạng thái của các đường địa chỉ mà ta có trạng thái ở ngõ ra tương ứng. Khi IC đang hoạt động bình thường (cả 3 chân điều khiển đều ở mác logic cho phép) thì tại một thời điểm nhất định chỉ có một ngõ ra duy nhất được ở mức logic thấp, tất cả cá ngõ còn lại đều phải ở mức logic cao.
IC 74138 có sơ đồ mô tả hoạt động bên trong như sau:
A0
A1
A2
E1\
E2\
E3
O6
O7
O5
O4
O3
O2
O1
O0
Bảng trạng thái của IC 74168:
INPUTS
OUTPUTS
E1\
E2\
E3
A0
A1
A2
O0\
O1\
O2\
O3\
O4\
O5\
O6\
O7\
H
X
X
L
L
L
L
L
L
L
L
x
H
x
L
L
L
L
L
L
L
L
X
x
L
H
H
H
H
H
H
H
H
x
x
x
L
H
L
H
L
H
L
H
x
x
x
L
L
H
H
L
L
H
H
x
x
x
L
L
L
L
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
L
H
H
H
H
H
H
H
H
H
H
H
L
H: HIGH Voltage Level
L: LOW Voltage Level
x: Don’t care
Nguyên tắc hoạt động của IC 74138:
Dựa vào bảng trạng thái ta thấy: chỉ cần 1 trong 3 chân cho phép (E1, E2, E3) ở trạng thái cấm (không cho phép IC hoạt động)thì tất cả các ngõ ra của IC 74138 đều ở mức logic cao bất chấp trạng thái logic của các chân địa chỉ (A0,A1,A2). Chẳng hạn như khi chân E1 ở mức logic cao thì tất cả các ngõ ra của IC đều ở mức logic cao, bất chấp trạng thái của các chân còn lại như: E2, E3, A0,A1,A2 .
Ta nhận thấy khi cả 3 đường địa chỉđều ở mức logic thấp 00h (với điều kiện là các ngõ vào đều phải ở mức logic thích hợp để IC hoạt động) thì chỉ có duy nhất một ngõ ra đầu tiên là ở mức logic thấp, tất cả các ngõ ra còn lại ở mức logic cao.
Khi địa chỉ đưa vào IC tăng lên một (01h) thì mức logic thấp này được chuyển đến ngõ ra thứ hai và cũng chỉ có duy nhất ngõ ra này ở mức logic thấp.
Khi địa chỉ đưa vào IC là 08h thì mức logic sẽ ở ngõ ra cuối cùng (O7).
Như vậy mức logic thấp ở ngõ ra sẽ di chuyển tương ứng với địc chỉ đưa vào IC
2.6. SƠ ĐỒ NGUYÊN LÝ
Sơ đồ nguyên lý hệ thống :
2.7. NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH
2.7.1. Khối điều khiển.
Gồm 4 nút ấn. Khi ấn nút thì chân 2,3 được nối với chân 1,4 đưa điện áp xuống đất lúc này điện áp tại 2 chân 2,3 bằng 0 làm cho vi điều khiển nhận biết được sự thay đổi này và thực hiện lệnh cần điều khiển. Nút thứ nhất có tác dụng thiết đặt chế độ cho vi điều khiển làm việc bình thường hay chuyển sang chế độ cài đặt thời gian, để chỉnh ngày, tháng, năm, giờ, phút,giây. Nút thứ hai làm tăng giá trị cần điều chỉnh. Nút thứ ba làm giảm giá trị cần điều chỉnh. Nút thứ 4 để đặt giá trị.
2.7.2. Khối hiển thị
-Ở chế độ hiển thị ngày, tháng, năm(dương lịch), thứ trong tuần: 2 led để hiện thị ngày, 2 led hiển thị tháng, 2 led hiển thị năm, 1 led để hiển thi thứ trong tuần (thứ 2 - thứ 7 hiển thị giá trị 2 – 7, chủ nhật led hiện giá trị 1).ngày, tháng âm lịch: 2 led hiển thị ngày âm lịch,2 led hiển thị tháng âm lịch.
-Ở chế độ hiển thị giờ, phút, : 2 led dùng để hiển thị giờ, 2 led dùng để hiển thị phút.
-Tất cả các led chung đường tín hiệu a,…,g còn các chân điều khiển thì mắc với các khoá điện tử (16 Tranzito U5-U21) để điều khiển việc đóng ngắt các led.
-Khối hiển thị bao gồm các LED 7 thanh(anode chung) có các đầu vào a,b,c,d,e,f,g của các LED được nối song song với nhau và nối với các chân của VĐK (từ chân P0->P3) có tác dụng làm cho LED hiển thị dạng số mong muốn. Và đầu còn lại của 7 led 7 thanh được nối với 6 chân E của transistor và chân B của transistor nối với các PORT của VĐK (từ P0->P3), VĐK làm nhiệm vụ điều khiển cho từng LED sáng trong khoảng thời gian nhất định. Tại mỗi thời điển chỉ có một LED sáng, các chân dữ liệu tích cực mức 0.
2.7.3. Khối tạo thời gian thực IC DS1307.
Nguyên tắc hoạt động:
-Chế độ slave nhận(chế độ DS1307 ghi): chuỗi dữ liệu và chuỗi xung clock sẽ được nhận thông qua SDA và SCL. Sau mỗi byte được nhận thì 1 bit acknowledge sẽ được truyền. các điều kiện START và STOP sẽ được nhận dạng khi bắt đầu và kết thúc một truyền 1 chuỗi. nhận dạng địa chỉ được thực hiện bởi phần cứng sau khi chấp nhận địa chỉ của slave và bit chiều. Byte địa chỉ là byte đầu tiên nhận được sau khi điều kiện START được phát ra từ master. Byte địa chỉ có chứa 7 bit địa chỉ của DS1307, là 1101000, tiếp theo đó là bit chiều (R/ w ) cho phép ghi khi nó bằng 0. sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ phát đi 1 tín hiệu acknowledge lên đường SDA. Sau khi DS1307 nhận dạng được địa chỉ và bit ghi thì master sẽ gửi một địa chỉ thanh ghi tới DS1307 , tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng byte dữ liệu cho DS1307 sau mỗi bit acknowledge nhận được. sau đó master sẽ truyền điều kiện STOP khi việc ghi hoàn thành
- Chế độ slave phát (chế độ DS1307 đọc): byte đầu tiên slave nhận được tương tự như chế độ slave ghi. Tuy nhiên trong chế độ này thì bit chiều lại chỉ chiều truyền ngược lại. Chuỗi dữ liệu được phát đi trên SDA bởi DS 1307 trong khi chuỗi xung clock vào chân SCL. Các điều kiện START và STOP được nhận dạng khi bắt đầu hoặc kết thúc truyền một chuỗi. byte địa chỉ nhận được đầu tiên khi master phát đi điều kiện START. Byte địa chỉ chứa 7 bit địa chỉ của slave và 1 bit chiều cho phép đọc là 1. sau khi nhận và giải mã byte địa chỉ thì thiết bị sẽ nhận 1 bit acknowledge trên đường SDA. Sau đó DS1307 bắt đầu gửi dữ liệu tới địa chỉ con trỏ thanh ghi thông qua con trỏ thanh ghi. nếu con trỏ thanh ghi không được viết vào trước khi chế độ đọc được thiết lập thì địa chỉ đầu tiên được đọc sẽ là địa chỉ cuối cùng chứa trong con trỏ thanh ghi. DS1307 sẽ nhận được một tín hiệu Not Acknowledge khi kết thúc quá trình đọc.
2.8. LƯU ĐỒ THUẬT TOÁN
Thuật toán giao tiếp với IC thời gian thực DS1307.
Thuật toán điều chỉnh và hiển thị thời gian:
Thuật toán quét LED:
NGẮT NGUỒN LED1
GỬI DỮ LIỆU CHO LED1
KHỞI TẠO HỆ THỐNG
CHỌN LED1
TRỄ 3ms
BẮT ĐẦU QUÉT LED
NGẮT NGUỒN LED15
GỬI DỮ LIỆU CHO LED LED19
CHỌN LED15
TRỄ 3ms
Thuật toán cho các nút điều chỉnh:
Gồm 4 phím bấm: Mode (Nút1) - Up (Nút2) - Dow (Nút3) - Set (Nút4)
- Phím mode dùng để chỉnh giờ,phút,giây,ngày,tháng,năm
- Phím Up để tăng giá trị
- Phím Dow để giảm giá trị
- Phím Set để thiết lập giá trị.
Quét led hiển thị ngày, tháng, năm
Mode=0
S
Đ
Cho phím nhả
Bắt đầu
Chỉnh giờ
Cập nhật thời gian
Chỉnh phút
Chỉnh thứ
Chỉnh ngày
Chỉnh tháng
Chỉnh năm
Kết thúc
Chỉnh năm
Nhả phím năm +1
năm =0
10 năm +1
Quét LED hiển thị 10 năm, năm
Kết thúc
Đ
10 năm =0
S
Đ
Đ
Đ
S
S
Nhả phím năm -1
năm =9
10 năm -1
S
Đ
Đ
Đ
S
S
10năm =10
Năm=10
Nút 2=0
Nút 3=0
năm =1
10 năm=1
Nút 1 =0
S
10 năm =9
Thuật toán điều chỉnh thời gian:
Chỉnh năm
Chỉnh tháng
Nhả phím tháng +1
Quét LED hiển thị 10 tháng, tháng
Kết thúc
Đ
10 năm =1
tháng =0
S
Đ
Đ
Đ
S
S
Nhả phím tháng -1
10tháng =0
tháng=9
S
Đ
Đ
Đ
S
S
tháng =10
10tháng =1
tháng =3
Nút 2=0
Nút 3=0
tháng =-1
10 tháng=0
Nút 1 =0
10 tháng =0
tháng =0
10 năm =1
tháng =0
S
Chỉnh tháng dương lịch.
Chỉnh ngày dương lịch.
Chỉnh ngày
Nhả phím ngày +1
Quét LED hiển thị 10 ngày, ngày
Kết thúc
Đ
S
Ngày=1
S
Đ
Đ
S
S
Nhả phím ngày -
Ngày=7
S
Đ
Đ
Ngày =8
Nút =2
Nút =3
Ngày =0
Nút =3
Chỉnh giờ:
Chỉnh giờ
Nhả phím giờ+1
Đ
S
10giờ=0
Giờ=0
Đ
S
Nhả phím
giờ-1
Đ
Đ
Đ
10 giờ =-1
giờ =9
S
S
10giờ=2
giờ =4
S
Quét LED hiển thị 10 giờ, giờ
Kết thúc
Đ
S
Đ
Nút2=0
10giờ=2
Giờ=5
Giờ=10
10giờ+1
Giờ=0
Nút3=0
Giờ=-1
10giờ =0
Nút1=0
Chỉnh phút:
Chỉnh phút
Nhả phím phút+1
Đ
S
10phút=6
phút=0
Đ
S
Nhả phím
phút-1
Đ
Đ
Đ
10 phút = -1
phút =9
S
S
10phút=51
phút =9
S
Quét LED hiển thị 10 phút, phút
Kết thúc
Đ
S
Đ
Nút2=0
10phút=6
Phút=0
phút=10
10phút+1
phút=0
Nút3=0
phút= -1
10phút =0
Nút1=0
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG
3.1. XÂY DỰNG PHẦN CỨNG.
3.2.1.Sơ đồ bố trí linh kiện.
3.2.2.Sơ đồ mạch in.
Lớp trên
Lớp dưới
3.2 XÂY DỰNG PHẦN MỀM.
3.2.1. Chương trình nạp vào Vi điều khiển IC AT89S52
- Ngôn ngữ lập trình cho AT89C52 là C, dùng CCS 4.49 để biên dịch.
- Sử dụng I2C để giao tiếp với DS1307.
- Sử dụng các hàm có sẵn trong CCS là: I2C_START;I2C_STOP; I2C_READ; I2C_WRITE dùng để khởi tạo, đọc giá trị từ DS1307 sang IC.
- Việc hiển thị thời gian là liên tục, ta dùng 8 byte RAM để làm bộ đệm hiển thị (các biến led1,…,led15), các giá trị thời gian đọc từ DS1307 sau khi đã chuyển sang BCD sẽ được lưu trong các biến này.
- Ta sẽ đọc các giá trị thời gian từ DS1307 nhưng chỉ đọc giá trị giây, sau 1 phút ta mới cập nhật toàn bộ thanh ghi thời gian của DS1307 và đưa ra hiển thị.
- Chương trình quét bàn phím sẽ xác định phím chức năng và gọi hàm xử lý tương ứng như: chuyển chế độ, chỉnh giờ, tăng, giảm giá trị.
3.2.2. Mã lập trình
Dưới đây là một số đoạn mã được thực hiện trong chương trình:
Quét led:
//Quet led 7 doan dung timer 0
//Tan so quet khoang 25Hz moi led sang khoang 1000/(25*13)=3ms
void khoi_tao_timer0(void)
{
EA=0;//cam ngat toan cuc
TMOD=0x2;//timer0 che do 8 bit tu dong nap lai
TL0=0x6;//Gia tri bat dau dem = 6 (tre 250us)
TH0=0x6;//gia tri TH dc nap vao TL (che do 8 bit)
ET0=1;//cho phep ngat timer0
EA=1;//cho phep ngat toan cuc
TR0=1;//Bat dau chay timer0
}
//quet 15 LED Sau 12 lan Timer0 ngat thi thay doi cac led sang
void quet_led(void)interrupt 1 //dia chi vecto ngat timer0
{
//counter++;
if(++counter==12)//sau 12x250us=3ms thi thay doi hien thi led
{
if(scan_led0 khong co led nao duoc hien thi
{
ic_counter=scan_led;//hien thi cac led o hang 1 (gio, phut,thu)
//chan enb cua IC_COUNTER =>0 khong co led nao duoc hien thi
ic_time=1;//hien thi gio phut giay
}else
{
ic_counter=scan_led-7;// hien thi led hang 2 (ngay thang nam)(tru di so led da hien thi o hang 1)
ic_date=1;//hien thi ngay thang nam
} // ic_counter=scan_led-0x7+0xf0 led thu 7 la led thu 0 cua hang 2
led_port=led_code[(led_buffer[scan_led])];
//scan_led++;
if(++scan_led>=15) //vuot qua 15 led thi tro ve ban dau
{
scan_led=0;
}
}
if(counter>=13)
{
counter=0;//dem lai tu dau
}
}
Cài đặt giờ cho RTC
//-----------------**********Cai dat che do cho RTC****------------------
void setup_rtc(void)
{
unsigned char temp;
/*i2c_start();
write_i2c(0xd0);//che do ghi du lieu vao RTC
write_i2c(0x08);//thanh ghi control
write_i2c(0x10);//xung ra 1Hz muc thap khi khong dc kich hoat
i2c_stop();*/
write_rtc(0x10,0x07);
temp=read_rtc(0x02);
write_rtc(0x02,temp&0x7f);
}
//-----------------**************Do phim**********----------------------
void do_phim(void)
{
if(menu==0)//phim menu duoc an
{
delay_2(50);
if(var_arlam==0)//Neu khong thuc hien chuc nang hen gio
{
if(var_menu<=7)
{
var_menu++; //thuc hien menu tiep
}else
{
var_menu=1;//quay tro ve menu dau tien
}
}else
{
var_arlam=0;//hen gio xong
}
delay_2(50);
}
if(al_cancel==0)
{
var_menu=0;
var_arlam=1;
delay(10000);
}
}
Chỉnh thời gian:
//----------*********Chinh PHUT*********------------
void menu2(void)
{
unsigned char temp;
temp=bcd_2_dec(min);
if(plus==0)
{
if(temp<59)
{
temp++;
}else
{
temp=0;
}
write_rtc(dec_2_bcd(temp),reg_min);
delay_2(50);
}
if(minus==0)
{
if(temp>0)
{
temp--;
}else
{
temp=59;
}
write_rtc(dec_2_bcd(temp),reg_min);
delay_2(50);
}
}
3.3.Kết quả mô phỏng
KẾT LUẬN
Thông qua việc hoàn thành đồ án này chúng em đã rút ra được rất nhiều kinh nghiêm học tập, cũng như tinh thần làm việc tập thể.
Kết quả đạt được: là một chiếc đồng hồ vạn niên hoạt động ổn định và chính xác, cùng với chức năng hiển thị cả lịch âm và lịch dương.
Hạn chế: Do thời gian gấp gáp nhóm chúng em không làm mạch thật. Chúng em cần phải cố gắng hơn rất nhiều để có thể làm được những sản phẩm đáp ứng được yêu cầu đặt ra.
Hướng phát triển: Hướng phát triển của sản phẩm này như kết hợp vào đó nhiệt độ, chuông báo giảng đường, thay thế bằng một thời khoá biểu động có thể đáp ứng được mọi thời khoá biểu yêu cầu, có thể dùng để hẹn giờ điều khiển thiết bị trong gia đình…
TÀI LIỆU THAM KHẢO:
[1]. “Kỹ thuật vi xử lý”, Văn Thế Minh
[2]. Bài giảng trên lớp.
[3]. Tài liệu từ Internet :
www.picvietnam.com
www.codientu.info
www.dientuvietnam.net
www.tailieu.vn
Các file đính kèm theo tài liệu này:
- DA HTN.docx
- DA HTN.doc