các ứng dụng của vi điều khiển rất đa dạng và phong phú

Ứng dụng Vi điều khiển 8051: Bộ đếm thời gian thực

Thông tin tài liệu

instructor Ths. Nguyễn Trọng Thắng
Chuyên ngành Điện tử
Loại tài liệu Đồ án tốt nghiệp
Ngôn ngữ Vietnamese
Định dạng | PDF
Dung lượng 1.40 MB

Tóm tắt

I.Thiết kế hệ thống hiển thị thời gian thực dựa trên vi điều khiển 8051 và IC DS1307

Đồ án tốt nghiệp này tập trung vào việc thiết kế và triển khai một hệ thống hiển thị thời gian thực sử dụng vi điều khiển 8051 làm bộ xử lý trung tâm. Hệ thống sử dụng IC DS1307 làm đồng hồ thời gian thực (RTC - Real-time clock) để thu nhận thông tin thời gian và hiển thị kết quả lên ma trận LED. Sinh viên đã tận dụng kiến thức đã học về vi điều khiển, giao diện I2C, và lập trình nhúng để hoàn thiện dự án. Hệ thống được thiết kế để hiển thị thời gian chính xác, đáp ứng yêu cầu của một hệ thống thời gian thực. Các thành phần chính bao gồm: vi điều khiển 8051, IC DS1307, ma trận LED, và các IC hỗ trợ khác như 74HC595 và 74HC573. Việc lựa chọn module LED P10 được giải thích dựa trên tính phổ biến, dễ điều khiển và độ sáng phù hợp với môi trường ngoài trời. Mặc dù còn một số hạn chế về kiến thức, đồ án đã thành công trong việc minh họa ứng dụng thực tiễn của vi điều khiển 8051 trong các hệ thống nhúng.

1. Mục tiêu và phạm vi đồ án

Đồ án tốt nghiệp hướng đến việc thiết kế và chế tạo một hệ thống hiển thị thời gian thực dựa trên vi điều khiển 8051 và IC DS1307. Mục tiêu chính là ứng dụng kiến thức đã học về vi điều khiển, lập trình nhúng và các mạch điện tử để tạo ra một sản phẩm hoàn chỉnh. Sinh viên muốn hiểu rõ hơn về cách hoạt động của vi điều khiển 8051, cách đọc và sử dụng các chân IC, cũng như cách vận dụng những kiến thức lý thuyết vào thực tiễn. Hệ thống sẽ sử dụng ma trận LED để hiển thị thời gian, với IC DS1307 cung cấp dữ liệu thời gian thực. Do hạn chế về kiến thức và kinh nghiệm, đồ án có thể còn tồn tại những thiếu sót, sinh viên mong muốn nhận được sự góp ý từ giảng viên và các bạn để hoàn thiện hơn. Phạm vi đồ án tập trung vào thiết kế phần cứng và phần mềm điều khiển hiển thị thời gian, không đề cập đến các tính năng phức tạp hơn.

2. Ứng dụng của vi điều khiển và hệ thống thời gian thực

Đồ án nhấn mạnh vào tính đa dạng và phong phú của các ứng dụng vi điều khiển, từ những hệ thống đơn giản đến những hệ thống phức tạp. Sinh viên đề cập đến khái niệm hệ thống thời gian thực (RTS - Realtime Systems), được định nghĩa là một mô hình xử lý mà độ chính xác không chỉ phụ thuộc vào kết quả logic mà còn phụ thuộc vào thời gian. Các thành phần chính của một RTS, bao gồm đồng hồ thời gian thực, bộ điều khiển ngắt, và bộ định biểu, cũng được phân tích. Sự khác biệt giữa hệ thống thời gian thực mềm (soft real-time system) và cứng (hard real-time system) được làm rõ, với ví dụ minh họa cho từng loại. Đồ án cũng đề cập đến hệ điều hành thời gian thực (RTOS) và vai trò quan trọng của nó trong việc quản lý tài nguyên và đảm bảo thời gian thực thi các nhiệm vụ. Cuối cùng, đồ án nhấn mạnh sự phát triển của các hệ thống thời gian thực trong nhiều lĩnh vực, từ công nghiệp sản xuất đến hàng không vũ trụ.

3. Lựa chọn và cấu hình module LED Matrix P10

Đồ án lựa chọn module LED Matrix P10 một màu dùng ngoài trời do tính phổ biến, dễ điều khiển, cấu tạo đơn giản và phù hợp với các bảng thông tin điện tử cỡ vừa và nhỏ. Việc mở rộng kích thước bảng đơn giản, không cần thay đổi phần cứng là một lợi thế. Độ sáng của module phù hợp với môi trường ngoài trời, thuận tiện cho việc sử dụng và lắp đặt. Mô tả chi tiết về cách thức hoạt động của module P10, bao gồm nguyên lý quét hiển thị động để đảm bảo độ sáng và tránh nhấp nháy. Đồ án giải thích vì sao phương pháp quét nhiều hàng cùng lúc (trong trường hợp này là 4 hàng) được sử dụng để tối ưu hóa độ sáng và giảm dòng điện tức thời qua từng LED. Các thông số kỹ thuật và phương pháp điều khiển của module P10 được trình bày để làm rõ cách thức hoạt động của toàn bộ hệ thống.

4. Sơ đồ mạch và hoạt động của IC hỗ trợ

Đồ án trình bày chi tiết về sơ đồ mạch điện, bao gồm sự kết hợp giữa vi điều khiển 8051, IC DS1307, module LED Matrix P10 và các IC hỗ trợ khác như 74HC595 và 74HC573. Chức năng của từng IC được mô tả cụ thể. Ví dụ, 74HC595 đóng vai trò là IC dịch chuyển dữ liệu để điều khiển các cột của ma trận LED, trong khi 74HC573 được sử dụng như IC chốt dữ liệu để tiết kiệm chân của vi điều khiển. Ngoài ra, đồ án cũng giải thích về cách kết nối IC DS1307, bao gồm các chân SCL, SDA, VCC, GND và chân kết nối với nguồn cung cấp điện dự phòng CMOS để đảm bảo dữ liệu thời gian được lưu giữ khi mất điện. Việc kết nối các IC với vi điều khiển 8051 được minh họa qua sơ đồ mạch, nhằm thể hiện sự phối hợp hoạt động giữa các thành phần trong hệ thống.

II.Cấu trúc và hoạt động của vi điều khiển 8051

Phần này tập trung mô tả cấu trúc vi điều khiển 8051, bao gồm CPU, bộ nhớ trong (RAM và SFRs), bộ nhớ ngoài, các cổng I/O (P0-P3), Timer/Counter, và mạch tạo xung. Đồ án đi sâu vào cách sử dụng các chân của vi điều khiển 8051, đặc biệt là các cổng để điều khiển ma trận LED và giao tiếp với IC DS1307. Được đề cập đến là sự đa dạng của họ MCS-51, với hơn 250 biến thể và ứng dụng rộng rãi trong nhiều sản phẩm dân dụng và công nghiệp. Sinh viên cũng trình bày về phương pháp lập trình vi điều khiển 8051, bao gồm sử dụng ngôn ngữ Assembly và các ngôn ngữ cấp cao, cùng các công cụ cần thiết để biên dịch và nạp chương trình.

1. Cấu trúc tổng quan của vi điều khiển 8051

Đồ án mô tả cấu trúc của vi điều khiển 8051, một thành viên thuộc họ MCS-51, nổi tiếng với khả năng ứng dụng rộng rãi và số lượng tiêu thụ lớn (trên 4 tỷ mỗi năm). Cấu trúc bao gồm CPU, bộ nhớ chương trình (có thể là bộ nhớ trong hoặc ngoài), bộ nhớ dữ liệu (RAM), các cổng I/O (P0-P3), bộ định thời/đếm (Timer/Counter), và mạch tạo xung nhịp (Oscillator). Vi điều khiển 8051 được miêu tả như một máy tính đơn chip 8 bit, với việc giao tiếp giữa các khối bên trong được thực hiện thông qua các bus nội bộ (bus dữ liệu 8 bit, bus địa chỉ và các tín hiệu điều khiển). Thông tin chi tiết về cách sử dụng các chân cổng, đặc biệt là cổng P0, P1, P3 và chức năng của các tín hiệu như /PSEN, /EA, /WR, /RD, được đề cập nhằm làm rõ khả năng kết nối và điều khiển các thiết bị ngoại vi.

2. Tổ chức bộ nhớ trong của vi điều khiển 8051

Phần này tập trung vào tổ chức bộ nhớ dữ liệu trong của vi điều khiển 8051, đặc biệt là vùng nhớ 128 byte thấp (trong nhóm 8051) và 256 byte (trong nhóm 8052). Bộ nhớ được chia thành các miền: miền RAM được định địa chỉ bit (cho phép truy cập từng bit riêng lẻ), miền các băng thanh ghi (chia thành 4 băng, mỗi băng 8 thanh ghi từ R0 đến R7), và miền các thanh ghi đặc biệt (SFR - Special Function Register). Cách thức truy cập các SFR (bằng phương pháp địa chỉ trực tiếp) và miền RAM được định địa chỉ bit được giải thích. Sự khác biệt trong tổ chức bộ nhớ giữa nhóm 8051 và 8052, đặc biệt là vùng nhớ 128 byte cao, được nhấn mạnh, với nhóm 8052 có bộ nhớ RAM đầy đủ 256 byte trong khi nhóm 8051 chỉ có 128 byte RAM ở vùng địa chỉ thấp, phần còn lại dành cho SFRs. Việc truy cập các vùng nhớ này được phân tích để tránh xung đột.

3. Lập trình vi điều khiển 8051

Phần này đề cập đến phương pháp lập trình vi điều khiển 8051, bao gồm cả lập trình bằng ngôn ngữ Assembly (sử dụng trình biên dịch ASM51) và ngôn ngữ bậc cao như C, Basic, Forth. Quá trình biên dịch mã nguồn sang mã máy và nạp chương trình vào bộ nhớ chương trình (EEPROM hoặc EPROM) được mô tả. Được nhấn mạnh là sự khác biệt về độ khó và hiệu suất giữa việc lập trình bằng ngôn ngữ Assembly và ngôn ngữ bậc cao. Lập trình Assembly thường khó hơn nhưng mã máy ngắn gọn và chạy nhanh hơn. Các công cụ cần thiết để lập trình vi điều khiển 8051, bao gồm máy tính, trình biên dịch và bộ nạp chương trình, cũng được đề cập. Hệ thống lệnh của 8051 được chia thành 5 nhóm: số học, logic, chuyển dữ liệu, xử lý bit và rẽ nhánh, với các lệnh xử lý bit là điểm mạnh của họ MCS-51.

III.Nguyên lý hoạt động của ma trận LED và module P10

Phần này giải thích nguyên lý hoạt động của ma trận LED, nhấn mạnh phương pháp quét (hiển thị động) để tránh hiện tượng nhấp nháy và đảm bảo độ sáng đồng đều. Module P10 được chọn vì sự phổ biến, dễ sử dụng và khả năng mở rộng. Mô tả chi tiết về cách điều khiển module P10, bao gồm việc sử dụng các IC hỗ trợ như 74HC595 để dịch dữ liệu và điều khiển các cột và hàng của ma trận LED. Đồ án cũng đề cập đến phương pháp điều khiển 4 hàng cùng lúc để tăng độ sáng và giảm dòng điện tức thời qua từng LED.

1. Nguyên lý hoạt động của ma trận LED

Ma trận LED hoạt động dựa trên nguyên lý điều khiển từng LED riêng lẻ bằng cách cấp điện áp cao cho Anode và điện áp thấp cho Cathode. Chỉ khi một LED có cả Anode ở mức cao và Cathode ở mức thấp thì nó mới sáng. Để tạo hiệu ứng hiển thị liên tục, không bị nhấp nháy, ta phải sử dụng phương pháp quét (hiển thị động). Phương pháp này liên tục quét qua các hàng và cột, cấp tín hiệu điều khiển theo dạng xung để làm sáng các LED cần hiển thị. Tần số quét tối thiểu cần thiết là khoảng 20Hz (50ms) để mắt người không nhận ra sự gián đoạn. Ma trận LED có thể hiển thị một hoặc nhiều màu, số chân điều khiển phụ thuộc vào số màu và kích thước ma trận. Ví dụ, ma trận 8x8 một màu cần 16 chân (8 cho hàng, 8 cho cột), trong khi ma trận 8x8 hai màu cần 24 chân. Không thể sử dụng phương pháp hiển thị tĩnh vì sẽ dẫn đến việc nhiều LED ngoài ý muốn cũng sáng.

2. Module LED P10 và lý do lựa chọn

Đồ án sử dụng module LED P10 – 1R, một loại module LED phổ biến và được sử dụng rộng rãi tại Việt Nam. Lý do lựa chọn module này là do cách điều khiển đơn giản, phù hợp với các bảng thông tin điện tử cỡ vừa và nhỏ, cấu tạo đơn giản dễ lắp đặt và sửa chữa. Việc mở rộng kích thước bảng cũng dễ dàng mà không cần thay đổi phần cứng. Độ sáng của module P10 phù hợp với các bảng thông tin ngoài trời. Trong đồ án, module P10 hoạt động trên nguyên lý điều khiển cùng lúc 4 hàng, sau 4 lần quét sẽ tạo thành một khung hình hoàn chỉnh. Điều này giúp giảm dòng điện tức thời qua từng LED, đảm bảo độ sáng tối ưu, đặc biệt đối với các bảng LED có kích thước lớn theo chiều dọc. So với phương pháp quét một hàng, cách này hiệu quả hơn nhiều trong việc đảm bảo độ sáng đồng đều.

3. Điều khiển module P10

Xuất dữ liệu từ module P10 được thực hiện khi chân 13 ở mức thấp (tín hiệu output-enable) và có một xung tích cực ở sườn âm tại chân 12 (latch clock). Chân 13 là chân cho phép xuất dữ liệu, khi ở mức cao, tất cả các đầu ra của IC sẽ trở về trạng thái cao trở. Chân 11 là chân vào xung clock, mỗi xung clock tích cực (từ 0 lên 1) sẽ dịch 1 bit dữ liệu vào IC. Chân 12 là xung clock chốt dữ liệu, khi có xung clock tích cực ở sườn dương thì dữ liệu được xuất ra các chân output. Có thể xuất dữ liệu bất kỳ lúc nào, ví dụ, nếu đầu vào chân 14 nhận 2 bit, khi có xung clock ở chân 12, dữ liệu sẽ xuất ra ở chân Qa và Qb (chiều dịch dữ liệu từ Qa => Qh). Các chân khác của module được kết nối với vi điều khiển để điều khiển quá trình hiển thị trên ma trận LED. Thông tin này cho thấy sự phức tạp của quá trình điều khiển module, đòi hỏi việc hiểu rõ về các tín hiệu điều khiển và lập trình chính xác.

IV.IC DS1307 Đồng hồ thời gian thực

Phần này mô tả chi tiết về IC DS1307, một đồng hồ thời gian thực (RTC) được sử dụng trong đồ án. Sinh viên giải thích cấu trúc các thanh ghi của DS1307, cách thức giao tiếp I2C, và cách đọc/ghi dữ liệu thời gian. Các thanh ghi quan trọng như SECONDS, MINUTES, HOURS được phân tích kỹ lưỡng, bao gồm cách mã hóa thời gian theo chuẩn BCD và chế độ hiển thị 12h/24h. Việc sử dụng DS1307 giúp hệ thống hiển thị thời gian chính xác và liên tục.

1. Giới thiệu IC DS1307

IC DS1307 là một chip đồng hồ thời gian thực (RTC - Real-time clock) do Dallas Semiconductor (thuộc Maxim Integrated Products) sản xuất. Khái niệm 'thời gian thực' ở đây chỉ thời gian tuyệt đối, tính bằng giây, phút, giờ... Chip này có 7 thanh ghi 8-bit lưu trữ thông tin thời gian: giây, phút, giờ, ngày, tháng, năm và ngày trong tuần. Ngoài ra, DS1307 còn có một thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dùng như RAM. DS1307 có hai loại vỏ là SOIC và DIP, đều có 8 chân. Giao tiếp với DS1307 được thực hiện qua giao diện I2C, sử dụng hai đường tín hiệu SCL (xung nhịp) và SDA (dữ liệu). Cấu tạo bên trong bao gồm mạch nguồn, mạch dao động, mạch điều khiển logic, mạch giao diện I2C, con trỏ địa chỉ và các thanh ghi. Sử dụng DS1307 chủ yếu là ghi và đọc các thanh ghi thông qua giao diện I2C.

2. Cấu trúc bộ nhớ và truy xuất dữ liệu của DS1307

DS1307 có tổng cộng 64 thanh ghi 8-bit, được đánh địa chỉ từ 0 đến 63 (00H đến 3FH). Tuy nhiên, chỉ có 8 thanh ghi đầu tiên dùng cho chức năng đồng hồ (RTC), 56 thanh ghi còn lại bỏ trống, có thể dùng làm RAM. Bảy thanh ghi đầu tiên chứa thông tin thời gian: SECONDS (giây), MINUTES (phút), HOURS (giờ), DAY (ngày trong tuần), DATE (ngày), MONTH (tháng), YEAR (năm). Thanh ghi thứ 8 điều khiển xung ngõ ra SQW/OUT (không được sử dụng trong đồ án). Cấu trúc bit của các thanh ghi này được mô tả chi tiết, đặc biệt là thanh ghi HOURS, hỗ trợ cả chế độ 12h và 24h. Ngoài các thanh ghi dữ liệu, DS1307 còn có một thanh ghi địa chỉ (Address Register) để chỉ định thanh ghi cần truy cập. Chế độ đọc dữ liệu (slave phát) được giải thích, nhấn mạnh vào việc bit chiều được đảo ngược so với chế độ ghi.

3. Phân tích chi tiết các thanh ghi thời gian

Thanh ghi SECONDS (địa chỉ 0x00) lưu trữ giá trị giây, sử dụng mã BCD 4-bit cho chữ số đơn vị và 3 bit cho chữ số hàng chục. Bit 7 (CH - Clock Halt) dùng để dừng đồng hồ. Thanh ghi MINUTES (địa chỉ 01H) lưu trữ giá trị phút, sử dụng mã BCD 7-bit (bit 7 luôn bằng 0). Thanh ghi HOURS (địa chỉ 02H) phức tạp nhất, lưu trữ giá trị giờ theo hai chế độ 12h và 24h. Bit 6 xác định chế độ, bit 4-5 dùng để mã hóa chữ số hàng chục trong chế độ 24h, trong khi bit 5 chỉ định AM/PM trong chế độ 12h. Các thanh ghi DAY, DATE, MONTH, YEAR cũng lưu trữ thông tin tương ứng, sử dụng mã BCD. Đồ án nhấn mạnh vào việc hiểu rõ cách mã hóa BCD và cấu trúc bit của từng thanh ghi để có thể đọc và ghi dữ liệu thời gian chính xác. Việc sử dụng thanh ghi địa chỉ để truy cập vào từng thanh ghi cụ thể cũng được giải thích.