Do thời gian có hạn, kiến thức của các thành viên, đặc biệt là các trang thiết bị phục vụ thực hành, linh kiện để làmmạch còn hạn chế nên đề tài còn nhiều thiếu sót, rất mong nhận được s
Trang 1LỜI MỞ ĐẦU
Ngày nay, cùng với sự phát triển của xã hội, ngành điện tử, quy mô cáctrường học, lớp học được mở rộng cả về quy mô lẫn số lượng thì việc sử dụngcác công cụ thô sơ không còn phù hợp, thay vào đó là các thiết bị điện tử hiệnđại, có độ tự động, hiệu quả cao được sử dụng rộng dãi Sự phát triển của ngànhđiện tử càng mạnh mẽ thì việc sử dụng vi điều khiển để thiết kế chế tạo được cácthiết bị hỗ trợ báo giờ là không khó Các thiết bị báo giờ, chỉ cần tác động, thayđổi một chút thì ta có thể sử dụng chúng ở nhiều nơi khác nhau mà vẫn đạt đượckết quả như mong muốn
Là sinh viên kỹ thuật nói chung và ngành kỹ thuật điện tử nói riêng, việcnắm bắt công nghệ và ứng dụng của chúng vào đời sống là vô cùng quan trọng
để theo kịp công nghệ mới ra Sau thời gian tìm tòi và nắm bắt các kiến thức về
vi điều khiển, các quá trình làm mạch thực tế, nhóm sinh viên chúng tôi đã quyết
định làm đề tài kết thúc môn Thực tập cơ sở “Thiết kế mạch chuông báo lớp học
tự động sử dụng vi điều khiển AT89C52” Do thời gian có hạn, kiến thức của các
thành viên, đặc biệt là các trang thiết bị phục vụ thực hành, linh kiện để làmmạch còn hạn chế nên đề tài còn nhiều thiếu sót, rất mong nhận được sự giúp
đỡ, đóng góp ý kiến của thầy, cô và các đồng chí để bài báo cáo của chúng tôiđược hoàn thiện hợn
Xin chân thành cảm ơn!
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 1
MỤC LỤC 2
DANH MỤC HÌNH VẼ 4
DANH MỤC BẢNG BIỂU 5
CHƯƠNG 1 TỔNG QUAN 6
1.1 Đặt vấn đề 6
1.2 Phân tích 6
1.3 Xây dựng phương án 6
1.4 Phạm vi của đề tài và phương hướng mở rộng 7
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 8
2.1 Giới thiệu IC AT89C52 8
2.1.1 Sơ đồ chân AT89C52 9
2.1.2 Chức năng của các chân AT89C52 9
2.1.3 Các chế độ đặc biệt 11
2.1.4 Các bít khoá bộ nhớ chương trình 12
2.2 Tìm hiểu IC thời gian thực DS1307 13
2.2.1 Giới thiệu chung về DS1307 13
2.2.2 Cơ chế hoạt động và chức năng của DS1307 14
2.2.3 Sơ đồ địa chỉ RAM và RTC 15
2.3 Giới thiệu LCD 17
2.3.1 Chức năng các chân của LCD 16x2 17
2.3.2 Các thanh ghi 19
Chương 3 THIẾT KẾ MẠCH 20
3.1 Sơ đồ khối 20
3.1.1 Sơ đồ khối tổng quát 20
3.1.2 Chức năng các khối 20
3.2 Sơ đồ thuật toán 21
3.3 Sơ đồ nguyên lý các khối 22
3.3.1 Khối nguồn 22
3.3.2 Khối hiển thị LCD 22
3.3.3 Khối xử lý AT89C52 22
3.3.4 Khối thời gian thực DS1307 23
3.3.5 Khối điều chỉnh 23
Trang 33.3.6 Khối âm thanh 24
3.4 Sơ đồ nguyên lý mạch 25
3.4.1 Sơ đồ mạch 25
3.4.2 Nguyên lý hoạt động 25
3.5 Chương trình Code cho vi điều khiển 26
CHƯƠNG 4 THI CÔNG MẠCH 40
4.1 Danh sách vật liệu và linh kiện 40
4.1.1 Danh sách vật liệu làm mạch 40
4.1.2 Danh sách linh liện sử dụng trong mạch 40
4.2 Quy trình thi công mạch 41
4.2.1 Thiết kế mạch nguyên lý và vẽ mạch in trên phầm mềm Altium 41
4.2.2 Các bước thi công mạch trên thực tế 43
4.3 Sản phẩm mạch thực tế 44
KẾT LUẬN 45
TÀI LIỆU THAM KHẢO 46
Trang 4DANH MỤC HÌNH VẼ
Hình 2.1: Sơ đồ khối của AT89C52 8
Hình 2.2: Sơ đồ các chân AT89C52 9
Hình 2.3: Sơ đồ chân RST 10
Hình 2.4: Ngõ vào bộ dao động 11
Hình 2.5: IC DS1307 13
Hình 2.6: Sơ đồ DS1307 14
Hình 2.7: Màn hình hiển thị LCD 17
Hình 3.1: Sơ đồ khối tổng quát 20
Hình 3.2: Sơ đồ thuật toán 21
Hình 3.3: Sơ đồ khối hiển thị 22
Hình 3.4: Sơ đồ khối xử lý AT89C52 23
Hình 3.5: IC thời gian thực DS1307 23
Hình 3.6: Sơ đồ khối thao tác 24
Hình 3.7: Sơ đồ khối âm thanh 24
Hình 3.8: Sơ đồ mạch nguyên lý 25
Hình 4.1: Sơ đồ mạch nguyên lý SCH 41
Hình 4.2: Mạch in sau khi được phủ đồng 42
Hình 4.3: Mạch in ở chế độ 3D 42
Hình 4.4: Mạch in ở dạng PDF 43
Hình 4.5 Mạch nạp code cho IC……… 44
Hình 4.6: Sản phẩm mạch thực tế 44
Trang 5DANH MỤC BẢNG BIỂU
Bảng 1.1 Thời gian các tiết học trong một ngày……… 6
Bảng 2.1 Chức năng chuyển đổi của các chân P3.0 ÷ P3.7……….10
Bảng 2.2 Trạng thái các chân trong thời gian chế độ nghỉ và nguồn giảm… 12
Bảng 2.3 Các bit khoá bộ nhớ chương trình của AT89C52……….12
Bảng 2.4 Chức năng các chân của Module LCD……….17
Bảng 4.1 Danh sách các vật liệu làm mạch……….40
Bảng 4.2 Danh sách các linh kiện chính sử dụng trong mạch……….40
Trang 6CHƯƠNG 1 TỔNG QUAN1.1 Đặt vấn đề
Hiện nay với sự phát triển của vi điều khiển Các hệ thống cần thiết đềuđược hoạt động một cách tự động Đơn giản như hệ thống chuông hẹn giờ, hệthống báo động, báo giờ trường học, báo giờ công sở
Vấn đề báo tiết học là vấn đề cần thiết ở bất cứ trường học nào, giúp thầy
cô điều chỉnh được thời gian dạy học của mình Sẽ rất mất thời gian khi ta phảicanh thời gian cho tiết học, hơn nữa hiện nay trên thị trường chỉ có những loạichuông báo cố định về thời gian mà không thể tự thay đổi theo giờ học của từngtrường, từng vùng, từng mùa khác nhau Để đáp ứng những yêu cầu nêu trênchúng tôi lựa chọn đề tài thiết kế và thi công mạch chuông báo tiết hoc tự động
1.2 Phân tích
Mục đích:
- Hệ thống báo chuông tại các thời điểm vào, ra của tiết học của trường
- Hệ thống có khả năng chỉnh lại thời gian
Mỗi ngày có 2 buổi học mỗi buổi kéo dài 5 tiết Thời gian của mỗi tiết là
45 phút Thời gian nghỉ giải lao là 5 phút Sau tiết thứ 3 của mỗi buổi nghỉ giảilao 10 phút từ đó ta xây dựng được thời khóa biểu như bảng 1.1:
Bảng 1.1: Thời gian các tiết học trong một ngày
Trang 7Thời gian báo:
- Thời gian báo chuông là 5 giây
- Cách báo: sử dụng chuông báo
- Phạm vi báo: Tất cả khu vực giảng đường, lớp học bằng cách xây dựng hệthống chuông đến từng khu nhà học, từng giảng đường
1.4 Phạm vi của đề tài và phương hướng mở rộng.
Phạm vi của đề tài:
- Hệ thống chuông báo của chúng tôi có thể dùng cho thời khóa biểu của cảmùa đông và mùa hè bằng cách thay đổi thời gian của các tiết học Nhưng dođây là đề tài môn học nên chúng tôi mới chỉ xây dựng và thiết kế hệ thống trongphạm vi thời khóa biểu của trường mà chúng tôi đang học
Phương hướng mở rộng:
- Thêm thời kháo biểu buổi tối cho các trường học theo hệ thống tín chỉ.Nếu trường nào không học vào chủ nhật thì sẽ có chế độ không báo chuông vàochủ nhật Có thêm chế độ điều chỉnh thời gian báo của chuông cho phù hợp vớiyêu cầu của nhiều trường trong phạm vi cả nước
- Thiết kế Module điều chỉnh bằng quét phím ma trận hoặc giao tiếp bànphím máy tính có thể lập trình thời khóa biểu theo ý muốn và giờ giấc của từngtrường cũng như từng nơi làm việc khác nhau
- Xây dựng hệ thống chuông báo không dây sử dụng bộ thu-phát songsong
Trang 8CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu IC AT89C52.
AT89C52 là một bộ vi xử lý 8 bit, loại CMOS, có tốc độ cao và công suấtthấp với bộ nhớ Flash có thể lập trình được Nó được sản xuất với công nghệ bộnhớ không bay hơi mật độ cao của hãng Atmel, và tương thích với họ MCS-
52TM về chân ra và tập lệnh
AT89C52 có các đặc trưng cơ bản như sau: 4 K byte Flash, 128 byte RAM,
32 đường xuất nhập, hai bộ định thời/đếm 16-bit, một cấu trúc ngắt hai mức ưu
tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip
AT89C52 được thiết kế với logic tĩnh cho hoạt động có tần số giảm xuống
0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm Chế
độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời/đếm, port nối
tiếp và hệ thống ngắt tiếp tục hoạt động
Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao
động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp theo
Trang 9Hình 2.1: Sơ đồ khối của AT89C52.
2.1.1 Sơ đồ chân AT89C52
Mặc dù các thành viên của họ 89C52 (ví dụ 8751, 89S52, 80C51, DS5000)đều có các kiểu đóng vỏ khác nhau, CFP (Quad Flat Pakage) và dạng chip không
có chân đỡ LCC (Leadless Chip Carrier) chúng đều có 40 chân cho các chứcnăng khác nhau như vào ra I/O, đọc RD giới hạn như hai hàng chân DIP (DualIn
- LinePakage), dạng vỏ dẹt vuông QPF, ghi WR, địa chỉ, dữ liệu và ngắt Cầnphải lưu ý một số hãng cung cấp một phiên bản 89C52 có 20 chân với số cổngvào ra ít hơn cho các ứng dụng yêu cầu thấp hơn Tuy nhiên vì hầu hết các nhàphát triển sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tậptrung mô tả phiên bản này
Hình 2.2: Sơ đồ các chân AT89C52
2.1.2 Chức năng của các chân AT89C52
- Port 0: từ chân 32 đến chân 39 (P0.0 ÷ P0.7) Port 0 có 2 chức năng:trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như cácđường IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địachỉ và bus dữ liệu
- Port 1: từ chân 1 đến chân 8 (P1.0 ÷ P1.7) Port 1 là port IO dùng chogiao tiếp với thiết bị bên ngoài nếu cần
- Port 2: từ chân 21 đến chân 28 (P2.0 ÷ P2.7) Port 2 là một port có tácdụng kép dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối vớicác thiết bị dùng bộ nhớ mở rộng
Trang 10- Port 3: từ chân 10 đến chân 17 (P3.0 ÷ P3.7) Port 3 là port có tác dụngkép Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên
hệ đến các đặc tính đặc biệt của AT89C52 như trong bảng 2.1
Bảng 2.1 Chức năng chuyển đổi của các chân P3.0 ÷ P3.7
- PSEN (Program store enable): PSEN là tín hiệu ngõ ra có tác dụng cho
phép đọc bộ nhớ chương trình mở rộng và thường được nối đến chân OE củaEprom cho phép đọc các byte mã lệnh PSEN ở mức thấp trong thời gianAT89C52 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus
dữ liệu, được chốt vào thanh ghi lệnh bên trong AT89C52 để giải mã lệnh KhiAT89C52 thi hành chương trình trong ROM nội, PSEN ở mức cao
- ALE (Address Latch Enable): Khi AT89C52 truy xuất bộ nhớ bên ngoài,
Port 0 có chức năng là bus địa chỉ và dữ liệu do đó phải tách các đường dữ liệu
và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đahợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt Tín hiệu ở chânALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nênchốt địa chỉ hoàn toàn tự động
- EA (External Access): Tín hiệu vào EA (chân 31) thường được mắc lên
mức 1 hoặc mức 0 Nếu ở mức1, AT89C52 thi hành chương trình từ ROM nội.Nếu ở mức 0, AT89C52 thi hành chương trình từ bộ nhớ mở rộng Chân EAđược lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong AT89C52
- RST (Reset): Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 2 chu kỳmáy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệthống Khi cấp điện mạch phải tự động reset Các giá trị tụ và điện trở được chọnlà: R1=10Ω, R2=220Ω, C=10 µF được mô tả trong hình 2.4
Trang 11Hình 2.3 - Sơ đồ chân RST
- Các ngõ vào bộ dao động X1, X2: Bộ tạo dao động được tích hợp bên
trong 89C52 Khi sử dụng 89C52, người ta chỉ cần nối thêm thạch anh và các tụ Tần số thạch anh tùy thuộc vào mục đích của người sử dụng, giá trị tụ thường được chọn là 33p
Hình 2.4 Ngõ vào bộ dao động
2.1.3 Các chế độ đặc biệt
- Chế độ nghỉ:
Trong chế độ nghỉ, CPU tự đi vào trạng thái ngủ trong khi tất cả các ngoại
vi bên trong chip vẫn tích cực Chế độ này được điều khiển bởi phần mềm Nộidung của RAM trên chip và của tất cả các thanh ghi chức năng đặc biệt vẫnkhông đổi trong khi thời gian tồn tại chế độ này Chế độ nghỉ có thể được kếtthúc bởi một ngắt bất kỳ nào được phép hoặc bằng cách reset cứng
Ta cần lưu ý rằng khi chế độ nghỉ được kết thúc bởi một reset cứng, chip viđiều khiển sẽ tiếp tục bình thường việc thực thi chương trình từ nơi chương trình
bị tạm dừng, trong vòng 2 chu kỳ máy trước khi giải thuật reset phần mềm nắmquyền điều khiển
Ở chế độ nghỉ, phần cứng trên chip cấm truy xuất RAM nội nhưng cho
phép truy xuất các chân của các port Để tránh khả năng có một thao tác ghi không mong muốn đến một chân port khi chế độ nghỉ kết thúc bằng reset, lệnh
tiếp theo yêu cầu chế độ nghỉ không nên là lệnh ghi đến chân port hoặc đến bộnhớ ngoài
- Chế độ nguồn giảm:
Trong chế độ này, mạch dao động ngừng hoạt động và lệnh yêu cầu chế độnguồn giảm là lệnh sau cùng được thực thi RAM trên chip và các thanh ghichức năng đặc biệt vẫn duy trì các giá trị của chúng cho đến khi chế độ nguồngiảm kết thúc Chỉ có một cách ra khỏi chế độ nguồn giảm, đó là reset cứng.Việc reset sẽ xác định lại các thanh ghi chức năng đặc biệt nhưng không
làm thay đổi RAM trên chip Việc reset không nên xảy ra (chân reset ở mức tích
cực) trước khi Vcc được khôi phục lại mức điện áp bình thường và phải kéo dài
Trang 12trạng thái tích cực của chân reset đủ lâu để cho phép mạch dao động hoạt độngtrở lại và đạt trạng thái ổn định.
Trạng thái của các chân trong thời gian tồn tại chế độ nghỉ và chế độ nguồngiảm được cho trong bảng 2.2:
Bảng 2.2 Trạng thái các chân trong thời gian chế độ nghỉ và nguồn giảm.
Nguồn
giảm
2.1.4 Các bít khoá bộ nhớ chương trình
Trên chip có ba bit khoá, các bít này có thể không cho phép lập trình hoặccho phép lập trình, các bit này cho ta thêm một số đặc trưng nữa của AT89C52như sau Khi bit khoá 1 LB1 được lập trình, mức logic ở chân được lấy mẫu
và được chốt trong khi reset Nếu việc cấp nguồn cho chip không có công dụngreset, mạch chốt được khởi động bằng một giá trị ngẫu nhiên và giá trị này đượcduy trì cho đến khi có tác động reset Điều cần thiết là giá trị được chốt của phải phù hợp vơi mức logic hiện hành ở chân này
Bảng 2.3 Các bit khoá bộ nhớ chương trình của AT89C52
chốt khi reset, hơn nữa việc lập trình trên
Flash bị cấm
trình
Trang 134 P P P Như chế độ 3, cấm thêm việc thực thi chương
trình ngoài
2.2 Tìm hiểu IC thời gian thực DS1307.
2.2.1 Giới thiệu chung về DS1307.
- Đị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ương ứng với Day- ngày trongtháng) và tại 0x05 (thang) là 0x15, 0x11 như thế có nghĩa là lúc đó là ngày 15-
11 chứ không phải là ngày 21 tháng 17
- Lưu ý đến vai trò của chân SQW/OUT Đây là chân cho xung ra củaDS1307 có 4 chế độ 1Hz, 4.096HZ, 8.192Hz, 32.768Hz các chế độ này đuợcquy đị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ốitiế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 truycập liên tục đến khi chỉ thị stop đươc thực thi
Trang 142.2.2 Cơ chế hoạt động và chức năng của DS1307
Hình 2.6: Sơ đồ 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ậtthời gian và ngày tháng với 56 bytes SRAM Địa chỉ và dữliệu được truyền nốitiế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ángnhỏ 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ấpbở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
Vcc, GND: nguồn một chiều được cung cấp tới các chân này Vcc là đầuvà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
Trang 15timekeeper sẽ được ngắt tới nguồn cung cấp trong (thường là nguồn 1 chiều3V)
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ệutrê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ânSDA 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 khihoạ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ày sẽ hoạt động khi cả Vcc và 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ạodao độ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ânX1 sẽ được nối vào tín hiệu dao động trong còn chân X2 thì để hở
2.2.3 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 bytethanh ghi thích hợp Thời gian và ngày tháng được thiết lập cũng thông qua cácbyte thanh ghi này bằng cách viết vào đó những giá trị thích hợp Nội dung củacác thanh ghi dưới dạng mã BCD (binary coded decreaseimal) Bit 7 của thanhghi seconds là bit clock halt (CH), khi bit này được thiết lập 1 thì dao độngdisable, khi nó được xoá về 0 thì dao động được enable
DS1307 có thể chạy ở chế độ 24h cũng như 12h Bit thứ 6 của thanh ghihours 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)
Trang 16Trong quá trình truy cập dữ liệu, khi chỉ thị START được thực thi thì dòngthờ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.
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à =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ềukhiể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 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 đầutiên là địa chỉ của slave Tiếp sau đó là các byte dữ liệu Slave sẽ gửi lại bitthô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ácbit acknowledge sau mỗi byte nhận được trừ byte cuối cùng, sau khi nhận đượcbyte 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ácbus vẫn chưa được giải phóng Dữ liệu truyền luôn bắt đầu bằng bit MSB 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 bitacknowledge sẽ được truyền Các điều kiện START và STOP sẽ được nhậndạ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ựchiệ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à bitchiề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 DS1307nhận dạng được địa chỉ và bit ghi thì master sẽ gửi một địa chỉ thanh ghi tớiDS1307, tạo ra một con trỏ thanh ghi trên DS1307 và master sẽ truyền từng byte
Trang 17dữ 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 đượctươ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 DS1307 trongkhi chuỗi xung clock vào chân SCL Các điều kiện START và STOP được nhậndạng khi bắt đầu hoặc kết thúc truyền một chuỗi Byte địa chỉ nhận được đầutiên khi master phát đi điều kiện START Byte địa chỉ chứa 7 bit địa chỉ củaslave 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
2.3 Giới thiệu LCD
LCD được giới thiệu gồm 14 chân (hình 2.6)
Hình 2.7: Màn hình hiển thị LCD
2.3.1 Chức năng các chân của LCD 16x2.
Chức năng chính của các chân Module LCD 16x2 được mô tả trong bảng2.4:
Bảng 2.4: Chức năng các chân của Module LCD
Trang 184 RS 0/1 I Lựa chọn thanh ghi
0= thanh ghi lệnh1=thanh ghi dữ liệu
1=đọc từ LCD module
Các chân điều khiển việc đọc và ghi LCD bao gồm RS, R/W và EN
- RS (chân số 3): Chân lựa chọn thanh ghi (Select Register), chân này chophép lựa chọn 1 trong 2 thanh ghi IR hoặc DR để làm việc Vì cả 2 thanh ghi nàyđều được kết nối với các chân Data của LCD nên cần 1 bit để lựa chọn giữachúng Nếu RS=0, thanh ghi IR được chọn và nếu RS=1 thanh ghi DR đượcchọn Chúng ta đều biết thanh ghi IR là thanh ghi chứa mã lệnh cho LCD, vì thếnếu muốn gửi 1 mã lệnh đến LCD thì chân RS phải được reset về 0 Ngược lại,khi muốn ghi mã ASCII của ký tự cần hiển thị lên LCD thì chúng ta sẽ set RS=1
để chọn thanh ghi DR
- R/W (chân số 4): Chân lựa chọn giữa việc đọc và ghi Nếu R/W=0 thì dữliệu sẽ được ghi từ bộ điều khiển ngoài (vi điều khiển AVR chẳng hạn) vàoLCD Nếu R/W = 1 thì dữ liệu sẽ được đọc từ LCD ra ngoài Tuy nhiên, chỉ códuy nhất 1 trường hợp mà dữ liệu có thể đọc từ LCD ra, đó là đọc trạng tháiLCD để biết LCD có đang bận hay không (cờ Busy Flag - BF) Do LCD là mộtthiết bị hoạt động tương đối chậm (so với vi điều khiển), vì thế một cờ BF đượcdùng để báo LCD đang bận, nếu BF=1 thì chúng ta phải chờ cho LCD xử lí xongnhiệm vụ hiện tại, đến khi nào BF=0 một thao tác mới sẽ được gán cho LCD Vìthế, khi làm việc với Text LCD chúng ta nhất thiết phải có một chương trình contạm gọi là wait_LCD để chờ cho đến khi LCD rảnh Có 2 cách để viết chươngtrình wait_LCD Cách 1 là đọc bit BF về kiểm tra và chờ BF=0, cách này đòi hỏi
Trang 19lệnh đọc từ LCD về bộ điều khiển ngoài, do đó chân R/W cần được nối với bộđiều khiển ngoài Cách 2 là viết một hàm delay một khoảng thời gian cố địnhnào đó (tốt nhất là trên 1ms) Ưu điểm của cách 2 là sự đơn giản vì không cầnđọc LCD, do đó chân R/W không cần sử dụng và luôn được nối với GND Tuynhiên, nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽlàm chậm quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị.
- EN (chân số 5): Chân cho phép LCD hoạt động (Enable), chân này cầnđược kết nối với bộ điều khiển để cho phép thao tác LCD Để đọc và ghi data từLCD chúng ta cần tạo một “xung cạnh xuống” trên chân EN, nói theo cách khác,muốn ghi dữ liệu vào LCD trước hết cần đảm bảo rằng chân EN=0, tiếp đến xuất
dữ liệu đến các chân D0÷7, sau đó set chân EN lên 1 và cuối cùng là xóa EN về
0 để tạo 1 xung cạnh xuống
Để hiển thị chữ cái và con số, mã ASCII của các chữ cái từ A đến Z, a đến
z và các con số từ 0 ÷ 9 được gửi tới các chân D0 ÷ D7 khi RS = 1 Các mã lệnhđược gửi tới LCD để xóa màn hình hoặc đưa con trỏ về đầu dòng… (được liệt kêtrên bảng trên) thông các chân D0 ÷ D7 Có thế sử dụng RS = 0 để kiểm tra bit
cờ bận xem LCD đã sẵn sàng nhận thông tin chưa Khi R/W = 1 và RS = 0: NếuD7 = 1 (cờ bận bằng 1) LCD đang bận các công việc bên trong và sẽ không nhậnthông tin, nếu D7 = 0 LCD sẵn sàng nhận thông tin mới Trong mọi trường hợpcần kiểm tra cờ bận trước khi ghi bất kì dữ liệu nào lên LCD
2.3.2 Các thanh ghi.
- Thanh ghi IR: Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng Chỉviệc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR Ví dụ: Lệnh “hiển thịmàn hình và con trỏ” có mã lệnh là 00001110
- Thanh ghi DR: Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùngRAM DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùngRAM này gửi ra cho MPU (ở chế độ đọc)
- Cờ báo bận BF: (Busy Flag) Khi đang thực thi các hoạt động bên trong,LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi cóthiết lập RS=0, R/W=1) lên để cho biết nó đang “bận”
- Bộ đếm địa chỉ AC: (Address Counter) Khi một địa chỉ lệnh được nạp vàothanh ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM (việc chọn lựa vùngRAM tương tác đã được bao hàm trong mã lệnh) Sau khi ghi vào (đọc từ) RAM,
bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị Bộ nhớ LCD Vùng RAM hiển thịDDRAM: (Display Data RAM)
Trang 20CHƯƠNG 3 THIẾT KẾ MẠCH 3.1 Sơ đồ khối.
3.1.1 Sơ đồ khối tổng quát.
Hình 3.1: Sơ đồ khối tổng quát
3.1.2 Chức năng các khối.
- Khối nguồn: Cung cấp nguồn nuôi tất cả linh kiện trong mạch
- Khối thời gian thực DS1307: Khối này thực chất là một chíp thời gian
thực (Real Time Clock), được sử dụng với ý nghĩa thời gian tuyệt đối mà conngười đang sử dụng Nó có pin cấp riêng, như vậy nếu như mất nguồn điện thìRTC vẫn có thể hoạt động bình thường và chính xác theo thời gian đã được thiếtlập ban đầu Trong sơ đồ này nó sẽ đảm nhiệm chức năng cấp time chính xáccho vi điều khiển xử lý các công việc mà người sử dụng yêu cầu
- Khối điều chỉnh: Chức năng của khối này là sử dụng ngắt của 89C52 để
yêu cầu việc điều chỉnh time theo ý của người sử dụng, cài đặt time ban đầu chođồng hồ thời gian thực RTC Tác động bởi các phím bấm (BUTTON)
- Khối âm thanh: Khối này gồm có transistor thông dòng cho loa kêu khi có mức điện áp thay đổi liên tục ở chân ra của vi điều khiển.
- Khối hiển thị: Khối này thực chất là LCD 16x2 để hiển thị time và các
thông tin mà lập trình viên cần hiển thị
- Khối xử lý (vi điều khiển 89C52): Vi điều khiển 89C52 là trung tâm xử lý
các thông tin của mạch Cụ thể là:
AT89C52 đảm nhiệm việc đọc thời gian từ DS1307, chuyển đổi dữ liệuqua lại giữa RTC với LCD để có thể hiển thị lên LCD, đồng thời cập nhật thời
Trang 213.2 Sơ đồ thuật toán.
Hình 3.2: Sơ đồ thuật toán
Trang 223.3 Sơ đồ nguyên lý các khối.
3.3.1 Khối nguồn.
Nguồn cung cấp cho mạch là PIN 3V, 5V, 12V
3.3.2 Khối hiển thị LCD.
LCD 16x2 và giao tiếp với vi điều khiển:
- VEE của LCD được nối với biến trở và nguồn 5V để điều chỉnh độ sángcủa LCD
- Hiển thị thời gian 1 ngày của RTC lên LCD
- 3 chân điều khiển (RS, RW, E)
Trang 23Hình 3.4: Sơ đồ khối xử lý AT89C52
3.3.4 Khối thời gian thực DS1307.
Ta chọn IC DS1307 vì đây là IC chạy thời gian thực có độ chính xác rấtcao, và đặt biệt là dữ liệu thời gian củng không bị mất khi chúng ta bi mất nguồnhoặc cúp điện Nên đồng hồ ta chạy vẫn chính xác ngay cả khi mất điện Đượcnuôi bằng nguồn nuôi pin 3V