1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

BÁO CÁO THÍ NGHIỆM VI XỬ LÝ

43 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Bài Tập Lớn Vi Xử Lý
Tác giả Nguyễn Bá Hưng, Nguyễn Lê Hải Đăng, Võ Văn Đăng Khoa, Lê Công Danh
Người hướng dẫn GVHD: Nguyễn Phan Hải Phú
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Điện – Điện Tử
Thể loại bài tập lớn
Năm xuất bản 2021-2022
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 43
Dung lượng 1,63 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU LÝ THUYẾT (6)
    • 1. Giới thiệu Vi điều khiển AT89C52 (6)
      • 1.1 Sơ đồ chân AT89C52 (9)
      • 1.2. Cấu hình chân AT89S52 (9)
      • 1.3 Các chế độ đặc biệt (12)
        • 1.3.1 Chế độ nghỉ (12)
        • 1.3.2 Chế độ nguồn giảm (13)
        • 1.3.3 Các bit nhớ bộ khóa chương trình (14)
      • 1.4 AT89C52 SFR Map and giá trị Reset (15)
      • 1.5 T2CON - Thanh ghi điều khiển bộ định thời / bộ đếm 2 (15)
    • 2. Giới thiệu DS1307 (16)
      • 2.1 Giới thiệu về IC thời gian thực DS1307 (16)
      • 2.2 Cấu tạo và các thanh ghi (17)
      • 2.3 Cấu trúc bên trong của IC DS1307 (19)
      • 2.4 Tổ chức bộ nhớ của DS1307 (19)
      • 2.5 Giao tiếp với DS1307 (21)
      • 2.6 Nguyên lý hoạt động (23)
      • 2.7 Điều kiện của giao thức truyền I 2 C (23)
    • 3. Xử lý phím nhấn (27)
      • 3.1 Sơ đồ nguyên lý (27)
      • 3.2 Chức năng (27)
      • 4.1 Sơ đồ LED (28)
  • CHƯƠNG 2: THIẾT KẾ VÀ THI CÔNG (31)
    • 1. Lưu đồ giải thuật (31)
  • CHƯƠNG 3: TÀI LIỆU THAM KHẢO (43)

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ NĂM HỌC 2021 2022 BÁO CÁO BÀI TẬP LỚN VI XỬ LÝ GVHD NGUYỄN PHAN HẢI PHÚ SINH VIÊN THỰC HIỆN Họ Tên MSSV Lớp Nguyễn.

GIỚI THIỆU LÝ THUYẾT

Giới thiệu Vi điều khiển AT89C52

AT89C52 là dòng vi điều khiển do Atmel sản xuất, phù hợp cho các ứng dụng điều khiển Việc xử lý dữ liệu byte và thực hiện các phép toán số học trên cấu trúc dữ liệu nhỏ được thực hiện thông qua nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội Ngoài ra, AT89C52 cung cấp hỗ trợ mở rộng cho các biến một bit, cho phép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển.

AT89C52 là một vi điều khiển với 8Kbyte bộ nhớ FLASH ROM cho phép nạp và xóa chương trình lên đến 1000 lần Nó sở hữu 128 byte RAM và 4 cổng xuất/nhập 8 bit, cùng với 2 bộ định thời 16 bit Đặc biệt, AT89C52 hỗ trợ giao tiếp dữ liệu nối tiếp và có khả năng mở rộng không gian nhớ chương trình và dữ liệu ngoài lên đến 64Kbyte.

AT89C52 được đóng gói theo kiểu hai hàng chân DIP gồm 40 chân cho các chức năng khác nhau như vào.

AT89C52 là một máy vi tính 8-bit CMOS hiệu suất cao với 8K byte bộ nhớ PEROM, cho phép lập trình và xóa dễ dàng Sản phẩm được sản xuất bằng công nghệ bộ nhớ không biến đổi mật độ cao của Atmel, tương thích với bộ lệnh và sơ đồ chân tiêu chuẩn 80C51 và 80C52 Với khả năng lập trình lại bộ nhớ chương trình qua Flash trên chip, AT89C52 kết hợp CPU 8-bit linh hoạt, mang lại giải pháp hiệu quả và tiết kiệm chi phí cho nhiều ứng dụng điều khiển nhúng.

Sơ đồ kết nối phần cứng AT89C52

 Họ vi điều khiển 8 bit

 Tần số hoạt động : 24 Mhz

 Bộ nhớ : 8 Kb Flash, 256 Bytes SRAM

 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi xoá

 Tần số hoạt động từ: 0 Hz đến 24 MHz

 64 KB vùng nhớ mã ngoài

 64 KB vùng nhớ dữ liệu ngoại

Sơ đồ khối của AT89C52:

AT89C52 là một vi điều khiển mạnh mẽ với nhiều tính năng tiêu chuẩn như 8K byte Flash, 256 byte RAM, 32 dòng I/O, và ba bộ đếm thời gian 16 bit Nó có kiến trúc ngắt với sáu vector hai cấp và một cổng nối tiếp song công đầy đủ Vi điều khiển này được thiết kế với logic tĩnh cho phép hoạt động ở tần số 0 và hỗ trợ hai chế độ tiết kiệm năng lượng Chế độ nhàn rỗi giúp dừng CPU nhưng vẫn cho phép RAM, bộ đếm thời gian, cổng nối tiếp và hệ thống ngắt hoạt động, trong khi chế độ Power-down giữ nội dung RAM nhưng vô hiệu hóa tất cả các chức năng khác cho đến khi có tín hiệu thiết lập lại.

Sơ đồ chân của vi điều khiển 8-bit AT89S52 được hiển thị bên dưới:

Các thành viên của họ 89C52, như 8751, 89S52, 80C51 và DS5000, có nhiều kiểu đóng vỏ khác nhau, bao gồm CFP và LCC, nhưng đều có 40 chân cho các chức năng như vào ra I/O, đọc RD, ghi WR, địa chỉ, dữ liệu và ngắt Một số nhà cung cấp cũng phát hành phiên bản 89C52 với 20 chân cho các ứng dụng yêu cầu thấp hơn Tuy nhiên, hầu hết các nhà phát triển thường sử dụng chíp 40 chân với hai hàng chân DIP, vì vậy bài viết này sẽ tập trung vào mô tả phiên bản này.

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 địa chỉ và bus dữ liệu. Cổng 0 là một cổng I / O hai chiều có rãnh mở 8 bit Như một cổng đầu ra, mỗi chân có thể chìm tám đầu vào TTL Khi 1s được ghi vào các chân cổng 0, các chân này có thể được sử dụng làm đầu vào trở kháng cao Cổng 0 cũng có thể được cấu hình để trở thành địa chỉ / bus dữ liệu bậc thấp được ghép kênh trong khi truy cập vào bộ nhớ dữ liệu và máy chủ chuyên nghiệp bên ngoài Trong chế độ này, P0 có nội kéo lên Cổng

Trong quá trình kết hợp chương trình Flash, 0 cũng tiếp nhận các byte mã và xuất chúng trong suốt chương trình xác minh Việc kéo bên ngoài là cần thiết trong suốt quá trình xác minh này.

Port 1: từ chân 1 đến chân 9 (P1.0 ÷ P1.7) Port 1 là port IO dùng cho giao tiếp với thiết bị bên ngoài nếu cần Cổng 1 là cổng I / O hai chiều 8 bit với các thanh kéo bên trong Bộ đệm đầu ra Cổng 1 có thể chìm / nguồn bốn đầu vào TTL Khi 1s được ghi vào các chân của Cổng 1, chúng được kéo lên cao bằng các pullups bên trong và có thể được sử dụng làm đầu vào Là đầu vào, Các chân cổng 1 bên ngoài được kéo xuống mức thấp sẽ cấp nguồn hiện tại (IIL) vì kéo lên bên trong Ngoài ra, P1.0 và P1.1 có thể được cấu hình để trở thành bộ đếm thời gian / bộ đếm 2 đầu vào đếm bên ngoài (P1.0 / T2) và đầu vào kích hoạt hẹn giờ / bộ đếm 2 (P1.1 / T2EX), tương ứng, như được hiển thị trong bảng sau Cổng 1 cũng nhận các byte địa chỉ thứ tự thấp trong Lập trình và xác minh Flash.

Pin Các chức năng thay thế

P1.0 T2 là đầu vào đếm bên ngoài cho Bộ định thời/Bộ đếm 2, cung cấp xung nhịp ra P1.1 T2EX đóng vai trò là bộ kích hoạt chụp và nạp lại bộ đếm thời gian/Bộ đếm 2, đồng thời điều khiển hướng Port 2, từ chân 21 đến chân 28 (P2.0 ÷ P2.7), là một cổng có chức năng kép, có thể được sử dụng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ cho các thiết bị sử dụng bộ nhớ mở rộng Cổng 2 là cổng I/O hai chiều 8 bit, được trang bị các thanh kéo bên trong.

Cổng 2 là bộ đệm đầu ra có khả năng chìm và hỗ trợ bốn đầu vào TTL Khi tín hiệu 1 được ghi vào các chân của Cổng 2, chúng được kéo lên cao nhờ các pullups bên trong, cho phép sử dụng như đầu vào Khi chân cổng 2 bên ngoài bị kéo xuống thấp, nguồn hiện tại (IIL) sẽ được cấp Cổng 2 phát ra byte địa chỉ bậc cao trong quá trình tìm nạp từ bộ nhớ chương trình bên ngoài và khi truy cập vào bộ nhớ dữ liệu bên ngoài thông qua địa chỉ 16 bit (MOVX @DPTR) Trong ứng dụng này, Cổng 2 sử dụng các lups xung bên trong mạnh khi phát ra tín hiệu 1 Đối với việc truy cập dữ liệu bên ngoài với địa chỉ 8 bit (MOVX @RI), Cổng 2 phát ra nội dung của thanh ghi Chức năng Đặc biệt P2 Ngoài ra, Cổng 2 cũng nhận các bit địa chỉ bậc cao và một số tín hiệu kiểm soát trong quá trình lập trình và xác minh Flash.

Port 3: từ chân 10 đến chân 17 (P3.0 ÷ P3.7) Port 3 là port có tác dụng ké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 sau:

Bit Tên Chức năng chuyển đổi

P3.0 RXD Ngõ vào dữ liệu nối tiếp.

P3.1 TXD Ngõ xuất dữ liệu nối tiếp.

P3.2 INT0 Ngõ vào ngắt cứng thứ 0.

P3.3 INT1 Ngõ vào ngắt cứng thứ 1.

P3.4 T0 Ngõ vào TIMER/ COUNTER thứ 0

P3.5 T1 Ngõ vào của TIMER/ COUNTER thứ 1

P3.6 WR Tín hiệu ghi dữ liệu lên bộ nhớ ngoài

P3.7 RD Tín hiệu đọc bộ nhớ dữ liệu ngoài.

Chân P3.0 đến P3.7 của AT89C52 có chức năng chuyển đổi quan trọng, trong đó PSEN (Program Store Enable) là tín hiệu cho phép đọc bộ nhớ chương trình mở rộng PSEN thường được kết nối với chân OE của Eprom để đọc các byte mã lệnh, hoạt động ở mức thấp khi AT89C52 lấy lệnh Các mã lệnh được đọc từ Eprom qua bus dữ liệu và được lưu trữ trong thanh ghi lệnh bên trong AT89C52 để giải mã Khi AT89C52 thực hiện chương trình từ ROM nội, PSEN sẽ ở mức cao.

ALE (Address Latch Enable) là tín hiệu quan trọng trong quá trình truy xuất bộ nhớ bên ngoài của AT89C52, khi Port 0 hoạt động như bus địa chỉ và dữ liệu Tín hiệu ALE ở chân thứ 30 được sử dụng để điều khiển việc tách rời các đường địa chỉ và dữ liệu, giúp kết nối với IC chốt Trong khoảng thời gian Port 0 đảm nhiệm vai trò địa chỉ thấp, tín hiệu ALE sẽ tạo ra một xung, cho phép chốt địa chỉ tự động một cách hoàn toàn.

Chân EA (External Access) của AT89C52 có hai mức tín hiệu: mức 1 và mức 0 Khi ở mức 1, vi điều khiển sẽ thực hiện chương trình từ ROM nội, trong khi ở mức 0, chương trình sẽ được thực hiện từ bộ nhớ mở rộng Ngoài ra, chân EA cũng được sử dụng để cấp nguồn 21V khi lập trình cho Eprom trong AT89C52.

RST (Reset) là tín hiệu kích hoạt hệ thống khi ngõ vào đạt mức cao ít nhất 2 chu kỳ máy Khi đó, các thanh ghi bên trong sẽ được nạp giá trị thích hợp để khởi động hệ thống Đồng thời, khi cấp điện, mạch cũng phải tự động reset Các giá trị của tụ và điện trở được chọn là: R1Ω, R2"0Ω, C àF, như được mô tả trong hình.

Giới thiệu DS1307

2.1 Giới thiệu về IC thời gian thực DS1307

DS1307 là chip đồng hồ thời gian thực (RTC) do Dallas Semiconductor, thuộc Maxim Integrated Products, sản xuất Chip này có khả năng đếm giờ, phút, giây, thứ, ngày tháng và năm, giao tiếp với vi điều khiển qua chuẩn I2C và hoạt động như một slave trong Bus I2C DS1307 hỗ trợ định dạng thời gian 24 giờ hoặc 12 giờ với chỉ thị AM/PM Đặc biệt, chip còn tích hợp bộ dò phát hiện mất nguồn, tự động chuyển sang nguồn pin dự phòng khi cần thiết.

DS1307 là chip đồng hồ thời gian thực là 1 sản phẩm của hãng Dallas

Semiconductor, được đọc và ghi thông qua giao diện nối tiếp I2C.

Cấu tạo bên ngoài gồm 8 chân.

Các chân DS1307 có chức năng như sau:

 X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32,768 KHz làm nguồn dao động cho chip.

 VBat: cực dương của 1 nguồn pin 3v nuôi chip.

 GND: chân mass chung cho cả Pin 3v và Vcc.

 Vcc: nguồn cho giao diện I2C, thường là 5v dùng chung với vi điều khiển.

Chú ý: nếu nguồn Vcc không được cấp mà VBat vẫn được cấp thì chip DS1307 vẫn hoạt động.

 SQW/OUT: ngõ phụ tạo xung vuông.

 SCL, SDA: là 2 đường xung nhịp và dữ liệu của giao diện I2C

2.2 Cấu tạo và các thanh ghi

Chip DS1307 sở hữu 7 thanh ghi 8 bit để lưu trữ thông tin về thời gian, bao gồm giây, phút, giờ, thứ, ngày, tháng và năm Bên cạnh đó, chip còn tích hợp 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể được sử dụng như RAM.

Hoạt động các bit trong thanh ghi được biểu diễn qua bảng sau:

 Thanh ghi đầu tiên trong bộ nhớ DS1307, địa chỉ của nó là 0x00.

 4 bit thấp thanh ghi chứa mã BCD của 4 bit chữ số hàng đơn vị của giá trị giây.

 3 bit cao tiếp theo chứa mã BCD của 3 bit chữ số hàng chục giá trị giây.

 Bit 7(bit cao nhất): luôn luôn phải đặt về mức 0 để chip hoạt động.

 Có địa chỉ 0x01, chứa giá trị phút của đồng hồ.

 Giống thanh ghi giây Bit 7 luôn được đặt mức 0.

 Thanh ghi có địa chỉ 0x20.

 4 bit thấp (bit 0 đến bit 3) dùng để chỉ chữ số hàng đơn vị của giờ.

 Bit 6 dùng để đặt chế độ giờ Bit 6 = 0 chế độ 24 giờ Bit 6 = 1 chế độ 12 giờ.

 Ở chế độ 24 giờ: o Bit 4 và bit 5 để chỉ chữ số hàng chục của giờ.

 Ở chế độ 12 giờ: o Bit 4 dùng để chỉ chữ số hàng chục của giờ. o Bit 5 dùng để chỉ buổi trong ngày Bit 5 = 0: Am Bit 5 = 1: Pm. Thanh ghi thứ:

 3 bit thấp để chỉ mã PCD của thứ từ 2 đến 7.

Thanh ghi ngày, tháng, năm tương tự như thanh ghi thứ.

2.3 Cấu trúc bên trong của IC DS1307

2.4 Tổ chức bộ nhớ của DS1307

Bộ nhớ DS1307 bao gồm 64 thanh ghi 8-bit, được đánh địa chỉ từ 0 đến 63 (hoặc từ 00H đến 3FH) Tuy nhiên, chỉ có 8 thanh ghi đầu tiên được sử dụng cho các chức năng chính.

“đồng hồ” Còn lại 56 thanh ghi bỏ trống có thể được dùng chứa biến tạm như RAM nếu muốn

Bảy thanh ghi đầu tiên của đồng hồ chứa thông tin về thời gian, bao gồm giây, phút, giờ, thứ, ngày, tháng và năm, cung cấp giá trị để tính giờ theo thời gian thực Ví dụ, nếu thanh ghi "MINUTES" được ghi giá trị 15, sau 5 phút, giá trị sẽ là 20 Thanh ghi thứ 8 (CONTROL) là thanh ghi điều khiển xung ngõ ra SQW/OUT, nhưng do không sử dụng chân SQW/OUT, thanh ghi này có thể được bỏ qua Lưu ý rằng giá trị thời gian trong các thanh ghi được lưu theo dạng BCD nén.

Thanh ghi giây (SECONDS) của DS1307 là thanh ghi đầu tiên trong bộ nhớ, với địa chỉ 00H Bốn bit thấp chứa mã BCD 4-bit cho chữ số hàng đơn vị của giây, trong khi chỉ cần 3 bit để mã hóa chữ số hàng chục, tối đa là 5 (không có giây 60) Bit cao nhất, bit 7, là điều khiển CH (Clock halt), nếu được set bằng 1 sẽ vô hiệu hóa bộ dao động trong chip, làm cho đồng hồ không hoạt động Do đó, cần phải reset bit này xuống 0 ngay từ đầu để đảm bảo đồng hồ hoạt động bình thường.

Thanh ghi phút (MINUTES): có địa chỉ 01H, chứa giá trị phút của đồng hồ.

Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng lưu mã BCD của phút, bit 7 luôn luôn bằng 0.

Thanh ghi giờ (HOURS): có thể nói đây là thanh ghi phức tạp nhất trong

DS1307 là một thanh ghi có địa chỉ 02H, trong đó 4 bit thấp được sử dụng để biểu thị chữ số hàng đơn vị của giờ DS1307 hỗ trợ hai chế độ hiển thị giờ: 12 giờ (từ 1h đến 12h) và 24 giờ (từ 1h đến 24h) Bit thứ 6 xác định chế độ giờ, với bit 6 = 0 chọn chế độ 24 giờ, khi đó 2 bit cao 5 và 4 mã hóa chữ số hàng chục của giờ, tối đa là 2 Nếu bit 6 = 1, chế độ 12 giờ được chọn, trong đó chỉ có bit 4 mã hóa chữ số hàng chục của giờ.

5 dùng để chỉ buổi trong ngày, AM hoặc PM Bit5 =0 là AM và bit5=1 là PM Bit 7 luôn bằng 0.

Thanh ghi DAY (ngày trong tuần) tại địa chỉ 03H có giá trị từ 1 đến 7, tương ứng với các ngày từ Chủ nhật đến thứ 7 trong tuần Chỉ có 3 bit thấp trong thanh ghi này là có ý nghĩa.

Thanh ghi ngày (DATE): nằm ở địa chỉ 04H 4 bit đầu lưu hàng đơn vị của ngày, bit 4 và bit 5 quy định hàng chục Bit 6 và bit 7 luôn luôn bằng 0.

Thanh ghi tháng (MONTHS): nằm ở địa chỉ 05H 4 bit đầu lưu hàng đơn vị của tháng, bit thứ 4 quy định hàng chục Các bit còn lại luôn bằng 0.

Thanh ghi năm (YEARS): nằm ở địa chỉ 06H 4 bit thấp lưu hàng đơn vị và 4 bit cao hàng chục của năm (từ 00 - 99).

DS1307 có địa chỉ cố định 7 bit là 1101000 trong giao thức I2C, theo sau là bit xác định hướng truyền dữ liệu Nếu bit này bằng 0, dữ liệu sẽ được truyền từ vi điều khiển đến DS1307 (GHI), trong khi nếu bit bằng 1, dữ liệu sẽ được truyền từ DS1307 về vi điều khiển (ĐỌC).

Vi điều khiển phát tín hiệu Start lên bus để khởi đầu quá trình giao tiếp Để tạo tín hiệu Start, chân SDA sẽ chuyển từ mức 1 xuống 0 trong khi chân SCL vẫn giữ ở mức 1.

- Vi điều khiển gửi địa chỉ của thiết bị muốn giao tiếp Ở đây DS1307 là 1101000 + bit hướng = 0 Do vậy byte được gửi là 11010000.

- DS1307 tạo tín hiệu ACK bằng cách cho chân SCL một xung clock từ 0 lên 1 trong khi SDA bằng 0.

- Vi điều khiển gửi địa chỉ của thanh ghi muốn ghi đến.

- DS 1307 tạo tín hiệu ACK báo đã nhân thành công.

- Tiếp theo vi điều khiển gửi dữ liệu muốn ghi

- Con trỏ địa chỉ của DS 1307 tự tăng lên đến địa chỉ thanh ghi tiếp theo

- Vi khiển gửi dữ liệu muốn ghi đến thanh ghi tiếp theo.

Vi điều khiển có thể kết thúc quá trình truyền dữ liệu bằng cách gửi tín hiệu Stop, trong đó chân SDA chuyển từ mức 0 lên 1 khi SCL vẫn ở mức 1 Điều này xảy ra trong chế độ đọc dữ liệu.

- Vi điều khiển tạo tín hiệu Start lên bus để báo bắt đầu muốn giao tiếp.

- Vi điều khiển gửi địa chỉ của thiết bị muốn giao tiếp Ở đây DS 1307 là

1101000 + bit hướng = 1 Do vậy byte là 11010001.

- DS 1307 tạo tín hiệu ACK.

- DS 1307 gửi dữ liệu của thanh ghi đầu tiên.

- Vi điều khiển gửi tín hiệu ACK báo nhận thành công.

- DS 1307 gửi dữ liệu của thanh ghi tiếp theo.

- Vi điều khiển gửi tín hiệu ACK báo nhận thành công.

- Vi điều khiển gửi tín hiệu NACK khi không muốn nhận thêm dữ liệu.

- Vi điều khiển tạo tín hiệu stop để kết thúc truyền nhận và giải phóng Bus I2C.

Khi cấp điện áp cho vi điều khiển, chương trình sẽ bắt đầu hoạt động cùng với bộ tạo xung dao động phát xung nhịp 12MHz IC thực hiện việc ghi và nhận dữ liệu, nhận diện các điều kiện START và STOP khi truyền chuỗi dữ liệu Các thanh ghi của IC thời gian thực sẽ nhận giá trị thời gian (giờ, phút, giây, thứ, ngày, tháng, năm) và gửi đến vi điều khiển Vi điều khiển gán giá trị tương ứng với thời gian thực và chuyển tiếp đến khối hiển thị, trong khi IC ghi dịch trong khối điều khiển gửi tín hiệu đến khối hiển thị.

Các nút ấn trong khối điều khiển có nhiệm vụ điều chỉnh thời gian Khối Reset có nhiệm vụ đua hệ thống về trạng thái ban đầu

2.7 Điều kiện của giao thức truyền I 2 C

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 I 2 C là:

 Dữ liệu bắt đầu truyển chỉ khi bus không bận.

Trong quá trình truyền dữ liệu, tín hiệu SDA cần duy trì trạng thái ổn định khi SCL ở mức cao Bất kỳ sự thay đổi nào của SDA trong trạng thái SCL cao sẽ được nhận diện như một tín hiệu điều khiển.

 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ệ trong giao thức truyền thông được xác định khi SDA ổn định trong suốt chu kỳ cao của xung clock, chỉ thay đổi trong chu kỳ thấp Mỗi lần truyền dữ liệu bắt đầu bằng điều kiện Start và kết thúc bằng điều kiện Stop, với số byte truyền không giới hạn do thiết bị Master (89C51) quyết định Mỗi byte dữ liệu sẽ được theo sau bởi một bit Acknowledge (bit thứ 9).

Khi một thiết bị được định địa chỉ, nó cần gửi tín hiệu xác nhận (Acknowledged) cho thiết bị Master bằng cách kéo đường dữ liệu (SDA) xuống mức thấp trong suốt chu kỳ xung clock Thiết bị Master phải tạo ra một xung clock phụ và thời gian thiết lập cần được tính toán chính xác Để kết thúc quá trình truyền dữ liệu, Master cần gửi tín hiệu kết thúc, nếu không có bit Acknowledged cuối cùng, Master sẽ tiếp tục tạo xung clock mà không nhận được phản hồi từ Slave Trong trường hợp này, thiết bị Slave phải đưa đường dữ liệu lên mức cao để cho phép Master tạo điều kiện dừng (Stop).

Hình 10: Dữ liệu truyền trn BUS I 2 C

Dữ liệu được truyền từ Master đến Slave bắt đầu với địa chỉ của Slave, sau đó là một số byte cần truyền Sau mỗi byte nhận được, Slave sẽ phản hồi bằng một bit thừa nhận Quá trình truyền dữ liệu diễn ra với bit có trọng số lớn nhất (MSB) được gửi trước tiên.

Xử lý phím nhấn

Hình :Sơ đồ Xử lý phím nhấn

Để khởi động khối vi điều khiển, người dùng chỉ cần bật công tắc, và chương trình sẽ tự động bắt đầu chạy Lúc đầu, chương trình sẽ hoạt động theo tín hiệu đồng hồ từ máy tính vào mạch vi xử lý, điều này xảy ra do cấu hình mặc định Để chương trình hoạt động chính xác theo thực tế, cần phải thực hiện hiệu chỉnh thông qua 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 chân P3.2 của vi điều khiển cho phép người dùng điều chỉnh các giá trị như giờ, phút và giây Mỗi khi nhấn nút để nối mass, hệ thống sẽ chuyển đến giá trị cần hiệu chỉnh, giúp quá trình cài đặt trở nên dễ dàng và thuận tiện hơn.

 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.

 Để thoá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

Hình: 6 con LED 7 đoạn hiển thị giờ phút giây

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 được kết nối với nhau Mỗi LED được cấp nguồn thông qua 6 Transistor, hoạt động như các công tắc, và được điều khiển bằng tín hiệu điều khiển tích cực mức thấp.

Phương pháp đa hợp trong việc điều khiển LED cho phép tất cả các đoạn LED được nối chung vào một port điều khiển (Port 1), trong khi anode của các LED được kết nối vào một port khác (Port 0) Tín hiệu quét LED được cấp một cách tuần tự, chỉ có một LED hoạt động tại một thời điểm Quá trình điều khiển diễn ra theo từng giai đoạn: trước tiên, tín hiệu quét được cấp để chỉ một LED đầu tiên hoạt động, sau đó mã 7 đoạn tương ứng với số cần hiển thị được đưa ra Tiếp theo, tín hiệu quét được chuyển sang LED thứ hai, và mã 7 đoạn tương ứng lại được cấp Quá trình này liên tục diễn ra, tạo ra ảo giác rằng tất cả các LED đều sáng cùng một lúc nhờ hiện tượng lưu ảnh của mắt.

4.3-Cấu tạo của LED 7 đoạn

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: Anode chung, trong đó cực Anode được nối chung, và Cathode chung, với cực Cathode nối chung Mỗi loại LED yêu cầu phương pháp điều khiển khác nhau để bật tắt Đối với LED Anode chung, LED sáng khi mức logic đầu vào là 0, trong khi với LED Cathode chung, LED sáng khi mức logic đầu vào là 1 Để xác định chính xác các chân điều khiển của LED 7 đoạn, cần kiểm tra từng chân của LED.

LED 7 đoạn hoạt động bằng cách điều khiển các đoạn LED a, b, c, d, e, f và g để hiển thị các số khác nhau Ví dụ, để hiển thị số “6”, các đoạn a, c, d, e, g và f sẽ được bật Việc điều khiển này được thực hiện thông qua các chân dữ liệu a-g và dp Để tiết kiệm số chân cần thiết khi điều khiển nhiều LED 7 đoạn cùng lúc, các chân dữ liệu sẽ được nối song song, trong khi các chân anode chung hoặc cathode chung được sử dụng để bật hoặc tắt LED.

4.4 - Xây dựng module hiển thị trên LED 7 đoạn

Module ứng dụng này được thiết kế để hiển thị 2 chữ số thập phân trên 2 LED 7 đoạn Anode chung Để thực hiện điều này, trước tiên cần kết nối phần cứng giữa vi điều khiển và LED 7 đoạn, từ đó xác định dữ liệu cần đưa vào LED để hiển thị các chữ số thập phân.

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ểnLED đó về mức logic 0.

THIẾT KẾ VÀ THI CÔNG

Lưu đồ giải thuật

Tạo bit ACK Lấy lại R7

Quay lạiSBYTESENDBYTE: (SBYTE)

Kiểm tra đến giờ báo thức

P2.2 = 0? Điều chỉnh vị trí giây/phút/giờ

Nạp thời gian vào RTC

RET Điều chỉnh thời gian

Xóa bit chuôngBật tắt báo thức: (Bit báo thức P2.6 = 1 thì tắt, P2.6 =0 thì bật)

P2.2 = 0? Điều chỉnh vị trí phút/giờ

RETCài đặt báo thức:

NKiểm tra đến giờ báo thức:

A ← Hàng chục của giờ Hiển thị

Xuất A ra LED tương ứng Tạo trễ LED

A ← Hàng đơn vị của giờ

Xuất A ra LED tương ứng

Xuất A ra LED tương ứng Tạo trễ LED

A ← Hàng đơn vị của phút

Xuất A ra LED tương ứng Tạo trễ LED

A ← Hàng đơn chục của giây

Xuất A ra LED tương ứng

A ← Hàng đơn vị của giây

Xuất A ra LED tương ứngTạo trễ LEDHiển thị:

CALL STOPBIT ĐỌC TIME TỪ DS1307 LƯU VÀO RAM (Đọc thời gian)

2 Nạp địa chỉ giây (00H) vào R4

5 Nạp địa chỉ phút (01H) vào R4

8 Nạp địa chỉ giờ (02H) vào R4

NẠP TIME VÀO DS1307 (Nạp thời gian)

2 Nạp chế độ ghi vào RTC

Ngày đăng: 21/09/2022, 20:57

HÌNH ẢNH LIÊN QUAN

1.2. Cấu hình chân AT89S52 - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
1.2. Cấu hình chân AT89S52 (Trang 9)
Hoạt động các bit trong thanh ghi được biểu diễn qua bảng sau: - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
o ạt động các bit trong thanh ghi được biểu diễn qua bảng sau: (Trang 17)
Hình 10: Dữ liệu truyền trn BUS I2C - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
Hình 10 Dữ liệu truyền trn BUS I2C (Trang 24)
Hình 2.6- Ghi dữ liệu – Chế độ Slave làm bộ nhận b) Read mode - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
Hình 2.6 Ghi dữ liệu – Chế độ Slave làm bộ nhận b) Read mode (Trang 25)
Hình :Sơ đồ Xử lý phím nhấn 3.2Chức năng: - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
nh Sơ đồ Xử lý phím nhấn 3.2Chức năng: (Trang 26)
Hình 2.7- Đọc dữ liệu – Chế độ Slave phát 3.  Xử lý phím nhấn: - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
Hình 2.7 Đọc dữ liệu – Chế độ Slave phát 3. Xử lý phím nhấn: (Trang 26)
Hình: 6 con LE D7 đoạn hiển thị giờ phút giây - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
nh 6 con LE D7 đoạn hiển thị giờ phút giây (Trang 28)
w