1. Trang chủ
  2. » Luận Văn - Báo Cáo

nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập

102 893 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

Định dạng
Số trang 102
Dung lượng 1,22 MB

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

Nội dung

CHƯƠNG I VI ĐIỀU KHIỂN VÀ ỨNG DỤNG VI ĐIỀU KHIỂN TRONG TRUYỀN ĐỘNG ĐIỆN 1.1 Giới thiệu chung về bộ vi điều khiển 1.1.1 Khái niệm về vi điều khiển Bộ vi điều khiển viết tắt là µC Micr

Trang 1

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP

LUẬN VĂN THẠC SỸ KỸ THUẬT

THÁI NGUYÊN, NĂM 2010

Trang 2

Chương I: Vi điều khiển và ứng dụng vi điều khiển

1.1.2 Lịch sử phát triển của bộ vi điều khiển 10 1.1.3 Tổng quan về các hệ thống vi điều khiển 12

1.2.2 Các vi điều khiển sử dụng trong công nghiệp 18 1.2.3 Giới thiệu họ vi điều khiển MCS-51 (AT89C52) 19

1.2.3.3 Sơ đồ chân và chức năng AT89C52 21

Trang 3

Chương II: Phân tích và chọn phương án hệ truyền động

2.1 Hệ thống Thyistor- động cơ một chiều (T-Đ) 46

2.2 Hệ truyền động chế độ rộng xung động cơ điện

2.3.2 Sơ đồ nguyên lý hệ truyền động số cho động cơ

Chương III: Phân tích tổng hợp hệ truyền động số PWM-D 60

3.1.2.2 Thuật toán điều khiển tích phân I 64

3.1.3 Khối biến đổi tương tự- số và số -tương tự 68

Trang 4

3.2 Sơ đồ cấu trúc hệ điều khiển số 75

Kết quả luận án và hướng phát triển của đề tài 101

Trang 5

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIÊT TẮT

ACV : Nguồn xoay chiều

DCV : Nguồn một chiều

A/D : Chuyển đổi tương tự số

D/A : Chuyển đổi số tương tự

DC : Động cơ điện một chiều

P : Bộ điều chỉnh tỷ lệ

I : Bộ điều chỉnh tích phân

D : Bộ điều chỉnh vi phân

PID : Bộ điều chỉnh tỷ lệ vi tích phân

CPU : Bộ xử lý trung tâm

µC : Bộ vi điều khiển

PWM : Phương pháp điều chê độ rộng xung điện áp

βI : Phản hồi âm dòng điện

γn : Phản hồi tốc độ

Ucđ : Điện áp chủ đạo

Uđk : Điện áp điều khiển

Urc : Điện áp răng cưa

USS : Điện áp so sánh

USX : Điện áp sửa xung

Uđb : Điện áp đồng bộ

FXCĐ : Khối phát xung chủ đạo

SRC : Khối tạo xung răng cưa

SS : Khối so sánh

TXPCX : Khối tạo xung và phân chia xung

Uω : Tín hiệu điện áp chủ đạo đặt tốc độ

T : Chu kỳ lấy mẫu (hay gọi thời gian lượng tử)

MS1 : Tín hiệu phản hồi âm tốc độ

MS2 : Tín hiệu phản hồi âm dòng điện

Trang 6

T(s) : Bộ xung biến đổi điện áp (PWM)

H(S) : Khâu lưu giữ 0

Ud : Điện áp ra của bộ biến đổi PWM

Uc : Điện áp điều khiển của bộ điều chế độ rộng xung

Kω : Hệ số của khâu lấy tín hiệu tốc độ

Ki , Kp : Hệ số biến đổi của bộ điều khiển số dòng điện

Trang 7

LỜI MỞ ĐẦU

Trong quá trình công nghiệp hoá hiện đại hoá đất nước.Tự động hoá là yếu tố không thể thiếu trong một nền công nghiệp hiện đại; nói đến tự động hoá thì kỹ thuật số là một công cụ hỗ trợ đắc lực và không thể thiếu trong nhiều lĩnh vực của nền khoa học, kỹ thuật ngày nay Đặc biệt trong truyền động điện, đo lường và điều khiển Việc nghiên cứu ứng dụng vi điều khiển vào trong hệ thống truyền động điều khiển tốc độ động cơ điện một chiều nói chung ngày càng phổ biến Ví dụ trong các dây truyền lắp ráp các sản phẩm

kỹ thuật cao, trong người máy, các cơ cấu ăn dao máy mài, máy gọt kim loại, máy doa, hệ thống nâng hạ cần trục…

Do tính chất ưu việt của công nghệ số so với phương pháp điều khiển tương tự truyền thống như:

- Mềm dẻo trong việc thay đổi cấu trúc và tham số của hệ thống tự động;

Nói chung ở nước ta phần lớn các bộ điều khiển số động cơ điện một chiều chất lượng cao thường đều từ nước ngoài Với công nghệ và áp dụng vi điều khiển ta có thể hoàn toàn chế tạo ra các bộ điều khiển hoàn chỉnh có chức năng tương đương Do đó để tận dụng và khai thác tiềm năng của các

bộ vi điều khiển nên em chọn hướng nghiên cứu “Nghiên cứu, ứng dụng vi

điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập”

Trang 8

Do thời gian và trình độ có hạn nên bản luận văn không tránh khỏi sai sót và có nhiều vấn đề cần phải hoàn thiện thêm Em rất mong nhận được những ý kiến đóng góp, sự chỉ dẫn của các thầy cô giáo và các đồng nghiệp

Em xin được bày tỏ biết ơn chân thành tới PGS.TS Võ Quang Lạp đã hướng dẫn tận tình và chỉ bảo cặn kẽ để em hoàn thành luận văn này Xin được gửi lời cảm ơn tới tất cả các Thầy cô Khoa sau đại học, Khoa điện và các bạn đồng nghiệp lớp TĐH K11 trường ĐHKT công nghiệp Thái Nguyên

Thái Nguyên, ngày 30 tháng 07 năm 2010

Tác giả luận văn

Đỗ Mạnh Tuấn

Trang 9

CHƯƠNG I

VI ĐIỀU KHIỂN VÀ ỨNG DỤNG VI ĐIỀU KHIỂN TRONG

TRUYỀN ĐỘNG ĐIỆN

1.1 Giới thiệu chung về bộ vi điều khiển

1.1.1 Khái niệm về vi điều khiển

Bộ vi điều khiển viết tắt là µC (Microcontroller) là mạch tích hợp, trên một chíp có thể lập trình được, dùng để điều khiển hoạt động của hệ thống

Phần cứng chỉ đóng vai trò thứ yếu, phần mềm (chương trình) đóng vai trò chủ đạo đối với các chức năng cần thực hiện Nhờ vậy vi điều khiển có sự mềm dẻo hóa trong các chức năng của mình Ngày nay vi điều khiển có tốc độ tính toán rất cao và khả năng xử lý rất lớn

Vi điều khiển có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra ngoài sau khi đã xử lý Và chức năng chính của Vi điều khiển chính

là xử lý dữ liệu, chẳng hạn như cộng, trừ, nhân, chia, so sánh.v.v

Vi điều khiển hoạt động cần có chương trình kèm theo, các chương trình này điều khiển các mạch logic và từ đó vi điều khiển xử lý các dữ liệu cần thiết theo yêu cầu Chương trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được lưu trữ trong bộ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh sau khi đã giải mã

Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn trong truyền động điện như điều khiển động cơ, hiển thị kí tự trên màn hình đòi hỏi phải kết hợp vi điều khiển với các mạch điện giao tiếp với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi Bản thân các vi điều khiển khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là một phần của một máy tính, thì hiệu quả ứng dụng của Vi điều khiển là rất lớn Vi điều khiển kết hợp với các thiết bị khác được sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một lượng lớn các phép tính phức tạp, có tốc độ nhanh

Trang 10

1.1.2 Lịch sử phát triển của bộ vi điều khiển

Bộ vi điều khiển được phát triển từ bộ vi xử lý, các nhà chế tạo tích hợp một

ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller- Vi điều khiển, mức độ tích hợp của các linh kiện bán dẫn trong một chíp ngày càng cao

Một số vi xử lý ra đời: Vi mạch MSI ( Medium Size Integration) có độ tích hợp trung bình cỡ 103 tranzito trong một chíp Vi mạch LSI ( large Size Integration)

có độ tích hợp cao cỡ 104

tranzito trong một chíp Vi mạch VLSI (Very LSI) có độ tích hợp cao cỡ 105 tranzito trong một chíp Năm 1971 bộ vi xử lý Intel 4004 loại 4 bít ra đời chứa 2250 tranzito Năm 1975 Intel chế tạo bộ vi xứ lý 8 bít 8080 và

8085 Cùng khoảng thời gian này xuất hiện bộ vi xử lý 6800 của Motorola với 5000 tranzito, bộ vi xử lý Zilog Z80, Signetics 6520 Năm 1978 xuất hiện loại Intel 8086

là loại vi xử lý 16 bít với 29000 tranzito, Motorola 68000 tích hợp 70000 tranzito,

AP 432 chứa 120000 tranzito Bộ vi xử lý 32 bít của Hewlet Packard có khoảng

450000 tranzito từ năm 1974 đến 1984 số tranzito tích hợp trong một chíp tăng khoảng 100 lần

Năm 1983 Intel đưa ra bộ vi xử lý 80286 dùng trong máy vi tính họ AT ( Advanced Technology) Bộ vi xử lý 80286 sử dụng I/O 16 bít và có24 đường địa chỉ và không gian nhớ địa chỉ thực 16MB Năm 1987 Intel đưa ra bộ vi xử lý 80386

32 bít Năm 1989 xuất hiện bộ vi xử lý Intel 80486 là cải tiến của Intel 80386 với bộ nhớ ẩn và mạch tính phép toán đại số dấu phẩy động

Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự trên màn hình đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi Bản thân các vi xử lý khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là một phần của một máy tính, thì hiệu quả ứng dụng của Vi

xử lý là rất lớn Vi xử lý kết hợp với các thiết bị khác được sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một lượng lớn các phép tính phức tạp, có tốc độ

Trang 11

nhanh Chẳng hạn như các hệ thống sản xuất tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức tạp v.v

Bộ Vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năng tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn.Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau Các khối này bao gồm bộ nhớ để chứa

dữ liệu và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện được công việc Để kết nối các khối này đòi hỏi người thiết kế phải hiểu biết tinh tường

về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ người thiết kế Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để

áp dụng cho các hệ thống nhỏ

Để khắc phục các tồn tại trên, năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tương tự như các bộ vi xử lý và là chip đầu tiên trong họ MCS-48 Độ phức tạp, kích thước và khả năng của Vi điều khiển tăng thêm một bậc quan trọng vào năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều họ Vi điều khiển được sản xuất sau này Sau đó rất nhiều họ Vi điều khiển của nhiều nhà chế tạo khác nhau lần lượt được đưa ra thị trường với tính năng được cải tiến ngày càng mạnh

Hiện nay có rất nhiều họ Vi điều khiển trên thị trường với nhiều ứng dụng khác nhau, trong đó họ Vi điều khiển họ MCS-51 được sử dụng rất rộng rãi trên thế giới và ở Việt nam

Vào năm 1980 Intel công bố chíp 8051(80C51), bộ vi điều khiển đầu tiên của

họ vi điều khiển MCS-51 Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất

Trang 12

nhập, 1 port nối tiếp và 2 bộ định thời 16 bit Tiếp theo sau đó là sự ra đời của chip 8052,8053,8055 với nhiều tính năng được cải tiến

Hiện nay Intel không còn cung cấp các loại Vi điều khiển họ MCS-51 nữa, thay vào đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD, Siemens, Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ hai cho các chip của họ MSC-51 Chip Vi điều khiển được sử dụng rộng rãi trên thế giới cũng như ở Việt Nam hiện nay là Vi điều khiển của hãng Atmel với nhiều chủng loại vi điều khiển khác nhau

Hãng Atmel có các chip Vi điều khiển có tính năng tương tự như chip Vi điều khiển MCS-51 của Intel, các mã số chip được thay đổi chút ít khi được Atmel sản xuất Mã số 80 chuyển thành 89, chẳng hạn 80C52 của Intel khi sản xuất ở Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính năng chương trình tương tự như nhau Tương tự 8051, 8053, 8055 có mã số tương đương ở Atmel là 89C51, 89C53, 89C55 Vi điều khiển Atmel sau này ngày càng được cải tiến và được bổ sung thêm nhiều chức năng tiện lợi hơn cho người dùng

1.1.3 Tổng quan về các hệ thống vi điều khiển

Trong khối vi điều khiển bao gồm các khối ghép trong hình vẽ H.1-1

H.1-1: Sơ đồ khối của bộ vi điều khiển

(MCU)

Bộ Vi điều khiển

Bộ đệm

và bộ đổi

Mạch

Các bộ nhớ và ngoại vi khác

BUS

Thế giới bên ngoài

BUS - Dữ liệu địa chỉ điều khiển

Bảng mạch vi điều khiển

Trang 13

* Bộ đệm (Buffer) và bộ chuyển đổi vào ra I/O để biến đổi mức tín hiệu cần thiết cho mục đích điều khiển Ví dụ: Khi cần biến đổi xung điện áp cao hơn nhưng tín hiệu logic của bộ vi điều khiển chỉ có 0V đối với mức logic 0 và 5V ứng với mức logic 1, vì thế bộ biến đổi phải thay đổi mức logic tín hiệu 5V thành xung điện

áp cao hơn

* Để chuyển các tín hiệu, thường dùng các bus Ta có thể coi bus như nững

xa lộ trong đó các tín hiệu khác nhau đựơc di chuyển CPU sử dụng 3 loại bus dùng cho các tín hiệu: dữ liệu, địa chỉ và điều khiển Tín hiệu dữ liệu đựoc biểu thị các lệnh và các trị số khác nhau của các biến, ví dụ: như nhiệt độ Các địa chỉ biểu thị

dữ liệu được chứa ở đâu, các tín hiệu điều khiển chỉ huy hoạt động của bộ vi điều khiển và các chíp phối hợp

* Mạch đồng hồ CLOCK phát tín hiệu tần số cố định để cung cấp thông tin thời gian cho toàn hệ thống

* Các bộ nhớ và bộ ngoại vi khác Bộ nhớ để lưu trữ dữ liệu hoặc chương trình, đây là bộ nhớ bổ xung cho bộ nhớ chính đã chứa trong MCU của bộ vi điều khiển MCU (MicroController Unit) là đơn vị trung tâm của bộ vi điều khiển

Ta xét ví dụ một bộ vi điều khiển MCU (MicroController Unit) theo sơ đồ khối của bộ MCU có cấu trúc như hình H.1-2 dưới đây

Cổng vào-ra (CPU)

ROM

RAM

EPROM

Or EEPROM BUS dữ liệu trong

VSS

VDD

Bộ nhớ

Trang 14

Bộ MCU được chia làm 3 phần chính: CPU, bộ nhớ và các thanh ghi; chúng được nối với nhau bới các bus trong Bên ngoài có các chân nối nguồn, vào ra I/O

Mỗi thanh ghi dữ liệu I/O lưu giữ các số liệu vào ra gắn với cổng I/O tương ứng Cổng I/O là tập hợp các chân I/O của chíp ứng với số liệu, thông thường các cổng I/O có 8 đường truyền byte dữ liệu; các cổng này có thể lập trình địa chỉ vào,

ra hoặc cả hai chiều vào – ra Các chiều vào, ra luôn xét đối với chíp (VD: “Input”

có nghĩa dữ liệu từ bên ngoài vào)

Hoạt động đưa dữ liệu vào như sau: Bộ cảm biến lấy tín hiệu (như nhiệt độ, tốc độ ) được nối với cổng vào ra Dữ liệu từ bộ cảm biến được truyền vào thanh ghi của cổng, bộ vi điều khiển gửi nội dung của thanh ghi này vào CPU để xử lý, Một khả năng khác là gửi dữ liệu này vào bộ nhớ để lưu trữ Hoạt động lấy ra cũng tương tự; CPU gửi byte dữ liệu tới thanh ghi ở cổng ra Byte này được truyền tới thiết bị ngoại vi được nối tới

Các thanh ghi điều khiển và thanh ghi trạng thái điều khiển, chỉ thị quá trình vào – ra của bộ vi điều khiển Ví dụ như bộ vi điều khiển đo tốc độ động cơ bàng cách đếm xung do bộ cảm biến tốc độ gửi tới trong một khoảng thời gian nhất định, thanh ghi giữ liệu đếm số xung theo sườn trước hoặc sườn sau của xung

Trang 15

Bộ vi điều khiển có bộ thời gian bên trong, mỗi lần đặt (set) và đặt lại (Reset)

có một bit đặc biệt gọi là bit trạng thái; Trong thanh ghi trạng thái khi chu kỳ thời gian được lập trình đã kết thúc, trạng thái của bit này sẽ thay đổi

Khi chương trình phát hiện sự thay đổi bit trạng thái, nó đọc thanh ghi dữ liệu thích hợp để xem có bao nhiêu xung đã được gửi tới, từ đó tính ra tốc độ và xử

lý với thông tin này

Bộ vi điều khiển có các chân ngoài dùng cho nguồn nuôi, điều khiển và các đường dữ liệu, địa chỉ Vì đa số các bộ vi xử lý là CMOS nên các nguồn VDD có điện áp dương và Vss nối đất

CLOCK là một trong các đường điều khiển, mỗi đường điều khiển có chức năng riêng Một đường RESET để đưa bộ vi điều khiển trở về trạng thái ban đầu, nó được sử dụng nếu muốn hệ thống hoạt động trở lại và không có tác dụng gì khác

Đôi khi bộ vi điều khiển đòi hỏi có nhiều nhiều bộ nhớ và cổng I/O hơn khả năng cho phép của chíp, trong trường hợp này cần có đường dữ liệu và địa chỉ bên ngoài nối giống sơ đồ trên H.1-2 Một số chân có thể được sử dụng như các cổng I/O hoặc như các đường dữ liệu và địa chỉ bên ngoài Bộ vi điều khiển có thể được thiết lập để làm theo cách khác, việc thiết lập chế độ làm việc của bộ vi điều khiển theo chế độ dồn kênh (Multiplexed) được mô tả như hình H.1-3 dưới đây

H.1-3: Sơ đồ khối của bộ vi điều khiển điển làm việc theo

Mạch địa chỉ

Bộ đệm

dữ liệu

Các thanh ghi điều khiển và trang thái

Đồng hồ Các đường điều khiển

Trang 16

1.1.4 Phần mềm của vi điều khiển

Khái niệm về các ngôn ngữ lập trình:

Phần mềm là thuật ngữ để chỉ các lệnh mà bộ vi điều khiển phải thực hiện Khi viêt các lệnh này dưới dạng ngôn ngữ thì công việc đó gọi là lập trình và kết quả của lập trình là chương trình Như vậy chương trình là một dãy lệnh mô tả các bước mà bộ vi điều khiển cần thực hiện

Mỗi CPU có hệ lệnh riêng mà có thể nhận biết và thực hiện Những này là các sô nhị phân viết dưới dạng mã đặc biệt CPU sẽ dịch các dãy lệnh nhị phân để thưc hiện các công việc Ngôn ngữ nhị phân này gọi là ngôn ngữ máy

Ví dụ: lệnh máy dưới dạng nhị phân của bộ vi điều khiển 68HC11 là

%10000110

%01011010

Để tránh sự rắc rỗi khi viết chương trình ngôn ngữ máy dưới dạng nhị phân người ta sử dụng hợp ngữ, đó là ngôn ngữ máy viết dưới dạng dễ nhớ hơn ví dụ câu lệnh : LDAA#$5A chỉ rằng cần nạp vào (Load) bộ nhớ A (ACCA) dữ liệu dưới dạng henxa là $5° Vì mỗi kiểu CPU có hệ lệnh riêng, nghĩa là có hệ lệnh hợp ngữ riêng không tương thích với các kiểu CPU khác

Các loại ngôn ngữ bậc cao thường dùng ngôn ngữ chung, không phụ thuộc vào phần cứng, do vậy máy không hiểu và thực hiện được Nhờ chương trình dịch (Compiler) ngôn ngữ bậc cao được dịch thành ngôn ngữ máy Các loại ngôn ngữ bậc cao thông dụng là BASIC, FORTRAN, ADA, COBOL, C Đối với vi điều khiển thì C là ngôn ngữ thông dụng nhất vì nó vừa mang tính chất của ngôn ngữ bậc cao vừa có tính chất của hợp ngữ Với hợp ngữ, người lập trình có thể điều khiển trực tiếp bộ vi điều khiển

Hệ cơ số 16 ( HEXADECIMAL) Các bộ vi điều khiển thường đựoc lập trình dưới dạng hợp ngữ và dùng hệ cơ

số 16 đẻ biểu diễn các thông tin bảng biểu diễn hệ số 16 coi một nhóm 4 bít mã nhị phân tương ứng với 16 số và ký tự từ 0 đến 9 và từ A đến F như bảng dưới đây:

Trang 17

Dạng nhị phân Dạng Hexa Dạng thập phân

Nhƣ vậy dãy số nhị phân ở trên đƣợc nhóm theo 4 bít có biểu diễn dạng

hexa đƣợc ký hiệu là $B65 theo Motorola với dấu $ chỉ dạng henxa, hoặc Ox B65,

hoặc B65H theo ngôn ngữ chuẩn

Trang 18

Ngôn ngữ máy : CPU thực hiện mỗi lệnh máy theo một chu kỳ nạp và thực hiện lệnh, CPU nạp mã lệnh từ bộ nhớ và giải mã chúng để tìm công việc cần thực hiện Tiếp theo

là giai đoạn thưc hiện lệnh này, các lệnh này xem xét hoặc thay đổi bộ nhớ hay đàu vào hoặc ra, sau khi lệnh được thưc hiện sẽ chuyển sang thưc hiện lệnh mới

Mỗi lệnh có hai phần: mã lệnh và toán hạng, mã lệnh là phần đầu tiên của lệnh, nó báo cho CPU công việc phải làm Bộ vi điều khiển thường sử dụng các mệnh lệnh nhiều byte

VD : một bộ vi điều khiển 8bit có 2byte thì 1byte dùng cho mã lệnh, 1 byte dùng cho toán hạng

Ngôn ngữ ASSEMBLY (Hợp ngữ) : Hợp ngữ là ngôn ngữ viết dưới dạng dễ nhớ Mnemonic Mỗi lệnh được viết tắt bằng dãy ký hiệu tiếng Anh như ADD ( cộng), SUB (trừ), MUL (nhân), DIV ( chia)…; sau dấu cách là toán hạng viêt dưới dạng hexa

VD: câu lệnh hợp ngữ ORG $ E000 (với ORG chữ viết tắt của Origin khởi đầu địa chỉ xuất phát là $E000)

Đối vi điều khiển thường chạy chương trình Assembler và Linker trên máy tính mà không chạy chính trong bộ vi điều khiển Các chương trình này tạo lên mã máy mà bộ vi điều khiển có thể thực hiện được

1.2 Các họ vi điều khiển thông dụng

1.2.1 Vi điều khiển trong máy tính

Máy vi tính hiện nay với các thế hệ Pentum thế hệ mới có tốc độ xử lý nhanh hơn, nhiều lệnh Nếu biết khi thác ứng dụng các máy vi tính trong lĩnh vực công nghiệp, truyền động điện sẽ tiếp tục nâng cấp được hệ thống truyền động sẵn có ở nước ta Trong máy tính có vi xử lý như 80286, 8088… Việc ứng dụng các vi xử lý này sẽ tăng tốc độ xử lý tín hiệu gấp 2 lần so với các bộ vi xử lý chuyên dùng khác

1.2.2 Các vi điều khiển sử dụng trong công nghiệp

* Họ vi điều khiển AMCC

* Họ vi điều khiển Atmel

Trang 19

* Họ vi điều khiển Cypress MicroSystems

* Họ vi điều khiển Freescale Semiconductor

* Họ vi điều khiển Fujitsu

* Họ vi điều khiển Intel

* Họ vi điều khiển Microchip

* Họ vi điều khiển National Semiconductor

* Họ vi điều khiển STMicroelectronics

* Họ vi điều khiển Philips Semiconductors

Kĩ thuật vi điều khiển có vai trò quan trọng trong tất cả các lĩnh vực của cuộc sống và khoa học đặc biệt là lĩnh vực tin học và tự động hoá Qua đó các hãng sản suất đã cho ra các bộ vi điều khiển với độ phức tạp và độ gọn nhẹ và khả năng xử lí ngày càng được cải tiến Với các họ vi điều khiển thông dụng hiện có

1- Họ vi điều khiển MCS-51

2- Họ vi điều khiển PIC16Cxx

3- Chíp điều khiển thông minh Psoc

1.2.3 Giới thiệu họ vi điều khiển MCS-51 (AT89C52)

AT89C52 là một vi điều khiển 8 bit do ATMEL sản xuất, chế tạo theo công nghệ CMOS, có chất lượng cao, công suất thấp với 8 KB Flash Thiết bị này được chế tạo bằng cách sử dụng kỹ thuật bộ nhớ không bốc hơi mật độ cao của ATMEL

và tương thích với chuẩn công nghiệp MCS -51TM về tập lệnh và các chân ra Flash

on -chip cho phép bộ nhớ lập trình được lập trình trong hệ thống bởi một lập trình viên bình thường Bằng cách nối 1 CPU 8 bit với một Flash trên một chip đơn, AT89C52 là một vi điều khiển mạnh (có công suất lớn), cung cấp một sự linh động cao và giải pháp về giá cả đối với nhiều ứng dụng vi điều khiển

1.2.3.1 Sơ lược về phần cứng của AT89C52

 Tương thích hoàn toàn với họ MCS -51TM

của Intel

 Bộ nhớ chương trình 8K Byte thuộc loại Flash Memory

 Độ bền: 1000 lần ghi /xóa

Trang 20

 Chế độ hạ nguồn và chế độ lười tiêu tốn công suất thấp

1.2.3.2 Cấu trúc bên trong của AT89C52

Cấu trúc của vi điều khiển AT89C52 là bộ xử lý trung tâm (CPU) và được thể hiện theo sơ đồ khối H.1-4:

H.1-4: Sơ đồ khối vi điều khiển AT89C52

Trang 21

1.2.3.3 Sơ đồ chân và chức năng AT89C52

Họ MSC-51 có nhiều kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông QFP (Quad Flat Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) và đều có 40 chân cho các chức năng khác nhau như vào ra I/0, đọc , ghi , địa chỉ, dữ liệu và ngắt Tuy nhiên,

vì hầu hết đóng vỏ 40 chân với hai hàng chân DIP, nên chúng ta cùng khảo sát vi điều khiển AT89C51 với 40 chân dạng DIP như hình vẽ H.1-5 dưới đây

+ Chân VCC: Chân số 40 là VCC cấp điện áp nguồn cho Vi điều khiển

Nguồn điện cấp là +5V±0.5

+ Chân GND: Chân số 20 nối GND (hay nối Mass)

Khi thiết kế cần sử dụng một mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn giản là sử dụng IC ổn áp 7805

+ Port 0 (P0) : Port 0 gồm 8 chân (từ chân 32 đến 39) có hai chức năng

Chức năng xuất/nhập

Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0)

+ Port 1 (P1): Port P1 gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng

làm các đường xuất/nhập, không có chức năng khác

 Chức năng xuất/nhập

H.1-5: Sơ đồ chân vi điều khiển AT89C52

Trang 22

 Chức năng là bus địa chỉ cao (A8-A15)

+ Port 3 (P3): Port 3 gồm 8 chân (từ chân 10 đến 17):

 Chức năng xuất/nhập

 Mỗi chân có một chức năng riêng thứ hai như trong bảng sau

P3.0 RxD Ngõ vào nhận 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 của Timer/Counter thứ 0

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

P3.6 WR Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài

P3.7 RD Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoài

P1.0 T2 Ngõ vào của Timer/Counter thứ 2

P1.1 T2X Ngõ Nạp lại/thu nhận của Timer/Counter thứ 2

thiết lập trạng thái ban đầu cho vi điều khiển Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ này ở mức 1 tối thiểu 2 chu kì máy

+ Chân XTAL1 và XTAL2 : Hai chân này có vị trí chân là 18 và 19 được sử

dụng để nhận nguồn xung clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ để tạo nguồn xung clock ổn định như hình vẽ H.1-6

H.1-6: Sơ đồ kết nối thạch anh

Trang 23

+ Chân cho phép bộ nhớ chương trình PSEN: PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để truy xuất bộ nhớ chương trình ngoài Chân này thường được nối với chân OE (output enable) của ROM ngoài

Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này phát ra tín hiệu kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì máy

Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức logic không tích cực (logic 1)

(Không cần kết nối chân này khi không sử dụng đến)

+ Chân ALE (chân cho phép chốt địa chỉ-chân 30): Khi Vi điều khiển truy

xuất bộ nhớ từ bên ngoài, port 0 vừa có chức năng là bus địa chỉ, vừa có chức năng

là bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt

Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào Vi điều khiển, như vậy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung cấp cho các phần khác của hệ thống

Ghi chú: khi không sử dụng có thể bỏ trống chân này

+ Chân EA : Chân EA dùng để xác định chương trình thực hiện được lấy từ

ROM nội hay ROM ngoại

Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình lấy từ

AT 89C52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng bộ

nhớ riêng biệt cho chương trình và dữ liệu

Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong ; dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu

Trang 24

Bộ nhớ bên trong bao gồm ROM và RAM trên chip 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 bank thanh ghi và các thanh ghi chức năng đặc biệt

Như sẽ thấy trong hình sau, RAM bên trong AT89C52 được phân chia thành

các bank thanh ghi (00H – 1FH), RAM địa chỉ hóa bit (20H – 2FH), RAM đa dụng (30H – 7FH) và các thanh ghi chức năng đặc biệt trong khoảng (80H – FFH)

RAM đa dụng: Mặc dù trên hình cho thấy 80 bytes RAM đa dụng chiếm các

địa chỉ từ 30H – 7FH, 32 bytes dưới cùng từ 00H – 1FH cũng có thể được dùng với mục đích tương tự (mặc dù các địa chỉ này đã có mục đích khác)

Trang 25

Địa chỉ byte Địa chỉ bit Địa chỉ byte Địa chỉ bit Ký hiệu

7F

RAM đa dụng

FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 _ D0 PSW

23 1F 1E 1D 1C 1B 1A 19 18 8D không đƣợc địa chỉ hóa bit TH1

22 17 16 15 14 13 12 11 10 8C không đƣợc địa chỉ hóa bit TH0

21 0F 0E 0D 0C 0B 0A 09 08 8B không đƣợc địa chỉ hóa bit TL1

20 07 06 05 04 03 02 01 00 8A không đƣợc địa chỉ hóa bit TL0

10

08 82 không đƣợc địa chỉ hóa bit DPL

MOV A, 5FH

Lệnh này di chuyển 1 byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (5FH) Đích nhận dữ liệu đƣợc ngầm xác định trong mã lệnh

là thanh ghi tích lũy A

RAM bên trong cũng có thể đƣợc truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay R1 Ví dụ, hai lệnh sau thi hành cùng nhiệm vụ nhƣ lệnh đơn ở trên:

H.1-8: Cấu trúc bộ nhớ RAM bên trong AT89C52

Trang 26

MOV R0, #5FH

MOV A, @R0

Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0, và lệnh thứ hai dùng địa chỉ gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy

RAM địa chỉ hóa từng bit

AT89C52 chứa 210 bits được địa chỉ hóa, trong đó 128 bits là ở các địa chỉ

byte 20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặc biệt

Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung Các bit có thể được đặt, xóa, AND, OR, … với một lệnh đơn Trong khi đó, đa số các vi xử lí đòi hỏi một chuỗi lệnh đọc – sửa – ghi để đạt được hiệu quả tương tự Hơn nữa, các port I /O cũng được địa chỉ hóa từng bit làm đơn giản phần mềm xuất nhập từng bit

Có 128 bits được địa chỉ hóa đa dụng ở các byte 20H đến 2FH Các địa chỉ này được truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dùng Ví

MOV 2CH, A; ghi lại cả byte

Các bank thanh ghi

32 bytes thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi Bộ lệnh

của AT89C52 hỗ trợ 8 thanh ghi (R0 – R7) và theo mặc định (sau khi reset hệ

thống) các thanh ghi này ở các địa chỉ 00H – 07H Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào thanh ghi tích lũy:

MOV A, R5

Đây là lệnh một byte dùng địa chỉ thanh ghi Tất nhiên, thao tác tương tự có thể được thi hành bằng lệnh 2 bytes dùng địa chỉ trực tiếp nằm trong byte thứ hai:

Trang 27

MOV A, 05H

Các lệnh dùng các thanh ghi R0 đến R7 thì ngắn hơn và nhanh hơn các lệnh tương ứng nhưng dùng địa chỉ trực tiếp Các giá trị dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này

Bank thanh ghi tích cực có thể được chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghi trong từ trạng thái chương trình (PSW) Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào địa chỉ 18H:

MOV R0, A

ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trình nhanh và hiệu quả (từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng không phụ thuộc vào các phần khác)

1.2.3.5 Các thanh ghi chức năng đặc biệt

Các thanh ghi nội của AT89C52 được truy xuất ngầm định bởi bộ lệnh Ví

dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1 Tác động này được ngầm định trong mã lệnh

Các thanh ghi trong AT89C52 được định dạng như một phần của RAM trên

chip Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi đếm chương trình

và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp, nên không lợi

lộc gì khi đặt chúng vào trong RAM trên chip) Đó là lí do để AT89C52 có nhiều

thanh ghi như vậy Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú

ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không được định nghĩa Chỉ có 21 địa chỉ SFR là được định nghĩa

Ngoại trừ thanh ghi tích lũy A có thể được truy xuất ngầm như đã nói, đa số các SFR được truy xuất dùng địa chỉ trực tiếp Chú ý rằng một vài SFR có thể được địa chỉ hóa bit hoặc byte Người thiết kế phải thận trọng khi truy xuất bit và byte Ví

dụ lệnh sau:

SETB 0E0H

Lệnh này sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không đổi Ta thấy rằng E0H đồng thời là địa chỉ byte của cả thanh ghi tích lũy và là địa chỉ bit của bit

Trang 28

có trọng số nhỏ nhất trong thanh ghi tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là có hiệu quả

 Từ trạng thái chương trình

Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ D0H

chứa các bit trạng thái như bảng tóm tắt sau:

#1

Sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSWK

Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lí thi hành trên bit Ví dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ : AND C, 25H

+ Cờ nhớ phụ:

Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp trong khoảng 0AH đến 0FH Nếu các giá trị được cộng là số BCD thì sau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi tích lũy) để điều chỉnh kết quả cho phù hợp

Trang 29

+ Cờ 0:

Cờ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người dùng

+ Các bit chọn bank thanh ghi:

Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghi nào được tích cực Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần Ví dụ, 3 lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy: SETB RS1; SETB RS0; MOV A, R7

Khi chương trình được hợp dịch, các địa chỉ bit đúng được thay thế cho các

kí hiệu “RS1” và “RS0” Vậy, lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H

128 sẽ set bit OV

Ví dụ : phép cộng sau bị tràn và bit OV được set:

Trang 30

Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng Nó được địa chỉ hóa từng bit bằng các địa chỉ bit F0H đến F7H

 Con trỏ ngăn xếp

Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi cất dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và giảm SP

Ngăn xếp của AT89C52 được giữ trong RAM nội và được giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp Chúng là 128 bytes đầu của AT89C52

Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây được dùng: MOV SP, #5FH

Trên AT89C52 ngăn xếp bị giới hạn 32 bytes vì địa chỉ cao nhất của RAM

trên chip là 7FH Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ liệu đầu tiên

Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp mà để

nó lấy giá trị mặc định khi reset hệ thống Giá trị mặc định đó là 07H và kết quả là ngăn đầu tiên để cất dữ liệu có địa chỉ là 08H

Nếu phần mềm ứng dụng không khởi động lại SP, thì bank thanh ghi 1 (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm ngăn xếp

Ngăn xếp được truy xuất trực tiếp bằng lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc được truy xuất ngầm bằng các lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại bộ đếm chương trình

Trang 31

Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy Lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bits 1000H vào con trỏ dữ liệu Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ đƣợc chứa trong DPTR (1000H)

 Các thanh ghi port xuất nhập

Các port của AT89C52 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H,

Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H

Tất cả các port đều đƣợc địa chỉ hóa từng bit Điều đó cung cấp một khả năng

giao tiếp thuận lợi

Ví dụ, nếu một motor đƣợc nối qua một cuộn dây có transistor lái đến bit 7

của Port 1, nó có thể đƣợc bật và tắt bằng một lệnh đơn:

SETB P1.7 ; bật motor

CLR P1.7 ; tắt motor

Các lệnh trên dùng dấu chấm để xác định một bit trong một byte Trình hợp

dịch sẽ thi hành sự chuyển đổi cần thiết, vì vậy hai lệnh sau đây là nhƣ nhau:

CLR P1.7

CLR 97H

Trong một ví dụ khác, xem xét giao tiếp đến một thiết bị với một bit trạng thái gọi là BUSY, đƣợc set khi thiết bị đang bận và đƣợc xóa khi thiết bị đã sẵn sàng Nếu BUSY đƣợc nối tới P1.5, vòng lặp sau sẽ đƣợc dùng để chờ thiết bị trở

lại trạng thái sẵn sàng:

WAIT : JB P1.5, WAIT

Lệnh này có nghĩa là “nếu bit P1.5 đƣợc set thì nhảy tới nhãn WAIT” Nói cách khác “nhảy trở lại và kiểm tra lần nữa”

 Các thanh ghi timer

AT89C52 chứa ba bộ định thời /đếm 16 bits đƣợc dùng cho việc định thời hoặc

đếm sự kiện

Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0 : byte cao)

Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1 : byte cao)

Việc vận hành timer đƣợc set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ

89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H

Trang 32

Chỉ có TCON đƣợc địa chỉ từng bit

Đặc biệt 8952 còn có timer 2 có các thanh ghi sau:

 Các thanh ghi Timer 2 các bit điều khiển và trạng thái chứa trong thanh ghi

T2CON và T2MOD cho Timer 2 Cặp thanh ghi RCAP2H và RCAP2L là những thanh ghi Capture /Reload trong chế độ capture 16 bit hay chế độ auto -reload 16 bit

Thanh ghi T2CON địa chỉ 0C8H:

TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2

TF2 Cờ tràn Timer 2, set khi Timer 2 tràn và phải đƣợc clear bằng phần

mềm TF2 sẽ không set khi RCLK = 1 hoặc TCLK = 1

EXF2 Cờ ngoài của Timer 2, set khi xảy ra capture hoặc reload do T2EX

xuống thấp và EXEN2 = 1 Nếu ngắt Timer 2 đƣợc kích hoạt, EXF2

= 1 sẽ làm CPU trỏ đến ISR của Timer 2 EXF2 phải đƣợc xóa bằng phần mềm EXF2 không gây nên ngắt trong chế độ đếm lên /xuống (DCEN = 1)

RCLK Kích hoạt xung clock bộ thu Khi set, các xung tràn Timer 2 sẽ là

xung clock cho bộ thu port nối tiếp trong mode 1 và 3 RCLK = 0 thì bộ thu port nối tiếp sẽ dùng các xung tràn của Timer 1

TCLK Kích hoạt xung clock bộ phát Khi set, các xung tràn Timer 2 sẽ là

xung clock cho bộ phát port nối tiếp trong mode 1 và 3 TCLK = 0 thì bộ phát port nối tiếp sẽ dùng các xung tràn của Timer 1

EXEN2 Kích hoạt bên ngoài Khi set, cho phép capture hay reload khi

T2EX xuống thấp (nếu Timer 2 không sử dụng cho port nối tiếp) EXEN2 = 0 làm cho Timer 2 bỏ qua các sự kiện trên T2EX

TR2 Khởi động /Dừng Timer 2 TR2 = 1 làm khởi động Timer 2

C/T2 Bit lựa chọn timer hay counter C /T2 = 0 : timer C/T2 = 1 :

counter đếm sự kiện bên ngoài (kích cạnh xuống)

CP/RL2 Lựa chọn capture hay reload CP /RL2 = 1: capture xảy ra khi

T2EX xuống thấp nếu EXEN2 = 1 CP/RL2 = 0 : reload xảy ra khi Timer 2 tràn hoặc khi T2EX xuống thấp nếu EXEN2 = 1 Nếu TCLK hay RCLK = 1, bit này bị bỏ qua và timer bị ép vào chế độ reload khi Timer 2 tràn

Trang 33

 Các thanh ghi port nối tiếp

AT89C52 chứa một port nối tiếp trên chip 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 cho việc giao tiếp với các IC

khác có giao tiếp nối tiếp (các bộ chuyển đổi A /D, các thanh ghi dịch …)

Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền và nhận

Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF Các mode vận hành khác nhau đƣợc lập trình qua thanh ghi điều khiển port nối tiếp (SCON) (đƣợc địa chỉ hóa từng bit) ở địa chỉ 98H

 Các thanh ghi ngắt

AT89C52 có cấu trúc 5 nguồn ngắt (2 mức ƣu tiên)

Các ngắt bị cấm sau khi reset hệ thống và sẽ đƣợc cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H

Cả hai thanh ghi đƣợc địa chỉ hóa từng bit

 Thanh ghi điều khiển công suất

Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều

khiển Chúng đƣợc tóm tắt trong bảng sau:

7 SMOD Bit gấp đôi tốc độ baud, nếu đƣợc set thì tốc độ baud sẽ

tăng gấp đôi trong các mode1, 2 và 3 của port nối tiếp

1 PD Giảm công suất, đƣợc set để kích hoạt mode giảm công

suất, chỉ thoát khi reset

0 IDL Mode chờ, set để kích hoạt mode chờ, chỉ thoát khi có

ngắt hoặc reset hệ thống

Trang 34

1.2.3.6 Bộ nhớ ngoài

AT89C52 có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chương trình và

64K bộ nhớ dữ liệu ngoài Do đó, có thể dùng thêm ROM và RAM bên ngoài nếu cần

Khi dùng bộ nhớ ngoài, Port 0 không còn là một port I /O thuần túy nữa Nó được hợp kênh giữa bus địa chỉ (A0 – A7) và bus dữ liệu (D0 – D7) với tín hiệu ALE để chốt byte thấp của địa chỉ khi bắt đầu mỗi chu kì bộ nhớ Port 2 thông thường được dùng cho byte cao của bus địa chỉ

Trong nửa đầu của mỗi chu kì bộ nhớ, byte thấp của địa chỉ được cấp trong Port 0 và được chốt bằng xung ALE Một IC chốt 74HC373 (hoặc tương đương) sẽ giữ byte địa chỉ thấp trong phần còn lại của chu kì bộ nhớ

Trong nửa sau của chu kì bộ nhớ Port 0 được dùng như bus dữ liệu và được đọc hoặc ghi tùy theo lệnh

Truy xuất bộ nhớ chương trình ngoài:

Bộ nhớ chương trình ngoài là một IC ROM được cho phép bởi tín hiệu

PSEN Hình H.1-9 sau mô tả cách nối một EPROM vào 8952:

EA

PSEN PORT 2 ALE PORT 0

A8 - A15

D0 - D7 A0 - A7

OE

D G

Q

74HC373

EPROM 8952

H-1-9: Giao tiếp giữa AT89C52 và EPROM

Trang 35

Một chu kì máy của AT89C52 có 12 chu kì xung nhịp Nếu bộ dao động trên

chip được lái bởi một thạch anh 12 Mhz thì một chu kì máy kéo dài 1 s

Trong một chu kì máy, sẽ có hai xung ALE và hai byte được đọc từ bộ nhớ chương trình (nếu lệnh hiện hành là lệnh 2 bytes thì byte thứ hai sẽ được loại bỏ) Giản đồ thời gian của một lần lấy lệnh được vẽ ở hình H1-10 sau:

H.1-10: Giản đồ thời gian đọc bộ nhớ chương trình ngoài

Truy xuất bộ nhớ dữ liệu ngoài:

EA

PSENWRRD PORT 2 ALE PORT 0

A8 -A15

D0 - D7 A0 - A7

OE CS

WR NC

D G

Q

74HC373

RAM 8952

H.1-11: Giao tiếp giữa 8952 và RAM

Trang 36

Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi /đọc bằng các

tín hiệu WR\ và RD\ (các chân P3.6 và P3.7 thay đổi chức năng)

Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bits hoặc R0 và R1 xem như thanh ghi địa chỉ

Kết nối bus địa chỉ và bus dữ liệu giữa RAM và 8952 cũng giống như

EPROM và do đó cũng có thể lên đến 64 Kbytes bộ nhớ RAM

Ngoài ra, chân RD\ của 8952 được nối tới chân cho phép xuất (OE\) của RAM và chân WR\ được nối tới chân ghi (WR\) của RAM

H.1-12: Giản đồ thời gian của lệnh MOVX

Giản đồ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tương tự chỉ khác

đường WR\ sẽ thay vào đường RD\ và dữ liệu được xuất ra trên chân Port 0 (RD\

vẫn giữ mức cao)

Trang 37

Giải mã địa chỉ:

Nếu có nhiều EPROM và /hoặc nhiều RAM được giao tiếp với 8952, thì cần

phải giải mã địa chỉ

Mạch giải mã cũng tương tự như các hệ vi xử lí khác Ví dụ, nếu dùng nhiều EPROM và RAM 8Kbytes thì bus địa chỉ cần phải được giải mã để xác định IC nhớ nào được chọn

Người ta thường dùng IC giải mã 74HC138 với các ngõ ra được nối tới các ngõ vào chọn chip (CS) trên các IC nhớ Hình H.1-13 vẽ một hệ thống với nhiều EPROM 8K 2764 và RAM 8K 6264:

H.1-13: Giải mã địa chỉ

Trang 38

Xếp chồng bộ nhớ chương trình và dữ liệu bên ngoài:

Vì bộ nhớ chương trình là ROM, nên nảy sinh một vấn đề bất tiện khi phát

triển phần mềm cho 8051/8031 Đối với 8952 đã cải tiến bằng cách thay thế bằng

EEPROM, hoặc dùng một cách để khắc phục nhược điểm trên là xếp chồng các vùng nhớ chương trình và dữ liệu

Một IC RAM có thể chứa cả chương trình và dữ liệu bằng cách nối đường

OE\ của RAM vào một mạch logic AND của PSEN\ và RD\

Mạch trên hình sau cho phép một IC RAM được dùng làm bộ nhớ chương trình và dữ liệu:

Vậy một chương trình có thể được tải vào RAM (bằng cách ghi nó như bộ nhớ dữ liệu) và thi hành (bằng cách truy xuất nó như bộ nhớ chương trình)

0

Vcc

R2 8.2k

Trang 39

RST có thể được kích bằng tay dùng một nút bấm hoặc có thể được kích khi

Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở địa chỉ

đầu tiên trong bộ nhớ chương trình: địa chỉ 0000H

Nội dung của RAM trên chip không bị thay đổi bởi lệnh Reset

Trang 40

AT89C52 có bốn bank thanh ghi, mỗi bank có 8 thanh ghi đánh số từ R0 đến

R7 Tại mỗi thời điểm chỉ có một bank thanh ghi được tích cực

Muốn chọn bank thanh ghi nào ta chỉ cần gán các bít nhị phân thích hợp vào

RS1 (PSW.4) và RS0 (PSW.3) trong thanh ghi trạng thái chương trình (PSW)

Trong các lệnh này thanh ghi tích lũy được kí hiệu là “A”, con trỏ dữ liệu là

“DPTR”, thanh ghi đếm chương trình là “PC”, cờ nhớ là “C”, cặp thanh ghi tích lũy

là “AB”

+ Địa chỉ trực tiếp:

Trong chế độ này, các thanh ghi bên trong 8952 được đánh địa chỉ trực tiếp

bằng 8 bits địa chỉ nằm trong byte thứ hai của mã lệnh

Dù vậy, trình hợp dịch cho phép gọi tên các thanh ghi chức năng đặc biệt (có địa chỉ trực tiếp từ 80H đến FFH)

Ví dụ, P0 cho Port 0, TMOD cho thanh ghi chế độ timer, …

+ Địa chỉ gián tiếp:

R0 và R1 được dùng để chứa địa chỉ tạm ô nhớ mà lệnh tác động đến Người

ta qui ước dùng dấu @ trước R0 hoặc R1

+ Địa chỉ tức thời:

Người ta dùng dấu # trước các toán hạng tức thời Các toán hạng đó có thể là một hằng số, một kí số hay một biểu thức toán học …Trình hợp dịch sẽ tự động tính toán và thay thế dữ liệu vào mã lệnh

+ Địa chỉ tương đối:

Địa chỉ tương đối được dùng trong các lệnh nhảy

AT89C52 dùng giá trị 8 bit có dấu để cộng thêm vào thanh ghi đếm chương

trình (PC)

Tầm nhảy của lệnh này trong khoảng từ –128 đến 127 ô nhớ Trước khi cộng, thanh ghi PC sẽ tăng đến địa chỉ theo sau lệnh nhảy rồi tính toán địa chỉ offset cần thiết để nhảy đến địa chỉ yêu cầu

Như vậy, địa chỉ mới là địa chỉ tương đối so với lệnh kế tiếp chứ không phải bản thân lệnh nhảy Thường lệnh này có liên quan đến nhãn được định nghĩa trước

Ngày đăng: 04/10/2014, 03:50

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Lê Văn Doanh, Nguyễn Thế Công, Nguyễn Trung Sơn, Cao Văn Thành (1999) Điều khiển số máy điện, Nhà xuất bản khoa học kỹ thuật Hà Nội Sách, tạp chí
Tiêu đề: Điều khiển số máy điện
Nhà XB: Nhà xuất bản khoa học kỹ thuật Hà Nội
2. Lê văn Doanh, Phạm khắc Chương (1988) Kỹ thuật Vi điều khiển, nhà xuất bản khoa học và kỹ thuật Sách, tạp chí
Tiêu đề: Kỹ thuật Vi điều khiển
Nhà XB: nhà xuất bản khoa học và kỹ thuật
3. Tống Văn On, Hoàng Đức Hải (2008) Họ vi điều khiển 8051, Nhà xuất bản lao động – xã hội Sách, tạp chí
Tiêu đề: Họ vi điều khiển 8051
Nhà XB: Nhà xuất bản lao động – xã hội
4. TS. Trần Thọ, PGS-TS. Võ Quang Lạp (2004) Cơ sở điều khiển tự động truyền động điện, Nhà xuất bản khoa học kỹ thuật Hà Nội Sách, tạp chí
Tiêu đề: Cơ sở điều khiển tự động truyền động điện
Nhà XB: Nhà xuất bản khoa học kỹ thuật Hà Nội
5. Ngô Diễn Tập (2000) Vi xử lý trong đo lường và điều khiển, Nhà xuất bản khoa học và kỹ thuật Hà Nội Sách, tạp chí
Tiêu đề: Vi xử lý trong đo lường và điều khiển
Nhà XB: Nhà xuất bản khoa học và kỹ thuật Hà Nội
6. Phạm Xuân Minh, Hà thị Kim Duyên, Phạm Xuân Khánh (2008) Giáo trình lý thuyết điều khiển tự động, Nhà xuất bản giáo dục Sách, tạp chí
Tiêu đề: Giáo trình lý thuyết điều khiển tự động
Nhà XB: Nhà xuất bản giáo dục
7. TS. Võ Quang Lạp (2001-2002) Nghiên cứu ứng dụng các bộ vi xử lý trong máy vi tính PC/AT 286 (PC/AT 386) để thay thế các bộ điều chỉnh trong các hệ thống tự động truyền động cho các máy công nghiệp. Báo cáo tổng kết đề tài nghiên cứu khoa học cấp bộ Sách, tạp chí
Tiêu đề: Nghiên cứu ứng dụng các bộ vi xử lý trong máy vi tính PC/AT 286 (PC/AT 386) để thay thế các bộ điều chỉnh trong các hệ thống tự động truyền động cho các máy công nghiệp
8. Nguyễn Phùng Quang (2006) MATLAB và SIMULINK dành cho kỹ sư điều khiển tự động, Nhà xuất bản khoa học và kỹ thuật Hà Nội Sách, tạp chí
Tiêu đề: MATLAB và SIMULINK dành cho kỹ sư điều khiển tự động
Nhà XB: Nhà xuất bản khoa học và kỹ thuật Hà Nội

HÌNH ẢNH LIÊN QUAN

H.1-1: Sơ đồ khối của bộ vi điều khiển - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
1 1: Sơ đồ khối của bộ vi điều khiển (Trang 12)
H.1-2: Sơ đồ khối của bộ vi điều khiển điển hình 1 chíp - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
1 2: Sơ đồ khối của bộ vi điều khiển điển hình 1 chíp (Trang 13)
H.1-4: Sơ đồ khối vi điều khiển AT89C52 - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
1 4: Sơ đồ khối vi điều khiển AT89C52 (Trang 20)
H1.14: Sơ đồ khối tổng quát của hệ thống truyền động điện - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
1.14 Sơ đồ khối tổng quát của hệ thống truyền động điện (Trang 42)
Hình H2-1: Hệ thống truyền động T-Đ tương tự - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
nh H2-1: Hệ thống truyền động T-Đ tương tự (Trang 47)
Hình H2-2:  Sơ đồ hệ thống truyền động số T-Đ - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
nh H2-2: Sơ đồ hệ thống truyền động số T-Đ (Trang 48)
Hình H2-5: Đồ thị điện áp và dòng điện của bộ PWM kiểu điot - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
nh H2-5: Đồ thị điện áp và dòng điện của bộ PWM kiểu điot (Trang 51)
Hình H2-6: Đặc tính cơ hệ thống điều tốc độ rộng xung - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
nh H2-6: Đặc tính cơ hệ thống điều tốc độ rộng xung (Trang 54)
Sơ đồ nguyên lý của hệ thống điều tốc độ rộng xung mạch vòng kín đƣợc thể hiện  nhƣ hình H2-7 - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
Sơ đồ nguy ên lý của hệ thống điều tốc độ rộng xung mạch vòng kín đƣợc thể hiện nhƣ hình H2-7 (Trang 55)
2.3.1  Sơ đồ nguyên lý hệ truyền động tương tự cho động cơ không đồng  bộ sử dụng biến tần - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
2.3.1 Sơ đồ nguyên lý hệ truyền động tương tự cho động cơ không đồng bộ sử dụng biến tần (Trang 56)
Hình H2-9: Sơ đồ nguyên lý hệ thống điều khiển động cơ không đồng bộ - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
nh H2-9: Sơ đồ nguyên lý hệ thống điều khiển động cơ không đồng bộ (Trang 57)
2.3.2  Sơ đồ nguyên lý hệ truyền động số cho động cơ không đồng bộ sử  dụng biến tần - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
2.3.2 Sơ đồ nguyên lý hệ truyền động số cho động cơ không đồng bộ sử dụng biến tần (Trang 58)
3.1  Sơ đồ khối của hệ truyền động số PWM-D - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
3.1 Sơ đồ khối của hệ truyền động số PWM-D (Trang 60)
Hình H3-2b  : Điện áp răng cƣa ở mạch tạo xung làm điện áp tựa; - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
nh H3-2b : Điện áp răng cƣa ở mạch tạo xung làm điện áp tựa; (Trang 61)
Hình H3-2c : Đồ thị điện áp vào khâu so sánh để điều chỉnh độ rộng xung; - nghiên cứu, ứng dụng vi điều khiển cho hệ điều chỉnh và ổn định tốc độ động cơ điện một chiều kích từ độc lập
nh H3-2c : Đồ thị điện áp vào khâu so sánh để điều chỉnh độ rộng xung; (Trang 62)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w