Mục đích lắp mạch điều khiển để điều khiển tốc độ hỗn hợp dòng khí trong quá trình thí nghiệm.
Mạch bao gồm các khối sau: - Khối xử lý trung tâm - Khối giao tiếp bằng bàn phím - Khối cảm biến tốc độ - Khối hiển thị tốc độ Hình 5.1. Sơđồ khối tổng quát mạch điều khiển 5.1.1.Khối xử lý trung tâm.
Đây là khối quan trọng nhất trong bản mạch, nó có nhiệm vụ tính toán, xử
lý toàn bộ các hoạt động của mạch. Để nó có thể hoạt động theo ý muốn ta cần nạp vào nó chương trình điều khiển. Ở đây ta sử dụng vi điều khiển AT89C51.
*Vi điều khiển AT89C51
AT89C51 là một vi điều khiển 8 bit được chế tạo theo công nghệ CMOS, có
chất lượng cao, công suất thấp với 4 KB Flash PEROM (Programmable and
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-51 về tập lệnh và các chân ra. AT89C51 là một vi điều khiển mạnh, 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.
*Các đặc trưng chủ yếu của AT89C51
- Tương thích hoàn toàn với họ MCS-51 của Intel. - Bộ nhớ chương trình 4 KB thuộc loại Flash Memory.
- Độ bền: 1000 lần ghi/xoá.
- Tần số hoạt động: 0Hz đến 24MHz. - 3 chế độ khoá bộ nhớ.
- 128 x 8 bit RAM nội.
- 32 đường I/O lập trình được (4 port). - 2 Timer/Counter 16bit.
- 6 nguồn ngắt.
- Giao tiếp nối tiếp lập trình được.
- Chế độ hạ nguồn và chếđộ nhàn rỗi tiêu tốn công suất thấp.
* Sơđồ chân
* Sơđồ khối
Hình 5.3. Sơđồ khối vi điều khiển AT89C51
• Mô tả chức năng các chân:
Vcc: chân cung cấp điện áp nguồn 5V cho chip. GND: chân nối đất.
Port 0: Từ chân 32 đến chân 39 (P0.0 đến P0.7). Port 0 có hai chức năng,
trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các
đường I/O, đối với các thiết kế lớn có bộ nhớ ngoài, Port 0 trở thành bus địa chỉ
và bus dữ liệu đa hợp.
Để có thể vừa làm đầu vào, vừa làm đầu ra thì mỗi chân phải được nối tới một điện trở 10KΩ kéo lên bên ngoài. Sở dĩ như vậy là vì Port 0 có dạng cực máng hở, đây là điểm khác biệt so với các Port 1, 2, 3.
Port 1: Từ chân 1 đến chân 8 trên chip. Port 1 chỉ có chức năng xuất nhập nên nó được dùng để giao tiếp với thiết bị ngoại vi.
Port 2: Từ chân 21 đến chân 28. Port 2 cũng có hai công dụng, hoặc làm nhiệm vụ xuất nhập hoặc làm nhiệm vụ là byte địa chỉ cao của bus địa chỉ 16bit cho các thiết kế có bộ nhớ ngoài.
Port 3: Từ chân 10 đến chân 17, Port 3 ngoài chức năng xuất nhập nó còn có nhiều chức năng riêng. Mỗi chân có chức năng riêng liên quan đến các đặc trưng cụ thể của vi điều khiển.
Bảng 5.1. Chức năng của các chân của Port 3 Bit Tên Địa chỉ bit Chức năng
P3.0 RxD B0H Chân nhận dữ liệu của Port nối tiếp
P3.1 TxD B1H Chân phát dữ liệu của Port nối tiếp
P3.2 INT0 B2H Ngõ vào ngắt ngoài 0
P3.3 INT1 B3H Ngõ vào ngắt ngoài 1
P3.4 T0 B4H Ngõ vào của bộđịnh thời/đếm 0
P3.5 T1 B5H Ngõ vào của bộđịnh thời/đếm 1
P3.6 WR B6H Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Điều khiển đọc bộ nhớ dữ liệu ngoài
Chân cho phép bộ nhớ chương trình PSEN (Program Store Enable).
PSEN là tín hiệu xuất trên chân 29. Đây là tín hiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài. Chân này thường nối với chân cho phép
xuất OE (Output Enable) của EPROM hoặc ROM để cho phép đọc các byte lệnh.
PSEN ở mức logic 0 trong thời gian tìm – nạp lệnh. Ngược lại, khi thực thi một chương trình chứa ở ROM nội thì nó được duy trì ở mức logic 1.
ALE (Address Latch Enable) - chân cho phép chốt địa chỉ:
AT89C51 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE để
giải đa hợp bus dữ liệu và bus địa chỉ. Khi Port 0 được sử dụng làm bus địa chỉ/bus dữ liệu đa hợp, chân ALE xuất tín hiệu để chốt địa chỉ (byte thấp của địa chỉ 16bit) vào một thanh ghi ngoài trong suốt 1/2 đầu của chu kỳ bộ nhớ. Sau khi
điều này đã được thực hiện, các chân của Port 0 sẽ xuất/nhập dữ liệu hợp lệ trong suốt 1/2 thứ hai của chu kỳ bộ nhớ.
Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động bên trong chip vi
điều khiển và có thểđược dùng làm xung Clock cho phần còn lại của hệ thống. EA (External Access) – chân truy xuất bộ nhớ ngoài:
Ngõ vào này (chân 31 của AT89C51) có thể được nối tới 5V (lôgic 1) hoặc
với GND (logic 0). Nếu chân này nối lên 5V thì AT89C51 thực thi chương trình
trong ROM nội. Nếu chân này nối tới GND (và chân PSEN cũng ở logic 0),
chương trình cần thực thi chương trình chứa ở bộ nhớ ngoài.
Chân RST(RESET): Ngõ vào RST (chân 9) là ngõ vào xoá chính của
AT89C51 để thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ
thống. Khi ngõ vào này được treo lên mức logic 1 tối thiểu 2 chu kỳ máy, các thanh ghi bên trong của chip được nạp lại các giá trị thích hợp cho việc khởi
động lại hệ thống.
Hoạt động RESET được thể hiện bởi hai sơđồ mạch sau:
Ở cả hai mạch này, khi ta cấp nguồn cho chip thì nó sẽ tự động được Reset.
Lý do là lúc này tụ C1 và C2 được coi là ngắn mạch nên tại chân 9 của
AT89C51 sẽ có điện áp mức cao (logic 1) trong khoảng thời gian vừa đủ để
AT89C51 RESET mạch nội bộ, nghĩa là nó khởi tạo giá trị ban đầu cho các
+5V RST RST R1 100 R2 10K C1 10u Reset Manual reset +5V RST R3 10K C2 10u Power-on reset
thanh ghi đặc biệt SFR và đặt bộ đếm chương trình PC (Program Counter) trỏ đến địa chỉ 00h của bộ nhớ chương trình. Do tụ C1 được nạp với hằng số thời
gian t = C1.R2 nên điện áp trên chân RST của AT89C51 giảm dần đến giá trị
nhỏ hơn 0,5V thì quá trình RESET kết thúc.
Các chân XTAL1 và XTAL2: Vi điều khiển AT89C51 có một bộ dao động
trên chip nhưng vẫn cần một bộ đồng hồ bên ngoài để kích hoạt. Bộ dao động
thạch anh bên ngoài thường được nối tới các chân vào XTAL1 (chân 19) và
XTAL2 (chân 18). Sơđồ nối dao động ngoài như sau:
Ở đây ta cần hai tụ 33p và một bộ dao động thạch anh (thường dùng bộ dao
động có tần số 11,0592MHz).
* Tổ chức bộ nhớ.
AT89C51 có không gian bộ nhớ riêng cho chương trình và dữ liệu. Cả hai bộ
nhớ chương trình và dữ liệu đều đặt bên trong chip, tuy nhiên ta có thể mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dụng các chip nhớ bên ngoài với dung lượng tối đa là 64K cho bộ nhớ chương trình và bộ nhớ dữ liệu.
+ Bộ nhớ chương trình ROM
Có không gian cực đại là 64KB được đánh địa chỉ từ 0000h ÷ FFFFh. Trong
đó có 4KB là bộ nhớ nội trú nằm trong chíp được đánh địa chỉ từ 0000h ÷ 0FFFh, còn 60KB mở rộng được đặt địa chỉ từ 1000h ÷ FFFFh. Tuỳ thuộc vào dung lượng chương trình mà bộ nhớ được thêm vào theo kích thước phù hợp.
XTAL2XTAL1 XTAL1 CRY STAL C3 33p C4 33p
Trong quá trình điều khiển việc lựa chọn bộ nhớ ROM nằm trong hay bên ngoài hoặc sử dụng cả hai, được thực hiện bằng cách nối đến chân EA. Ở vi điều khiển 8051 thì chân EA được nối tới dương nguồn Vcc.
Trình tự thực hiện chương trình trong ROM.
Sau khi nạp chương trình vào ROM thông qua bộđốt ROM hay cổng COM,
Chương trình sẽ có địa chỉ bắt đầu từ 0000h. Để xác định vị trí lệnh thực hiện bộ
vi điều khiển sử dụng thanh ghi chương trình(bộ đếm chương trình PC), thanh ghi này có độ dài 16 bit. Khi 8051 được bật nguồn, bộ đếm chương trình PC có nội dung 0000h. Lúc này chương trình sẽ nạp lệnh trong ROM có địa chỉ 0000h. Sau đó bộ đếm chương trình tăng lên trỏ đến lệnh tiếp theo được thiết lập trong ROM.
+ Bộ nhớ dữ liệu RAM
Trong vi điều khiển 8051 bộ nhớ dữ liệu RAM có kích thước 128 byte được
định địa chỉ từ 00h ÷ 7Fh, nhưng ở một số như 8052 thì có 256 byte RAM.
128 byte RAM trong 8051 được chia thành từng nhóm như sau:
- Từ ngăn nhớ 00h đến 1Fh, tổng cộng 32 byte, được dành làm các băng thanh ghi và ngăn xếp.
- Từ ngăn nhớ 20h đến 2Fh, tổng cộng có 16 byte, được làm bộ nhớ đọc/ghi
định địa chỉđược theo bit.
- Từ ngăn nhớ 30h đến 7Fh, tổng cộng 80 byte được dùng để lưu thông tin khi đọc và khi ghi.
* Các thanh ghi chức năng đặc biệt
Là các thanh ghi đảm nhận các chức năng khác nhau trong bộ vi điều khiển,
chúng nằm bên trong vi xử lí chiếm vùng không gian nhớ là 128byte có địa chỉ
từ 80h ÷ FFh.
+ Thanh ghi tích luỹ(thanh ghi chứa ACC)
Trong lập trình nó được viết tắt là thanh ghi A, đây là thanh ghi quan trọng nhất trong bộ vi điều khiển dùng để lưu trữ các toán hạng thực hiện các phép toán, đồng thời nó còn lưu trữ kết quả phép toán. Thanh ghi này có địa chỉ 0E0h và có kích thước 8bit.
+ Thanh ghi B
Thường được sử dụng khi thực hiện các phép toán nhân, chia. Đối với các lệnh khác có thể xem thanh ghi B là thanh ghi tạm thời có địa chỉ 0F0h.
+ Thanh ghi con trỏ ngăn xếp SP
Khi bắt đầu thực hiện lệnh con trỏ SP trỏ đến đỉnh Stack, giá trị của nó sẽ
thay đổi tự động khi thực hiện các lệnh PUSH và POP. Khác với bộ vi xử lí đa năng, ở bộ vi điều khiển khi ta thực hiện lệnh PUSH dữ liệu vào ngăn xếp thì giá trị của con trỏ ngăn xếp tăng lên và ngược lại khi ta thực hiện lệnh POP giá trị
của con trỏ ngăn xếp sẽ giảm đi.
Ngăn xếp có thể đặt ở bất kỳ vị trí nào trong RAM, nhưng thông thường sau khi ta khởi động lại hệ thống, con trỏ ngăn xếp sẽ mặc định trỏ đến địa chỉ khởi
đầu 07h, ngăn xếp bắt đầu từ địa chỉ 08h. Còn nếu trong quá trình lập trình ta muốn thay đổi vị trí của Stack ta phải gán giá trịđịa chỉ mới vào thanh ghi SP.
+ Thanh ghi DPTR
Là thanh ghi 16bit gồm hai thanh ghi có độ dài 8bit hợp thành đó là thanh
ghi byte cao DPH và thanh ghi byte thấp DPL. Con trỏ dữ liệu có thể sử dụng như một thanh ghi 16bit hoặc hai thanh ghi 8bit độc lập:
- DPH có địa chỉ 82h
- DPL có địa chỉ 83h
+ Từ trạng thái chương trình(thanh ghi cờ PSW)
Là thanh ghi 8bit có địa chỉ 0D0h mỗi bit đảm nhiệm một chức năng cụ thể. Chức năng các bit thể hiện
Bit 7 6 5 4 3 2 1 0 Tên CY AC F0 RS1 RS0 OV - P
- Cờ nhớ CY: cờ này sẽ được thiết lập khi có nhớ từ bit D7 và là kết quả
của lệnh cộng hoặc trừ 8bit. Có thể thiết lập trực tiếp cờ CY lên 1 hoặc xoá về 0
bằng lệnh “SETB” và “CLR”.
- Cờ nhớ phụ AC: cờ này báo có nhớ từ bit D3 sang D4 ở phép cộng ADD hoặc trừ SUB.
- Cờ bậc P: cờ bậc(cờ chẵn lẻ) phản ánh số bit 1 trong thanh ghi A là chẵn hay lẻ. Nếu thanh ghi A chứa một số chẵn các bit 1 thì P=0 còn chứa một số lẻ
bit 1 thì P=1.
- Cờ tràn OV: cờ được thiết lập mỗi khi kết quả của phép tính số có dấu quá lớn làm cho bit cao bị tràn vào bit dấu.
- Cờ không F0: cờ này có thể cho người sử dụng tự định nghĩa một trạng thái nào đó trong lập trình điều khiển.
- RS1, RS2 là các cờ chỉ ra địa chỉ băng thanh ghi ta sử dụng. Trong bộ
ghi. Có 4 băng thanh ghi được đánh số từ 0→ 3 trong mỗi băng thanh ghi lại có 8 thanh ghi đều được gọi tên từ R0→ R7. Trong lập trình có thể sử dụng tên R0→R7 để truy cập đến vùng nhớđó.
+ Các thanh ghi Port: Các Port xuất nhập của 89C51 bao gồm Port 0 tại địa chỉ 80H, Port 1, 2, 3 tương ứng tại các địa chỉ là 90H, A0H và B0H. Các Port 0, 2, 3 không được dùng để xuất nhập nếu ta sử dụng bộ nhớ ngoài hoặc có một số đặc tính đặc biệt của 89C51 được sử dụng. Tất cả các Port đều định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh.
+ Các thanh ghi định thời: AT89C51 có hai bộđếm/định thời (timer/counter) 16bit đểđịnh các khoảng thời gian hoặc đểđếm các sự kiện.
Bảng 5.2.Các thanh ghi chức năng đặc biệt của bộđịnh thời SFR của bộ định thời Mục đích Địa chỉ Định địa chỉ bit TCON Điều khiển 88H Có TMOD Chọn chế độ 89H Không
TL0 Byte thấp của bộđịnh thời 0 8AH Không
TL1 Byte thấp của bộđịnh thời 1 8BH Không
TH0 Byte cao của bộđịnh thời 0 8CH Không
TH1 Byte cao của bộđịnh thời 1 8DH Không
Thanh ghi chế độ định thời TMOD (Timer Mode register): nằm tại địa chỉ
89H. TMOD chứa hai nhóm 4bit dùng để thiết lập chế độ hoạt động cho bộ định thời 0 và bộ định thời 1. TMOD không được định địa chỉ từng bit. TMOD được nạp một lần bởi phần mềm ở thời điểm bắt đầu của một chương trình để khởi
Bảng 5.3.Chức năng của các bit trong thanh ghi TMOD
Bit Tên Timer Mô tả
7 GATE 1 Bit điều khiển cổng. Khi được set lên 1, bộđịnh thời
chỉ hoạt động trong khi INT1 ở mức cao 6 C/T 1
Bit chọn chức năng đếm hoặc định thời: 1 = đếm sự kiện.
0 = định thời trong một khoảng thời gian.
5 M1 1 Bit chọn chế độ thứ nhất
4 M0 1 Bit chọn chếđộ thứ hai
3 GATE 0 Bit điều khiển cổng cho bộđịnh thời 0
2 C/T 0 Bit chọn chức năng đếm hoặc định thời
cho bộđịnh thời 0
1 M1 0 Bit chọn chế độ thứ nhất
0 M0 0 Bit chọn chếđộ thứ hai
Thanh ghi điều khiển định thời TCON (Timer Control register): chứa các
Bảng 5.4. Chức năng các bit trong thanh ghi TCON Bit Ký hiệu Địa chỉ bit Mô tả TCON.7 TF1 8FH
Cờ tràn của bộđịnh thời 1. Cờ này được set bởi phần cứng khi có tràn, được xoá bởi phần mềm
hoặc bởi phần cứng khi bộ vi xử lý trỏđến trình phục vụ ngắt
TCON.6 TR1 8EH
Bit điều khiển của bộđịnh thời 1. Bit này được set hoặc được xoá bởi phần mềm đểđiều khiển bộđịnh thời hoạt động hay ngưng hoạt động
TCON.5 TF0 8DH Cờ tràn của bộđịnh thời 0
TCON.4 TR0 8CH Bit điều khiển hoạt động của bộđịnh thời 0
TCON.3 IE1 8BH
Cờ ngắt bên ngoài 1 (kích khởi cạnh). Cờ này
được set bởi phần cứng khi có cạnh âm (xuống) xuất hiện trên chân INT1, được xoá bởi phần
mềm, hoặc phần cứng khi CPU trỏđến trình phục vụ ngắt
TCON.2 IT1 8AH
Cờ ngắt bên ngoài 1(kích khởi cạnh hoặc mức) Cờ này được set hoặc xoá bởi phần mềm khi xảy ra cạnh âm (xuống) hoặc mức thấp tại chân
ngắt ngoài
TCON.1 IE0 89H Cờ ngắt bên ngoài 0(kích khởi cạnh).
TCON.0 IT0 88H Cờ ngắt bên ngoài 0 (kích khởi cạnh hoặc mức)
+ Các thanh ghi của Port nối tiếp: Bên trong AT89C51 có một Port nối tiếp
để truyền thông với các thiết bị nối tiếp như các thiết bị đầu cuối hoặc modem,