Thiết Kế Hệ Thống Quảng Cáo Sử Dụng Vi Điều Khiển AT89C51

MỤC LỤC

Đặc Tinh Của AT89C51

Các thành viên mới được thêm vào cho họ MCS-51 và các biến thể này gần như có gấp đôi các đặc trưng này. Họ 8051 là một trong những bộ vi điều khiển 8-bit mạnh và linh hoạt nhất, đã trở thành bộ vi điều khiển hàng đầu trong những năm gần đây.

INTEL 89C51

Tổ chức bộ nhớ

RAM bao gồm nhiều thành phần : Phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các thanh ghi (BANK) và các thanh ghi chức năng đặc biệt ( Special Funtion Registers). Chương trình và dữ liệu có thể chứa bên trong AT89C51 nhưng AT89C51 vẫn có thể kết nối với 64K Byte bộ nhớ chương trình và 64KByte bộ nhớ dữ liệu mở rộng. Nếu không dùng lệnh khởi động SP hoặc khi RESET lại 89C51 thì SP sẽ bắt đầu tại địa chỉ mặc định là 07H và dữ liệu đầu tiên sẽ được cất vào ô nhớ ngăn xếp có địa chỉ là 08H.

Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu hoặc truy xuất ngầm bằng lệnh gọi chương trình con ACALL, LCALL và các lệnh. 89C51 chứa một Port nối tiếp dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, Modem hoặc giao tiếp nối tiếp với các IC khác.

Bảng 2.2: Bảng Thanh ghi trạng thái chương trình
Bảng 2.2: Bảng Thanh ghi trạng thái chương trình

9 RST

Bộ Đếm Chương Trinh Và Không Gian ROM Của 8051

Bộ đếm chương trình có nhiệm vụ trỏ đến địa chỉ của lệnh kế tiếp cần được thực hiện. Vấn đề tiếp theo là, khi 8051 được bật nguồn thì địa chỉ khởi đầu được bắt đầu từ đâu?. Mỗi họ vi điều khiển khi được bật nguồn đều được bắt đầu từ những địa chỉ khác nhau.

Bật nguồn có nghĩa là cấp điện áp Vcc đến chân reset, nói cách khác khi 8051 được cấp nguồn, thì bộ đếm chương trình có giá trị 0000. Dưới đây là toàn bộ trinh tự hoạt động của bộ đếm chương trinh trong quá trình nhận và thực thi một chương trình mẫu. Để hiểu rừ hơn về bộ đếm chương trỡnh, chung ta sẽ xem xột hoạt động của bộ đếm chương trình mỗi khi nhận và thực hiện lệnh.

Như có thể thấy mã lệnh và toán hạng của từng lệnh được liệt kể ở bên trái của tệp liệt kê. • Nạp mã lệnh đầu tiên từ vị trí nhớ đầu tiên 0000 của ROM chương trình. Do bộ đếm chương trình có ý nghĩa và có cách thức làm việc như vậy lên ở một số bộ vi xử lý, đặc biệt là dòng Intel X86, bộ đếm chương trình còn được gọi là con trỏ lệnh IP.

Điểm lưu ý số 2 là lệnh đâu tiên của Rom chương trình đều đặt ở 0000, còn lệnh cuối cùng phục thuộc vào dung lượng của ROM/Chíp của mỗi thành viên của họ 8051.

Hình 2.9: Dải địa chỉ của ROM trên Chip của một số thành viên họ 8051
Hình 2.9: Dải địa chỉ của ROM trên Chip của một số thành viên họ 8051

CÁC CHẾ ĐỘ ĐỊNH ĐỊA CHỈ CỦA 8051

    Trong hầu hết các chương trình dữ liệu cần được xử lý thường ở trong một số ngăn của bộ nhớ RAM hoặc trong ROM .Rất nhiều cách để truy cập dữ liệu này mà phần tiếp theo sẽ xét đến. Mặc dù toàn bộ byte của bộ nhớ RAM có thể được truy cập bằng chế độ đánh địa chỉ trực tiếp, nhưng chế độ này thường được sử dụng nhất để truy cập các ngăn nhớ RAM từ 30H đến 7FH. Đây là do một thực tế là các ngăn nhớ dành cho băng ghi được truy cập bằng thanh ghi theo các tên gọi của chúng là R0 - R7 còn các ngăn nhớ khác của RAM thì không có tên như vậy.

    Mặc dù sử dụng các tên R0 - R7 dễ hơn các địa chỉ bộ nhớ của chúng nhưng các ngăn nhớ 30H đến 7FH của RAM không thể được truy cập theo bất kỳ cách nào khác là theo địa chỉ của chúng vì chúng không có tên. • không phải tất cả mọi địa chỉ từ 80H đến FFH đều do SFH sử dụng, nhưng vị trí ngăn nhớ từ 80H đến FFH chưa dùnglà để dữ trữ và lập trình viên 8051 cũng không được sử dụng. Điều này có nghĩa là việc sử dụng của chế độ đánh địa chỉ này bị giới hạn bởi việc truy cập các vị trí ngăn nhớ của RAM và các thanh ghi với địa chỉ được cho bên trong 8051.

    Hay nói cách khác các thanh ghi R2 - R7 không có thể dùng được để giữ địa chỉ của toán hạng nằm trong RAM khi sử dụng chế độ đánh địa chỉ này khi Ro và R1 được dùng như các con trỏ, nghĩa là khi chúng giữ các địa chỉ của các ngăn nhớ RAM thì trước chúng phải đặt dấu (@) như chỉ ra dưới đây. Một trong những ưu điểm của chế độ đánh địa chỉ gián tiếp thanh ghi là nó làm cho việc truy cập dữ liệu năng động hơn so với chế độ đánh địa chỉ trực tiếp. Như đã nói ở phần trước rằng R0 và R1 là các thanh ghi duy nhất có thể được dùng để làm các con trỏ trong chế độ đánh địa chỉ gián tiếp thanh ghi.

    Vì R0 và R1 là các thanh ghi 8 bit, nên việc sử dụng của chúng bị hạn chế ở việc truy cập mọi thông tin trong các ngăn nhớ RAM bên trong (các ngăn nhớ từ 30H đến 7FH và các thanh ghi SFR). Chế độ đánh địa chỉ theo chỉ số được sử dụng rộng rãi trongviệc truy cập các phân tử dữ liệu của bảng trong không gian ROM chương trình của 8051. Do các phân tử dữ liệu được cất trong không gian mã (chương trình) của ROM trên chip của 8051, nó phải dùng lệnh Move thay cho lệnh Mov (chủ C ở cuối lệnh là chỉ mà lệnh Code).

    ỨNG DỤNG I. Bài toán

    Sơ dồ khối và các chức năng của hệ quảng cáo

    • Khối Điều Khiển Trung Tâm Linh kiện gồm có

      - LM7850C làm nhiệm vụ ổn áp nguồn ra 5v rồi cấp cho mạch điều khiển - nguồn cấp cho mạch có thể dùng ngồn của máy tính thông qua cổng USB -Điện trở R24 có nhiệm vụ hạn chế dòng. Chương trình lập trình sẵn được nạp vào trong vi điều khiển 8951 sẽ điều khiển các khối Xuất dữ liệu hàng, và giải mã cột thông qua các Port của vi điều khiển. Khối này làm nhiệm vụ xuất dữ liệu chứa trong vi điều khiển ra hàng của bảng đèn LED ma trận để điều khiển các bóng đèn của LED ma trận hiển thị dòng thông báo mong muốn.

      Do dòng ra khỏi bộ giải mã là rất nhỏ không đủ công suất cung cấp cho ma trận led do đó chúng ta phải nối cácđầu ra của bộ giải mã với một khối khuếch đại công suất. -Để dữ liệu từ vi điều khiển đưa ra hiển thị được trên bảng đèn theo một trật tự nhất định (hiển thị đúng chữ hoặc đúng hình ảnh) thì dữ liệu gửi ra này phải được đồng bộ với tín hiệu quét cột. --Khi dữ liệu từ ô nhớ đầu tiên gởi ra bảng đèn thì chỉ có cột đèn đầu tiên là được phép sáng (có sự cho phép của tín hiệu quét cột), các cột còn lại không được phép sáng (không có sự cho phép của tín hiệu quét cột).

      Tương tự như thế, khi dữ liệu từ ô nhớ thứ hai gởi ra thì chỉ có cột thứ hai của bảng đèn là được phép sáng, các cột còn lại thì không, cho đến cột thứ 56 được hiển thị dữ liệu từ ô nhớ thứ 56 Đây được tính là một lần quét. Như vậy, xét tại một thời điểm nhất định thì chỉ có một cột LED được phép sáng (LED nào trong cột được phép sáng thì do dữ liệu từ vi điều khiển gởi đến qua Port P2 quyết định). --Sau khi quét 56 ô nhớ lưu giữ trong bộ nhớ ROM của vi điều khiển đủ lâu (đủ thời gian để người xem có thể đọc được chữ trên bảng đèn, bằng cách quét đi quét lại nhiều lần) thì vi điều khiển sẽ điều khiển chuyển sang quét 56 ô nhớ kế tiếp (dữ liệu được dịch đi một ô nhớ).

      Trong sơ đồ nguyên lý, dữ liệu từ Port 2 sẽ được xuất ra hàng, còn Port3 sẽ có chân được sử dụng làm chân địa chỉ đưa vào IC 74HC595 để tiến hành giải mã cột. Đầu tiên cần phải khai báo dữ liệu (nạp dữ liệu vào các ô nhớ của Rom 8951) theo từng byte, mỗi byte chính là mã của một cột (gồm 8 led), khi byte đó được xuất ra ứng với cột được phép sáng thì với bít 1 led sẽ sáng, bít 0 led sẽ tắt. Các byte này sẽ được cất vào các ô nhớ liên tiếp của bộ nhớ Rom của vi điều khiển 8951, khi chúng ta muốn truy xuất dữ liệu thì chỉ việc truy xuất vào các ô nhớ đã đánh địa chỉ.

      Ở đây bộ đếm được dùng là bộ đếm giảm, giá trị thanh chứa được gán đầu tiên là 56Một khung 56 cột (56 byte dữ liệu ) sẽ được quét rất nhanh và quét làm nhiều lần để mắt ta có thể thấy được hình ảnh một cách rừ nột ( hiện tượng lưu ảnh trờn vừng mạc ). Dùng mạch nạp ROM và chạy chương trinh có là proload v2.1 for 89series programmer của hãng Sun Rom chương trình được down load trrực tiếp từ Web của hãng Sun Rom.http://www surom.com-Dùng phần mềm Keil mởFile để viết chương trình tên chương trrinh phải có đuôi.

      Hình 4.2: Thiết kế chi tiết khối nguồn
      Hình 4.2: Thiết kế chi tiết khối nguồn