1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Dtcn gt md20 lap rap lap trinh vi dieu khien ver2 doc 017

62 2 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 đề Giáo trình Lắp ráp lập trình vi điều khiển ver2 doc 017
Tác giả Lương Thanh Long
Trường học Trường Cao đẳng Kỹ thuật Công nghệ Quy Nhơn
Chuyên ngành Điện tử Công nghiệp
Thể loại Giáo trình
Năm xuất bản 2018
Thành phố Quy Nhơn
Định dạng
Số trang 62
Dung lượng 3,54 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1.1. Cấu trúc cơ bản của họ vi điều khiển 8051 (7)
  • 1.2. Giao diện phần mền Keil C (12)
  • 1.3. Tạo dự án mới với Keil C (13)
  • BÀI 2: LẬP TRÌNH C CĂN BẢN 19 2.1. Khai báo trong lập trình C 19 2.2. Thực hiện phép tính trong chương trình C (21)
    • 3.1. Điều khiển led đơn tích cực mức thấp (27)
    • 3.2. Điều khiển led đơn tích cực mức cao (29)
  • BÀI 4: LẮP RÁP, LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ LED 7 ĐOẠN 30 4.1. Lập trình điều khiển hiển thị trên 1 Led 7 đoạn (32)
    • 4.2. Lập trình điều khiển hiện thị nhiều led 7 đoạn (34)
  • BÀI 5: LẮP RÁP, LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ LED 34 (36)
    • 5.2. Lập trình hiển thị led ma trận 8x8 (38)
  • BÀI 6: LẮP RÁP, LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ MÀN HÌNH (40)
    • 6.2 Lập trình hiển thị màn hình LCD 16x2 (43)
  • BÀI 7: LẬP TRÌNH ỨNG DỤNG BỘ ĐỊNH THỜI TRONG ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI 44 7.1. Cài đặt chế độ cho bộ định thời (46)
    • 7.2. Sử dụng bộ định thời tạo xung vuông 2Khz (50)
    • 7.3. lắp ráp, lập trình điều khiển động cơ điện một chiều (50)
  • BÀI 8: LẬP TRÌNH ỨNG DỤNG NGẮT 52 8.1. Cấu hình hoạt động ngắt (54)
    • 8.2. Lập trình sử dụng ngắt (60)

Nội dung

LỜI GIỚI THIỆUĐể thực hiện biên soạn giáo trình đào tạo nghề Điện tử công nghiệp ởtrình độ Cao Đẳng Nghề và Trung Cấp Nghề, giáo trình Lắp ráp lập trình vi điềukhiển là một trong những g

Cấu trúc cơ bản của họ vi điều khiển 8051

Vi điều khiển Atmel có nhiều loại khác nhau, trong đó nổi bật là họ vi điều khiển MCS-52 Bài viết này sẽ tập trung khảo sát vi điều khiển AT89S52, bao gồm hình dạng bên ngoài và sơ đồ chân của nó.

Vi điều khiển AT89S52 được đóng gói với định dạng DIP40 và TQFP44

Hình 1.1: Dạng đóng gói kiểu DIP40 Hình 1.2: Dạng đóng gói kiểu TQFP44

Chức năng các chân của vi điều khiển AT89S52

Hình 1.3: Sơ đồ chân đóng gói

DIP44 Hình1.4: Sơ đồ chân đóng gói TQFP44

Vi điều khiển AT89S52 có 40 chân, trong đó nhiều chân có chức năng kép, cho phép mỗi chân hoạt động như đường xuất nhập điều khiển IO hoặc là thành phần của các bus dữ liệu và bus địa chỉ Điều này giúp tải địa chỉ và dữ liệu khi giao tiếp với bộ nhớ ngoài.

Port0 có hai chức năng chính: trong các hệ thống điều khiển đơn giản, khi không sử dụng bộ nhớ mở rộng bên ngoài, port0 được sử dụng làm các đường điều khiển đầu vào và đầu ra (IO).

Trong các hệ thống điều khiển lớn, port 0 đóng vai trò là bus địa chỉ và bus dữ liệu AD7 ÷ AD0 khi sử dụng bộ nhớ mở rộng bên ngoài.

PORT2: có 2 chức năng: Trong các hệ thống điều khiển đơn giản không dùng bộ nhớ mở rộng bên ngoài thì port2 được dùng làm các đường điều khiển

Trong các hệ thống điều khiển lớn sử dụng thêm bộ nhớ mở rộng bên ngoài thì port2 có chức năng là bus địa chỉ cao A8÷A15.

PORT3: có nhiều chức năng được liệt kê như sau:

Bảng 1.5 Chức năng các chân của Port 3

- Chân VCC: Là chân cấp nguồn cho vi điều khiển (4.5 – 5.5V)

- Chân GND: Là chân mass của vi điều khiển

Chân Reset (chân số 9) là chân cung cấp tín hiệu Reset cho vi điều khiển Vi điều khiển AT89S52 sẽ được reset khi nhận mức logic [1] tại chân Reset.

Chân XTAL1 và XTAL2 (chân số 18 và 19) là ngõ vào cho bộ dao động thạch anh ngoài khi sử dụng AT89S52 Để hoạt động ở chế độ thạch anh ngoài, người thiết kế cần kết nối thêm thạch anh và các tụ điện như trong hình 2-3 Tần số thạch anh thường được sử dụng cho AT89S53 dao động trong khoảng 12Mhz đến 24Mhz.

Hình 1.6 : Sơ đồ kết nối vi điều khiển AT89S52

- 8 Kbyte bộ nhớ FLASH ROM bên trong dùng để lưu chương trình điều khiển.

- 256 Byte RAM nội và các thanh ghi có chức năng đặc biệt.

- 4 Port xuất/nhập (Input/Output) 8 bit.

- Khả năng giao tiếp truyền dữ liệu nối tiếp.

- Cho phép lập trình nối tiếp theo chuẩn SPI với điện áp lập trình 5V.

- Có thể giao tiếp với 64 Kbyte bộ nhớ bên ngoài dùng để lưu chương trình điều khiển.

- Có thể giao tiếp với 64 Kbyte bộ nhớ bên ngoài dùng để lưu dữ liệu

- Có 210 bit có thể truy xuất từng bit Có các lệnh xử lý bit.

1.2.3 Cấu trúc bộ nhớ và các khối chức năng

Vi điều khiển bao gồm các khối quan trọng như khối ALU, các thanh ghi temp1, temp2 và thanh ghi trạng thái PSW Khối ALU thực hiện các phép toán, trong khi các thanh ghi temp1 và temp2 lưu trữ dữ liệu cần thiết cho quá trình này Thanh ghi trạng thái PSW lưu giữ trạng thái của kết quả sau khi các phép toán được thực hiện.

Hình 1.7: Cấu trúc bên trong của vi điều khiển.

- Bộ điều khiển logic (timing and control): có chức năng điều khiển các khối bên trong và bên ngoài để thực hiện lệnh.

- Vùng nhớ Flash Rom: dùng để lưu chương trình.

- Vùng nhớ RAM nội: dùng để lưu dữ liệu.

- Mạch tạo dao động nội kết hợp với tụ thạch anh bên ngoài để tạo dao động.

- Khối xử lý ngắt, truyền dữ liệu, khối timer/counter.

- Thanh ghi A, B, DPTR và 4 port0, port1, port2, port3 có chốt và đệm.

Thanh ghi bộ đếm chương trình (program counter) có nhiệm vụ lưu trữ địa chỉ của lệnh sẽ được thực hiện, đồng thời quản lý địa chỉ trong bộ nhớ chương trình.

Con trỏ dữ liệu DPTR (data pointer) được sử dụng để lưu trữ địa chỉ khi truy xuất bộ nhớ dữ liệu bên ngoài, đồng thời quản lý địa chỉ của bộ nhớ dữ liệu này.

- Thanh ghi con trỏ ngăn xếp SP (stack pointer): quản lý địa chỉ của bộ nhớ ngăn xếp.

- Thanh ghi lệnh IR (instruction register): dùng để lưu mã lệnh đón về từ bộ nhớ.

Ngoài ra, còn có một số thanh ghi hỗ trợ để quản lý địa chỉ bộ nhớ RAM nội bộ, cũng như các thanh ghi quản lý địa chỉ truy xuất bộ nhớ bên ngoài.

Giao diện phần mền Keil C

Màn hình làm việc của Keil C bao gồm các thanh công cụ ở phía trên cùng và 3 vùng chính như trong hình

Hình 1.8: Giao diện làm việc của phần mềm Keil C

Vùng 1 bao gồm cửa sổ Project, giúp quản lý các tập tin trong dự án, và cửa sổ Function, cho phép quản lý các chương trình con.

- Vùng 2: Vùng soạn thảo Đây là nơi ta sẽ soạn thảo chương trình.

- Vùng 3: Cửa sổ Build Output Hiển thị các thông tin trong quá trình biên dịch chương trình

Tạo dự án mới với Keil C

Trình biên dịch là phần mềm cần thiết để viết các chương trình điều khiển cho vi điều khiển Không thể sử dụng các ứng dụng như Word hay Excel để lập trình cho vi điều khiển, vì mỗi loại vi điều khiển yêu cầu một phần mềm chuyên dụng riêng để phát triển chương trình.

Hiện nay có khá nhiều trình biên dịch ngôn ngữ C cho dòng vi điều khiển

Keil C là môi trường phát triển tích hợp (IDE) của công ty Keil Software, bao gồm trình soạn thảo ngôn ngữ C, trình biên dịch và công cụ debug, thường được sử dụng cho lập trình vi điều khiển 8051.

Phần mềm Keil C cho phép ta có thể viết chương trình bằng cả 2 loại ngôn ngữ là C hoặc ASM (hợp ngữ).

Việc sử dụng các phần mềm chuyên dụng để lập trình vi điều khiển là cần thiết, vì vi điều khiển không thể hiểu các ngôn ngữ lập trình mà chúng ta sử dụng Thay vào đó, nó chỉ hiểu mã máy được tạo ra bởi nhà sản xuất Các phần mềm này đóng vai trò quan trọng trong việc chuyển đổi mã nguồn thành mã máy mà vi điều khiển có thể xử lý.

"Phiên dịch các dòng lệnh viết bằng C hoặc ASM sang ngôn ngữ mã máy tạo ra file hex, sau đó sử dụng mạch nạp để nạp file hex này vào vi điều khiển."

Để quản lý hiệu quả các dự án, nên tạo thư mục riêng cho từng dự án, với tên thư mục bao gồm tên dự án và ngày lập Ngoài ra, cần thêm một file text ghi lại những thay đổi của dự án vào thư mục tương ứng.

Bước 1: chạy chương trình Keil C, Vào menu Project\New uVision Project để tạo project mới Nhập đường dẫn và tên project vào hộp thoại Nhấn OK.

Bước 2: Chọn loại vi điều khiển cần sử dụng trong hộp thoại Select device ….Nhấn OK Sau đó, chọn Yes trong hộp thoại “Copy Standard 8051 …” xuất hiện tiếp theo.

Bước 3: Tạo một file lập trình mới :vào File\New và lưu lại với định dạng *.c

Bước 4: thêm File.C vào Project

Ta cần phải liên kết File.C với Project vừa tạo với nhau:

Trong giao diện Keil C, ở không gian làm việc của Project: Chuột phải vào phần

“Source Group 1” -> Add files to Group “Source Group 1”:

Bước 5: Cấu hình cho project: vào menu Project Option for Group

“Source Group 1” Tại thẻ output của cửa sổ vừa xuất hiện, ta tích chọn vào ô

Thực hành tạo project mới sử dụng phần mềm Keil C theo yêu cầu của giáo viên hướng dẫn.

Câu 1: Hãy nêu cấu hình của vi điều khiển AT89S52.

Câu 2: Hãy cho biết các loại bộ nhớ mà vi điều khiển AT89S52 tích hợp và mở rộng.

Câu 3: Hãy trình bày tên và chức năng các port của vi điều khiển AT89S52.

Câu 4: Hãy tìm hiểu quá trình phát triển của họ vi điều khiển MCS51 và MCS52.

Câu 5: Hãy tìm hiểu các port vi điều khiển AT89C52 và so sánh với vi điều khiển AT89S52.

Câu 6: Hãy tìm hiểu cấu hình vi điều khiển AT89S8252 và so sánh với vi điều khiển AT89S52.

Câu 7: Hãy tìm hiểu cấu hình vi điều khiển AT89C51RD2 và so sánh với vi điều khiển AT89S52.

Câu 8: Hãy tìm hiểu cấu hình vi điều khiển AT89C2051 và so sánh với vi điều khiển AT89S52.

Câu 9 : AT89S52 có bao nhiêu port:

Câu 10: Tín hiệu nào của AT89S52 có chức năng cho phép đọc bộ nhớ chương trình mở rộng:

Câu 11 : Port nào của AT89S52 có chức năng tải địa chỉ byte thấp:

Câu 12 : Port nào của AT89S52 có chức năng tải dữ liệu khi giao tiếp bộ nhớ ngoại:

Câu 13 : Tín hiệu nào của AT89S52 có chức năng chốt địa chỉ:

Câu 14 : Port nào của AT89S52 có chức năng tải địa chỉ byte cao:

Câu 15 : Tín hiệu nào của AT89S52 có chức năng reset vi điều khiển:

Câu 16 : Khi reset vi điều khiển AT89S52 thì thanh ghi nào mang giá trị 07:

Câu 17 : Khi reset vi điều khiển AT89S52 thì thanh ghi PC bằng:

Câu 18 : Khi reset vi điều khiển AT89S52 thì thanh ghi nào bằng FFH:

Câu 19 : Tín hiệu nào làm AT89S52 thực hiện chương trình ở bộ nhớ nội hay ngoại:

Câu 20 : Sau khi tách địa chỉ và dữ liệu của AT89S52 thì bus địa chỉ có:

Câu 21 : AT89S52 có 2 ngõ vào nhận tín hiệu ngắt có tên là:

Câu 22 : Port nào của AT89S52 có chức năng nhận xung cho timer T2:

Câu 23 : Port nào của AT89S52 có chức năng giao tiếp mạch nạp nối tiếp:

LẬP TRÌNH C CĂN BẢN 19 2.1 Khai báo trong lập trình C 19 2.2 Thực hiện phép tính trong chương trình C

Điều khiển led đơn tích cực mức thấp

Vi điều khiển có các cổng để xuất nhập dữ liệu và giao tiếp với các đối tượng điều khiển Tín hiệu điều khiển từ CPU được gửi qua cổng để thực hiện điều khiển, trong khi đó, các cổng cũng nhận dữ liệu về để xử lý Trong một hệ thống, luôn tồn tại các tín hiệu vào và ra.

Vi điều khiển AT89S52 có 4 cổng: 0, 1, 2 và 3 Khi khởi động lại, các cổng này có mức đầu ra bằng 1 Dòng ra vào của các cổng rất nhỏ; cụ thể, cổng 1, 2 và 3 khi ở mức thấp nhận dòng vào khoảng 1,6mA, trong khi cổng 0 nhận khoảng 3,2mA Khi ở mức cao, dòng ra của các cổng khoảng 60µA.

Do dòng cấp nhỏ, cần sử dụng điện trở kéo lên và IC đệm để mở rộng khả năng cấp dòng khi sử dụng các port Đối với việc điều khiển các đối tượng công suất lớn, cần bổ sung mạch giao tiếp.

Các port của vi điều khiển AT89S52 cho phép điều khiển vào ra một cách linh hoạt mà không cần phải định cấu hình Khi sử dụng port làm ngõ vào, nên xuất dữ liệu FFh ra port trước khi thực hiện việc đọc dữ liệu vào.

Hình 3.3: kết nối Led đơn điều khiển tích cực mức thấp

Hình 3.4: Sơ đồ kết nối Led đơn thông qua transistor PNP

Lệnh truy xuất Port 8 bit

Px = giá trị; Đưa dữ liệu ra 8 bít của 1 port

Ví dụ: P1 = 0xAA; Đưa giá trị 0xAA ra 8 bít của port 1 y = Px; Đọc giá trị hiện tại của Port x về biến y

Ví dụ: z = P2; Đọc giá trị hiện tại của port 2 và lưu vào biến z Lệnh truy xuất từng bit

Giá trị của bit \( Px_i \) được xác định bởi \( x \), với \( x \) có thể là 0 hoặc 1, tương ứng với mức thấp hoặc mức cao Để đọc giá trị hiện tại của chân \( Px_i \), ta gán giá trị đó cho biến \( x \) thông qua \( x = Px_y \).

Bước 1: kết nối Led đơn với vi điều khiển và cấp nguồn.

Bước 2: Lập trình điều khiển chớp tắt

Lập trình điều khiển Led đơn chớp tắt theo sơ đồ giải thuật sau.

Bước 3: Nạp chương trình và kiểm tra hoạt động

Tìm kiếm file hex và nạp vào vi điều khiển kiểm tra hoạt động của vi điều khiển.

Người học thực hiện viết chương trình điều khiển 8 led đơn được kết nối vào Port 1 ở chế độ tích cực mức thấp.

- Máy vi tính cài phần mềm Keil C;

- Mô đun thực hành Basic 8051 Training.

Điều khiển led đơn tích cực mức cao

Hình 3.5: Sơ đồ kết nối Led đơn điều khiển tích cực mức cao

Hình 3.6: Sơ đồ kết nối Led đơn thông qua transistor NPN

Sử dụng các tập lệnh giống như khi điều khiển Led đơn tích cực mức thấp.

Bước 1: kết nối Led đơn với vi điều khiển và cấp nguồn.

Bước 2: Lập trình điều khiển chớp tắt

Lập trình điều khiển Led đơn chớp tắt theo sơ đồ giải thuật sau.

Bước 3: Nạp chương trình và kiểm tra hoạt động

Tìm kiếm file hex và nạp vào vi điều khiển kiểm tra hoạt động của vi điều khiển.

Người học thực hiện viết chương trình điều khiển 8 led đơn được kết nối vào Port 1 ở chế độ tích cực mức thấp.

- Máy vi tính cài phần mềm Keil C;

- Mô đun thực hành Basic 8051 Training.

Câu 1: Led đơn mày đỏ hoạt động ở điện áp bao nhiêu vôn?

Câu 2: Tính giá trị hàn dòng cho led đơn để có thê hoạt động với nguồn điện 12V.

Câu 3: Ta có thể dùng 1 chân của vi điều khiển để điều khiển nhiều Led đơn hay không? Có các giải pháp nào để thực hiện điều đó?

LẮP RÁP, LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ LED 7 ĐOẠN 30 4.1 Lập trình điều khiển hiển thị trên 1 Led 7 đoạn

Lập trình điều khiển hiện thị nhiều led 7 đoạn

4.2.1 lý thuyết liên quan Để điều khiển hiển thị nhiều led 7 đoạn cùng lúc, thông thường người ta sử dụng

Khi kết nối các đường dữ liệu của Led 7 đoạn, không thể cho tất cả các Led sáng cùng lúc do ảnh hưởng lẫn nhau Thay vào đó, cần áp dụng phương pháp quét, tức là chỉ cho một Led sáng tại mỗi thời điểm và tắt các Led còn lại Nhờ hiện tượng lưu ảnh của mắt, chúng ta sẽ cảm nhận được các Led sáng đồng thời.

Hình 4.4: Sơ đồ kết nối 4 led 7 đoạn theo phương pháp quét

Dùng phương pháp chốt: Khi thực hiện tách riêng các đường dữ liệu của Led, ta có thể cho phép các Led sáng đồng thời mà sẽ không có hiện tượng ảnh hưởng giữa các Led IC chốt cho phép lưu trữ dữ liệu cho các Led có thể sử dụng là 74LS373, 74LS374.

- Bước 1:Viết lưu đồ thuật toán theo yêu cầu kỹ thuật

Bước 2: Viết chương trình dựa trên lưu đồ thuật toán

Bước 4: kiểm tra hoạt động

- Lập trình hiển thị đồng thời 2 số có giá trị khác nhau lên 2 led 7 đoạn

- Lập trình đếm lên theo thứ tự từ 00 đến 99 trên 2 led 7 đoạn.

Câu 1: Led 7 đoạn thương được dùng để làm gì?

Câu 2: Có bao nhiêu Led đơn cấu thành nên 1 led 7 đoạn thông thường? Câu 3: Có bao nhiêu loại led 7 đoạn, phân loại theo cấu tạo?

Câu 4: có nhưng phương pháp nào để kết nối Led 7 đoạn vào vi điều khiển?

LẮP RÁP, LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ LED 34

Lập trình hiển thị led ma trận 8x8

Dựa vào phương pháp quét hay hay quét cột mà ta sẽ có phương pháp tạo bảng mã khác nhau:

Dưới đây trình bày cách tạo bảng mã cho phương pháp quét cột

Sử dụng phương pháp quét từng cột cho ma trận 8x8.

Led sáng cấp mức logic thấp (L) cho các chân điều khiển hiển thị hàng. Led tắt cấp mức logic cao (H) cho các chân điều khiển hiển thị hàng.

Giải thuật điều khiển Led ma trận 8x8

Bước 1: Tạo bảng mã cho ký tự cần hiển thị

Bước 2: Vẽ lưu đồ thuật toán

Bước 3: Lập trình hiển thị led ma trận theo thuật toán

Bước 4: Nạp và kiểm tra hoạt động

- Lập trình hiển thị một ký tự là chữ cái cuối của tên học sinh lên 1 led ma trận 8x8

- Lập trình điều khiển dich trái hoặc phải ký tự hiển thị trên led ma trận 8x8 đã thực hiện ở bài trên.

Câu 1: Led ma trận 8x8 có bao nhêu Led đơn bên trong và bao nhiêu chân điều khiển

Câu 2: Có bao nhiêu phương pháp quét led ma trận?

Câu 3: Trình bay giải thuật quét led ma trận theo hàng

LẮP RÁP, LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ MÀN HÌNH

Lập trình hiển thị màn hình LCD 16x2

6.2.1 Lý thuyết liên quan Để điều khiển LCD thì có các IC chuyên dùng được tích hợp bên dưới LCD có mã số 447801 đến các IC 447809 Trong IC này có bộ nhớ RAM dùng để Lưu trữ dữ liệu cần hiển thị và thực hiện việc điều khiển LCD hiển thị Lệnh xoá màn hình “Clear Display” : khi thực hiện lệnh này thì LCD sẽ bị xoá và bộ đếm địa chỉ được xoá về 0.

Lệnh "Cursor Home" di chuyển con trỏ về đầu màn hình, làm cho bộ đếm địa chỉ trở về 0 và đưa phần hiển thị về vị trí gốc đã bị dịch trước đó, trong khi nội dung bộ nhớ RAM hiển thị DDRAM vẫn không bị thay đổi.

Lệnh "Entry mode set" được sử dụng để thiết lập lối vào cho các ký tự hiển thị Khi bit ID = 1, con trỏ sẽ tự động tăng lên 1 mỗi khi có 1 byte dữ liệu được ghi vào bộ hiển thị Ngược lại, khi ID = 0, con trỏ sẽ tự động giảm đi.

1 mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị Bit S = 1 thì cho phép dịch chuyển dữ liệu mỗi khi nhận 1 byte hiển thị (ID: increment/decrement)

Lệnh điều khiển con trỏ hiển thị "Display Control" cho phép điều chỉnh hiển thị của con trỏ bằng cách thiết lập các bit: bit D để bật (D = 1) hoặc tắt (D = 0) hiển thị, bit C để mở (C = 1) hoặc tắt (C = 0) con trỏ, và bit B để bật (B = 1) hoặc tắt (B = 0) chế độ nhấp nháy của con trỏ.

Lệnh di chuyển con trỏ "Cursor /Display Shift" cho phép điều khiển vị trí hiển thị của con trỏ Khi SC = 1, việc dịch chuyển được phép, trong khi SC = 0 thì không Hướng dịch chuyển được xác định bởi RL, với RL = 1 cho phép dịch sang phải và RL = 0 cho phép dịch sang trái Lưu ý rằng nội dung bộ nhớ DDRAM không bị thay đổi trong quá trình này.

The "Function set" command is used to configure communication settings When the data length (DL) bit is set to 1, it allows for communication over 8 data lines (D7 to D0); if set to 0, it permits communication over 4 data lines (D7 to D4) The number of lines (N) bit determines the display capability, allowing for 2 lines when set to 1 and 1 line when set to 0 Additionally, the font (F) bit, when set to 1, enables a 5×10 matrix display, while a setting of 0 allows for a 5×7 matrix display.

Lệnh "Set CGRAM Addr" được sử dụng để thiết lập địa chỉ cho bộ nhớ RAM phát ký tự.

Lệnh "Set DDRAM Addr" được sử dụng để thiết lập địa chỉ cho bộ nhớ RAM, nơi lưu trữ dữ liệu hiển thị Hai lệnh cuối cùng trong quy trình là lệnh đọc và lệnh ghi dữ liệu cho LCD.

Dạng sóng các tín hiệu khi thực hiện ghi dữ liệu vào

LCD như hình 6-35: Nhìn vào dạng sóng ta có thể thấy được trình tự điều khiển như sau:

- Điều khiển tín hiệu RS.

- Điều khiển tín hiệu R/W xuống mức thấp.

- Điều khiển tín hiệu E lên mức cao để cho phép.

- Điều khiển tín hiệu E về mức thấp.

- Điều khiển tín hiệu R/W lên mức cao trở lại.

Hình 5.6 Dạng sóng điều khiển của LCD. Địa chỉ của từng kí tự trên LCD

- LCD16x2 có 2 hàng mỗi hàng 16 kí tự.

Hàng thứ nhất bắt đầu với ký tự có địa chỉ 0x80, tiếp theo là ký tự 0x81 và kết thúc với ký tự 0x8F Hàng thứ hai bắt đầu với ký tự có địa chỉ 0xC0, tiếp theo là ký tự 0xC1 và kết thúc với ký tự cuối cùng.

T P H O C H I M I N H Địa chỉ C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF

Bảng 5.7:địa chỉ của từng kí tự:

Bước 1: lập lưu đồ giải thuật điều khiển

Bước 2: Thực hiện viết chương trình theo lưu đồ giải thuật

Bước 4: Kiểm tra hoạt động

Lập trình hiển thị các ký tự lên 2 dòng của LCD theo yêu cầu của giáo viên

Câu 1: màn hình LCD 16x2 có bao nhiêu chân điều khiển, bao nhiêuu chân dữ liệu?

Câu 2: Màn hình LCD 16x2 có thể hiển thị đồng thời bao nhiêu ký tự?

Câu 3: Các ứng dụng nào có thể sử dụng màn hình LCD 16x2?

LẬP TRÌNH ỨNG DỤNG BỘ ĐỊNH THỜI TRONG ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI 44 7.1 Cài đặt chế độ cho bộ định thời

Sử dụng bộ định thời tạo xung vuông 2Khz

7.2.1 Lý thuyết liên quan Để tạo được xung vuông với tần số 2Khz, tức chu kỳ 2ms, ta sẽ thực hiện sử dụng bộ định thời để tạo khoảng thời gian trễ 1ms theo chu kỳ lặp lại với mỗi 1ms sẽ đảo trạng thái của tín hiệu ngõ ra.

Sau mỗi chu kỳ máy 1 micro giây (1us), giá trị trong thanh ghi Timer (THx và TLx) sẽ tăng lên 1 đơn vị Nếu timer được đặt ở chế độ 8 bit tự nạp lại, nó sẽ tràn sau 256 micro giây (256us).

Để đạt được timer tràn sau 1ms, chúng ta cần sử dụng timer ở chế độ 16 bit, vì ở chế độ này, timer sẽ tràn sau 65536 chu kỳ máy (tương đương 65.536ms) Do thời gian cần thiết cho timer tràn là 1ms, chúng ta phải nạp trước giá trị cho timer Cụ thể, để timer đạt giá trị tràn 65535 sau 1ms, giá trị cần nạp trước cho timer là 64535 (tính từ 65535 - 1000).

Sau 1000us (tức 1ms), timer sẽ tràn, và mỗi khi timer tràn, chúng ta sẽ thay đổi trạng thái của tín hiệu ngõ ra và nạp lại giá trị ban đầu (64535) cho timer.

Bước 1: Chọn chế độ làm việc cho timer

Bước 2: Nạp giá trị cho các thanh ghi điều khiển timer

Bước 3: Tính giá trị nạp trước cho timer

Bước 4: Xóa cờ tràn timer và khởi chạy timer

- Lập trình sử dụng bộ định thời tạo xung vuông có tần số 500Hz tại chân P3.1 của vi điều khiển 89S52

- Lập trình sử dụng bộ định thời tạo xung vuông có tần số 2KHz tại chân P2.7 của vi điều khiển 89S52

lắp ráp, lập trình điều khiển động cơ điện một chiều

7.3.1 Lý thuyết liên quan Động cơ một chiều là loại động cơ có cấu tạo và cách điều khiển đơn giản nhất, tốc độ động cơ được điều khiển thông qua điện áp ấcp vào 2 đầu động cơ Động cơ một chiều được ứng dụng rất rộng rãi trong các hệ thống tự động.

Hiện nay, có nhiều phương pháp để điều khiển động cơ một chiều Bài giảng này sẽ giới thiệu cách sử dụng module PWM để điều chế điện áp trên hai đầu động cơ, từ đó điều chỉnh được tốc độ của động cơ.

Hình 7.3: Mạch cầu H cơ bản

Có 4 khóa chuyển mạch 1,2,3,4 Tại một thời điểm luôn luôn có 2 khóa m ở và 2 khóa đóng.

Khi khóa 1 và khóa 4 đóng, dòng điện chạy qua động cơ từ trái qua phải, khiến động cơ quay theo một chiều Ngược lại, nếu khóa 2 và 3 đóng, dòng điện sẽ chạy từ phải qua trái, làm cho động cơ quay theo chiều ngược lại Cần tránh tình trạng đóng cùng lúc hai khóa 1 và 3 hoặc 2 và 4, vì điều này có thể gây ra hiện tượng đoản mạch Do đó, việc thay đổi trạng thái đóng mở của các khóa cho phép chúng ta điều chỉnh chiều quay của động cơ.

Để điều khiển tốc độ động cơ, khi hai van 1 và 4 cùng đóng m ở liên tục, điện áp cấp cho động cơ sẽ tạo ra dạng xung Nếu tốc độ đóng m thấp, động cơ sẽ quay giật cục do sự thay đổi điện áp Ngược lại, khi tốc độ đóng m cao (trên 15KHz), nhờ quán tính, động cơ sẽ quay một cách trơn tru và đều đặn.

Trong thực tế, các khóa chuyển trong hình trên có thể dùng các transistor, hay Mostfet, không nên dùng relay, vì relay có t ốc độ đóng mở thấp.

Sau đây là s ơ đồ nguyên lí 1 kênh của module điều khiển động cơ được sử dụng trong ví dụ:

Hình 7.4 Mạch cầu H chi tiết để đảochiều quay của động cơ DC

Mạch này sử dụng Mosfet để điều khiển động cơ, trong khi diode D11 bảo vệ cho FET Opto Op6 giúp cách li mạch động cơ với mạch điều khiển, đảm bảo an toàn cho phần mạch điều khiển.

Hình 7.5 Mạch cầu H dùng MOSFET đảo chiều quay của động cơ DC

Bước 1: kết nối mạch cầu H, vi điều khiển và động cơ

Bước 2: cài đặt timer theo yêu cầu

Bước 3: Tạo xung ngõ ra điều khiển động cơ

Bước 4: Nạp chương trình và kiểm tra hoạt động

Câu 1: Vi điều khiên AT89S52 có bao nhiêu timer?

Câu 2: Timer 1 của vi điều khiển AT89S52 có thể định thời khoảng thời gian tối đa là bao lâu?

Câu 3: Vi điều khiển AT89S52 có thể chạy đồng thời nhiều timer cùng lúc hay không?

LẬP TRÌNH ỨNG DỤNG NGẮT 52 8.1 Cấu hình hoạt động ngắt

Lập trình sử dụng ngắt

Các vector ngắt (Interrupt Vectors)

Khi xảy ra yêu cầu ngắt, địa chỉ của chương trình con phục vụ ngắt, hay còn gọi là vector địa chỉ ngắt, sẽ được nạp vào thanh ghi PC sau khi địa chỉ trong PC được lưu vào ngăn xếp Địa chỉ này là cố định và được thiết kế bởi nhà chế tạo vi điều khiển, do đó, các chương trình ngắt cần phải được viết chính xác tại vector địa chỉ ngắt.

Bảng 8.5: Các vector địa chỉ của các nguồn ngắt:

Vector reset hệ thống bắt đầu tại địa chỉ 0000H: khi reset vi điều khiển thì thanh ghi PC = 0000H và chương trình chính luôn bắt đầu tại địa chỉ này.

Khi sử dụng yêu cầu ngắt, chương trình con phục vụ ngắt cần được viết đúng tại địa chỉ tương ứng Chẳng hạn, nếu sử dụng ngắt timer T0, chương trình ngắt phải được viết tại địa chỉ 000BH.

Do khoảng cách giữa các vector địa chỉ của các nguồn ngắt chỉ có vài ô nhớ, ví dụ như vector địa chỉ ngắt INT0 tại 0003H và vector địa chỉ ngắt T0 tại 000BH chỉ cách nhau 9 ô nhớ, nếu chương trình phục vụ ngắt INT0 lớn hơn 9 byte sẽ xung đột với vùng nhớ của ngắt T0 Giải pháp là tại địa chỉ 0003H, cần viết lệnh nhảy đến một vùng nhớ khác rộng hơn Nếu ngắt T0 và các ngắt khác không sử dụng, có thể viết chương trình tại đó.

Khai báo chương trình phục vụ ngắt

Khi khai báo chương trình con phục vụ ngắt trong Keil-C, cú pháp tương tự như khai báo chương trình con thông thường, nhưng cần thêm thứ tự ngắt và chỉ định bank thanh ghi Cú pháp được sử dụng là: ```cvoid tên_chương_trình_ngắt() interrupt n using m```

Trong đó, “tên_chương_trình_ngắt ()” là tên mà chúng ta tự đặt, và nên được đặt đúng với ngắt đang sử dụng “interrupt n” với n là số thứ tự của các nguồn ngắt, như được thể hiện trong bảng dưới đây.

Hình 8.6 Thứ tự các nguồn ngắt:

Ví dụ: chương trình phục vụ ngắt timer0

// chương trình phục vụ ngắt timer 0

Bước 1: Xác định các ngắt cần sử dụng cho từng nhiệm vụ

Bước 2: vẽ lưu đồ thuật toán

Bước 3: Cấu hình các thanh ghi điều khiển ngắt tương ứng

Bước 4: Viết chương trình phụ vụ ngắt tương ứng

Bước 5: Kiểm tra hoặt động ngắt

- Lập trình cho phép ngắt tràn timer0 sau mỗi 50ms, trong chương trình phục vụ ngắt tiền hành đảo trạng thái chân P2.5

Lập trình cho phép ngắt ngoài 1 tại cạnh xuống, trong đó chương trình phục vụ ngắt sẽ thực hiện việc tăng giá trị của một biến và hiển thị giá trị biến đó trên màn hình LCD 16x2.

Câu 1: Vi điều khiển AT89S52 có những nguyên nhân gây ngắt nào?

Câu 2: Khai báo chương trình phục vụ ngắt khác chương trình con như thế nào?Câu 3: Ở trạng thái mặc đinh, ngắt nào được ưu tiên cao nhất?

Ngày đăng: 28/06/2023, 21:11

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w