Hình 2.2 :Sơ đồ khối AT89C51 Chức năng các chân của AT89C51 AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập.Trong đó có 24 chân có tác dụng kép có nghĩa là 1 chân có 2 c
Trang 1Chương 1 Tổng quan đề tài
1.1 Lí do chọn đề tài
Với tên đồ án là “ đồ án thiết kế dùng vi mạch lập trình” nên em muốn thựchiện thiết kế chế tạo một mạch cảm biến đo nhiệt độ môi trường Từ mạch nàydần mở rộng phát triển lắp ghép vào các hệ thống điều khiển nhiệt độ và các lònhiệt Hiện nay các dòng vi điều khiển được ứng dụng rất nhiều trong các lĩnhvực đời sống xã hội Xung quanh nó có rất nhiều đề tài được quan tâm Với đồ
án môn học là thiết kế ứng dụng vi mạch lập trình bằng cách sử dụng các dòng
vi điều khiển Được sự gợi ý của giáo viên hướng dẫn Th.s Lê Văn Chương,đồng thời xuất phát từ sự gần gũi với thực tế nên em đã chọn thiết kế chế tạomạch đo nhiệt độ môi trường ứng dụng kĩ thuật lập trình cho VĐK Và đây làmột cơ hội tốt để ứng dụng những kiến thức được học vào thực tế
1.1.1 Mục tiêu của đề tài
- Mạch cảm biến đo nhiệt độ phải hoạt động tốt, ổn định trong mọi điềukiện môi trường
- Đảm bảo tính kinh tế
- Có khả năng mở rộng và ứng dụng phát triển trong các hệ thống và thiếtbị
1.1.2 Vấn đề cần giải quyết
+ Chế tạo 1 board mạch gồm các khối cảm biến, khối chuyển đổi tương
tự - số (ADC), khối xử lí trung tâm dùng VĐK và khối hiển thị
+ Tiến hành viết chương trình phần mềm phối hợp hoạt động của cáckhối dưới sự điều khiển của khối mạch chính chứa IC VĐK
Trang 21.2 Giải quyết vấn đề
Hiện nay có rất nhiều dòng vi điều khiển được sử dụng phổ biến trongthiết kế các ứng dụng vi mạch lập trình Các phương án được đưa ra để giảiquyết vấn đề như sau:
- Nó được ứng dụng rất rộng rãi;
- Giá thành linh kiện để hoàn thành mạch rẻ;
- Cấu trúc và nguyên lý hoạt động dễ hiểu;
- Khả năng mở rộng cao;
Với việc sử dụng dòng VĐK 8051 này thì có nhiều ngôn ngữ được sử dụng
để lập trình như: ngôn ngữ C, Asembly, Passcan Và trong đồ án này chúng
em sử dụng ngôn ngữ lập trình Asembly bởi vì ngôn ngữ lập trình đơn giản, dễhiểu và từ ngôn ngữ lập trình này chúng em hiểu thêm về cấu trúc cũng nhưhoạt động của dòng VĐK 8051 Ngoài ra ngôn ngữ lập trình là các từ gợi nhớnên rất thuận lợi trong quá trình hiểu và lập trình chương trình
1.3 Khả năng mở rộng
Với mạch đo nhiệt độ môi trường chúng ta có thể ứng dụng cho nhiều lĩnhvực cũng như các thiết bị Từ mạch cảm biến này chúng ta có thể mở rộng lắpghép vào các mạch điều khiển nhiệt độ như: điều khiển nhiệt độ phòng, điềukhiển lò nhiệt… để chúng ta chủ động trong việc cung cấp nhiệt độ Và rấtnhiều trong các thiết bị khác chúng ta có thể lắp đặt mạch để thông báo nhiệt
Trang 3Chương 2 Cơ sở lý thuyết
2.1 Tổng quan về vi điều khiển AT89C51
a Giới thiệu chung về cấu trúc phần cứng
Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương
tự như nhau Ở đây giới thiệu IC 8951 là một họ IC vi điều khiển do hãng Intelcủa Mỹ sản xuất Chúng có các đặc điểm chung như sau:
Các đặc điểm của 8951 được tóm tắt như sau:
4 KB EPROM bên trong
128 Byte RAM nội
4 Port xuất /nhập I/O 8 bit
Giao tiếp nối tiếp
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoại
Xử lý Boolean (hoạt động trên bit đơn)
210 vị trí nhớ có thể định vị bit
4s cho hoạt động nhân hoặc chia
Sau đây chúng ta sẽ tìm hiểu cấu trúc chung của IC AT89C51, đây là mộtsản phẩm của hãng INTEL
Hình2.1: Sơ đồ chân của IC AT89C51
Trang 4Hình 2.2 :Sơ đồ khối AT89C51
Chức năng các chân của AT89C51
AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập.Trong đó có 24 chân có tác dụng kép (có nghĩa là 1 chân có 2 chức năng), mỗiđường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc
là thành phần của các bus dữ liệu và bus địa chỉ
Các cổng xuất nhập:
Trang 5- Port 0: Port 0 là port có 2 chức năng ở các chân 32 - 39 của 8951.
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ế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa busđịa chỉ và bus dữ liệu
- Port 1: Port 1 là port I/O trên các chân 1-8 Các chân được ký hiệu
P1.0, P1.1, p1.2, p1.7 có thể dùng cho giao tiếp với các thiết bị ngoài nếucần Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếpvới các thiết bị bên ngoài
- Port 2: Port 2 là 1 port có tác dụng kép trên các chân 21- 28 được dùng
như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bịdùng bộ nhớ mở rộng
- Port 3: Port 3 là port có tác dụng kép trên các chân 10-17 Các chân
của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở bảng sau:
P3.0 RXT Ngõ vào 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ủaTIMER/COUNTER thứ 0P3.5 T1 Ngõ vào củaTIMER/COUNTER thứ 1P3.6 WR\ Tín hiệu ghi dữ liệu lên bộ nhớ ngoàiP3.7 RD\ Tín hiệu đọc bộ nhớ dữ liệu ngoài
Hình 2.3 : Chức năng của các chân của Port 3
Các ngõ tín hiệu điều khiển:
Trang 6- Ngõ tín hiệu PSEN (Program Store Enable):
PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớchương trình mở rộng thường được nối đến chân OE\ (Output Enable) củaEPROM cho phép đọc các byte mã lệnh PSEN ở mức thấp trong thời gianMicrocontroller 8951 lấy lệnh Các mã lệnh của chương trình được đọc từEPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 8951 đểgiải mã lệnh Khi 8951 thi hành chương trình trong EPROM nội PSEN sẽ ởmức logic 1
- Ngõ tín hiệu điều khiển ALE (Address Latch Enable):
Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ
và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ởchân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và
dữ liệu khi kết nối chúng với IC chốt
Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóngvai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip
và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống ChânALE được dùng làm ngõ vào xung lập trình cho EPROM trong 8951
- Ngõ tín hiệu EA(External Access):
Tín hiệu vào EA ở chân 31 thường được mắc lên mức 1 hoặc mức 0.Nếu ở mức 1, 8951 thi hành chương trình từ EPROM nội trong khoảng địa chỉthấp 4 Kbyte Nếu ở mức 0, 8951 sẽ thi hành chương trình từ bộ nhớ mở rộng.Chân EA được lấy làm chân cấp nguồn 12V khi lập trình cho EPROM trong8951
- Ngõ tín hiệu RST (Reset):
Ngõ vào RST ở chân 9 là ngõ vào Reset của 8951 Khi ngõ vào tín hiệu nàyđưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những
Trang 7giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự động Reset.
Hình 2.5: Trạng thái các thanh ghi sau khi Reset
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình,
nó được đặt lại 0000H Khi RST trở lại mức thấp, việc thi hành chương trìnhluôn bắt đầu ở địa chỉ đầu tiên trong bộ nhớ trong 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
- Các ngõ vào bộ dao động X1,X2:
Bộ dao động được được tích hợp bên trong 8951, khi sử dụng 8951 ngườithiết kế chỉ cần kết nối thêm thạch anh và các tụ Tần số thạch anh thường sửdụng cho 8951 là 12Mhz Chân 40 (Vcc) được nối lên nguồn 5V
Trang 8Bộ nhớ trong 8951 bao gồm EPROM và RAM RAM trong 8951 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 Họ 8951 có bộ nhớ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 Chương trình và dữ liệu có thể chứa bên trong 8951 nhưng 8951 vẫn cóthể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu
- Vùng RAM đa dụng:
Từ hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H đến 7FH,
32 byte dưới từ 00H đến 1FH cũng có thể 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)
Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùngkiểu địa chỉ trực tiếp hoặc gián tiếp
- RAM có thể truy xuất từng bit:
AT89C51 chứa 210 bit được địa chỉ hóa, trong đó có 128 bit có chứa cácbyte chứa các địa chỉ từ 20H đến 2FH và các bit còn lại chứa trong nhóm thanhghi có chức năng đặc biệt Ý tưởng truy xuất từng bit bằng phần mềm là các đặctính mạnh của microcontroller xử lý chung Các bit có thể được đặt, xóa, AND,
Trang 9OR, … , với 1 lệnh đơn Đa số các microcontroller xử lý đòi hỏi một chuỗilệnh đọc - sửa - ghi để đạt được mục đích tương tự Ngoài ra các port cũng cóthể truy xuất được từng bit.
128 bit có chứa các byte có địa chỉ từ 00H -1FH cũng có thể truy xuấtnhư các byte hoặc các bit phụ thuộc vào lệnh được dùng
- Các bank thanh ghi :
32 byte thấp của bộ nhớ nội được dành cho các bank thanh ghi Bộ lệnh
8951 hổ trợ 8 thanh ghi có tên là R0 - R7 và theo mặc định sau khi reset hệthống, các thanh ghi này có các địa chỉ từ 00H - 07H
Các lệnh dùng các thanh ghi RO - R7 sẽ ngắn hơn và nhanh hơn so vớicác lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữ liệu đượcdùng thường xuyên nên dùng một trong các thanh ghi này Do có 4 bank thanhghi nên tại một thời điểm chỉ có một bank thanh ghi được truy xuất bởi cácthanh ghi RO - R7 để chuyển đổi việc truy xuất các bank thanh ghi ta phải thayđổi các bit chọn bank trong thanh ghi trạng thái
Các thanh ghi có chức năng đặc biệt:
Các thanh ghi nội của AT89C51 được truy xuất ngầm định bởi bộ lệnh.Cácthanh ghi trong AT89C51 đượ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 bộ đế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) Cũng nhưR0 đến R7, AT89C51 có 21 thanh ghi có chức năng đặc biệt (SFR: SpecialFunction Register) ở vùng trên của RAM nội từ địa chỉ 80H - FFH
- Các thanh ghi Port nối tiếp (Serial Port Register):
AT89C51 chứa một Port nối tiếp 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 Mộtthanh ghi đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệutruyền và dữ liệu nhập Khi truyền dữ liệu ghi lên SBUF, khi nhận dữ liệu thì
Trang 10đọc SBUF Các mode vận khác nhau được lập trình qua thanh ghi điều khiểnPort nối tiếp (SCON) được địa chỉ hóa từng bit ở địa chỉ 98H.
- Các thanh ghi ngắt (Interrupt Register):
AT89C51 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấm saukhi bị 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 được địa chỉ hóa từng bit
Bộ nhớ ngoài (External Memory):
AT89C51 có khả năng mở rộng bộ nhớ lên đến 64K byte bộ nhớ chươngtrình và 64K byte bộ nhớ dữ liệu ngoài Do đó có thể dùng thêm RAM vàEPROM nếu cần
Khi dùng bộ nhớ ngoài, Port 0 không còn chức năng I/O nữa Nó đượckết hợp giữa bus địa chỉ (A0 - A7) và bus dữ liệu (D0 - D7) với tín hiệu ALE đểchốt byte của bus địa chỉ chỉ khi bắt đầu mỗi chu kỳ bộ nhớ Port2 được cho làbyte cao của bus địa chỉ
- Chuyển điều khiển
Chi tiết tệp lệnh của họ 8051 có thể tham khảo trong “Họ vi điều khiển”của tác giả Tống Văn On và Hoàng Đức Hải
2.2 Bộ chuyển đổi tương tự - số ADC0804
a Tổng quan về bộ chuyển đổi tương tự - số
Trong tự nhiên các dạng tín hiệu thường ở dạng tương tự, ADC sẽ chuyểncác tín hiệu tương tự này thành các tín hiệu số phù hợp với hệ thống số Bộ
Trang 11chuyển đổi tương tự - số lấy mức tín hiệu tương tự (thường là điện áp) đầu vàotương tự sau một thời gian sẽ sinh ra mã đầu ra dạng số biểu diễn đầu vào
Hình 2.7 Sơ đồ khối chuyển đổi ADC 0804
Hoạt động của ADC thuộc lớp này như sau:
Xung START khởi động sự hoạt động của hệ thống
Xung CLOCK tạo nhịp cho bộ điều khiển liên tục chỉnh sửa số nhịphân lưu trong thanh ghi
Số nhị phân trong thanh ghi được bộ DAC chuyển thành giá trị điện áptương tự VAX
Bộ so sánh so sánh VAX điện áp đầu vào VA.Khi VAX<VA thì tínhiệu ECO ở mức cao, cho đến khi VAX>VA một lượng VT thì ECO chuyểnxuống mức thấp báo kết thúc quá trình chuyển đổi VT được gọi là điện ápngưỡng Giá trị nhị phân trong thanh ghi lúc này chính là giá trị số tươngứng của VA
b Giới thiệu IC ADC0804
Đây là bộ chuyển đổi tín hiệu tương tự sang tín hiệu số của hãngInternational Semiconductor sản xuất có độ phân giải 8 bít ADC0804 hoạt
Trang 12động với mức điện áp +5V Dạng đóng gói của 0804 gồm 20 chân Ngoài độphân giải thì thời gian chuyển đổi cũng là một yếu tố quan trọng khác khi đánhgiá một bộ ADC Thời gian chuyển đổi được định nghĩa như là thời gian mà bộADC cần để chuyển một đầu vào tương tự thành một số nhị phân Trong ADC
0804 thời gian chuyển đổi thay đổi phụ thuộc vào tần số đồng hồ được cấp tớichân CLK R và CLK IN nhưng không thể nhanh hơn 110μs s
Hình 2.8: Sơ đồ chân của ADC 0804
Chức năng các chân của ADC0804:
Chân CS(1): chân chọn chíp tích cực mức thấp dùng để kích hoạt chíp
0804 Trong mạch chân này luôn nối mass
Chân RD(2): Đây là một tín hiệu đầu vào được tích cực mức thấp Các bộADC chuyển đổi đầu vào tương tự thành số nhị phân tương đương với nó
và giữ nó trong một thanh ghi trong RD được sử dụng để nhận dữ liệuđược chuyển đổi ở đầu ra của ADC 0804 Khi CS = 0 nếu một xung cao -xuống - thấp được áp đến chân RD thì đầu ra số 8 bít được hiển diện ởcác chân dữ liệu D0 - D7 Chân RD cũng được coi như cho phép đầu raChân CLK IN(4) và CLK R(19): đây là các đầu vào xung START vàCLK tạo xung nhịp cho ADC 0804 hoạt động.Các chân này được nối vớimôt điện trở để tạo xung cho ADC hoạt động:
Trang 13
Hình 2.9: mạch tạo xung cho ADC0804
Chân ghi WR (thực ra tên chính xác là “Bắt đầu chuyển đổi”) Đây làchân đầu vào tích cực mức thấp được dùng để báo cho ADC 0804 bắt đầuquá trình chuyển đổi Nếu CS = 0 khi WR tạo ra xung cao - xuống - thấpthì bộ ADC 0804 bắt đầu chuyển đổi giá trị đầu vào tương tự Vin về sốnhị phân 8 bít Lượng thời gian cần thiết để chuyển đổi thay đổi phụthuộc vào tần số đưa đến chân CLK IN và CLK R Khi việc chuyển đổi dữliệu được hoàn tất thì chân INTR được ép xuống thấp bởi ADC 0804
Chân CLK IN, CLK R là một chân đầu vào được nối tới một nguồn đồng
hồ ngoài khi đồng hồ ngoài được sử dụng để tạo ra thời gian Tuy nhiên
0804 cũng có một máy tạo xung đồng hồ Trong trường hợp này tần sốđồng hồ được xác định bằng biểu thức:
Trang 14 Chân VCC(20) : là các chân cấp nguồn và của ADC 0804 Trong mạch
( ) ( )* 256
Vref
Vin Vin
Các chân dữ liệu D0 - D7: Các chân dữ liệu D0 - D7 (D7 là bít cao nhấtMSB và D0 là bít thấp nhất LSB) là các chân đầu ra dữ liệu số Để tínhđiện áp đầu ra ta có thể sử dụng công thức sau:
Với Dout là đầu ra dữ liệu số (dạng thập phân) Vin là điện áp đầu vàotương tự và độ phân dải là sự thay đổi nhỏ nhất được tính như là (2 ×Vref/2) chia cho 256 đối với ADC 8 bít
Chân đất tương tự AGND(8) và chân đất số DGND(10): Đây là nhữngchân đầu vào cấp đất chung cho cả tín hiệu số và tương tự Đất tương tựđược nối tới đất của chân Vin tương tự, còn đất số được nối tới đất củachân Vcc Lý do mà ta phải có hai đất là để cách ly tín hiệu tương tựVin từ các điện áp ký sinh tạo ra việc chuyển mạch số được chính xác.Trong phần trình bày của chúng ta thì các chân này được nối chung với