Tài liệu Báo cáo Đồng hồ LED: MỤC LỤC
Mở đầu
Chương 1: Giới thiệu và mô tả chức năng 3
1.1-Giới thiệu 3
1.2-Sơ đồ mạch 3
1.3-Mô tả chức năng 3
Chương 2: Nguyên lý hoạt động 5
2.1-Mô tả cấu trúc phần cứng của vi điều khiển 8951 5
2.1.1-Giới thiệu họ MCS51 5
2.1.2-Chức năng các khối của chip 89C51 6
2.1.3-Sơ đồ chân và chức năng chip 89C51 8
2.2-DS1307Serial Real Time Clock 12
2.2.1-Giới thiệu 12
2.2.2-Các thanh ghi của DS1307 13
2.2.3-Điều kiện của giao thức truyền I2C 13
a) Write mode 15
b) Read mode 16
2.3-Xử lý phím nhấn 17
2.3.1-Sơ đồ nguyên lý 17
2.3.2-Chức năng 17
2.4-Hiển thị trên LED 7 đoạn 18
2.4.1-Sơ đồ nguyên lý 18
2.4.2-Chức năng và nguyên lý hoạt động 19
2.4.3-Cấu tạo LED 7 đoạn 19
2.4.4-Xây dựng module hiển thị LED 7 đoạn 21
Chương 3: Lưu đồ giải thuật & Chương trình 23
3.1-Lưu đồ giải thuật 23
3.2-Chương trình 25
Chương 1
GIỚI THIỆU VÀ MÔ TẢ CHỨC NĂNG
1.1-Giới thiệu:
Đây là mạch đồng hồ số hiển thị giờ trên LED 7 đoạn, có thể chỉnh được ...
57 trang |
Chia sẻ: hunglv | Lượt xem: 1420 | Lượt tải: 3
Bạn đang xem trước 20 trang mẫu tài liệu Báo cáo Đồng hồ LED, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
MỤC LỤC
Mở đầu
Chương 1: Giới thiệu và mơ tả chức năng 3
1.1-Giới thiệu 3
1.2-Sơ đồ mạch 3
1.3-Mơ tả chức năng 3
Chương 2: Nguyên lý hoạt động 5
2.1-Mơ tả cấu trúc phần cứng của vi điều khiển 8951 5
2.1.1-Giới thiệu họ MCS51 5
2.1.2-Chức năng các khối của chip 89C51 6
2.1.3-Sơ đồ chân và chức năng chip 89C51 8
2.2-DS1307Serial Real Time Clock 12
2.2.1-Giới thiệu 12
2.2.2-Các thanh ghi của DS1307 13
2.2.3-Điều kiện của giao thức truyền I2C 13
a) Write mode 15
b) Read mode 16
2.3-Xử lý phím nhấn 17
2.3.1-Sơ đờ nguyên lý 17
2.3.2-Chức năng 17
2.4-Hiển thị trên LED 7 đoạn 18
2.4.1-Sơ đồ nguyên lý 18
2.4.2-Chức năng và nguyên lý hoạt động 19
2.4.3-Cấu tạo LED 7 đoạn 19
2.4.4-Xây dựng module hiển thị LED 7 đoạn 21
Chương 3: Lưu đồ giải thuật & Chương trình 23
3.1-Lưu đồ giải thuật 23
3.2-Chương trình 25
Chương 1
GIỚI THIỆU VÀ MƠ TẢ CHỨC NĂNG
1.1-Giới thiệu:
Đây là mạch đồng hồ số hiển thị giờ trên LED 7 đoạn, cĩ thể chỉnh được giờ bằng các phím “mode”, “date”, “up”, “down”. Vì cĩ sử dụng IC thời gian thực DS1307 nên thời gian luơn hiển thị chính xác ngay cả khi mất nguồn chính.
1.2-Sơ đồ mạch:
Hình 1.1: Sơ đồ mạch đồng hồ số
-Mơ tả chức năng:
Thời gian sẽ tự lưu vào bộ nhớ ta chỉ cần cài đặt 1 lần là được
Để chỉnh giờ nhấn “mode” lần thứ nhất, nhấn phím “up” để chỉnh tăng giờ lên, nhấn phím “down”để giảm giờ xuống.
Để chỉnh phút nhấn “mode” lần thứ 2, nhấn phím “up” để điều chỉnh tăng phút lên,nhấn phím “down” để giảm phut xuống.
Để chỉnh giờ hẹn giờ nhấn “mode” lần thứ 3.
Để chỉnh phút hẹn giờ nhấn “mode” lần thứ 4.
Để thốt ra thì nhấn phím “exit”.
Chương 2
NGUYÊN LÝ HOẠT ĐỘNG
2.1-Mơ tả cấu trúc phần cứng của vi điều khiển 8951:
2.1.1-Giới thiệu chung IC 89C51:
MCS-51 là họ vi điều khiển của hãng Intel. Vi mạch tổng quát của họ MCS-51 là chip 8051. Chip 8051 có một số đặc trưng cơ bản sau:
Bộ nhớ chương trình bên trong: 4 KB (ROM).
Bộ nhớ dữ liệu bên trong: 128 byte (RAM).
Bộ nhớ chương trình bên ngoài: 64 KB (ROM).
Bộ nhớ dữ liệu bên ngoài: 64 KB (RAM).
4 port xuất nhập (I/O port) 8 bit.
2 bộ định thời 16 bit.
Mạch giao tiếp nối tiếp
Bộ xử lý bit (thao tác trên các bit riêng lẻ)
210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
Nhân / Chia trong 4 us.
Ngoài ra, trong họ MCS-51 còn có một số chip vi điều khiền khác có cấu trúc tương đương như:
Chip ROM trong RAM trong Bộ định thời
8031 0 KB 128 byte 2
8032 0 KB 256 byte 3
8051 4 KB PROM 128 byte 2
8052 8 KB PROM 256 byte 3
8751 4 KB UV-EPROM 128 byte 2
8752 8 KB UV-EPROM 256 byte 3
8951 4 KB FLASH ROM 128 byte 2
8952 8 KB FLASH ROM 256 byte 3
Hình 2.1: Khối vi xử lý
2.1.2-Chức năng các khối của chip 89C51
Hình 2.2: Sơ đồ khối của chip 89C51
CPU (Central Processing Unit - Đơn vị xử lý trung tâm): tính toán và điều khiển quá trình hoạt động của hệ thống.
OSC (Oscillator - Mạch dao động): tạo tín hiệu xung clock cung cấp cho các khối trong chip hoạt động.
Interrupt control (Điều khiển ngắt): nhận tín hiệu ngắt từ bên ngoài (INT0\, INT1\), từ bộ định thời (TIMER0, TIMER1) và từ cổng nối tiếp (SERIAL PORT), lần lượt đưa các tín hiệu ngắt này đến CPU để xử lý.
Other registers (Các thanh ghi khác): lưu trữ dữ liệu của các port xuất/nhập, trạng thái làm việc của các khối trong chip trong suốt quá trình hoạt động của hệ thống.
RAM (Random Access Memory - Bộ nhớ dữ liệu trong chip): lưu trữ các dữ liệu.
ROM (Read Only Memory - Bộ nhớ chương trình trong chip): lưu trữ chương trình hoạt động của chip.
I/O ports (In/Out ports - Các port xuất/nhập): điều khiển việc xuất nhập dữ liệu dưới dạng song song giữa trong và ngoài chip thông qua các port P0, P1, P2, P3.
Serial port (Port nối tiếp): điều khiển việc xuất nhập dữ liệu dưới dạng nối tiếp giữa trong và ngoài chip thông qua các chân TxD, RxD.
Timer 0, Timer 1 (Bộ định thời 0, 1): dùng để định thời gian hoặc đếm sự kiện (đếm xung) thông qua các chân T0, T1.
Bus control (Điều khiển bus): điều khiển hoạt động của hệ thống bus và việc di chuyển thông tin trên hệ thống bus.
Bus system (Hệ thống bus): liên kết các khối trong chip lại với nhau.
2.1.2-Sơ đồ chân và chức năng các chân của chip 89C51:
Hình 2.3 - Sơ đồ chân chip 89C51
Port 0:
Port 0 (P0.0 – P0.7) có số chân từ 32 – 39.
Port 0 có hai chức năng:
Port xuất nhập dữ liệu (P0.0 - P0.7) _ không sử dụng bộ nhớ ngoài.
Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7)_ có sử dụng bộ nhớ ngoài.
Lưu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các điện trở kéo lên bên ngoài.
Khi lập trình cho ROM trong chip thì Port 0 đóng vai trò là ngõ vào của dữ liệu (D0 – D7) (SGK, tr. 333-352).
Port 1:
Port 1 (P1.0 – P1.7) có số chân từ 1 – 8.
Port 1 có một chức năng:
Port xuất nhập dữ liệu (P1.0 – P1.7) _ sử dụng hoặc không sử dụng bộ nhớ ngoài.
Khi lập trình cho ROM trong chip thì Port 1 đóng vai trò là ngõ vào của địa chỉ byte thấp (A0 – A7) (SGK, tr. 333-352).
Port 2:
Port 2 (P2.0 – P2.7) có số chân từ 21 – 28.
Port 2 có hai chức năng:
Port xuất nhập dữ liệu (P2.0 – P2.7) _ không sử dụng bộ nhớ ngoài.
Bus địa chỉ byte cao (A8 – A15) _ có sử dụng bộ nhớ ngoài.
Khi lập trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ vào của địa chỉ byte cao (A8 – A11) và các tín hiệu điều khiển
Port 3:
Port 3 (P3.0 – P3.7) có số chân từ 10 – 17.
Port 0 có hai chức năng:
Port xuất nhập dữ liệu (P3.0 – P3.7) _ không sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt.
Các tín hiệu điều khiển _ có sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt.
Khi lập trình cho ROM trong chip thì Port 3 đóng vai trò là ngõ vào của các tín hiệu điều khiển (SGK, tr. 333-352).
Chức năng của các chân Port 3:
Chân XTAL1, XTAL2:
XTAL (Crystal): tinh thể thạch anh, chân số 18-19.
Chức năng:
Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock bên ngoài, cung cấp tín hiệu xung clock cho chip hoạtđộng.
XTAL1 _ ngõ vào mạch tạo xung clock trong chip.
XTAL2 _ ngõ ra mạch tạo xung clock trong chip.
Lưu ý: fTYP = 12MHZ fOSC =
fTYP: tần số danh định.
fOSC: tần số mạch dao động trên chip.
fCLK: tần số mạch dao động bên ngoài.
Chân RST:
RST (Reset): thiết lập lại, chân số 9.
Chức năng:
Là tín hiệu cho phép thiết lặp (đặt) lại trạng thái ban đầu cho hệ thống.
Là tín hiệu nhập, tích cực mức cao.
RST = 0 : Chip 8051 hoạt động bình thường.
RST = 1 : Chip 8051 được thiết lặp lại trạng thái ban đầu.
Chân Vcc, GND:
Vcc, GND: nguồn cấp điện, chân số 40-20.
Chức năng:
Cung cấp nguồn điện cho chip 8051 hoạt động.
Vcc = +5V ± 10%.
GND = 0V.
2.2-DS1307 Serial Real Time Clock (RTC)
2.2.1-Giới thiệu:
Hình 2.4- Khối RTC (DS1307)
DS1307 là IC thời gian thực (RTC). Sử sụng giao thức I2C để truyền dữ liệu với các thiết bị khác như vi xử lý, vi điều khiển. Dữ liệu hiển thị thời gian, lịch là mã BCD nén, thêm vào đĩ cĩ 56 byte SRAM bên trong. Địa chỉ và dữ liệu được truyền nối tiếp thơng qua phương thức I2C. Thời gian và lịch bao gồm cĩ các thơng tin về giây, phút, giờ, ngày, ngày trong tuần, tháng và năm. Ngày cuối cùng của tháng thì tự động điều chỉnh nếu một vài tháng cĩ 31 ngày, tương tự với năm nhuận.
2.2.2 Các thanh ghi của DS1307:
Việc lấy dữ liệu thời gian và lịch chỉ đơn giản là đọc dữ liệu từ các thanh ghi thích hợp. Địa chỉ và chức năng của các thanh ghi được liệt kê trong bảng sau:
Hình 2.5- Các thanh ghi RTC
DS12C887 cĩ chạy ở cả 2 mode 12 giờ, hoặc chế độ 24 giờ. Bit thứ 6 của thanh ghi giờ quyết định chế độ chạy chế độ 12 hoặc 24. Khi ở mức cao chế độ 12 giờ được chọn.
2.2.3- Điều kiện của giao thức truyền I2C
Trong giao thức truyền này DS1307 được hiểu như một thiết bị Slave, điều kiện của giao thức I2C là:
Dữ liệu bắt đầu truyển chỉ khi bus khơng bận.
Suốt quá trình truyền SDA phải ở trạng thái ổn định bất cứ khi nào SCL ở mức cao. Thay đổi SDA khi SCL ở mức cao sẽ được hiểu như là 1 tín hiệu điều khiển. Chi tiết hơn là như sau:
Bus khơng bận: Cả hai đường SDA và SCL vẫn ổn định ở mức cao.
Bắt đầu chuyển dữ liệu: Sự thay đổi trạng thái của SDA, từ cao xuống thấp, trong khi SCL ở mức cao được định nghĩa là điều kiện Start.
Kết thúc chuyển dữ liệu: Sự thay đổi trạng thái của SDA, từ thấp lên cao, trong khi SCL ở mức cao được định nghĩa là điều kiện Stop.
Dữ liệu hợp lệ: Trạng thái của dữ liệu tiêu biểu cho giá trị hợp lệ khi, sau khi bắt đầu điểu kiện Start, SDA phải ở trạng thái ổn định trong suốt quá trình ở mức cao của xung clock. SDA chỉ được thay đổi suốt chu kì mức thấp của xung clock. Cĩ một xung clock trên 1 bit dữ liệu. mỗi lần truyền dữ liệu được bắt đầu bởi điều kiện Start và kết thúc bởi điều kiện Stop, số byte được truyền giữa điều kiện Start, Stop là khơng bị giới hạn, và được quyết định bởi thiết bị Master (89C51). Cuối mỗi byte cĩ 1 bit Acknowledge (bit thứ 9).
Cơng nhận: Mỗi thiết bị sau khi được định địa chỉ, thì báo cho Master biết đã nhận đối với mỗi byte. Thiết bị Master phải tạo thêm 1 xung clock phụ liên kết với bit Acknowledged thiết bị thừa nhận phải kéo đường data xuống mức thấp (SDA) phải ổn định ở mức thấp suốt chu kì mức cao của xung clock). Dĩ nhiên thời gian thiết đặt và chờ phải được tính tốn trước. Thiết bị Master phải tạo 1 tín hiệu kết thúc dữ liệu với Slave, bởi vì nếu khơng tạo ra bit Acknowledged cuối byte, Master vẫn tạo ra xung clock nhưng khơng cĩ sự đáp ứng nào của Slave. Trong trường hợp này, thiết bị Slave phải cho đường data lên mức cao để cho phép master tạo ra điều kiện Stop.
Hình 10: Dữ liệu truyền trn BUS I2C
Dữ liệu truyền từ Master đến Slave: Byte đầu tiên được truyền là địa chỉ của Slave. Tiếp theo sau là 1 số byte cần truyền. Slave trả về bit thừa nhận sau mỗi byte nhận được. Dữ liệu được truyền với bit cĩ trọng số lớn nhất (MSB) đầu tiên.
Dữ liệu truyền từ Slave sang Master: Địa chỉ của Slave được truyền đầu tiên. Slave trả về bit thừa nhận (ACK). Slave truyền một số byte cần truyền. Master trả về bit thừa nhận sau tất cả các byte đã nhận được, ngoại trừ byte cuối cùng. Bit khơng thừa được gán cho byte cuối cùng. Thiết bị Master tạo tất cả các xung clock cũng như điều kiện Start, Stop. Sự truyền dữ liệu bắt đầu với điều kiện Start và kết thúc với điều kiện Stop. Từ khi điều Start bắt đầu nĩ cũng bắt đầu quá trình mới, truyền dữ liệu.
a) Write mode
Dữ liệu và xung clock được nhận thơng qua SDA và SCL. Sau mỗi bit nhận được cĩ 1 bit thừa nhận được truyền đi. Điều kiện Start, Stop ghi nhận việc bắt đầu truyền hay nhận dữ liệu. Phần cứng thực hiện việc ghi nhận địa chỉ sau khi địa chỉ của thiết bị Slave, bit chỉ phương truyền (Nhìn hình 5). Byte chứa địa chỉ Slave là byte đầu tiên được nhận sau khi Master tạo điều kiện Start. Địa chỉ Slave chứa 7-bit địa chỉ của DS12C887 là 1101000, theo sau đĩ là bit chiều (R/W), vì đây là chế độ Write nên bit này là 0. Sau khi nhận và giải mã địa chỉ Slave, DS1307 xuất ra một bit thừa nhận trên SDA. Cơng việc tiếp theo Master chỉ việc truyền địa chỉ Word (đặt con trỏ thanh ghi cho DS1307, và DS1307 cĩ bit cơng nhận việc truyền này). Master cĩ thể chuyển một hay nhiều byte dữ liệu ngay sau đĩ với sự cơng nhận sau mỗi byte của DS1307. Con trỏ thanh ghi tự động tăng sau mỗi byte được viết. Master sẽ tạo điều kiện Stop để ngưng việc ghi dữ liệu.
Hình 2.6- Ghi dữ liệu – Chế độ Slave làm bộ nhận
b) Read mode
Byte đầu tiên được nhận và xử lý như chế độ Slave làm bộ nhận. Mặt dù vậy, trong chế độ này bit chiều sẽ chỉ rõ chiều được đảo lại. Điều kiện Start và Stop ghi nhận việc bắt đầu truyền và nhận dữ liệu. Byte chứa địa chỉ Slave là byte đầu tiên được chấp nhận sau khi bắt đầu điều kiện Start, tương tự như chế độ Write, địa chỉ Slave là 1101000, theo sau là bit chiều (R/W), ứng với chế độ Read nên bit này bằng 1. Sau khi nhận và giải mã địa chỉ Slave, DS1307 xuất 1 bit thừa nhận (Ack) trên SDA. DS1307 bắt đầu truyền dữ liệu bắt đầu với địa chỉ thanh ghi đã được trỏ bởi con trỏ thanh ghi. Con trỏ thanh ghi tự động tăng sau mỗi byte được đọc. DS1307 phải nhận 1 bit Ack để kết thúc việc đọc.
Hình 2.7- Đọc dữ liệu – Chế độ Slave phát
2.3- Xử lý phím nhấn:
2.3.1-Sơ đờ nguyên lý:
Hình 2.8- Sơ đờ Xử lý phím nhấn
2.3.2-Chức năng:
Cấp nguồn cho khối vi điều khiển hoạt động bằng cách bật cộng tắc trên khối vi điều khiển và chương trình sẽ bắt đầu chạy. Ban đầu, chương trình sẽ chạy theo đồng hồ từ máy tính xuất vào mạch Vi xử lý, chương trình chạy như vậy là do mặc định ban đầu của chương trình. Muốn chương trình chạy đúng như thực tế thì ta phải hiệu chỉnh bằng các nút nhấn.
Khối nút nhấn gồm 4 nút để hiệu chỉnh đồng hồ .
Nút MODE kết nối với P3.2 của vi điều khiển: dùng để nhảy đến các giá trị cần hiệu chỉnh: giờ, phút, giây…. mỗi khi ta nhấn cho nối mass một lần thì nĩ sẽ nhảy đến giá trị cần hiệu chỉnh:
Thời gian sẽ tự lưu vào bộ nhớ ta chỉ cần cài đặt 1 lần là được
Để chỉnh giờ nhấn “mode” lần thứ nhất, nhấn phím “up” để chỉnh tăng giờ lên, nhấn phím “down”để giảm giờ xuống.
Để chỉnh phút nhấn “mode” lần thứ 2, nhấn phím “up” để điều chỉnh tăng phút lên,nhấn phím “down” để giảm phut xuống.
Để chỉnh giờ hẹn giờ nhấn “mode” lần thứ 3.
Để chỉnh phút hẹn giờ nhấn “mode” lần thứ 4.
Để thốt ra thì nhấn phím “exit”.
Nút UP kết nối với P3.4 của vi điều khiển: dùng để tăng giá trị khi hiệu chỉnh sau mỗi lần nhấn cho nối mass.
Nút DOWN kết nối với P3.5 của vi điều khiển: Dùng để giảm giá trị khi hiệu chỉnh sau mỗi lần nhấn cho nối mass.
Khi muốn trở về chương trình mặc định ban đầu thì ta nhấn nút “exit” trên khối vi điều khiển .
2.4-Hiển thị trên LED 7 đoạn:
2.4.1-Sơ đồ LED.
Hình 2.9- Khối LED 7 đoạn
2.4.2-Chức năng và nguyên lý hoạt động.
Khối LED 7 đoạn bao gồm 6 LED 7 đoạn Anode chung kết hợp với nhau. Tất cả các led này đều được cấp nguồn thơng qua 6 Transistor đĩng vai trị như các cơng tắc và được điều khiển thơng qua các tín hiệu điều khiển tích cực mức thấp.
Trong đĩ các led mắc theo kiểu phương pháp đa hợp cĩ nghĩa là tất cả các đoạn của các led sẻ được nối chung vào nhau và vào port điều khiển (Port 1), cịn anode của tất cả các led sẽ được nối vào một port điều khiển khác (Port 0), và được cấp tín hiệu quét led một cách tuần tự, tại một thời điểm thì chỉ cĩ một led cấp nguồn hoạt động. Phương pháp điều khiển trong trường hợp này là phải tiến hành tuần tự qua các giai đoạn: Cấp một tín hiệu quét led sao cho chỉ cĩ led đầu tiên được cấp nguồn, rồi đưa mã 7 đoạn tương ứng của số cần hiện thị ra led 7 đoạn đĩ; kế tiếp cần cấp một tín hiệu quét led sao cho chỉ cĩ led thứ 2 được cấp nguồn rối đưa mã 7 đoạn tương ứng của số cần hiện thị ra led 7 đoạn đĩ; quá trình cứ diễn ra liên tục như vậy và do hiện tượng lưu ảnh của mắt mà ta thấy được các led dường như sáng cùng một lúc.
2.4.3-Cấu tạo của LED 7 đoạn
Hình 2.10- Sơ đồ chân và cấu tạo LED 7 đoạn
LED 7 đoạn là một cơng cụ thơng dụng được dùng để hiển thị các thơng số dưới dạng các số từ 0 đến 9. Mặc dù cơng cụ LCD giúp ta thể hiện các thơng số một cách linh động hơn nhưng LED 7 đoạn vẫn được sử dụng nhiều trong cơng nghiệp do các ưu thế của nĩ như: ít chịu ảnh hưởng của nhiệt độ, dễ tạo sự chú ý và gĩc nhìn rộng.
LED 7 đoạn bao gồm 7 đoạn LED được đánh dấu là các kí tự a, b, c, d, e, f, g và một dấu chấm thập phân kí hiệu là dp. Ta cĩ thể xem LED 7 đoạn là một tổ hợp gồm 8 LED. 8 LED này cĩ một đầu (Anode hoặc Cathode) được nối chung và được bố trí theo một qui tắc nhất định dùng để hiển thị các chữ số thập phân.
Cĩ hai loại LED 7 đoạn, đĩ là loại Anode chung (cực Anode của các LED được nối
chung với nhau) và loại Cathode chung (cực Cathode của các LED được nối chung với
nhau). Tùy theo từng loại LED mà ta cĩ các phương pháp điều khiển các LED trong tổ hợp đĩ sáng tắt một cách thích hợp. Đối với loại Anode chung, một LED sẽ được bật sáng nếu mức logic đưa vào chân điều khiển đoạn LED đĩ là mức logic 0. Đối với loại Cathode
chung, một LED sẽ được bật sáng nếu mức logic đưa vào chân điều khiển đoạn LED đĩ là
mức logic 1. Một phương pháp để xác định chính xác các chân điều khiển của LED 7 đoạn là kiểm tra từng chân của LED đĩ.
Dựa vào hình vẽ cấu tạo LED 7 đoạn ta cĩ thể hiểu một phần nào phương pháp hiển thị của một LED. Ví dụ, muốn hiển thị số “6”, ta sẽ điều khiển các đoạn LED a, c, d, e, g, f sáng lên.
Việc điều khiển sáng tắt được thực hiện bằng cách đưa dữ liệu thích hợp vào các chân a-g
và dp (tạm gọi là các chân dữ liệu) của LED 7 đoạn. Đĩ là cách hiển thị theo từng LED. Tuy nhiên, trong thực tế, để tiết kiệm số chân cần thiết để điều khiển cùng một lúc nhiều LED 7 đoạn, các chân dữ liệu của các LED sẽ được nối song song với nhau, các chân anode chung (hoặc cathode chung) được dùng để cho phép LED đĩ sáng hay tắt (tạm gọi là các chân điều khiển).
2.4.4 - Xây dựng module hiển thị trên LED 7 đoạn
Module ứng dụng sau đây được xây dựng dùng để hiển thị 2 chữ số thập phân trên 2
LED 7 đoạn sử dụng loại LED 7 đoạn Anode chung.
Trước hết ta sẽ tiến hành kết nối phần cứng giữa vi điều khiển và LED 7 đoạn để từ đĩ
xác định được dữ liệu cần đưa vào LED 7 đoạn để hiển thị một chữ số thập phân nào đĩ.
Thứ tự kết nối các chân như sau:
- Chân dp nối vào chân RD7.
- Chân g nối vào chân RD6.
- Chân f nối vào chân RD5.
- Chân e nối vào chân RD4.
- Chân d nối vào chân RD3.
- Chân c nối vào chân RD2.
- Chân b nối vào chân RD1.
- Chân a nối vào chân RD0.
Muốn điều khiển một đoạn LED nào đĩ sáng lên, ta đưa vào chân điều khiển LED đĩ
về mức logic 0.
Chương 3
LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH
3.1 Lưu đồ giải thuật:
HIỂN THỊ
CHUYỂN MẢ
BCDQUA MẢ 7 ĐOẠN
SCANKED
RET
CHUYỂN MẢ
BCD QUA MẢ 7 ĐOẠN
XĨA ĐƠN VỊ
A= @A+DPTR
20 = A
A = @A+DPTR
21 = A
RET
GHI ĐỊA CHỈ CẦN ĐỌC
GỞI
NHÂN GIÁ
TRỊ TỪ RTC
LƯU VAO
THANH GHI A
START
ĐỌC DATA
RET
SCANLED
RET
XUẤT MÃ
HIỂN THỊ RA PORT 0
DELAY LED 2.5ms
BẬT BIT ĐIỀU KHIỂN
TẮT BIT ĐIỀU KHIỂN
MAIN
DELAY 2S
ĐỌC DỮ LIỆU GIÂY RTC
= 80HZ
ĐOC DATA
DỮ LIỆU CỦA RTC
GHI VÀO GIÂY GIÁ TRỊ 00H
HIỂN THỊ
LED 7 ĐOẠN
BÁO GIỜ
HẸN GIỜ
HIỆU CHỈNH RTC
P3.2 =0
HIỆU CHỈNH RTC
P3.2 = 0
P3.4 = 0
P3.3 = 0
P3.5 = 0
THỐT
CHUYỂN
TĂNG GIÁ TRỊ
GIẢM GIÁ TRỊ
RET
Chương trình:
;################################################
;chuong trinh giao tiep VDK 89c51 va RTC ds1307.
;noi dung: 1. cho hien thi gia tri
; cua gio-phut-giay
; len 6 led 7 doan anod chung.
; 2. bao chuong sau moi tieng
; 3. hen gio
;nguoi thuc hien: Trương thạch lam,Đồn thị hồ
;###############################################
$MOD51
;GIAO TIEP VOI RTC DS1307
SCL BIT P3.0
SDA BIT P3.1
;GIAO TIEP VOI NUT NHAN
MODE BIT P3.2
EXIT BIT P3.3
UP BIT P3.4
DOWN BIT P3.5
;GIAO TIEP VOI LED 7 DOAN THEO PHUONG PHAP QUET LED
LED_CHGIO BIT P2.0
LED_DVGIO BIT P2.1
LED_CHPHUT BIT P2.2
LED_DVPHUT BIT P2.3
LED_CHGIAY BIT P2.4
LED_DVGIAY BIT P2.5
ALARM BIT P2.6
BELL BIT P2.7
OUT_MADISP EQU P0
;PHAN CHIA VUNG RAM TRONG 89C51
GIAY EQU 20
PHUT EQU 21
GIO EQU 22
GIAY_ALARM EQU 27
PHUT_ALARM EQU 28
GIO_ALARM EQU 29
ORG 0000H
LJMP MAIN
; ORG 0003H
; LJMP CAIDAT_RTC
ORG 00H
MAIN:
MOV SP,#5FH ;dinh dia chi RAM nhap va RAM da dung
; MOV IE,#81H ;bat ngat ngoai 0
SETB P2.6 ;tat hen gio
;--------------------------------------------------------------
MOV R7,#6
DELAY2S:
LCALL CHONGDOI ;0.5S
DJNZ R7,DELAY2S
;------------------------ DOC DU LIEU CUA GIAY------------------
LCALL START
MOV A,#0D0H
LCALL GUI
MOV A,#00H
LCALL GUI
LCALL STOP
LCALL START
MOV A,#0D1H
LCALL GUI
LCALL NHAN
LCALL STOP
CJNE A,#80H,YES ;KIEM TRA BIT 7 CO BANG 1
;BIT 7= 1 --> DS1307 KO HOAT DONG ---> KHONG TOT
;BIT 7= 0 --> DS1307 HOAT DONG
LCALL START
MOV A,#0D0H
LCALL GUI
MOV A,#00H ;DIA CHI CUA GIAY TRONG RTC1307
LCALL GUI
MOV A,#00H ;DATA BIT CH7=0 CHO PHEP BAT OSC
LCALL GUI
LCALL STOP
YES:
SJMP MP1
;###################################
; CHUONG TRINH CHINH BAT DAU TAI DAY
;###################################
MP1:
; LCALL DOCDATA
; MOV DPTR,#MA7SEG
LCALL DISPLAYTIMER ;GOI CTC XU LY HIEN THI
JNB P3.2,CONHANPHIM
LCALL BAOGIO
JNB P2.6,HENGIO
SJMP MP1
CONHANPHIM:
MOV P0,#00H
LCALL CHUYENPHUT
SJMP MP1
HENGIO:
MOV A,20
CJNE A,#00H,EXIT2
MOV A,21
CJNE A,28,EXIT2
MOV A,22
CJNE A,29,EXIT2
LJMP CHUONGHG
EXIT2:
SJMP MP1
;##########################
;CTC XU LY DU LIEU HIEN THI
;##########################
DISPLAYTIMER:
MOV DPTR,#MA7SEG
LCALL DOCDATA ;DOC DU LIEU TU RTC
LCALL DISPLAY ;CHO HIEN THI
RET
;####################################
;CTC DOC DU LIEU
;SAU DO LUU DIEU LIEU VAO RAM CUA VDK
;####################################
DOCDATA:
MOV R0,#00H ;DIA CHI DU LIEU CAN DOC BAT DAU LA GIAY
MOV R1,#20 ;LUU VAO O NHO CUA VDK
DOCTIEP:
LCALL START
MOV A,#0D0H ;DIA CHI CUA RTC1307, D0 = GHI, D1 = DOC
LCALL GUI
MOV A,R0 ;DIA CHI CUA GIAY TRONG RTC1307
LCALL GUI
LCALL STOP
LCALL START
MOV A,#0D1H ;NHAN DATA GIAY TU RTC1307
LCALL GUI
LCALL NHAN
LCALL STOP
MOV @R1,A ;DOC XONG GIAY
INC R0
INC R1
CJNE R0,#0BH,DOCTIEP
RET
BAOGIO:
MOV A,20
CJNE A,#00H,NO ;0 GIAY CHUA?
MOV A,21
CJNE A,#00H,NO ;0 PHUT CHUA?
MOV A,22
CJNE A,#03H,BG4
LJMP CHUONGBG
NO:
RET
BG4:
CJNE A,#04H,BG5
LJMP CHUONGBG
BG5:
CJNE A,#05H,BG6
LJMP CHUONGBG
BG6:
CJNE A,#06H,BG7
LJMP CHUONGBG
BG7:
CJNE A,#07H,BG8
LJMP CHUONGBG
BG8:
CJNE A,#08H,BG9
LJMP CHUONGBG
BG9:
CJNE A,#09H,BG10
LJMP CHUONGBG
BG10:
CJNE A,#10H,BG11
LJMP CHUONGBG
BG11:
CJNE A,#11H,BG12
LJMP CHUONGBG
BG12:
CJNE A,#12H,BG13
LJMP CHUONGBG
BG13:
CJNE A,#13H,BG14
LJMP CHUONGBG
BG14:
CJNE A,#14H,BG15
LJMP CHUONGBG
BG15:
CJNE A,#15H,BG16
LJMP CHUONGBG
BG16:
CJNE A,#16H,BG17
LJMP CHUONGBG
BG17:
CJNE A,#17H,BG18
LJMP CHUONGBG
BG18:
CJNE A,#18H,BG19
LJMP CHUONGBG
BG19:
CJNE A,#19H,BG20
LJMP CHUONGBG
BG20:
CJNE A,#20H,BG21
LJMP CHUONGBG
BG21:
CJNE A,#21H,BG22
LJMP CHUONGBG
BG22:
CJNE A,#22H,BG23
LJMP CHUONGBG
BG23:
CJNE A,#23H,EXIT1
LJMP CHUONGBG
EXIT1:
RET
CHUONGBG:
MOV R6,#5
SJMP TTCHUONG
CHUONGHG:
MOV R6,#25
TTCHUONG:
CLR P2.7
LCALL DELAYCHUONG
SETB P2.7
LCALL DELAYCHUONG
DJNZ R6,TTCHUONG
LJMP MP1
;---------------------------------------
;CAIDAT_RTC:
; MOV R7,#6;100mS
;POWER1:
; LCALL CHONGDOI
; DJNZ R7,POWER1
; JNB P3.2,CHUYENPHUT
; LJMP MP2
CHUYENPHUT: ;--------------------------------SET PHUT---------------
LCALL CHONGDOI
CHINHPHUT:
LCALL DISP_PHUT
JNB P3.2,CHUYENGIO
JNB P3.3,THOATCAIDAT1
JNB P3.4,TANGPHUT
JNB P3.5,GIAMPHUT
SJMP CHINHPHUT
THOATCAIDAT1:
LJMP THOATCAIDAT
TANGPHUT:
MOV A,21
LCALL HEXTODEC
INC A
CJNE A,#60,GHIPHUT
MOV A,#00H
SJMP GHIPHUT
GIAMPHUT:
MOV A,21
LCALL HEXTODEC
DEC A
CJNE A,#-1,GHIPHUT
MOV A,#59
GHIPHUT:
LCALL DECTOHEX
MOV 21,A
ACALL START
MOV A,#0D0H ;DIA CHI CUA RTC1307, D0 = GHI, D1 = DOC
ACALL GUI
MOV A,#01H
ACALL GUI
MOV A,21
ACALL GUI
ACALL STOP
SJMP CHUYENPHUT
CHUYENGIO:
ACALL CHONGDOI
CHINHGIO:
ACALL DISP_GIO
JNB P3.2,CHUYENOK1
JNB P3.3,THOATCAIDAT2
JNB P3.4,TANGGIO
JNB P3.5,GIAMGIO
SJMP CHINHGIO
THOATCAIDAT2:
LJMP THOATCAIDAT
TANGGIO:
MOV A,22
LCALL HEXTODEC
INC A
CJNE A,#24,GHIGIO
MOV A,#00H
SJMP GHIGIO
GIAMGIO:
MOV A,22
LCALL HEXTODEC
DEC A
CJNE A,#-1,GHIGIO
MOV A,#23
GHIGIO:
LCALL DECTOHEX
MOV 22,A
ACALL START
MOV A,#0D0H ;DIA CHI CUA RTC1307, D0 = GHI, D1 = DOC
ACALL GUI
MOV A,#02H ;DIA CHI CUA GIO TRONG RTC1307
ACALL GUI
MOV A,22
ACALL GUI
ACALL STOP
ACALL CHONGDOI
SJMP CHINHGIO
CHUYENOK1:
ACALL CHONGDOI
CHINHOK1:
LCALL DISP_PHUT
ACALL DISP_GIO
JNB P3.2,CAIDATALARM
JNB P3.3,THOATCAIDAT3
SJMP CHINHOK1
THOATCAIDAT3:
LJMP THOATCAIDAT
CAIDATALARM:
LCALL CHONGDOI
CHINHPHUT_A:
ACALL DISP_PHUT_A
JNB P3.2,CHUYENGIO_A
JNB P3.3,THOATCAIDAT4
JNB P3.4,TANGPHUT_A
JNB P3.5,GIAMPHUT_A
SJMP CHINHPHUT_A
THOATCAIDAT4:
LJMP THOATCAIDAT
TANGPHUT_A:
MOV A,28
LCALL HEXTODEC
INC A
CJNE A,#60,GHIPHUT_A
MOV A,#00H
SJMP GHIPHUT_A
GIAMPHUT_A:
MOV A,28
LCALL HEXTODEC
DEC A
CJNE A,#-1,GHIPHUT_A
MOV A,#59
GHIPHUT_A:
LCALL DECTOHEX
MOV 28,A
ACALL START
MOV A,#0D0H ;DIA CHI CUA RTC1307, D0 = GHI, D1 = DOC
ACALL GUI
MOV A,#08H ;DIA CHI CUA PHUT TRONG RTC1307
ACALL GUI
MOV A,28
ACALL GUI
ACALL STOP
ACALL CHONGDOI
SJMP CHINHPHUT_A
CHUYENGIO_A:
ACALL CHONGDOI
CHINHGIO_A:
ACALL DISP_GIO_A
JNB P3.2,TRANGTHAIALARM
JNB P3.3,THOATCAIDAT5
JNB P3.4,TANGGIO_A
JNB P3.5,GIAMGIO_A
SJMP CHINHGIO_A
THOATCAIDAT5:
LJMP THOATCAIDAT
TANGGIO_A:
MOV A,29
LCALL HEXTODEC
INC A
CJNE A,#24,GHIGIO_A
MOV A,#00H
SJMP GHIGIO_A
GIAMGIO_A:
MOV A,29
LCALL HEXTODEC
DEC A
CJNE A,#-1,GHIGIO_A
MOV A,#23
GHIGIO_A:
LCALL DECTOHEX
MOV 29,A
ACALL START
MOV A,#0D0H ;DIA CHI CUA RTC1307, D0 = GHI, D1 = DOC
ACALL GUI
MOV A,#09H ;DIA CHI CUA GIO TRONG RTC1307
ACALL GUI
MOV A,29
ACALL GUI
ACALL STOP
ACALL CHONGDOI
SJMP CHINHGIO_A
TRANGTHAIALARM:
LCALL CHONGDOI
CHINHTRANGTHAI:
LCALL DISP_PHUT_A
LCALL DISP_GIO_A
JNB P3.2,QUAYVE
JNB P3.3,THOATCAIDAT
JNB P3.4,BAT_ALARM
JNB P3.5,TAT_ALARM
SJMP CHINHTRANGTHAI
;THOATCAIDAT6:
; LJMP THOATCAIDAT
QUAYVE:
LCALL CHONGDOI
LJMP CHINHPHUT
BAT_ALARM:
LCALL CHONGDOI
BAT_ALARM_1:
CLR P2.6
LCALL DISP_PHUT_A
LCALL DISP_GIO_A
JNB P3.2,QUAYVE
JNB P3.3,THOATCAIDAT
JNB P3.4,BAT_ALARM
JNB P3.5,TAT_ALARM
SJMP BAT_ALARM_1
TAT_ALARM:
LCALL CHONGDOI
TAT_ALARM_1:
SETB P2.6
LCALL DISP_PHUT_A
LCALL DISP_GIO_A
JNB P3.2,QUAYVE
JNB P3.3,THOATCAIDAT
JNB P3.4,BAT_ALARM
JNB P3.5,TAT_ALARM
SJMP TAT_ALARM_1
THOATCAIDAT:
LCALL CHONGDOI
RET
START:
CLR SCL
SETB SDA
NOP
NOP
NOP
SETB SCL
CLR SDA
NOP
NOP
NOP
RET
STOP:
NOP
NOP
NOP
CLR SDA
SETB SCL
NOP
NOP
NOP
SETB SDA
CLR SCL
RET
GUI:
MOV R7,#8
BACK_GUI:
CLR SCL
NOP
NOP
NOP
RLC A
MOV SDA,C
SETB SCL
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
DJNZ R7,BACK_GUI
SETB SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
RET
NHAN:
MOV R7,#08
BACK_NHAN:
SETB SCL
NOP
NOP
NOP
MOV C,SDA
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
RLC A
DJNZ R7,BACK_NHAN
SETB SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SCL
NOP
NOP
NOP
RET
;------------
;CTC HIEN THI
;------------
DISPLAY:
LCALL DISP_GIAY
LCALL DISP_PHUT
LCALL DISP_GIO
RET
DISP_GIAY:
MOV A,20
ANL A,#0FH
MOVC A,@A+DPTR
MOV 30,A
MOV A,20
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV 31,A
MOV P0,30
CLR P2.5
LCALL DELAY
SETB P2.5
MOV P0,31
CLR P2.4
LCALL DELAY
SETB P2.4
RET
DISP_PHUT:
MOV A,21
ANL A,#0FH
MOVC A,@A+DPTR
MOV 32,A
MOV A,21
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV 33,A
MOV P0,32
CLR P2.3
LCALL DELAY
SETB P2.3
MOV P0,33
CLR P2.2
LCALL DELAY
SETB P2.2
RET
DISP_GIO:
MOV A,22
ANL A,#0FH
MOVC A,@A+DPTR
MOV 34,A
MOV A,22
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV 35,A
MOV P0,34
CLR P2.1
LCALL DELAY
SETB P2.1
MOV P0,35
CLR P2.0
LCALL DELAY
SETB P2.0
RET
DISP_PHUT_A:
MOV A,28
ANL A,#0FH
MOVC A,@A+DPTR
MOV 36,A
MOV A,28 ;PHUT
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV 37,A
MOV P0,36
CLR P2.3
LCALL DELAY
SETB P2.3
MOV P0,37
CLR P2.2
LCALL DELAY
SETB P2.2
RET
DISP_GIO_A:
MOV A,29
ANL A,#0FH
MOVC A,@A+DPTR
MOV 38,A
MOV A,29 ;GIO
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV 39,A
MOV P0,38
CLR P2.1
LCALL DELAY
SETB P2.1
MOV P0,39
CLR P2.0
LCALL DELAY
SETB P2.0
RET
;------------------------------------
;CTC CHUYEN MA HEX THANH MA THAP PHAN
;------------------------------------
HEXTODEC:
MOV B,#10H ;B=16
DIV AB ;A/B
MOV 60H,B ;CAT DON VI
MOV B,#0AH ;B=10
MUL AB ;LAY CHUC NHAN 10
ADD A,60H ;CONG VOI GIA TRI DON VI->THANH SO THAP PHAN
RET
;------------------------------------
;CTC CHUYEN MA THAP PHAN THANH MA HEX
;------------------------------------
DECTOHEX:
MOV B,#0AH ;CHUYEN THAP PHAN SANG HEX B=10
DIV AB ;A/B
MOV 60H,B ;CAT DON VI
MOV B,#10H ;B=16
MUL AB ;LAY CHUC NHAN 16
ADD A,60H ;CONG VOI GIA TRI DON VI->THANH SO HEX
RET
;---------------------------
;CTC DELAY 2,5MS DE QUET LED
;---------------------------
DELAY:
MOV TMOD,#01H
MOV TH0,#0F0H ;GIA TRI MO PHONG
MOV TL0,#5FH ;GIA TRI MO PHONG
; MOV TH0,#0FEH ;GIA TRI THUC TE
; MOV TL0,#0D3H ;GIA TRI THUC TE
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;--------------------------------
;CTC TAO TRE TUNG NHIP CHO CHUONG
;--------------------------------
DELAYCHUONG:
MOV TMOD,#10H
MOV R2,#30
DEM:
MOV TH1,#HIGH(-10000)
MOV TL1,#LOW(-10000)
SETB TR1
HERE:
LCALL DOCDATA
LCALL DISPLAY
JNB TF1,HERE
CLR TR1
CLR TF1
DJNZ R2,DEM
RET
;----------------------------------------
;CTC CHONG DOI KHI NHAN NUT NHAN DE CHINH
;----------------------------------------
CHONGDOI:
MOV R3,#5
LAP3:
MOV R1,#200
LAP2:
MOV R2,#250;0,5MS
DJNZ R2,$
DJNZ R1,LAP2
DJNZ R3,LAP3
RET
MA7SEG:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
CHƯƠNG 4:
THI CƠNG PHẦN CỨNG
KHỐI NGUỒN
KHỐI NÚT NHẤN
KHỐI ĐIỀU KHIỂN
KHỐI HIỂN
THỊ LED 7 ĐOẠN
KHỐI RTC DS1307
Sơ đồ khối
mạch orcard
TÀI LIỆU THAM KHẢO
Datasheet của AT89C51.
Datasheet của DS12C887.
Mã nguồn I2C trên trang www.8250.com.
Giáo trình vi xử lý – Phạm Quang Trí.
Thực hành vi xử lý – Phạm Quang Trí.
Tài liệu khác.
Các file đính kèm theo tài liệu này:
- bao_cao_do_an_2_dong_ho_led_7_doan_9812.doc