You are on page 1of 72

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI


KHOA CÔNG NGHỆ ĐIỆN TỬ-THÔNG TIN

ĐỒ ÁN II

THIẾT KẾ MẠNCH GIÁM SÁT VÀ ĐIỀU KHIỂN


THIẾT BỊ SỬ DỤNG VI ĐIỀU KHIỂN

Giảng viên hướng dẫn: Sinh viên thực hiện :


TS. Vũ Xuân Hùng Trần Thế Hải _K22E
Vũ Văn Hà _K22E
Vũ Ngọc Hải _K22E
Vũ Minh Hiến _K22E
Đồ án II

LỜI NÓI ĐẦU

Ngày nay ngành kỹ thuật điện tử có vai trò rất quan trọng trong cuộc sống của con
người. Các hệ thống điện tử ngày nay rất đa dạng và đang thay thế các công việc hàng
ngày của con người từ những công việc đơn giản đến phức tạp như điều khiển tín hiệu
đèn giao thông, các biển quảng cáo, đo tốc độ động cơ hay các đồng hồ số... Các hệ
thống này có thể thiết kế theo hệ thống tương tự, hệ thống số hay là dùng vi điều
khiển. Tuy nhiên trong các hệ thống điện tử thông minh hiện nay người ta thường
sử dụng vi điều khiển hơn là các hệ thống tương tự hay hệ thống sốbởi một số ưu điểm
vượt trội mà vi điều khiển mang lại đó là: độ tin cậy cao, giá thành thấp, dễ dàng thiết
kế, lắp đặt và vận hành... Để làm được điều đó chúng ta phải có kiến thức về vi điều
khiển, hiểu được cấu trúc và chức năng của nó.
Đồ án II

LỜI CẢM ƠN

Qua đồ án này, nhóm em xin cảm ơn đến Thầy TS. Vũ Xuân Hùng đã giúp đỡ
cho chúng em trong suốt quá trình hoàn thành đồ án. Giúp chúng em hiểu rõ hơn về
mạch Arduino, cách thiết kế mạch, chạy code hay biết được nhiều ứng dụng hay của
mạch Arduino. Ngoài ra, nhờ cô hướng dẫn nên chúng em cũng đã hoàn thành bài báo
cáo , hiểu được một số quá trình làm các công đoạn thiết kế, mô phỏng, sơ đồ nguyên
lý hoạt động và tính chất cụ thể của các linh kiện. Qua đó giúp chúng em tiến bộ hơn
và đã có bước đầu hiểu hơn về các mạch điện tử. Thông qua đồ án, chúng em đã tích
lũy và học được một ít kinh nghiệm thực tế rất có ít cho việc học tập và công việc của
chúng em sau này. Bên cạnh đó còn có nhiều mặt hạn chế do lần đầu tiếp xúc với linh
kiện điện tử thực tế và còn do kỹ năng yếu kém nên dẫn đến sản phẩm còn nhiều
khuyết điểm, mông cô sẽ thông cảm và bỏ qua cho chúng em. Một lần nữa nhóm
chúng em xin chân thành cảm đến thầy TS. Vũ Xuân Hùng đã giúp đỡ nhóm em hoàn
thành đồ án này.
Đồ án II

MỤC LỤC

MỤC LỤC.................................................................................................................3
DANH MỤC HÌNH..................................................................................................5
LỜI MỞ ĐẦU...........................................................................................................6
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI.................................................................7
1.1 Đặt vấn đề........................................................................................................7
1.2. Khảo sát vấn đề:.............................................................................................7
1.3. Các vấn đề cần giải quyết của bài toán :.........................................................8
1.4. Giải pháp:.......................................................................................................8
1.5. Mục đích đề tài...............................................................................................8
1.6 Nguyên lý đo nhiệt độ....................................................................................9
1.7 Bố cục đồ án...................................................................................................9
CHƯƠNG II: HỌ VI ĐIỀU KHIỂN 8051..............................................................11
2.1. Sơ lược về vi xử lý và vi điều khiển.............................................................11
2.1.1. Bộ vi điều khiển và bộ vi xử lý đa năng.................................................11
2.1.2 Ưu nhược điểm của các bộ vi điều khiển................................................12
2.2 Cấu trúc của chíp vi điều khiển 8051.............................................................13
2.2.1 Sơ đồ khối bộ vi điều khiển và chức năng..............................................13
2.2.2. Tổ chức bộ nhớ của 8051.......................................................................20
2.2.3 Các đặc trưng nổi bật của họ 8051..........................................................24
2.2.4 Các chân của 8051..................................................................................25
2.2.5 Các thanh ghi của họ 8051......................................................................29
CHƯƠNG III: CẢM BIẾN NHIỆT LM35 – BỘ BIẾN ĐỔI TƯƠNG TỰ SANG
SỐ ADC 0804.........................................................................................................36
A. CẢM BIẾN NHIỆT LM35.................................................................................36
3.1. Cấu tạo LM35..............................................................................................36
3.2 Dải nhiệt độ và sự thay đổi trở kháng theo nhiệt độ của LM35.....................37
3.3. Các bộ cảm biến nhiệt họ LM35..................................................................38
B. BỘ BIẾN ĐỔI TƯƠNG TỰ - SỐ ADC0804....................................................40
3.4: Sơ đồ chân của ADC0804............................................................................40

4
Đồ án II

3.5: Phân chia thời gian cho quá trình chuyển đổi tín hiệu.................................43
3.6: Ghép nối LM35 với ADC0804.....................................................................47
3.7: Một số linh kiện hỗ trợ việc thiết kế và điều khiển mạch khác.....................48
3.7.1 Công tác điện tử C1815..........................................................................48
3.7.2 IRF 540..................................................................................................49
3.7.3 Led 7 thanh............................................................................................49
3.7.4 Quạt tản nhiệt.........................................................................................50
CHƯƠNG IV: KHẢO SÁT, THIẾT KẾ BÀI TOÁN.............................................51
4.1 Nhiệm vụ thiết kế..........................................................................................51
4.2 Chức năng từng khối.....................................................................................51
4.3 Sơ đồ khối......................................................................................................52
4.4 Sơ đồ thuật toán.............................................................................................53
4.5 Phần mềm mô phỏng.....................................................................................54
4.5.1: Giới thiệu về phần mềm Proteus............................................................54
4.5.2 Các thành phần của chương trình............................................................55
4.5.3 Sơ đồ nguyên lý......................................................................................57
4.5.4 Hình ảnh mô phỏng mạch chạy...............................................................58
4.6 Phần mềm lập trình và Code lập trình............................................................59
4.6.1 Ngôn ngữ lập trình C..................................................................................59
4.6.2 Chương trình đo và điều khiển nhiệt độ của thiết bị..................................61
4.7 Mạch chạy.....................................................................................................67
KẾT LUẬN.............................................................................................................68
TÀI LIỆU THAM KHẢO...............................................................................69

5
Đồ án II

DANH MỤC HÌNH


Hình 2.1: Hệ vi xử lý đa năng..................................................................................11
Hình 2.2: Chíp vi điều khiển....................................................................................12
Hình 2.3: Sơ đồ khối bộ vi xử lý 8051....................................................................13
Hình 2.4: Nguồn xung clock....................................................................................19
Hình 2.5: Cấu trúc bộ nhớ 8051..............................................................................21
Hình 2.6: Bộ nhớ chương trình 8051.......................................................................22
Hình 2.7: Bộ nhớ dữ liệu RAM 8501......................................................................24
Hình 2.8: Hình ảnh và sơ đồ chân của 8051............................................................25
Hình 2.9: Mạch tạo dao động dùng cổng lô-gic.......................................................28
Hình 2.10: Bảng lựa chọn thanh ghi........................................................................29
Hình 2.11: Bảng chọn chế độ định thời...................................................................30
Hình 3.1: Sơ đồ chân của LM35..............................................................................36
Hình 3.2: Hình ảnh thật của LM35..........................................................................37
Hình 3.3: Trở kháng của bộ cảm biến nhiệt theo nhiệt độ.......................................38
Hình 3.4: Hướng dẫn chọn loạt các cảm biến nhiệt họ LM35.................................38
Hình 3.5: Sơ đồ khối cảm biến nhiệt độ..................................................................39
Hình 3.6: Sơ đồ chân của ADC0804.......................................................................40
Hình 3.7: Sơ đồ kết nối ADC 0804 ở chế độ chạy tự do.........................................42
Bảng 3.8: Điện áp Vref/2 liên hệ với dải Vin.........................................................42
Hình 3.9: Phân chia thời gian đọc và ghi của ADC0804.........................................44
Hình 3.10: Sơ đồ mạch biến đổi ADC.....................................................................47
Hình 3.11: Sơ đồ thời gian hoạt động của ADC0804..............................................47
Hình 3.12: Sơ đồ hoạt động của chân ngắt..............................................................48
Hình 3.13: Công tác điện tử C1815.........................................................................48
Hình 3.14: IRF 540.................................................................................................49
Hình 3.15: Led Anot chung.....................................................................................49

6
Đồ án II

LỜI MỞ ĐẦU
Ngày nay với sự phát triển của nghành vi điện tử, kỹ thuật số các hệ thống
điều khiển dần được tự động hóa. Với những kỹ thuật tiên tiến như vi xử lý, vi
mạch số, vi điều khiển… được tích hợp vào bên trong chip nên được ứng dụng
vào lĩnh vực điều khiển, thì các hệ thống điều khiển cơ khí thô sơ, với tốc độ xử
lý chậm chạp ít chính xác được thay thế bằng các hệ thống điều khiển tự động
với các lệnh chương trình đã được thiết lập trước.
Trong xã hội hiện nay nhìn chung những tai nạn cháy, nổ thường xảy ra tại
các nhà máy, xí nghiệp, các trung tâm là những tai nạn gây thiệt hại rất lớn về
người và của cải. Vì vậy để đảm tính mạng cho con người cũng như của cải vật
chất trong những khu vực dễ xảy ra cháy thì cần phải có một thiết bị đo nhiệt độ
của môi trường, thiết bị này có chức năng đo nhiệt độ của môi trường, đồng thời
có khả năng báo động và điều khiển hệ thống chữa cháy khi nhiệt độ môi trường
đạt đến một ngưỡng nhiệt độ được ấn định trước.
Với sự tích lũy tích lũy của các môn học về vi điều khiển, Em nhận thấy
rằng: Ứng dụng vi điều khiển 8051 vào việc đo và khống chế nhiệt độ tự động là
phương pháp tối ưu nhất, nhằm hạn chế tới mức thấp nhất những thiệt hại về
người và của trong các nhà máy, xí nghiệp, chung cư, chợ,… Đồng thời được sự
chấp thuận của bộ môn Kĩ Thuật Máy Tính và cô giáo hướng dẫn cho phép, em
tiến hành thực hiện sự dụng vi điều khiển 8051 để xây dựng mạch đo và điều
khiển nhiệt độ của thiết bị.

7
Đồ án II

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI


1.1 Đặt vấn đề.
Cùng với sự phát triển của khoa học và công nghệ, các thiết bị điện tử đã, đang
và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết
các lĩnh vực khoa học kỹ thuật cũng như trong đời sống xã hội.
Việc gia công, xử lý các tín hiệu điện tử hiện đại đều dựa trên cơ sở nguyên lý
số. Vì các thiết bị làm việc dựa trên cơ sở nguyên lý số có ưu điểm hơn hẳn so với
các thiết bị làm việc dưạ trên cơ sở nguyên lý tương tự, đặc biệt là trong kỹ thuật
tính toán.
Sự phát triển mạnh mẽ của công nghệ điện tử đã cho ra đời nhiều vi mạch số cỡ
lớn với giá thành rẻ và khả năng lập trình cao đã mang lại những thay đổi lớn trong
ngành điện tử. Mạch số ở những mức độ khác nhau đã đang thâm nhập trong các
lĩnh vực điện tử thông dụng và chuyên nghiệp một cách nhanh chóng. Các trường
kỹ thuật là nơi mạch số thâm nhập mạnh mẽ và được học sinh, sinh viên ưa chuộng
do lợi ích và tính khả thi của nó. Vì thế sự hiểu biết sâu sắc về kỹ thuật số là không
thể thiếu đối với sinh viên ngành điện tử hiện nay. Nhu cầu hiểu biết về kỹ thuật số
không chỉ riêng đối với những người theo chuyên ngành điện tử mà còn đối với
những cán bộ kỹ thuật khác có sử dụng thiết bị điện tử.

1.2. Khảo sát vấn đề:


Trong nhiều lĩnh vực sản xuất công nghiệp và đời sống hiện nay, vấn đề an toàn
cháy nổ luôn được đặt lên hàng đầu, các thiết bị hoạt động liên tục trong nhiều giờ
và cũng có những thiết bị hoạt động trong nhiều ngày liền mà không tắt nên sẽ bị
nóng, độ bền giảm. Khi nhiệt độ tăng cao còn có thể gây ra cháy nổ ảnh hưởng đến
sản xuất, gây thiệt hại lớn về kinh tế . Nhận thức được tầm quan trọng của vấn đề
trên nên em đã tiến hành nghiên cứu và “Sự dụng vi điều khiển 8051 để xây dựng
mạch đo và điều khiển nhiệt độ của thiết bị ”, với mong muốn là giải quyết được
yêu cầu trên và lấy đó làm đồ án tốt nghiệp cho mình.

8
Đồ án II

1.3. Các vấn đề cần giải quyết của bài toán :


Bài toán thiết kế mạch hiển thị nhiệt độ và điều khiển quạt tản nhiệt cho thiết bị
điện tử đặt ra các yêu cầu sau:
- Cảm biến nhiệt độ của thiết bị cần tản nhiệt, khi nhiệt độ tăng cao quạt sẽ
tăng tốc độ quay để tản nhiệt cho thiết bị, khi nhiệt độ giảm thì quạt cũng sẽ giảm
tốc độ quay
- Hiển thị nhiệt độ báo chính xác.
- Xây dựng mạch chạy .

1.4. Giải pháp:


Giải pháp đưa ra để đáp ứng yêu cầu bài toán:
- Sử dụng vi điều khiển 89C51.
- Sử dụng cảm biến nhiệt LM35.
- Sử dụng chip ADC0804 chuyển đổi từ dữ liệu tương tự sang dữ liệu số
- Xây dựng chương trình mô phỏng hoạt động của mạch.
- Xây dựng mạch chạy hiện thị nhiệt độ, tản nhiệt cho thiết bị.

1.5. Mục đích đề tài.


Sự cần thiết, quan trọng cũng như tính khả thi và lợi ích của mạch số cũng chính
là lý do để em chọn và thực hiện đồ án “Sự dụng vi điều khiển 8051 để xây dựng
mạch đo và điều khiển nhiệt độ của thiết bị” nhằm ứng dụng kiến thức đã học vào
thực tế.
Sử dụng một con IC cảm biến nhiệt (LM35) kết hợp với vi xử lý ADC0804 đưa
dữ liệu nhị phân vào vi điều khiển 89C51 , 89C51 có nhiệm vụ điều khiển việc
chuyển đổi của ADC0804 và hiển thị dữ liệu lên LED 7 thanh (nhiệt độ thiết bị điện
tử), khi nhiệt độ tăng cao, 89C51 sẽ thực hiện chương trình tăng tốc độ quay cho
quạt. 89C51 sẽ nhận ngắt và thực hiện chương trình ngắt thiết bị.
Mục đích yêu cầu của đề tài như sau:
 Mạch hiển thị nhiệt độ một cách chính xác .
 Khi nhiệt độ tăng cao quạt tản nhiệt quay nhanh hơn để tản nhiệt cho thiết bị
 Thực hiện tắt thiết bị khi nhiệt độ không nằm trong mức cho phép.

9
Đồ án II

1.6 Nguyên lý đo nhiệt độ


IC đo nhiệt là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển thành tín
hiệu điện dưới dạng dòng điện hay điện áp. Dựa vào đặc tính rất nhạy cảm của
các bán dẫn với nhiệt độ, tạo ra điện áp hoặc dòng điện tỉ lệ thuận với nhiệt độ
tuyệt đối. Vỡ thế để đo được giá trị nhiệt độ thỡ ta chỉ cần đo tín hiệu điện áp là
ta biết được giá trị của nhiệt độ cần đo. Sự tác động của nhiệt độ tạo ra điện tích
tự do và các lỗ trống trong các chất bán dẫn . Bằng sự đốt núng chất bỏn dẫn
trong IC đo nhiệt sẽ tạo ra sự phá vỡ các phân tử, bứt các electron thành dạng tự
do di chuyển qua vùng cấu trúc mạng tinh thể tạo ra sự xuất hiện các lỗ trống.
Làm cho tỷ lệ điện tử tự do và lỗ trống tăng lên theo qui luật hàm mũ với nhiệt
độ.
Đầu tiên LM35 sẽ cảm biến nhiệt độ, nhận tín hiệu nhiệt độ để chuyển tín
hiệu nhiệt độ thành đại lượng điện áp hay dòng điện. Cứ tăng giảm 1 oC thì điện
áp tới đầu ra của LM35 cũng sẽ tăng giảm 10mV. Dòng điện này sẽ đưa vào
chân VCC IN+ ( chân số 6) của ADC 0804 để ADC chuyển tín hiệu từ dạng tín
hiệu tương tự sang dạng tín hiệu số. Để bộ chuyển đổi nhiệt độ có thể hoạt động
cách chính xác thì cần đưa 1 điện áp điện mẫu Vref/2 vào chân số 9 của ADC.
Sau khi chuyển đổi tín hiệu từ dạng tương tự sang tín hiệu dạng số thì ta đưa vào
IC AT89C51 để IC bắt đầu xử lý, đo đạc, phân tích, tính toán, lưu trữ rồi mới
đưa ra bộ hiển thị là Led 7 thanh.

1.7 Bố cục đồ án
Chương 1: Tổng quan đề tài:
Đặt vấn đề về đồ án, khảo sát vấn đề đó,sau đó đưa ra cách giải quyết cũng
như giải pháp cho đồ án.
Chương 2 : Họ vi điều khiển 8051:
Sơ lược về vi xử lý và vi điều khiển, ưu nhược điểm của các bộ vi điều
khiển, cấu trúc của họ vi diều khiển 8051, tổ chức bộ nhớ, đưa ra các đặc điểm
nổi bật của họ vi diều khiển này, cách sử dụng các chân của 8051…

10
Đồ án II

Chương 3: Cảm biến nhiệt độ LM35 – Bộ biến đổi tương tự sang số ADC
0804:
Nghiên cứu về cấu tạo, cách thức hoạt động của các linh kiện, ưu nhược
điểm của các linh kiện này. Phân chia thời gian trong quá trình chuyển đổi dữ
liệu. Cách ghép nối giữa LM35 với ADC0804.
Các linh kiện phụ trợ trong quá trình thiết kế mạch, đưa ra hình ảnh về
những linh kiện đó.

Chương 4: Khảo sát, thiết kế bài toán.


Nhiệm vụ thiết kế bào toán, tính toán chức năng của từng khối, đưa ra sơ đồ
khối và sơ đồ thuật toán của chương trình, cũng như chạy quá trình mô phỏng
trên máy, để giúp cho việc làm mạch thật diễn ra thuật lợi hơn.

11
Đồ án II

CHƯƠNG II: HỌ VI ĐIỀU KHIỂN 8051


2.1. Sơ lược về vi xử lý và vi điều khiển.
2.1.1. Bộ vi điều khiển và bộ vi xử lý đa năng.
Nói đến vi xử lý là ta nói đến các bộ vi xử lý đa năng như họ Intel x86
( 8086, 80286, 80386, 80486 và Pentium ) hoặc họ Motorola 680x0 ( 68000,
68020, 68030, 68040….). Các bộ vi xử lý này không có RAM, ROM và không
có các cổng vào ra trên chip. Khi sử dụng các bộ vi xử lý đa năng thì người dùng
phải bổ sung thêm RAM, ROM và các cổng vào - ra bên ngoài.
Bus dữ liệu

CPU
Cổng
Bộ vi xử lý RAM ROM I/O Timer COM
đa năng Port nối
tiếp

Bus địa chỉ

Hình 2.1: Hệ vi xử lý đa năng


Đối với các bộ vi điều khiển thì khác, bộ vi điều khiển có trên chip bộ vi xử
lý đa năng, bộ nhớ RAM, ROM, các cổng vào - ra và bộ định thời. Hay nói một
cách khác là bộ vi xử lý, RAM, ROM, cổng vào ra và bộ định thời đã được tích
hợp trên một chíp vi điều khiển. Khi dùng bộ vi điều khiển ta không phải bổ
sung thêm các bộ nhớ ngoài, các cổng vào ra hoặc bộ định thời để cho hệ thống
hoạt động. Bộ vi điều khiển với một dung lượng RAM, ROM trên chíp và cổng
vào – ra đã trở nên rất thích hợp trong nhiều ứng dụng yêu cầu giá thành hạ và
không gian sử dụng hạn chế. Các bộ vi điều khiển ngày càng được ứng dụng
rộng rãi trong các thiết bị gia đình, thiết bị văn phòng, thiết bị tự động.

12
Đồ án II

CPU RAM ROM

Cổng
I/O Timer COM
nối tiếp

Hình 2.2: Chíp vi điều khiển


2.1.2 Ưu nhược điểm của các bộ vi điều khiển.
Các công việc được thực hiện bởi các bộ vi điều khiển thì không mới. Điều
mới là các thiết kế hiện thực với ít thành phần hơn so với các thiết kế trước đó.
Các thiết kế trước đó đòi hỏi phải vài chục hoặc vài trăm IC để hiện thực thì nay
chỉ cần một ít thành phần trong đó bao gồm bộ vi điều khiển. Số thành phần
được giảm bớt, hiệu quả trực tiếp của tính khả lập trình của các bộ vi điều khiển
và độ tích hợp cao trong công nghệ chế tạo vi mạch thường chuyển thành thời
gian phát triển ngắn hơn, giá thành sản xuất thấp hơn, công suất tiêu thụ thấp
hơn và độ tin cậy cao hơn.
Vấn đề ở đây là tốc độ. Các giải pháp dựa trên bộ vi điều khiển không bao
giờ nhanh bằng giải pháp dựa trên các thành phần rời rạc. Những tình huống đòi
hỏi phải đáp ứng thật nhanh ( cỡ n-sec) đối với các sự kiện (thường chiếm thiểu
số trong các ứng dụng) sẽ được quản lí tồi khi dựa vào các bộ vi điều khiển.
Tuy nhiên trong vài ứng dụng, đặc biệt là các ứng dụng liên quan đến con
người, các khoảng thời gian trễ tính bằng n-sec, u-sec hoặc thậm chí m-sec là
không quan trọng. Viêc giảm bớt các thành phần là một điều lợi như đã đề cập,
các thao tác trong chương trình điều khiển làm cho thiết kế có thể thay đổi bằng
cách thay đổi phần mềm. Điều này có ảnh hưởng tối thiểu đến chu kì sản xuất.
Do đó các bộ vi điều khiển có thể được ứng dụng rộng rãi trong các lĩnh vực

13
Đồ án II

phục vụ cho con người, thay thế cho con người ở những nơi có điều kiện môi
trường khắc nghệt.
Để hiểu rõ hơn về các bộ vi xử lý nói chung cũng như các bộ điều khiển nói
riêng, trong đề tài thiết kế hệ thống đo nhiệt độ nhiều phòng sử dụng họ vi điều
khiển 8051 để lập trình và thiết kế cho hệ thống này.
2.2 Cấu trúc của chíp vi điều khiển 8051.
2.2.1 Sơ đồ khối bộ vi điều khiển và chức năng.

Ngắt ngoài
ETC

ROM RAM Timer


On - Chip On - Chip Vào
Điều 1
chương trình bộ
khiển Timer đế
ngắt 2 m

CPU

Bộ tạo Bus 4 Cổng Cổng nối


dao động điều khiển vào /ra tiếp

P0 P1 P2 P3 TXD RXD
Địa chỉ/ Dữ
liệu

14
Đồ án II

Hình 2.3: Sơ đồ khối bộ vi xử lý 8051

Chức năng các khối như sau:


* Khối xử lý trung tâm:
Đây là phần chính của bộ vi xử lý là khối xử lý trung tâm CPU(Central
Processing Unit), đây là trái tim của hệ thống nó quản lí tất cả các hoạt động của
hệ thống và thực hiện tất cả các thao tác trên dữ liệu. Hầu hết các CPU chỉ bao
gồm một tập các mạch logic thực hiện liên tục hai thao tác là: tìm nạp lệnh và
thực thi lệnh. CPU có khả năng hiểu và thực thi các lệnh dựa trên một tập các mã
nhị phân, mỗi một mã nhị phân biểu thị một thao tác đơn giản. Các lệnh này
thường là các lệnh số học, lệnh logic, các lệnh di chuyển dữ liệu hoặc các lệnh rẽ
nhánh được biểu thị bởi một tập các mã nhị phân và được gọi là tập lệnh. Khối
này có chứa các thành phần chính sau:
- Thanh ghi tích lũy (ký hiệu là A).
- Thanh ghi tích lũy phụ(ký hiệu là B) thường được dùng cho phép nhân
và phép chia.
- Khối logic số học ALU(Arithmetic Logical Unit).
- Từ trạng thái chương trình PSW(Program Status Word).
- Bốn băng thanh ghi.
- Con trỏ ngăn xếp SP(Stack Point) cũng như con trỏ dữ liệu để định địa
chỉ cho bộ nhớ dữ liệu ở bên ngoài.
Ngoài ra khối xử lý trung tâm còn chứa: Thanh ghi đếm chương trình PC,
bộ giải mã lệnh, bộ điều khiển thời gian và logic. Các thanh ghi bên trong CPU
có vai trò hết sức quan trọng. Nhiệm vụ của nó là lưu trữ tạm thời các thông tin,
một đơn vị số học ALU có nhiệm vụ thực hiện các thao tác trên thông tin này,
một đơn vị giải mã lệnh và điều khiển có nhiệm vụ xác định thao tác cần thực
hiện và thiết lập các hoạt động cần thiết để thực hiện thao tác.
Việc tìm nạp một lệnh từ RAM hệ thống là một trong các thao tác cơ bản
nhất mà CPU thực hiện. Việc tìm nạp lệnh được thực hiện theo các bước sau:
- Nội dung của PC được đặt lên bus địa chỉ
- Tín hiệu điều khiển READ được xác lập (chuyển sang trạng thái tích cực).

15
Đồ án II

- Dữ liệu (opcode của lệnh) được đọc từ RAM và đưa lên bus dữ liệu.
- Opcode được chốt vào thanh ghi lệnh bên trong CPU.
- PC được tăng để chuẩn bị tìm nạp lệnh kế từ bộ nhớ.
Giai đoạn thực thi lệnh bao gồm việc giải mã opcode và tạo ra các tín hiệu
điều khiển, các tín hiệu này điều khiển việc xuất nhập giữa các thanh ghi nội với
ALU và thông báo để ALU thực hiện thao tác đã được xác định. Do các thao tác
có tầm thay đổi rộng, phạm vi cho các giải thích vừa nêu trên có phần bị giới hạn
và chỉ được áp dụng cho các thao tác đơn giản.
Một chuỗi các lệnh được kết hợp để thực hiện một công việc có ý nghĩa được
gọi là một chương trình hay phần mềm. Mức độ mà những công việc được thực
hiện đúng và có hiệu quả phần lớn được xác định bởi chất lượng của phần mềm,
không phải bởi sự phức tạp của CPU. Vậy thì các chương trình điều khiển CPU
trong khi làm việc đôi khi dẫn đến sai lầm, chính là do nhược điểm của người
viết chương trình.
Sau khi được reset thì CPU bắt đầu làm việc ở địa chỉ 0000h, là địa chỉ đầu
được ghi trong thanh ghi chứa chương trình PC và sau đó thanh ghi này tăng lên
1 đơn vị và chỉ đến các lệnh tiếp theo của chương trình.
* Bộ tạo dao động:
Khối xử lý trung tâm nhận trực tiếp xung nhịp từ bộ tạo dao động được lắp
thêm vào, linh kiện phụ trợ có thể là một khung dao động làm bằng tụ gốm hoặc
thạch anh. Ngoài ra còn có thể đưa một tín hiệu giữ nhịp từ bên ngoài vào. Khi
sử dụng thạch anh thì tần số tối đa của thạch anh mà chúng ta phải chú ý đến là
24MHz, thông thường chúng ta dùng thạch anh có tần số 11,0592MHz để làm
giảm thiểu tới mức tối đa những lỗi nhỏ nhất trong quá trình làm việc của nó.
* Khối điều khiển ngắt:
Chương trình đang chạy có thể dừng lại nhờ một khối logic ngắt ở bên trong.
Các nguồn ngắt có thể là do các biến cố bên ngoài, sự tràn của bộ định thời / bộ
đếm, hay cũng có thể là giao diện nối tiếp. Các ngắt đóng một vai trò quan trọng
trong việc thiết kế và thực hiện các ứng dụng của bộ vi điều khiển. Các ngắt cho
phép hệ thống đáp ứng các sự kiện theo cách không đồng bộ. Tất cả các ngắt đều
có thể được thiết lập chế độ làm việc thông qua các hai thanh ghi sau:

16
Đồ án II

IE – Interupt Enable
IP – Interupt Priority
Chương trình xử lý một ngắt được gọi là trình phục vụ ngắt ISR hay quản lý
ngắt. ISR được thực thi nhằm đáp ứng một ngắt và trong trường hợp tổng quát
thực hiện việc xuất nhập đối với một thiết bị. Khi một ngắt xuất hiện việc thực
thi chương trình chính tạm thời bị dừng và CPU sẽ thực hiện rẽ nhánh đến trình
phục vụ ngắt ISR. CPU sẽ thực thi ISR để thực hiện một công việc và kết thúc
việc thực thi này khi gặp lệnh “quay về từ một trình phục vụ ngắt”, chương trình
chính lại tiếp tục tại nơi bị tạm dừng. Ta có thể nói chương trình chính được thực
thi ở phần nền, mức nền còn ISR được thực thi ở mức ngắt.
Có 5 nguyên nhân tạo ra ngắt (gọi tắt là nguyên nhân ngắt) đối với 8051: hai
ngắt do bên ngoài, hai ngắt do bộ định thời và một ngắt do port nối tiếp. 8052 có
thêm nguyên nhân ngắt thứ 6 do bộ định thời được thêm vào, bộ định thời thứ
ba. khi ta thiết lập trạng thái ban đầu cho hệ thống, tất cả các ngắt đều bị vô hiệu
hóa và sau đó chúng được cho phép riêng rẽ bằng phần mềm.
Khi xảy ra hai hay nhiều ngắt đồng thời hoặc xảy ra một ngắt trong khi một
ngắt khác đang được phục vụ, ta có 2 sơ đồ xử lý các ngắt: sơ đồ chuỗi vòng và
sơ đồ hai mức ưu tiên.
* Khối điều khiển và quản lý BUS:
Các khối trong vi điều khiển liên lạc với nhau thông qua hệ thống bus nội bộ
và được điều khiển bởi khối điều khiển và quản lý bus.
Một bus là một tập các dây mang thông tin có cùng một mục đích. Việc truy
xuất tới một mạch xung quanh CPU sử dụng 3 bus: Bus địa chỉ, bus dữ liệu và
bus điều khiển. Với mỗi thao tác đọc hoặc ghi CPU xác định rõ vị trí của dữ liệu
(hoặc lệnh) bằng cách đặt một địa chỉ lên bus địa chỉ, sau đó tích cực một tín
hiệu lên bus điều khiển để chỉ ra thao tác là đọc hay ghi. Thao tác đọc lấy một
byte dữ liệu từ bộ nhớ ở vị trí đã xác định và đặt byte này lên bus dữ liệu. CPU
sẽ đọc dữ liệu và đặt dữ liệu vào một trong các thanh ghi nội của CPU. Với thao
tác ghi , CPU xuất dữ liệu lên bus dữ liệu nhờ vào tín hiệu điều khiển bộ nhớ
nhận biết đây là thao tác ghi và lưu dữ liệu vào vị trí đã được xác định.

17
Đồ án II

Bus dữ liệu mang thông tin giữa CPU và bộ nhớ cũng như giữa CPU và các
thiết bị xuất nhập. Việc cố gắng nghiên cứu bao quát phần lớn được dùng vào
việc xác định loại hoạt động làm mất nhiều thời gian thực thi đáng giá của máy
tính. Hiển nhiên là máy tính sử dụng đến 2/3 thời gian vào việc di chuyển dữ
liệu. Vì đa số các thao tác di chuyển dữ liệu xảy ra giữa một thanh ghi của CPU
với RAM và ROM ngoài, số đường (hay độ rộng) của bus dữ liệu rất quan trọng
đối với hiệu suất tổng thể của máy tính. Giới hạn bởi độ rộng này có dạng cổ
chai: có thể có một lượng rất lớn bộ nhớ trong hệ thống và CPU có thể có khả
năng tính toán rất lớn nhưng việc truy xuất dữ liệu-di chuyển dữ liệu giữa bộ nhớ
và CPU thông qua bus dữ liệu thường bi nghẽn như cổ chai vì độ rộng của bus
dữ liệu. Bus dữ liệu là bus hai chiều còn bus địa chỉ là bus một chiều. Các thông
tin địa chỉ luôn luôn được cung cấp bởi CPU trong khi dữ liệu di chuyển theo cả
hai hướng tùy thuộc vào thao tác được dự định là đọc hay ghi.
Bus điều khiển là một hỗn hợp các tín hiệu, mỗi tín hiệu có một vai trò riêng
trong việc điều khiển có trật tự hoạt động của hệ thống. Theo lệ thường các tín
hiệu điều khiển là các tín hiệu định thời được cung cấp bởi CPU để đồng bộ việc
di chuyển thông tin trên các bus địa chỉ và dữ liệu, mặc dù thường có ba tín hiệu
như là clock, read và write đối với việc di chuyển dữ liệu cơ bản giữa CPU và
bộ nhớ. Tên và hoạt động của các tín hiệu điều khiển phụ thuộc nhiều vào CPU
cụ thể.
* Các bộ đếm / bộ định thời (Timer/Counter):
Một bộ định thời thường được sử dụng trong các bộ vi xử lý nói chung và bộ
vi điều khiển nói riêng là một chuỗi các flipflop với mỗi flipflop là một mạch
chia hai, chuỗi này nhận một tín hiệu ngõ vào làm nguồn xung clock. Xung
clock đặt vào flipflop thứ nhất, flipflop này chia đôi tần số xung clock. Ngõ ra
của flipflop thứ nhất này sẽ trở thành nguồn xung clock cho flipflop thứ hai, và
cứ như thế…
Vi điều khiển 8051 có chứa 2 bộ đếm /bộ định thời. Chúng có thể được dùng
đếm thời gian tiến đến 16 bit hoặc dùng để định thời gian trong điều khiển, có
thể dùng để tạo bộ phát tốc độ Baud cho giao diện nối tiếp. Hai bộ định thời
Timer 0 và Timer 1 là các bộ định thời 16 bit nhưng do 8051 có cấu trúc 8 bit

18
Đồ án II

nên mỗi bộ định thời được truy cập dưới dạng 2 thanh ghi độc lập là byte cao và
byte thấp. Tương ứng với mỗi bộ định thời đó là thanh ghi TH0, TL0, TH1, TL1.
Với 8051 nếu chúng ta muốn sử dụng bộ định thời chúng ta cần phải lập trình
lên một thanh ghi được gọi là thanh ghi chế độ định thời TMOD, từ thanh ghi
này chúng ta sẽ chọn sử dụng bộ định thời nào: Timer1 hay là Timer2. Thanh
ghi này đượ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 động chế độ hoạt động của bộ định thời. Thanh ghi TCON là thanh
ghi điều khiển định thời nó được dùng bất hoặc tắt bộ định thời.
Sau đây là hai hoạt động chính của bộ định thời trong 8051 được sử dụng, và
tất cả các họ 8051 đều sử dụng hai hoạt động này:
+ Định thời một khoảng thời gian:
Với hoạt động định thời thì nguồn xung clock của bộ định thời do mạch dao
động bên trong chip tạo ra. Một mạch chia 12 tầng được thêm vào để giảm tần
số xung clock đến một giá trị xác định thích hợp với hầu hết các ứng dụng. Lúc
này bộ định thời được dùng để định thời trong một khoảng thời gian. Các thanh
ghi định thời TLx, THx đếm lên với tần số xung clock bằng 1/12 tần số của
mạch dao động trên chip. Bộ định thời sẽ tràn sau một số xung clock cố định phụ
thuộc vào giá trị ban đầu nạp cho các thanh ghi định thời.
+ Đếm sự kiện:
Lúc này bộ định thời được cung cấp xung clock từ một nguồn tạo xung bên
ngoài. Trong đa số các ứng dụng, nguồn xung clock này cung cấp cho bộ định
thời một xung dựa trên việc xảy ra một sự kiện-bộ định thời bấy giờ đếm sự
kiện. Số các sự kiện được xác định trong phần mềm bằng cách đọc thanh ghi
định thời, giá trị 16 bit trong các thanh ghi này tăng theo mỗi sự kiện. Hai chân
của port 3 là P3.4 và P3.5 bây giờ trở thành ngõ vào xung clock cho các bộ định
thời. Chân P3.4 là ngõ vào xung clock cho bộ định thời 0, còn chân P3.5 là ngõ
vào xung clock của bộ định thời 1.
Trong các ứng dụng đếm sự kiện các thanh ghi định thời tăng mỗi khi xảy ra
chuyển trạng thái từ 1 xuống 0 ở ngõ vào T0 hoặc T1 (Tx). Ngõ vào Tx này
được lấy mẫu trong suốt thời gian S5P2 của mỗi một chu kỳ máy, vậy thì ngõ
vào sẽ ở mức cao trong một chu kỳ và mức thấp trong chu kỳ kế tiếp, số đếm

19
Đồ án II

được tăng. Giá trị mới xuất hiện trong các thanh ghi định thời trong suốt thời
gian S3P1 của chu kỳ tiếp theo chu kỳ phát hiện sự chuyển trạng thái. Từ đó ta
thấy phải mất 2 chu kỳ máy để nhận biết sự chuyển trạng thái từ 1 xuống 0, tần
số cực đại của nguồn xung clock bên ngoài là 500KHz.

Thạch anh

On chip
Oscillator
÷12 Timer
Clock
Chân T0
hoặc chân
T1
0= Up
1= Down
C/T

Hình 2.4: Nguồn xung clock

* Các cổng vào ra I/O:


Vi điều khiển 8051 có bốn cổng vào/ra từ port 0 đến port 3, mỗi cổng chứa 8
bit, độc lập với nhau. Các cổng này có thể được sử dụng cho những mục đích
điều khiển rất đa dạng. Ngoài chức năng chung một số cổng còn đảm nhận thêm
một số chức năng đặc biệt khác.
* Giao diện nối tiếp:
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ làm
việc độc lập với nhau. Bằng cách đấu nối các bộ đệm thích hợp, ta có thể hình
thành một cổng nối tiếp RS-232 đơn giản. Tốc độ truyền qua cổng nối tiếp có thể

20
Đồ án II

đặt trong một vùng rộng phụ thuộc vào một bộ định thời và tần số dao động
riêng của thạch anh.
Bên trong chip 8051 có một port nối tiếp hoạt động ở một vài chế độ trên một
tầm tần số rộng. Chức năng cơ bản của port nối tiếp là thực hiện việc chuyển đổi
dữ liệu song song thành nối tiếp khi phát và chuyển đổi dữ liệu từ nối tiếp thành
song song khi thu. Đặc trưng của port nối tiếp là hoạt động song công nghĩa là
có khả năng thu và phát đồng thời. Ngoài ra port nối tiếp còn có một đặc trưng
khác, việc đệm dữ liệu khi thu của port này cho phép một ký tự được nhận và
lưu trong bộ đệm thu trong khi ký tự tiếp theo được nhận vào. Nếu CPU đọc ký
tự thứ nhất trước khi ký tự thứ hai được nhận đầy đủ, dữ liệu sẽ không bị mất.
Hoạt động nối tiếp sử dụng đến hai thanh ghi chức năng đặc biệt SBUF và
SCON để truy xuất port nối tiếp. Bộ đệm của port nối tiếp SBUF có địa chỉ byte
là 99h, trên thực tế bao gồm hai bộ đệm. Việc ghi lên SBUF sẽ nạp dữ liệu để
phát và việc đọc SBUF sẽ truy xuất dữ liệu đã nhận được. Điều náy có nghĩa là
ta có hai thanh ghi riêng rẽ và phân biệt. Thanh ghi điều khiển port nối tiếp
SCON có địa chỉ byte là 98h, là thanh ghi được định địa chỉ từng bit, nó có chứa
các bit trạng thái và các bit điều khiển. Các bit điều khiển sẽ thiết lập chế độ hoạt
động cho port nối tiếp còn các bit trạng thái chỉ ra sự kết thúc việc thu hoặc phát
một ký tự. Các bit trạng thái được kiểm tra bởi phần mềm hoặc được lập trình để
tạo ra ngắt.
* Bộ nhớ chương trình:
Bộ nhớ chương trình thường là ROM, bộ nhớ chương trình được sử dụng để
cất giữ chương trình điều khiển hoạt động của vi điều khiển. Bộ nhớ ROM có
một đặc trưng là không bị mất đi khi bị mất điện. Chương trình được ghi vào
trên ROM là do người sản xuất ghi vào chúng ta không thể can thiệp được vào.
* Bộ nhớ số liệu:
Bộ nhớ số liệu thường là bộ nhớ RAM, bộ nhớ số liệu dùng để cất giữ các
thông tin tạm thời trong quá trình vi điều khiển làm việc. Đây là bộ nhớ truy xuất
ngẫu nhiên dung để lưu trữ chương trình trong quá trình làm việc. Nó sẽ bị mất
dữ liệu khi mất điện.
2.2.2. Tổ chức bộ nhớ của 8051.

21
Đồ án II

Tất cả các vi điều khiển thuộc họ 8051 đều được phân chia bộ nhớ thành hai
vùng địa chỉ cho bộ nhớ dữ liệu và bộ nhớ chương trình. Sự phân chia logic giữa
bộ nhớ dữ liệu và bộ nhớ chương trình cho phép truy nhập bộ nhớ dữ liệu bằng 8
bit địa chỉ giúp cho việc lưu trữ và thao tác dữ liệu nhanh hơn. Tuy nhiên chúng
ta cũng có thể sử dụng địa chỉ bộ nhớ dữ liệu 16 bit thông qua thanh ghi DPTR.
Do đó có thể chứa được 64K=65536 ô nhớ mỗi loại.
Bộ nhớ onchip của 8051 gồm có 4 Kbyte bộ nhớ chương trình (ROM,
EPROM, EEPROM hoặc Flash tùy loại) và 128 byte bộ nhớ dữ liệu (RAM). 4
Kbyte bộ nhớ chương trình on - chip nằm trong không gian địa chỉ 64 Kbyte
dành cho bộ nhớ chương trình (thuộc dải địa chỉ từ 0x0000 đến 0x0FFF).
Ngược lại 128 byte RAM onchip lại không nằm trong không gian địa chỉ 64
Kbyte dành cho bộ nhớ dữ liệu. Ta có thể tưởng tượng không gian bộ nhớ
chương trình là một chiếc thùng được lấp đầy 1/16 dung tích bởi 4 Kbyte bộ nhớ
onchip, còn không gian bộ nhớ dữ liệu là một thùng to dung tích 64 Kbyte rỗng
hoàn toàn và có một hộp nhỏ dung tích 128 byte (Địa chỉ từ 0x00 đến 0x7F) nằm
riêng rẽ bên cạnh.

Phần không Phần không gian


gian địa chỉ cho địa chỉ cho bộ
bộ nhớ chương nhớ dữ liệu
trình bằng 64 K ( Hoàn toàn
64 K
Byte trừ đi bộ trống rỗng 64K
Byte
nhớ on - chip Byte dành cho
bộ nhớ dữ liệu
ghép thêm bên
ngoài nếu có
Bộ nhớ on - chip
Bộ nhớ SRAM

Dung lượng
tùy loại chip

22
Đồ án II

Hình 2.5: Cấu trúc bộ nhớ 8051


Bộ nhớ chương trình là loại bộ nhớ chỉ cho phép đọc, không cho phép ghi.
Một số vi điều khiển được tích hợp sẵn bộ nhớ chương trình bên trong với dung
lượng khoảng 4kbyte hay 8kbyte, số còn lại phải sử dụng bộ chương trình mở
rộng mà quá trình truy nhập được thực hiện thông qua sự điều khiển bằng tín
hiệu PSEN.
Tuy nhiên vi điều khiển 8051 cho phép chúng ta sử dụng đến 64 kbyte bộ
nhớ chương trình bằng cách sử dụng cả bộ nhớ chương trình bên ngoài và bên
trong.
Bộ nhớ dữ liệu chiếm giữ vùng địa chỉ phân chia của bộ nhớ chương trình.
Dung lượng của bộ nhớ dữ liệu có thể mở rộng lên đến 64 kbyte. Trong quá
trình truy nhập bộ nhớ số liệu, CPU phát ra các tín hiệu đọc và tín hiệu viết số
liệu thông qua các chân RD và WD.
Chúng ta có thể kết hợp bộ nhớ chương trình mở rộng với bộ nhớ số liệu mở
rộng bằng cách cho hai tín hiệu RD và PSEN qua một cổng logic AND, lối ra
của cổng này sẽ tạo tín hiệu đọc cho bộ nhớ mở rộng.

Thân chương trình 0x0FFF


( Chương trình
chính, chương trình
con, chương trình
xử lý ngắt, bảng các
hằng số….)

Véc tơ ngắt thứ n 0x0030

Véc tơ ngắt thứ 1 0x0003

Địa chỉ reset 0x0000

23
Đồ án II

Hình 2.6: Bộ nhớ chương trình 8051


* Bộ nhớ chương trình:
Sau khi reset CPU bắt đầu thực hiện chương trình từ địa 0000h. Vùng đầu
của bộ nhớ chương trình là vùng chứa các vecter ngắt, mỗi ngắt được phân chia
một vùng địa chỉ cố định trong bộ nhớ chương trình. Khi xuất hiện ngắt , CPU sẽ
nhảy tới địa chỉ này, đây cũng là địa chỉ đầu của chương trình con phục vụ ngắt.
Các vector ngắt cách nhau 8 byte, vì vậy nếu chương trình con phục vụ ngắt quá
dài(> 8 byte) thì tại vector ngắt ta phải đặt một lệnh nhảy không điều kiện tới
vùng địa chỉ khác chứa chương trình con phục vụ ngắt.
* Bộ nhớ dữ liệu:
Chúng ta có thể dùng tới 64 kbyte bộ nhớ số liệu ngoại vi. Độ rộng bus địa
chỉ của bộ nhớ số liệu ngoài có thể là 8 bit hoặc 16 bit. Bus địa chỉ rộng 8 bit
thường được sử dụng để liên kết với một hoặc nhiều đường vào ra khác để định
địa chỉ cho RAM theo trang. Trong trường hợp bus địa chỉ rộng 16 bit, cổng Port
2 sẽ phát ra 8 bit địa chỉ cao còn cổng Port 1 sẽ phát 8 bit địa chỉ thấp. Bằng cách
này ta có thể truy nhập trực tiếp lên bộ nhớ dữ liệu ngoài với độ lớn tối đa là 64
kbyte.
Bộ nhớ số liệu được chia ra làm 3 vùng:
- 128 byte cao
- 128 byte thấp
- Vùng dành cho các thanh ghi chức năng đặc biệt SFR
Địa chỉ của bộ nhớ số liệu trong luôn là 8 bit, và có thể quản lý được 256
byte bộ nhớ. Tuy nhiên trên thực tế cách định địa chỉ của bộ nhớ RAM trong có
thể quản lý tới 384 byte.

24
Đồ án II

Hình 2.7: Bộ nhớ dữ liệu RAM 8501


2.2.3 Các đặc trưng nổi bật của họ 8051
Họ vi điều khiển 8051 là một chip sử lý được sử dụng khá phổ biến hiện nay,
nó có một số các đặc trưng nổi bật sau đây:
-Bộ xử lí 8 bit (với thao tác trên từng bit riêng rẽ) phù hợp cho các ứng dụng
để điều khiển.
-Không gian địa chỉ nhớ chương trình ngoài (ROM) có thể tới 64K.
-Không gian địa chỉ nhớ dữ liệu ngoài (RAM) có thể lên tới 64K.
-4K byte ROM trong.
-128 byte RAM trong.
-Mạch giao tiếp nối tiếp với 32 đường địa chỉ I/O phân biệt, hai chiều.
-Hai bộ đếm/định thời 16 bit.
-UART song công lập trình được.

25
Đồ án II

-Cấu trúc 6 nguồn/5vecter ngắt với hai mức ưu tiên.


-Đồng hồ giữ nhịp bên trong chip.
-Thời gian xử lí lệnh nhanh.
Các chip điều khiển sau này của 8051 đã được cải tiến lên rất nhiều, có
thêm rất nhiều các đặc tính nổi trội hơn những chip điều khiển cũ, vời khoa học
ngày càng phát triển như hiện nay họ vi điều khiển sẽ chắc chắn còn phát triển
tinh vi hơn nữa vời những đặc trưng nổi trội hết mức có thể.

2.2.4 Các chân của 8051


Ta thấy 32 chân trong số 40 chân của 8051 là dùng cho việc xuất - nhập, nó
tạo lên 4 port 8-bit là Port 0, Port 1, Port 2 và Port 3, ngoài ra nó còn các chân
cấp nguồn là chân 40, 31, chân nối đất là chân 20, chân tạo mạch reset là chân số
9, chân tạo ra mạch dao động gồm chân số 18 và 19 và một vài chân gồm 2 chức
năng nữa như các chân 10,11,12,13,16,17. Chức năng của các chân được trình
bày cụ thể như sau:

Hình 2.8: Hình ảnh và sơ đồ chân của 8051


Hình 2.9: Hình ảnh và sơ đồ chân 8051
+ Port 0:
Là các chân từ 32 đến 39 trên 8051, được kí hiệu là P0.0, P0.1… cho đến
P0.7. Có 2 công dụng. Trong các thiết kế có tối thiểu thành phần port 0 được sử
dụng làm nhiệm vụ xuất / nhập. Trong các thiết kế lớn hơn có bộ nhớ ngoài thì
nó trở thành bus địa chỉ và bus dữ liệu đa hợp. Đây là một port xuất nhập song
hướng cực máng hở 8 bit. Nếu được sử dụng như là một ngõ xuất thì mỗi chân

26
Đồ án II

có thể kéo 8 ngõ vào TTL. Khi mức 1 được viết vào chân của port 0, các chân
này có thể dùng như là các ngõ nhập tổng trở cao. Port 0 cũng nhận các byte
code (byte mã chương trình) khi lập trình Flash, và xuất ra các byte code khi
kiểm tra chương trình. Cần phải có các điện trở pullup bên ngoài khi thực hiện
việc kiểm tra chương trình, các điện trở này thường lấy giá trị định mức là 10000
Ôm.
+ Port 1:
Port 1 chỉ có một công dụng là xuất/nhập, các chân số 1 đến 8 trên 8051. Các
chân của port 1 được kí hiệu là P1.0, P1.1,…, P1.7 và được dùng để giao tiếp với
thiết bị bên ngoài khi có yêu cầu. Chỉ được sử dụng để giao tiếp với các thiết bị
ngoại vi mà không có chức năng nào khác nữa. Nó là một port xuất/nhập song
hướng 8 bit có các điện trở pullup bên trong. Các bộ đếm ngõ ra của port 1 có
thể kéo hoặc cung cấp 4 ngõ nhập TTL. Khi mức 1 được viết vào các chân của
port1, chúng được kéo lên cao bởi các điện trở pullup nội và có thể được dùng
như là các ngõ nhập. Nếu đóng vai trò là ngõ nhập các chân của port 1 sẽ cấp
dòng IIL do các điện trở pullup bên trong.
+ Port 2:
Là các chân từ số 21 đến 28 trên 8051, kí hiệu các chân là P2.0, P2.1, …
P2.7. Có 2 công dụng, hoặc làm nhiệm vụ xuất/ nhập hoặc là byte địa chỉ cao
của bus địa chỉ 16 bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các
thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài. Port 2 cũng có điện trở
pullup ở bên trong. Các bộ đệm ngõ ra của port 2 có thể kéo hoặc cung cấp 4
ngõ vào TTL. Khi các mức 1 được viết vào các chân của port 2 thì chúng được
dùng như các ngõ vào. Khi được dùng như các ngõ vào các chân của port 2 cũng
cung cấp dòng IIL do các điện trở trong.
+ Port 3:
Các chân số 10 đến số 17 trên 8051, kí hiệu là P3.0, P3.1…P3.7 có 2 công
dụng. Dùng làm nhiệm vụ xuất / nhập các giá trị, dữ liệu vào ra của IC và khi
không làm nhiệm vụ này thì mỗi chân của port 3 còn đảm nhiệm thêm các chức
năng riêng như sau:
P3.0(RxD)- Chân nhận dữ liệu của port nối tiếp

27
Đồ án II

P3.1(TxD)- Chân phát dữ liệu của port nối tiếp


P3.2(INT0)- Ngõ vào ngắt ngoài 0
P3.3(INT1)- Ngõ vào ngắt ngoài 1
P3.4(T0)- Ngõ vào của bộ định thời/đếm 0
P3.5(T1)- Ngõ vào của bộ định thời/đếm 1
P3.6(WR)- Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7(RD)- Điều khiển đọc bộ nhớ dữ liệu ngoài
+ Chân PSEN:
Là chân cho phép bộ nhớ chương trình.8051 cung cấp cho ta 4 tín hiệu điều
khiển bus, chân PSEN là chân số 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, nó thường được nối với chân cho phép xuất OE
của ROM để cho phép đọc các byte lệnh. Các mã nhị phân của chương trình hay
opcode (mã thao tác) được đọc từ EP-ROM, qua bus dữ liệu và được chốt vào
thanh ghi lệnh IR của 8051 để được giải mã. Tín hiệu PSEN ở logic 0 trong xuốt
thời gian tìm -nạp lệnh. Khi thực thi một chương trình chứa ở ROM nội thi
PSEN ở mức logic 1.
+ Chân ALE:
Đây là chân cho phép chốt địa chỉ. Trên 8051 đây là chân số 30, nó là một
chân để giải đa hợp bus dữ liệu và bus địa chỉ. Chân ALE xuất tín hiệu để chốt
địa chỉ vào một thanh ghi ngoài trong suốt 1/ 2 chu kì của 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. Được dùng làm
xung clock cho hệ thống. Chân ALE có tần số bằng 1/6 tần số của mạch dao
động bên trong chip đ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. Nếu mạch giao động có tần số 12MHz, tín hiệu ALE có tần
số 2MHz. Ngoại lệ duy nhất là trong thời gian thực thi lệnh MOVX, thì một
xung ALE sẽ bị bỏ qua. Chân ALE còn được dùng để nhận xung ngõ vào lập
trình cho EPROM trên chip điều khiển họ 8051 này.
+ Chân EA:
Chân số 31, là chân truy xuất ngoài được nối vào 5V hoặc đất GND (logic 0).
Khi nối vào 5V thì thực thi chương trình trong ROM nội. Nếu chân này nối đất
thì chương trình cần thực thi chứa ở bộ nhớ ngoài. Các phiên bản của họ 8051

28
Đồ án II

sau này còn sử dụng chân EA làm chân nhận điện áp cấp điện 21V cho việc lập
trình EPROM nội (nạp EPROM).

+ Chân RESET:
Là chân số 9, ngõ vào RST là ngõ vào xóa chính của 8051 dùng để 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 ở logic 1 tối thiểu hai chu kì máy, các thanh ghi bên trong 8051 sẽ
được nạp các giá trị thích hợp cho việc khởi động lại hệ thống.
+ Các chân XTAL1 và XTAL2:
Mạch giao động bên trong chip 8051 được ghép với thạch anh bên ngoài qua
các chân này. Đó là các chân số 18 và 19.
Các tụ ổn định cũng được chọn theo yêu cầu, tần số thạch anh là 12MHz,
16MHz…tụ gốm có giá trị từ 27 đến 33pF, thường chọn là 33pF để ổn định làm
việc cho thạch anh.
Ngoài mạch tạo dao động bằng thạch anh chúng ta cũng có thể tao một mạch
dao động dùng cổng logic.

Hình 2.9: Mạch tạo dao động dùng cổng lô-gic

29
Đồ án II

2.2.5 Các thanh ghi của họ 8051


+ Thanh ghi điều khiển chương trình(PSW):
CY AC F0 RS1 RS0 OV - P

Đây là một thanh ghi 8 bit. Được đánh địa chỉ từng bit, với tính năng của
từng bit như sau:
CY(PSW.7)- Đây là cờ nhớ CY, cò này được thiết lập mỗi khi có nhớ từ bit
D7 và là kết quả của lệnh cộng hoặc lệnh trừ 8 bit. Có thể thiết lập trực tiếp cờ
CY lên 1 hoặc xóa về 0 bằng lệnh “setb C” và “clr C”, hay nói cách khác là
“thiết lập cờ nhớ” và “xóa cờ nhớ”.
AC(PSW.6)- Cờ nhớ phụ(dùng trong các lệnh BCD), cờ này báo có nhớ từ bit
D3 sang D4 ở phép cộng ADD hoặc trừ SUBB. Cờ này được các lệnh số học mã
BCD sử dụng.
F0(PSW.5)- Cờ 0(dùng trong các mục đích do người lập trình)
RS1(PSW.4)- Chọn dãy thanh ghi bit1
RS0(PSW.3)- Chọn dãy thanh ghi bit0
OV(PSW.2)- Cờ tràn, cờ này đượ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. Nhìn chung cờ nhớ được
dùng để phát hiện lỗi trong các phép tính số học không dấu còn cờ tràn được
dùng để phát hiện ra lỗi trong các phép tính số học có dấu.
P(PSW.0)- Cờ parti hay 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 nếu
chứa một số lẻ bit 1 thì P = 1.
Cách chọn dãy thanh ghi: Ta tiến hành lập trình cho các bit RS1 và RS0 để
nhận được các giá trị tương ứng như sau:
RS1 RS0 Băng thanh ghi Địa chỉ
0 0 Băng 0 Từ 00h đến 07h
0 1 Băng 1 Từ 08h đến 0Fh
1 0 Băng 2 Từ 10h đến 17h
1 1 Băng 3 Từ 18h đến 1Fh

Hình 2.10: Bảng lựa chọn thanh ghi

30
Đồ án II

+ Thanh ghi chế độ định thời TMOD:


Cả hai bộ định thời Timer 0 và Timer 1 đều dùng chung một thanh ghi được
gọi là TMOD để thiết lập các chế độ khác nhau của bộ định thời. Thanh ghi
TMOD là thanh ghi 8 bit gồm có 4 bit thấp dùng cho bộ định thời Timer 0 và 4
bit cao dành cho Timer 1. Trong đó 2 bit thấp của chúng dùng để thiết lập chế độ
cho bộ định thời còn 2 bit cao dùng để xác định phép toán. Thanh ghi TMOD
không được định địa chỉ từng bit nhưng điều này không cần thiết, 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
động chế độ hoạt động của bộ định thời.
GATE C/T M1 M0 GATE C/T M1 M0

Ta xét 4 bit cao của thanh ghi TMOD dùng cho bộ định thời Timer 1, 4 bit
thấp của thanh ghi này dùng cho bộ định thời Timer 0 là tương tự.
GATE- Điều khiển cổng khi được thiết lập. Bộ định thời / bộ đếm được mở
chỉ khi chân INTx cao và chân điều khiển TRx được lập. Nếu GATE được xóa
bộ định thời được mở khi TRx được lập.
C/T- Là bit dùng để xác định bộ định thời được sử dụng làm bộ tạo trễ hay bộ
đếm sự kiện. Nếu bit C/T = 0 thì đó là bộ tạo trễ, nguồn đồng hồ của chế độ này
là tần số của thạch anh. Khi C/T = 1 thì nó được sử dụng làm bộ đếm.
Các bit M1, M0 là các bit chọn chế độ 0, 1, 2 của bộ định thời Timer 1 &
Timer 0.
M1 M0 Chế độ

0 0 0

0 1 1

1 0 2

1 1 3

Hình 2.11: Bảng chọn chế độ định thời

31
Đồ án II

Chế độ 0: Là chế độ định thời 13 bit cung cấp khả năng tương thích với bộ vi
điều khiển tiền nhiệm 8048. Chế độ này không được dùng cho những thiết kế
mới. Byte cao của bộ định thời THx được ghép cascade với 5 bit thấp của byte
thấp của bộ định thời TLx để tạo thành một bộ định thời 13 bit. Ba bit cao của
TLx không sử dụng.
Chế độ 1: Là chế độ định thời / bộ đếm 16 bit và nó có cấu hình giống chế độ
định thời 13 bit, chỉ khác ở chỗ bây giờ là bộ định thời 16 bit. Xung clock đặt
vào các thanh ghi định thời cao và thấp kết hợp. Khi có xung clock đến thì bộ
định thời đếm lên: 0000H, 0001H, 0002H,… Một tràn sẽ xuất hiện khi có sự
chuyển số đếm từ FFFFH xuống 0000H, sự kiện này sẽ set cờ tràn bằng 1 và bộ
định thời tiếp tục đếm.
Chế độ 2: Là chế độ định thời / bộ đếm 8 bit tự nạp lại. Byte thấp của bộ định
thời (TLx) hoạt động định thời 8 bit trong khi byte cao của bộ định thời lưu giá
trị nạp lại. Khi số đếm tràn từ FFH xuống 00H, không chỉ cờ tràn của bộ định
thời được set lên 1 mà giá trị trong THx còn được nạp vào TLx, việc đếm sẽ lại
tiếp tục từ giá trị này cho đến khi xảy ra một tràn mới.
Chế độ 3: Chế độ định thời chia tách hay chế độ định thời chia xẻ. Nó có
hoạt động khác nhau cho từng bộ định thời. Bộ định thời 0 ở chế độ này được
chia thành 2 bộ định thời 8 bit hoạt động riêng rẽ là TL0 và TH0, mỗi bộ định
thời sẽ set các cờ tràn tương ứng TF0 và TF1 khi xảy ra tràn. Bộ định thời 1
không hoạt động ở chế độ 3 nhưng có thể được khởi động bằng cách chuyển bộ
định thời này vào một trong các chế độ khác. Giới hạn duy nhất là cờ tràn TF1
không bị ảnh hưởng.
+ Thanh ghi điều khiển định thời(TCON):
Đây là một thanh ghi 8 bit và được định địa chỉ từng bit dùng để điều khiển
hoạt động cho bộ định thời và ngắt nói chung.
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

32
Đồ án II

TF1(TCON.7)- Cờ tràn của bộ định thời 1. Được set bởi phần cứng khi có
tràn, được xóa bởi phần mềm hoặc phần cứng khi bộ xử lý trỏ đến trình phục vụ
ngắt.
TR1(TCON.6)- Là bit điều khiển Timer 1, được set và xóa bởi phần cứng để
Timer 1 hoạt động hoặc ngừng.
TF0(TCON.5)- Cờ tràn của bộ định thời 0. Được set bởi phần cứng khi có
tràn, được xóa bởi phần mềm hoặc phần cứng khi bộ xử lý trỏ đến trình phục vụ
ngắt.
TR0(TCON.4)- Là bit điều khiển Timer 0, được set và xóa bởi phần cứng để
Timer 1 hoạt động hoặc ngừng.
IE1(TCON.3)- Là các bit được 8051 sử dụng để điều khiển ngắt 1 kích phát
sườn xung, đượ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 xóa bởi phần mềm, hoặc phần cứng khi CPU trỏ đến trình phục vụ
ngắt.
IT1(TCON.2)- Cờ ngắt bên ngoài 1( được kích khởi cạnh hoặc mức). Hoạt
động bởi phần mềm tức là cờ này được set hoặc là xóa bởi phần mềm khi xảy ra
cạnh âm (xuống) hoặc mức thấp ở chân ngắt ngoài INT1.
IE0(TCON.1)- Cờ ngắt bên ngoài 0( kích khởi cạnh), hoạt động bởi phần
cứng, tương tự như bit IE1 chỉ khác là tín hiệu lúc này xuất hiện trên chân ngắt
ngoài INT0
IT0(TCON.0)- Cờ ngắt bên ngoài 0( kích khởi cạnh hoặc mức) hoạt động bởi
phần mềm giống với bit IT0 nhưng với tín hiệu tác động và điều khiển xuất hiện
ở chân INT0
+ Các thanh ghi phục vụ ngắt:
Thanh ghi cho phép và không cho phép ngắt IE: Đấy cũng là một thanh ghi
8 bit và nó được định địa chỉ từng bit.
EA - ET2 ES ET1 EX1 ET0 EX0

EA(IE.7)- Đây là bit cho phép hoặc không cho phép ngắt toàn cục.
EA = 0: Thì không ngắt nào được báo nhận.

33
Đồ án II

EA = 1: Thì từng nguồn ngắt sẽ được mở hoặc cấm bằng cách bật hoặc xóa
bit cho phép tương ứng.
IE.6- bit này chưa được sử dụng, là dự phòng cho tương lai.
ET2(IE.5)- Cho phép hoặc cấm ngắt tràn hoặc thu của bộ định thời Timer 2
của 8052.
ES(IE.4)- Cho phép hoặc cấm ngắt do cổng port nối tiếp.
ET1(IE.3)- Cho phép hoặc cấm ngắt tràn của Timer 1.
EX1(IE.2)- Cho phép hoặc cấm ngắt ngoài 1.
ET0(IE.1)- Cho phép hoặc cấm ngắt tràn của Timer 0.
EX0(IE.0)- Cho phép hoặc cấm ngắt ngoài 0.
Thanh ghi xác định mức ưu tiên ngắt IP: Đây là một thanh ghi 8 bit và được
định địa chỉ từng bit.
- - PT2 PS PT1 PX1 PT0 PX0

Hai bit IP.7 và IP.6 chưa được sử dụng.


PT2(IP.5)- Ưu tiên cho ngắt do Timer 2 của 8052.
PS(TP.4)- Ưu tiên cho ngắt do port nối tiếp.
PT1(IP.3)- Ưu tiên cho ngắt do Timer 1.
PX1(IP.2)- Ưu tiên cho ngắt do ngắt ngoài 1.
PT0(IP.1)- Ưu tiên cho ngắt do Timer 0.
PX0(IP.0)- Ưu tiên cho ngắt do ngắt ngoài 0.
+ Thanh ghi điều khiển hoạt động cổng nối tiếp SCON:
Đây là thanh ghi 8 bit được định địa chỉ từng bit một.
SM0 SM1 SM2 REN TB RB8 TI RI

SM0(SCON.7)- Bit 0 chọn chế độ của port nối tiếp.


SM1(SCON.6)- Bit 1 chọn chế độ của port nối tiếp.
SM2(SCON.5)- Bit 2 chọn chế độ của port nối tiếp. Bit này cho phép
truyền thông đa xử lý ở các chế độ 2 và 3. Trong chế độ 2 hoặc 3 nếu SM2 =
1, RI sẽ không được tích cực nếu bit nhận được thứ 9 (RB8) bằng 0. Trong chế

34
Đồ án II

độ 1, nếu SM2 =1, RI sẽ không được tích cực nếu ta không nhận được bit stop
hợp lệ. Trong chế độ 0 thì SM2 = 0.
REN(SCON.4)- Set/ xóa bằng phần mềm để cho phép/không cho phép thu.
TB8(SCON.3)- Bit phát 8. Bit thứ 9 được phát ở các chế độ 2 và 3, được
set/ xóa bởi phần mềm.
RB8(SCON.2)- Bit phát 8. bit thứ 9 nhận được cờ ngắt phát, được xóa bởi
phần mềm.
TI(SCON.1)- Cờ ngắt phát. Cờ này được set bởi phần cứng ở cuối thời gian
phát bit thứ 8 trong chế độ 0 hoặc ở giữa thời gian của bit stop trong các chế độ
khác. Cờ này phải được xóa bởi phần mềm.
RI(SCON.0)- Cờ ngắt thu. Cờ này được set bởi phần cứng ở cuối thời gian
thu bit thứ 8 trong chế độ 0 hoặc ở giữa thời gian của bit stop trong các chế độ
khác. Cờ này phải được xóa bởi phần mềm.
SM0 SM1 Chế Mô tả Tốc độ baud
độ
0 0 0 Thanh ghi dịch Fosc / 12

0 1 1 8 bit UART Thay đổi

1 0 2 9 bit UART Fosc/64 hoặc


32
1 1 3 9 bit UART Thay đổi

Bảng 2.12: Bảng lựa chọn chế độ truyền thông nối tiếp
+ Thanh ghi điều khiển nguồn PCON:
Đây là một thanh ghi 8 bit có địa chỉ byte 87H, không được định địa chỉ từng
bit.
SMOD - - - GF1 GF0 PD IDL

SMOD: Tăng gấp đôi tốc độ baud. Nếu bộ định thời 1 được dùng để tạo

35
Đồ án II

baud và SMOD = 1, tốc độ baud được tăng gấp đôi khi port nối tiếp
được sử dụng ở các chế độ 1, 2 và 3.
GF1: Bit cờ đa mục đích 1
GF0: Bit cờ đa mục đích 0
PD: Bit chế độ nguồn giảm. Việc set bit này bằng 1 tác động đến thao tác
nguồn giảm trong các phiên bản CMOS của 8051.
IDL: Bit chế độ nghỉ. Việc set bit này tác động đến thao tác của chế độ nghỉ
trong các phên bản CMOS của 8051.
Trên đây là giới thiệu sơ lược về chức năng của từng chân của Chip 8501, ta
nhận thấy rằng với khả năng tích hợp cao nên ứng dụng của 8051 trong đời sống
con người là rất rộng lớn. Với đề tài “Sự dụng vi điều khiển 8051 để xây dựng
mạch đo và điều khiển nhiệt độ của thiết bị” mới chỉ ứng dụng, khai thác hết
1 phần khả năng điều khiển, xử ý của 8051, khả năng ứng dụng của 8051 trong
đời sống con người là rất lớn và đó là một thách thức đối với những sinh viên
như bọn em trong việc ứng dụng 8051 trong việc phục vụ nhu cầu tự động hóa
của con người.

36
Đồ án II

CHƯƠNG III: CẢM BIẾN NHIỆT LM35 – BỘ BIẾN ĐỔI


TƯƠNG TỰ SANG SỐ ADC 0804

A. CẢM BIẾN NHIỆT LM35


3.1. Cấu tạo LM35

Hình 3.1: Sơ đồ chân của LM35


Sử dụng cảm biến nhiệt độ bán dẫn thông dụng là vi mạch LM35 của hang
Mation National Semiconductor. Cảm biến nhiệt LM35 là một mạch tích hợp
nhận tín hiệu nhiệt độ từ môi trường bên ngoài sau đó chuyển thành tín hiệu điện
dưới dạng dòng điện hay điện áp. Dựa vào đặc tính rất nhạy của các bán dẫn với
nhiệt độ, tạo ra điện áp hoặc dòng điện tỷ lệ thuận với nhiệt độ tuyệt đối. Đo tín
hiệu điện ta biết được giá trị của nhiệt độ cần đo. Sự tác động của nhiệt độ tạo ra

37
Đồ án II

điện tích tự do và các lỗ trống trong chất bán dẫn. Bằng sự phá vỡ các phân tử,
bứt các electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo
sự xuất hiện các lỗ trống. Làm cho tỷ lệ điện tử tự do và lỗ trống tăng lên theo
quy luật hàm mũ với nhiệt độ.
Chân 1 của LM35 được nối với nguồn 1 chiều dương 5V, chân 2 được nối
với chân số 6 của ADC Vin+, còn chân số 3 được đấu với đất.

Hình 3.2: Hình ảnh thật của LM35


Ngõ ra của LM35 là dạng điện áp thay đổi theo nhiệt độ bên ngoài với độ
nhạy 10mV/10C
Sai số cực đại 1.50C khi nhiệt độ lớn hơn 1000C.
Phạm vi sử dụng: 00 C =< t0C ≤ 1000 C
LM35 độ chính xác cao, tính năng cảm biến nhiệt rất nhạy, tín hiệu ngõ ra
tuyến tính liên tục với những thay đổi của tín hiệu ngõ vào.
Thông số kỹ thuật :
- Tiêu tán công suất thấp.
- Dòng làm việc từ 400A – 5mA, điện áp ngõ ra từ 0V – 1.28V.
- Dòng ngược 15mA, dòng thuận 10mA.
- Sai số cực đại 1.50C khi nhiệt độ lớn hơn 1000C.
- Phạm vi sử dụng: 00 C < t0C ≤ 1000 C
- Độ biến thiên theo nhiệt độ: 10mV / 1oC.
3.2 Dải nhiệt độ và sự thay đổi trở kháng theo nhiệt độ của LM35
Các bộ biến đổi (Transducer) chuyển đổi các đại lượng vật lý ví dụ như nhiệt
độ, cường độ ánh sáng, lưu tốc và tốc độ thành các tín hiệu điện áp hoặc dòng
điện phụ thuộc vào bộ biến đổi mà đầu ra có thể là tín hiệu dạng điện áp, dòng,

38
Đồ án II

trở kháng hay dung kháng. Ví dụ, nhiệt độ được biến đổi thành về các tín hiệu
điện sử dụng một bộ biến đổi gọi là Thermistor (bộ cảm biến nhiệt), một bộ cảm
biến nhiệt đáp ứng sự thay đổi nhiệt độ bằng cách thay đổi trở kháng nhưng đáp
ứng của nó không tuyến tính.
Nhiệt độ (0C) Trở kháng của cảm biến (k)
0 29.490
25 10.000
50 3.893
75 1.700
100 0.817

Hình 3.3: Trở kháng của bộ cảm biến nhiệt theo nhiệt độ.
Mã sản phẩm Dải nhiệt độ Độ chính xác Đầu ra
-55 C to + 150
LM35A + 1.0 C 10 mV/F
C
-55 C to + 150
LM35 + 1.5 C 10 mV/F
C
-40 C to + 110
LM35CA + 1.0 C 10 mV/F
C
-40 C to + 110
LM35C + 1.5 C 10 mV/F
C
LM35D 0 C to + 100 C + 2.0 C 10 mV/F

Hình 3.4: Hướng dẫn chọn loạt các cảm biến nhiệt họ LM35.
3.3. Các bộ cảm biến nhiệt họ LM35.
Loạt các bộ cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác
cao mà điện áp đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius.
Chúng cũng không yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh.
Chúng đưa ra điện áp 10mV cho mỗi sự thay đổi 1 0C. Khối cảm biến nhiệt dùng

39
Đồ án II

LM358 để khuyếch đại điện áp đầu ra của LM35 vì bộ cảm biến nhiệt tạo ra
dòng điện đầu ra rất nhỏ, khi đưa vào ADC sẽ tạo ra sai số lớn vì vậy cần một bộ
khuyếch đại đầu ra của LM35 để đảm bảo bộ ADC sẽ đưa ra +/-10mV cho sự
thay đổi +/-1oC.

Hình 3.5: Sơ đồ khối cảm biến nhiệt độ


* Ưu điểm và nhược điểm của LM35
- Ưu điểm: Rẽ tiền, dễ chế tạo,chống nhiễu tốt, mạch xử lý đơn giản, dễ
ghép nối với các thiết bị khác.
- Khuyết điểm: Không chịu nhiệt độ cao, kém bền, khoảng đo nhiệt còn
hạn chế.
- Thường dùng: Đo nhiệt độ không khí, dùng trong các thiết bị đo, bảo vệ
các mạch điện tử.

40
Đồ án II

B. BỘ BIẾN ĐỔI TƯƠNG TỰ - SỐ ADC0804

3.4: Sơ đồ chân của ADC0804


Chíp ADC0804 là bộ chuyển đổi tín hiệu từ tương tự sang số trong họ các
loạt ADC0804 từ hãng National Semiconductor sản xuất. Nó cũng được nhiều
hãng khác sản xuất, làm việc với điện áp +5V và có độ phân giải là 8 bít.

Hình 3.6: Sơ đồ chân của ADC0804


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 đánh giá 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 ADC0804 thời gian chuyển đổi thay đổi phụ thuộc vào tần số đồng
hồ được cấp tới chân CLK R và CLK IN nhưng không thể nhanh hơn 110s.
Các chân của ADC0804 được mô tả như sau:
1. Chân CS - chọn chíp: Là một đầu vào tích cực mức thấp được sử dụng để
kích hoạt chíp ADC0804. Để truy cập ADC0804 thì chân này phải ở mức thấp.
2. Chân RD -đọc: Đâ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 ADC0804. Khi CS = 0 nếu một xung cao - xuống - thấp được

41
Đồ án II

á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 ra.
3. Chân ghi WR - ghi: 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 ADC0804 bắt đầu quá
trình chuyển đổi. Nếu CS = 0 khi WR tạo ra xung cao - xuống - thấp thì bộ
ADC0804 bắt đầu chuyển đổi giá trị đầu vào tương tự V IN 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 ADC0804.
4. Chân CLK IN và CLK R: Chân CLK IN 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 ADC0804 cũng có một bộ tạo xung đồng hồ. Để sử dụng bộ tạo
xung đồng hồ trong ( cũng còn được gọi là bộ tạo đồng hồ riêng ) của ADC0804
thì các chân CLK IN và CLK R được nối tới một tụ điện và một điện trở.
Trong trường hợp này tần số đồng hồ được xác định bằng biểu thức:
1
f
1,1RC

5. Chân ngắt INTR - ngắt: Hay gọi chính xác hơn là “kết thúc chuyển đổi’.
Đây là chân đầu ra tích cực mức thấp. Bình thường nó ở trạng thái cao và khi
việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu được
chuyển đổi sẵn sàng để lấy đi. Sau khi INTR xuống thấp, ta đặt CS = 0 và gửi
một xung cao 0 xuống - thấp tới chân RD lấy dữ liệu ra của ADC0804.
6. Chân Vin (+) và Vin (-): Đây là các đầu vào tương tự vi sai mà V in = Vin (+)
- Vin (-). Thông thường Vin (-) được nối xuống đất và V in (+) được dùng như đầu
vào tương tự được chuyển đổi về dạng số.
7.Chân VCC: Đây là chân nguồn nuôi +5v, nó cũng được dùng như điện áp
tham chiếu khi đầu vào Vref/2 (chân 9) để hở.
8. Chân Vref/2: Chân 9 là một điện áp đầu vào được dùng cho điện áp tham
chiếu. Nếu chân này hở (không được nối) thì điện áp đầu vào tương tự cho
ADC0804 nằm trong dải 0V đến +5V (giống như chân VCC). Tuy nhiên, có nhiều

42
Đồ án II

ứng dụng mà đầu vào tương tự áp đến V IN cần phải khác ngoài dải 0V đến +5V.
Chân Vref/2 được dùng để thực thi các điện áp đầu vào khác ngoài dải 0V – 5V.
Ví dụ, nếu dải đầu vào tương tự cần phải là 0V đến 4V thì V ref/2 được nối với
+2V.

ADC0804
+5V

20
10k 6
Vin(+) Vcc 18
POT 7 D0
Vin(-) 17
8 D1
16
9 A D2
Vref/2 15 To
10 GN D3
14 IC
D
CLK D4
13
D5
R 12
10k 4
CLK
D6
11 LE
150pF D7
1 in
CS Ds
2 3
RD WR Nomally
19 5 Open
D INTR START

GN
D

Hình 3.7: Sơ đồ kết nối ADC 0804 ở chế độ chạy tự do.


Vref/ 2(V) Vin(V) Step Size (mV)
Hở * 0 đến 5 5/256 = 19.53
2.0 0 đến 4 4/255 = 15.62
1.5 0 đến 3 3/256 = 11.71
1.28 0 đến 2.56 2.56/256 = 10
1.0 0 đến 2 2/256 = 7.81
0.5 0 đến 1 1/256 = 3.90

Bảng 3.8: Điện áp Vref/2 liên hệ với dải Vin.


Ghi chú: - VCC = 5V
- Khi Vref/2 hở thì đo được ở đó khoảng 2,5V
- Kích thước bước (độ phân dải) là sự thay đổi nhỏ nhất mà ADC có thể phân
biệt được.

43
Đồ án II

9. Các chân dữ liệu D0 - D7: Các chân dữ liệu D0 - D7 (D7 là bít cao nhất
MSB và D0 là bít thấp nhất LSB) là các chân đầu ra dữ liệu số. Đây là những
chân được đệm ba trạng thái và dữ liệu được chuyển đổi chỉ được truy cập khi
chân CS = 0 và chân RD bị đưa xuống thấp. Để tính điện áp đầu ra ta có thể sử
dụng công thức sau:
V in
D out 
kich thuoc buoc

Với Dout là đầu ra dữ liệu số (dạng thập phân). V in là điện áp đầu vào tươ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.
10. Chân đất tương tự và chân đất số: Đây là những châ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 V in
tương tự, còn đất số được nối tới đất của chân V cc. 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 một đất. Tuy nhiên, trong thực tế thu đo dữ liệu các chân đất này được
nối tách biệt.
Từ những điều trên ta kết luận rằng các bước cần phải thực hiện khi chuyển
đổi dữ liệu bởi ADC0804 là:
- Bật CS = 0 và gửi một xung thấp lên cao tới chân WR để bắt đầu chuyển
đổi.
- Duy trì hiển thị chân INTR . Nếu INTR xuống thấp thì việc chuyển đổi
được hoàn tất và ta có thể sang bước kế tiếp. Nếu INTR cao tiếp tục thăm dò
cho đến khi nó xuống thấp.
- Sau khi chân INTR xuống thấp, ta bật CS = 0 và gửi một xung cao - xuống
- thấp đến chân RD để lấy dữ liệu ra khỏi chíp ADC0804.
3.5: Phân chia thời gian cho quá trình chuyển đổi tín hiệu
Mạch biến đổi A/D có nhiệm vụ biến đổi điện áp tương tự cảm biến nhiệt
thành tín hiệu số để gửi đến vi điều khiển.

44
Đồ án II

CS

WR
D0 – Data
D7 out

INTR
Start End
conversion conversion
RD

Read
it

Hình 3.9: Phân chia thời gian đọc và ghi của ADC0804.
Để lựac chọn vi mạch A/D người ta thường căn cứ vào 2 thông số chính :

-Độ phân giải hay số bít đầu ra của ADC quyết định đến độ chính xác của bộ biến
đổi,số bít càng lớn sai số lượng tử càng nhỏ .

-Tốc độ được tính bằng số mẫu hoàn thành trong một giây (samples/s),nó tỉ lệ
nghịch với thời gian hoàn thiện việc biến đổi một mẫu.

Trong ứng dụng điều khiển nhiệt độ ,nhiệt độ là một đại lượng biến đổi chậm
nên ta chọn vi mạch biến đổi A/D thông dụng trên thị trường là ADC0804

ADC0804 là bộ A/D 8 bít đủ đáp ứng được yêu cầu về độ chính xác đặt ra.

ADC0804 có đặt điểm sau:

45
Đồ án II

-Đầu ra được đếm bằng các cổng 3 trạng thái nên cụ thể ghép vào bus dữ liệu mà
không cần mạch để dữ liệu ở bên ngoài.

-Thời gian biến đổi cỡ 100 micro/mẫu .

-Không cần chỉnh điểm 0

-Khi điện áp nguồn nuôi là 5V thì tín hiệu đầu vào là 5V

-Tất cả các tín hiệu đều tương thích mức TTL

-Dòng tiêu thụ nhot ,cỡ 1.9mA

Mạch này gồm 2 phần chính :

-Phần tương tự : Với dải nhiệt độ từ 0 độ đến 128 độ thì điện áp ra của LM35 từ
0V đến 1.28V ,điện áp này được đến lối vào IN+ ,cổng lối vào IN- được nối đất .
Với điện áp vào cực đại 1.28V thì điện áp chuẩn Vref được đặt là 0.64V ,việc điều
chỉnh Vref được thực hiện bởi trở vi chỉnh VR

Khi đó nhiệt độ là không độ C thì điện áp IN+ là 0V ,đầu ra Dout là 00000000,vi


điều khiể nhận giá trị là 0

-Phần giao tiếp với vi điều khiển : để thực hiện giao tiếp với vi điều khiển cần các
tín hiệu sau :

+Tín hiệu chọn vi mạch biến đổi tương tự số CS_ADC ,tích cực thấp , được đa từ
mạch giải mã địa chỉ tới. Khi CS_ADC =0 thì ADC0804 được chọn ,chuẩn bị cho
việc đọc số liệu từ ADC

+Tín hiệu ra lệnh cho ADC0804 bắt đầu biến đổi WR_ADC ,tích cực mức
thấp ,được điều khiển trực tiếp bởi vi điều khiển ,khi WR_ADC chuyển từ 1 xuống
thì ADC bắt đầu quá trình biến đổi

+Tín hiệu báo kết thúc biến đổi ADC_OK ,tích cực thấp ,được nối chân
INTR(interrup) của ADC0804 ,mỗi khi ADC0804 hoàn thành việc biến đổi cho một
mẫu nó báo hiệu cho bên ngoài mức logic 0 ở chân này . Tín hiệu này được gửi
tới vi điều khiển để báo cho vi điều khiển biết ADC đã biến đổi xong ,để không

46
Đồ án II

phải hỏi vòng thì tín hiệu này được đa tới một đầu vào ngắt ngoài của vi điều
khiển ,mỗi khi ADC biến đổi xong sẽ gây ra một ngắt vi điều khiển , vi điều khiển
sẽ chuyển sang chương trình con phục vụ ngắt để đọc số liệu từ ADC .

+Tín hiệu đọc số liệu RD_ADC ,tích cực ở mức thấp ,sau khi nhận biết ADC đã
biến đổi xong bởi mức logic 0 ở ADC_OK ,vi điều khiển thực hiện việc lấy số liệu
bằng cách chuyển tín hiệu RD_ADC xuống mức thấp ,tín hiệu này được nối với
chân RD của ADC lúc này các cổng đếm 3 trạng thái ở đầu ra Dout của ADC0804
mở, kết quả biến đổi được đa lên bus dữ liệu .

* Đặc điểm của ADC0804:

- Điện áp cung cấp 5V DC

- Điện áp tín hiệu tương tự từ 0 đến 5V

- Đầu ra là 8 bit dữ liệu

- Có bộ tạo xung Clock trên chip

- Thời gian chuyển đổi là 100us

- Dải điện áp chuyển đổi có thể thay đổi được nhờ chân Vref/2:

+ Khi không điều chỉnh gì Vref/2 thì giá trị của chân này là 2.5V DC , dải
điện áp chuyển đổi từ Vin - đến Vin + là 5V tương ứng với 256 mức ở đầu ra từ
00h đến FFh, khi đó sai số chuyển đổi là +-1 LSB tương ứng là +-10mV.

+ Khi ta đặt điện áp vào chân Vref/2 giảm đi Ví dụ là: 0.64V thì dải điện
áp chuyển đổi từ Vin - đến Vin + sẽ là 0.64*2=1.28V tương ứng với 256 mức ở
đầu ra, khi đó sai số sẽ là +-2.5mV. Nhưng khi đó dải điện áp chuyển đổi sẽ bé.

+ Khi ghép nối với LM35 ta chỉnh sao cho Vref/2 = 1.28V để đạt được 256
mức. Với LM35DZ, chỉ có 101 mức từ 0° C đến 100° C nên không vượt quá 256
mức.

47
Đồ án II

3.6: Ghép nối LM35 với ADC0804

Hình dưới mô tả mạch ADC ứng dụng vi mạch ADC0804 để đo nhiệt độ từ


LM35

Hình 3.10: Sơ đồ mạch biến đổi ADC


 Sơ đồ thời gian hoạt động

48
Đồ án II

Hình 3.11: Sơ đồ thời gian hoạt động của ADC0804

* Sơ đồ thời gian hoạt động ở chân ngắt INTR

49
Đồ án II

Hình 3.12: Sơ đồ hoạt động của chân ngắt


3.7: Một số linh kiện hỗ trợ việc thiết kế và điều khiển mạch khác.
3.7.1 Công tác điện tử C1815
Thuộc dòng NPN đóng khi logic=1

50
Đồ án II

Hình 3.13: Công tác điện tử C1815

3.7.2 IRF 540

Hình 3.14: IRF 540


3.7.3 Led 7 thanh

51
Đồ án II

Hình 3.15: Led Anot chung


Trên thị trường hiện nay có hai loại LED 7 thanh đó là loại chung Anot và
chung Catot, ở bài này em dùng LED 7 thanh có anot chung.
Cấu tạo của nó gồm 8 con LED đơn được ghép với nhau chung anot. Và trên
đó được chia làm 7 thanh tương ứng với A,B,C,D,E,F,G.
3.7.4 Quạt tản nhiệt
Là một quạt gió có chức năng tản nhiệt cho thiết bị, trong đồ án này em dùng
một chiếc quạt chíp của máy tính để mô phỏng tản nhiệt cho mạch.

52
Đồ án II

CHƯƠNG IV: KHẢO SÁT, THIẾT KẾ BÀI TOÁN


4.1 Nhiệm vụ thiết kế
Thiết kế bộ đo và điều khiển tản nhiệt cho thiết bị. Nhiệt độ đo qua LM35
đưa tới bộ biến đổi tương
sang số rồi đến IC 8051. Tại đây IC sẽ chọn kênh đo nhiệt độ sau đó được
tính toán để hiển thị lên Led 7 thanh, nhiệt độ đo khi tăng lên tương ứng tốc độ
của quạt sẽ tăng lên để tản nhiệt cho thiết bị. Nhiệt độ của thiết bị sẽ được đặt
giá trị Min, Max, khi nhiệt độ nhỏ hơn nhiệt độ Min hoặc lớn hơn nhiệt độ nhiệt
độ Max thì thiết bị sẽ tự động ngắt để bảo đảm tính an toàn cho thiết bị.
Vậy yêu cầu đặt ra là :
+ Thiết kế bộ cảm biến nhiệt độ để tạo ra điện áp mẫu đưa vào ADC để điều
chỉnh điện áp tạo ra thang đo hợp lý.
+ Thiết kế bộ chuyển đổi tương tự sang số dùng ADC0804 : Nhiệt độ đo từ
LM35 sẽ được chuyển vào ADC0804 để biến đổi từ dạng tương tự sang số.
+ Thiết kế bộ Vi điều khiển 8051 dùng để xử lý, tính toán, điều khiển hiển
thị nhiệt độ, tốc độ quay của quạt tản nhiệt, và điều khiển tắt thiết bị khi nhiệt độ
không trong phạm vi Min,Max.
+ Thiết kế bộ hiển thị dùng Led 7*4 thanh.
+ Thiết kế quạt điều khiển nhiệt độ.
+ Viết chương trình điều khiển.
+ Thiết kế mạch in và làm mạch thực tế.
4.2 Chức năng từng khối
Nhiệm vụ của từng khối:
- Vi điều khiển: Điều hành mọi hoạt động của hệ thống bao gồm nhận tín
hiệu, xử lý, điều khiển, lưu trữ, tính toán và xuất giá trị lên khối hiển thị để hiển
thị kết quả tín toán, xử lý được.
- Cảm biến nhiệt độ: Đo lường nhiệt độ từ môi trường xung quanh để
chuyển sang giá trị điện áp.
- Bộ chuyển đổi tương tự sang số ADC: Chuyển đổi tín hiệu từ tương tự
sang số để nạp giá trị này cho Vi điều khiển tính toán và xử lý.

53
Đồ án II

- Khối hiển thị: Hiển thị nhiệt độ môi trường và nhiệt độ đặt tại điểm đo
dùng Led 7*4.
- Khối tản nhiệt: Khi nhiệt độ tăng cao, vi điều khiển sẽ điều khiển tăng tốc
độ của quạt để tản nhiệt cho thiết bị.
- Khối báo hiệu: Khi nhiệt độ vượt quá nhiệt độ định mức cho sẵn thì Vi
điều khiển sẽ đưa ra cảnh báo qua loa chip.
4.3 Sơ đồ khối
SƠ ĐỒ KHỐI CỦA MẠCH ĐO NHIỆT ĐỘ DÙNG LM35- ADC0804-
IC 8051- LED 7 THANH 7*4.
Đầu tiên tín hiệu từ LM35 đưa vào ADC0804 để chuyển tín hiệu từ
tương tự sang tín hiệu số để cho vào IC8051 để xử lý. Tại IC 8051 khi nhận tín
hiệu sẽ xử lý, tính toán, lưu trữ để xuất ra Led 7 thanh các giá trị nhận được,
đồng thời cũng so sánh với giá trị nhiệt độ mẫu để đưa tín hiệu cảnh báo ra loa
chip cho người sử dụng biết.

Led 7
thanh
LM35
ADC VI ĐIỀU
0804 KHIỂN
8051
Quạt

54
Đồ án II

4.4 Sơ đồ thuật toán

Bắt
đầu

Nạp giá trị


đầu vào Không

Kiểm tra Không


ADC có làm
việc không?

Đọc giá trị


và đưa vào
IC

IC xử lý tín hiệu và
lưu giá trị tính toán
được cho vào thanh
ghi

Hiển thị kết quả đưa lên


Led 7, và điều khiển tốc
độ quạt

55
Đồ án II

4.5 Phần mềm mô phỏng


4.5.1: Giới thiệu về phần mềm Proteus.
Trong số các các phần mềm mô phỏng thì phần mềm Proteus là công cụ mô
phỏng mạnh nhất, cho nên em dùng Proteus để mô phỏng.
Proteus là bộ phần mềm mô phỏng vi điều khiển, mạch số, ... quan trọng đối
với các bạn sinh viên không có điều kiện mua mạch thực thụ để làm thí nghiệm.
Đôi khi phần mềm này cũng có ích cho những ai muốn test nhanh các sơ đồ
mạch của mình mà lười, hoặc chưa kịp các phần cứng để test.
Phần mềm Proteus là phần mềm cho phép mô phỏng hoạt động của mạch
điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ
vi điều khiển như MCS-51, PIC, AVR, … Proteus là phần mềm mô phỏng mạch
điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh kiện điện tử
thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR, Motorola.
Phần mềm bao gồm 2 chương trình: ISIS cho phép mô phỏng mạch và ARES
dùng để vẽ mạch in. Proteus là công cụ mô phỏng cho các loại Vi Điều Khiển
khá tốt, nó hỗ trợ các dòng VĐK 8051, AVR, PIC, dsPIC, ARM ... các giao tiếp
I2C, SPI, CAN, USB, Ethenet,... ngòai ra còn mô phỏng các mạch số, mạch
tương tự một cách hiệu quả.
Proteus là bộ công cụ chuyên về mô phỏng mạch điện tử.
ISIS đã được nghiên cứu và phát triển trong hơn 12 năm và có hơn 12000
người dùng trên khắp thế giới. Sức mạnh của nó là có thể mô phỏng hoạt động
của các hệ vi điều khiển mà không cần thêm phần mềm phụ trợ nào. Sau đó,
phần mềm ISIS có thể xuất file sang ARES hoặc các phần mềm vẽ mạch in
khác.

56
Đồ án II

Hình: Giao diện chương trình Proteus.


4.5.2 Các thành phần của chương trình
* Thanh trình đơn
Bao gồm các Menu quen thuộc như File, View, Edit,…. Ta có thể thực hiện
hầu hết các lệnh của ISIS tại đây (Trừ các lệnh của thanh công cụ).
* Thanh tác vụ.
Chứa một số lệnh của thanh trình đơn ở dạng Shortcut như New,
Save,Open… và các nút sau

“Làm tươi” màn hình và các chỉnh sửa.

Bật/Tắt lưới cho bản vẽ.

Chọn gốc tọa độ.

Các công cụ phóng to thu nhỏ toàn mạch.

Undo/ Redo.

Cắt ,sao chép, dán.

Các lênh tác động lên đối tượng đã được chọn trước.

Các công cụ chỉnh sửa, tạo thư viện linh kiện.

57
Đồ án II

Bật/ Tắt chế độ mô phỏng trên nền thời gian thực.

Bật tắt chế độ đi dây trong sơ đồ nguyên lý.

Tìm kiếm linh kiện.

Chỉnh sửa thuộc tính chung.

Các công cụ quản lý trang làm việc.

Xuất danh sách linh kiện.


Kiểm tra lỗi mạch điện (ERC).

Liên thông ARES để vẽ mạch in.


* Thanh công cụ.

Component – Thêm linh kiện vào bản vẽ.

Junction Dot – Thêm điểm nối nơi giao nhau của đường dây.

Wire Lable – Gán tên cho đường dây.

Text Script – Thêm Text vào bản vẽ.

Bus – Vẽ đường Bus.

Sub Circuit – Mạch phụ.

Instant Edit Mode – Chỉnh sửa nhanh thuộc tính linh kiện

Inter – Sheet Terminal – Nối đầu cực.

Divice Pin – Vẽ chân linh kiện.

Simulation Graph – Vẽ đồ thị mô phỏng.

Tapr Recorder – Băng ghi.

Gennerator – Các máy phát tín hiệu.

Voltage Probe – Đầu dò điện áp.

Current Probe – Đầu đò dòng điện.

Virtual Instruments – Các thiết bị ảo.

58
Đồ án II

Các công cụ vẽ 2D.


* Các nút mô phỏng.

* Vùng hiển thị.


Hiện thị khái quát vùng làm việc hiện hành, khung màu xanh dương biểu hiện
cho từng bản vẽ, khung xanh lá biểu hiện cho phần bản vẽ đang hiện thị trên vùng
làm việc chính. Khi ta chọn một linh kiện, kí hiệu nguyên lý của nó cũng được
hiển thị lên vùng này.
* Vùng làm việc chính.
Đây là nơi thực hiện toàn bộ các thao tác đẻ hoàn thành bản vẽ.
4.5.3 Sơ đồ nguyên lý

59
Đồ án II

4.5.4 Hình ảnh mô phỏng mạch chạy

60
Đồ án II

61
Đồ án II

4.6 Phần mềm lập trình và Code lập trình


Với họ điều khiển 8051 thì dùng phần mềm lập trình là KeilC có hỗ trợ với
họ 8051 thích hợp cho việc lập trình. Ta có thể làm trình bằng ngôn ngữ C hoặc
Assemberly. Trong mạch đo nhiệt độ cho em sử dụng ngôn ngữ C. Code chương
trình.
4.6.1 Ngôn ngữ lập trình C
* Giới thiệu về ngôn ngữ lập trình C
Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập
niên 1970 bởi Ken Thompson và Dennis Ritchie để dùng trong hệ điều hành
UNIX. Từ dó, ngôn ngữ này đã lan rộng ra nhiều hệ điều hành khác và trở thành
một những ngôn ngữ phổ dụng nhất.
C là một ngôn ngữ lập trình tương đối nhỏ gọn vận hành gần với phần cứng
và nó giống với ngôn ngữ Assembler hơn hầu hết các ngôn ngữ bậc cao. Hơn
thế, C đôi khi được đánh giá như là “có khả năng di động”, cho thấy sự khác
nhau quan trọng giữa nó với ngôn ngữ bậc thấp như là Assembler, đó là việc mã
C có thể được dịch và thi hành trong hầu hết các máy tính, hơn hẳn các ngôn ngữ
hiện tại trong khi đó thì Assembler chỉ có thể chạy trong một số máy tính đặc
biệt. Vì lý do này C được xem là ngôn ngữ bậc trung.
Các chức năng của C:
 Một ngôn ngữ cốt lõi đơn giản, với các chức năng quan trọng chẳng
hạn như là những hàm hay việc xử lý tập tin sẽ được cung cấp bởi các bộ thư
viện các thủ tục.
 Tập trung trên mẫu hình lập trình thủ tục, với các phương tiện lập
trình theo kiểu cấu trúc.
 Một hệ thống kiểu đơn giản nhằm loại bỏ nhiều phép toán không có
ý nghĩa thực dụng.
 Dùng ngôn ngữ tiền xử lý, tức là các câu lệnh tiền xử lý C, cho các
nhiệm vụ như là định nghĩa các macro và hàm chứa nhiều tập tin mã nguồn
(bằng cách dùng câu lệnh tiền xử lý dạng #include chẳng hạn).

62
Đồ án II

 Mức thấp của ngôn ngữ cho phép dùng tới bộ nhớ máy tính qua việc
sử dụng kiểu dữ liệu pointer.
 Số lượng từ khóa rất nhỏ gọn.
 Các tham số được đưa vào các hàm bằng giá trị, không bằng địa chỉ.
 Hàm các con trỏ cho phép hình thành một nền tảng ban đầu cho tính
đóng và tính đa hình.
 Hỗ trợ các bản ghi hay các kiểu dữ liệu kết hợp do người dùng từ
khóa định nghĩa struct cho phép các dữ liệu liên hệ nhau có thể được tập hợp
lại và được điều chỉnh như là toàn bộ.
* Từ khóa

Asm Const Else For Interrupt Return Sizeof Void

Break Continue Enum Goto Long Short Switch Volatile

Case Default Extern Huge Near Static Typedef While

Cdeel Do Far If Pascal Struct Union

Char Double Float Int Register Signed Unsigned

Các từ khóa phải viết bằng chữ thường.

63
Đồ án II

* Kiểu dữ liệu
T Kiểu dữ liệu Kích thước Miền giá trị
T (Type) (Length) (Range)
1 unsigned char 1 byte 0 đến 255
2 char 1 byte -128 đến 127
3 enum 2 byte -32,768 đến 32,767
4 unsigned int 2 byte 0 đến 65,535
5 short int 2 byte -32,768 đến 32767
6 int 2 byte -32768 đến 32767
7 unsigned long 4 byte 0 đến 4,294,967,295
8 long 4 byte -2,147,483,648 đến 2,147,483,247
9 float 4 byte 3.4*10-38 đến 3.4 *1038
1 double 8 byte 1.7*10-308 đến 1.7 *10308
0 long double 10 byte 3.4*10-4932 đến 1.1 *104932
1
1

4.6.2 Chương trình đo và điều khiển nhiệt độ của thiết bị.
#include<at89x52.h>
//#include<math.h>
#define Data P0
sbit L1=P2^4;
sbit L2=P2^5;
sbit L3=P2^6;
sbit L4=P2^7;
sbit rd=P3^0;
sbit wr=P3^1;
sbit intr=P3^2;
sbit set=P3^5;
sbit up=P3^6;

64
Đồ án II

sbit down=P3^7;
sbit relay=P3^3;
sbit led=P3^4;
sbit quat=P2^0;
unsigned char maled[]={0x7e,0x42,0x5d,0x57
,0x63,0x37,0x3f,0x52,0x7f,0x77,0xf1,0xbc,0xc3,0xa9};
unsigned char nd=20,min=10,max=90;
unsigned int dem=0;
//================================================
void delay_ms(unsigned int ms)
{
unsigned char i;
while(ms--)
for(i=0;i<121;i++){};
}
//================================================
void timer1() interrupt 3
{
TR1=0;
TF1=0;
dem++;
if(dem==15)quat=1;
if(dem>=nd+5)
{
quat=0;
dem=0;
}
TH1=0xfc;
TL1=0x18;
TR1=1;
}

65
Đồ án II

//================================================
unsigned char conv()
{
unsigned char t;
wr=0;
wr=1;
while(intr);
rd=0;
t=P1;
rd=1;
return t;
}
//================================================
void display_t(unsigned char x,unsigned char y)
{
Data=~maled[x];
L1=1;
delay_ms(1);
L1=0;
Data=~maled[y];
L2=1;
delay_ms(1);
L2=0;
}
//=================================================
void display_c(unsigned char x,unsigned char y)
{
Data=~maled[x];
L3=1;
delay_ms(1);
L3=0;

66
Đồ án II

Data=~maled[y];
L4=1;
delay_ms(1);
L4=0;
}
//================================================
void quetphim()
{
delay_ms(300);
while(set==0);
while(set==1)
{
display_t(13,max/10);
display_c(max%10,10);
if(up==0)
{
delay_ms(300);
max++;
if(max>90) max=0;
}
if(down==0)
{
delay_ms(300);
max--;
if(max==255) max=90;
}
}
delay_ms(300);
while(set==0);
while(set==1)
{

67
Đồ án II

display_t(12,min/10);
display_c(min%10,10);
if(up==0)
{
delay_ms(300);
min++;
if(min>90) min=0;
}
if(down==0)
{
delay_ms(300);
min--;
if(min==255) min=90;
}
}
delay_ms(300);
while(set==0);
}
//=================================================
void main()
{
unsigned char n,i,min;
unsigned char a[10];
relay=0;
led=0;
quat=0;
TMOD=0x10;
TH1=0xfc;
TL1=0x18;
IE=0x88;
quat=1;

68
Đồ án II

delay_ms(3000);
TR1=1;
i=0;
while(1)
{
a[i]=conv();
i++;
if(i==10)
{
i=0;
nd=a[0];
for(n=0;n<10;n++)
if(nd>a[n]) nd=a[n];
}
for(n=0;n<30;n++)
{
if(set==0) quetphim();
display_t(nd/10,nd%10);
display_c(10,11);
if(nd>max) relay=1;
else relay=0;
if(nd<min) led=1;
else led=0;
}
}}

69
Đồ án II

4.7 Mạch chạy

70
Đồ án II

KẾT LUẬN
Sau một thời gian Tìm hiểu, nghiên cứu, làm việc em đã hoàn thành bản đồ
án với đề tài: “Sự dụng vi điều khiển 8051 để xây dựng mạch đo và điều
khiển nhiệt độ của thiết bị ” Tuy còn gặp nhiều khó khăn, bỡ ngỡ nhưng với
sự nỗ lực của bản thân cộng với sự giúp đỡ nhiệt tình của cô giáo hướng dẫn
Dương Thúy Hường em đã từng bước khắc phục được các khó khăn và sự cố
trong quá trình làm đề tài này.
Sau khi hoàn thành đề tài này em đã củng cố được những kiến thức đã được
các thầy cô trang bị trong các học kỳ qua, đặc biệt là kiến thức về vi điều khiển
đồng thời cũng có cái nhìn thực tế hơn về việc ứng dụng các kiến thức đã học
vào trong cuộc sống .
Quá trình nghiên cứu, báo cáo, trình bày đề tài của em không thể tránh khỏi
những thiếu sót, em rất mong nhân được ý kiến chỉ dạy của các thầy, các cô và
các bạn để đề tài được hoàn thiện hơn.

71
Đồ án II

72

You might also like