Professional Documents
Culture Documents
ĐỒ ÁN II
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
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
8
Đồ án II
9
Đồ án II
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 đó.
11
Đồ án II
CPU
Cổng
Bộ vi xử lý RAM ROM I/O Timer COM
đa năng Port nối
tiếp
12
Đồ án II
Cổng
I/O Timer COM
nối tiếp
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
CPU
P0 P1 P2 P3 TXD RXD
Địa chỉ/ Dữ
liệu
14
Đồ án II
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
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.
Dung lượng
tùy loại chip
22
Đồ án II
23
Đồ án II
24
Đồ án II
25
Đồ án II
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
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.
29
Đồ án II
Đâ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
30
Đồ án II
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
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
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
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
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.
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.
40
Đồ án II
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
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.
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.
-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
-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 .
- 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
48
Đồ án II
49
Đồ án II
50
Đồ án II
51
Đồ án II
52
Đồ án II
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
Bắt
đầu
Có
IC xử lý tín hiệu và
lưu giá trị tính toán
được cho vào thanh
ghi
55
Đồ án II
56
Đồ án II
Undo/ Redo.
Các lênh tác động lên đối tượng đã được chọn trước.
57
Đồ án II
Junction Dot – Thêm điểm nối nơi giao nhau của đường dây.
Instant Edit Mode – Chỉnh sửa nhanh thuộc tính linh kiện
58
Đồ án II
59
Đồ án II
60
Đồ án II
61
Đồ án II
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
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
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