Tải bản đầy đủ (.doc) (48 trang)

BTL VXL đo nhiệt độ với ds18b20 hiển thị led 7 thanh điều khiển thiết bị

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (855.08 KB, 48 trang )

Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

LỜI NÓI ĐẦU
Kĩ thuật vi xử lý hiện nay rất phát triển, nó đuợc áp dụng rất nhiều vào các lĩnh vực
như tự động hoá, sản xuất công nghịêp và còn nhiều lĩnh vực khác nữa. So với kĩ thuật số
thì kĩ thuật vi xử lý phát triển hơn rất nhìều do nó được tích hợp lại và lập trình để điều
khiển.
Với tính ưu việt của vi xử lý thì trong bài tập lớn này chúng em chỉ tiến hành dùng vi
xử lý để đo và khống chế nhiệt độ, đây chỉ là ứng dụng nhỏ của vi điều khiển.
Với những kiến thức học được từ thầy cô giáo cộng thêm tài liệu tham khảo tuy có thể
hoàn thành đồ án này nhưng không thể tránh khỏi nhiều thiếu sót, chúng em rất mong
nhận đuợc sư dạy bảo của thầy cô và ý kiến đóng góp của các bạn.
Chúng em chân thành cảm ơn Thầy giáo Bùi Văn Huy đã dạy cho chúng em những
kiến thức cơ bản để chúng em có thể hoàn thành bài tập lớn.

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

1


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

Mục lục
Chương 1 : tổng quan về vi xử lí trong đo lường và điều khiển
1.1 Cấu trúc hệ thống đo lường điều khiển có sử dụng Vi xử lí .


1.2 Cấu trúc chung họ 8051.
1.3 Tổng quan về ngôn ngữ C và các hàm , kiểu dữ liệu hay dùng cho việc lập trình cho
Vi điều khiển .
Chương 2: cảm biến 18B20 và giao tiếp 1W
2.1 Cấu tạo và đặc điểm của DS18B20
2.2 Nguyên lý giao tiếp vi điều khiển theo chuẩn 1W
Chương 3: xây dựng ứng dụng trên cơ sở 8051
3.1 Lưu đồ thuật toán
3.2 Chương trình điều khiển xây dựng trên keil C
3.3 Kết quả mô phỏng , thiết kế mạch nguyên lý và thực nghiệm trên mạch thực

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

2


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

ĐỀ TÀI :
*Yêu cầu cần thực hiện:
Hệ thống có thể làm việc theo 2 chế độ tự động hoặc bằng tay (dùng công tắc bật nếu
công tắc Man=1 thì hệ thống làm việc ở chế độ bằng tay ) ;
 Tự động : xây dựng ứng dụng điều khiển điều hòa . Khi nhiệt độ vượt quá 33 0C một
công tắc tơ sẽ đóng lại cấp điện cho điều hòa chạy .
 Bằng tay : Điện được cấp đến điều hòa và việc chạy điều hòa được thực hiện bằng điều
khiển .
Việc đo nhiệt độ được thực hiện bằng DS18B20 ghép nối với 89S52 hiển thị trên Led 7

thanh .

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

3


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

CHƯƠNG I :TỔNG QUAN VỀ VI XỬ LÍ
TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

4


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

1.1 Cấu trúc hệ thống đo lường điều khiển có sử dụng vi xử lí
- Vi xử lí đôi khi còn được gọi là bộ vi xử lý, là một linh kiện điện tử được chế tạo từ các
tranzito thu nhỏ tích hợp lên trên một vi mạch tích hợp hơn. Khối xử lý trung tâm (CPU)
là một bộ vi xử lý được nhiều người biết đến nhưng ngoài ra nhiều thành phần khác trong
máy tính cũng có bộ vi xử lý riêng của nó.


Bộ vi sử lí Intel Core i5

-Vi xử lý có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra
ngoài sau khi đã xử lý. Và chức năng chính của Vi xử lý chính là xử lý dữ liệu, chẳng hạn
như cộng, trừ, nhân, chia, so sánh.v.v... Vi xử lý không có khả năng giao tiếp trực tiếp với
các thiết bị ngoại vi, nó chỉ có khả năng nhận và xử lý dữ liệu mà thôi.
-Để vi xử lý hoạt động cần có chương trình kèm theo, các chương trình này điều khiển
các mạch logic và từ đó vi xử lý xử lý các dữ liệu cần thiết theo yêu cầu. Chương trình là
tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được lưu trữ trong bộ nhớ, công việc
thực hành lệnh bao gồm: nhận lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh sau khi đã
giải mã. Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động
cơ, hiển thị kí tự trên màn hình .... đòi hỏi phải kết hợp vi xử lý với các mạch điện giao
tiếp với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại
vi.
-Bản thân các vi xử lý khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là
một phần của một máy tính, thì hiệu quả ứng dụng của Vi xử lý là rất lớn. Vi xử lý kết
hợp với các thiết bị khác được sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một
lượng lớn các phép tính phức tạp, có tốc độ nhanh. Chẳng hạn như các hệ thống sản xuất
tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt
động phức tạp v.v...
-Chúng ta có thể dùng vi điều khiển để thiết kế bộ điều khiển cho các sản phẩm như: Nhà
thông minh ,tự động điều tiết ánh sáng thông minh (bật/tắt đèn theo thời gian, theo cường
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

5


Trường ĐH Công Nghiệp Hà Nội


Đề tài 5
TỰ ĐỘNG HÓA 3-K10

độ ánh sáng,...), điều khiển các thiết bị từ xa (qua điều khiển, qua tiếng vỗ tay,...) ,điều tiết
hơi ẩm, điều tiết nhiệt độ, điều tiết không khí, gió hay các loại biển quảng cáo nháy chữ....

-Vi xử lí được sử dụng trong đo lường và điều khiển dưới 3 dạng :
+ Máy tính điều khiển (máy vi tính)
+Vi xử lí điều khiển nhúng (còn gọi là vi điều khiển) nghĩa là vi điều khiển là một bộ
phận không thể tách rời của thiết bị được điều khiển
+Bộ điều khiển logic lập trình được (PLC)
-Sử dụng vi xử lí trong hệ thống đo lường điều khiển là tích hợp,ứng dụng của mạch điện
tử ,khoa học công nghệ nhằm giao tiếp thu thập dữ liệu,các bộ chuyển đổi dữ liệu A/D và
D/A điều khiển tuần tự,hệ thống điều khiển số và mạng truyền thông.

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

6


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

-Dưới đây là cấu trúc hệ thống đo lường điều khiển bằng máy tính thông qua vi xử lí :
Máy tính trung tâm
Người
vận
hành


Máy vi tính ( Vi điều khiển)
Giao diện

Tín
hiệu
nhị
phân

Đổi số-TT

Đổi TT-số

Khuếch đại công suất

Tín
hiệu
nhị
phân

Khuếch đại công suất

Cảm biến

Chấp hành

Qúa trình

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh


7


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

1.2 Tổng quan về AT89S52
a, Cấu tạo và chức năng các khối của AT89S52.
1



CPU(

CPU

centralprocessing unit) bao gồm:
0

+ Thanh ghi tích lũy
A;

1

+ Thanh ghi tích lũy
phụ B;

2


+ Đơn vị logic học
(ALU);

3

+

Thanh ghi từ

+

Bốn băng thanh

trạng thái chương trình;
4
ghi;
5

+ Con trỏ ngăn xếp

2

• Bộ nhớ chương
trình( ROM) gồm 8Kbyte Flash.

3




Bộ

nhớ

dữ

liệu( RAM) gồm 256 byte.
4

• Bộ UART, có chức
năng truyền nhận nối tiếp.

5



3

bộ

Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện.
6

• Khối điều khiển
ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong.

7

• Bộ lập trình( ghi
chương trình lên Flash ROM) cho phép người sử dụng có thể nạp các chương trình cho

chíp mà không cần các bộ nạp chuyên dụng.
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

8


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

8

• Bộ chia tần số với
hệ số chia là 12.

9

• 4 cổng xuất nhập
với 32 chân.

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

9


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10


b, Chức năng các chân của AT89S52

+Port 0( P0.0=>P0.7)

Port 0 gồm 8 chân, ngoài chức năng xuất nhập,port 0 còn là bus đa hợp dữ liệu và địa chỉ
( AD0-AD7), chức năng này sẽ được sử dụng khi 89S52 giao tiếp với các thiết bị ngoài có
kiến trúc Bus như các vi mạch nhớ mạch PIO…

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

10


Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

+Port 1( P1.0=>P1.7)
1

Chức năng duy nhất của Port 1 là chức năng xuất nhập cũng như các Port khác. Port1 có
thể xuất nhập theo bit và theo byte.
+Port 2( P2.0=>P2.7)
1

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

11



Trường ĐH Công Nghiệp Hà Nội

Đề tài 5
TỰ ĐỘNG HÓA 3-K10

2

Port 2 ngoài chức
năng là cổng vào/ra như Port 0 và 1 còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ
ngoài.

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

12


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

+Port 3 (P3.0=>P3.7)
1

Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thể
như sau:


Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7

Tên
RXD
TXD
INT0
INT1
T0
T1
/WR
/RD

Chức năng
Dữ liệu nhận cho Port nối tiếp
Dữ liệu truyền cho Port nối tiếp
Ngắt bên ngoài 0
Ngắt ngoài 1
Ngõ vào của Timer/counter0
Ngõ vào của Timer/counter1
Xung ghi bộ nhớ dữ liệu ngoài.
Xung đọc bộ nhớ dữ liệu ngoài.




Chân /PSEN : là chân điều khiển đọc chương trình ở bộ nhớ ngoài.



Chân ALE.:ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động
của vi điều khiển. Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như
7473.
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

13


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện



Đề tài 5
Tự động hóa 3 – K10

Chân /EA. Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay
ngoài. EA=1 thì thực hiện chương trình trong RAM nội. EA=0 thực hiện ở RAM ngoài.



RST( reset) Ngõ vào reset trên chân số 9. khi RST=1 thì bộ vi điều khiển sẽ được
khởi động lại thiết lập ban đầu.




XTAL1, XTAL2 :2 chân này được nối song song với thạch anh tần số max=33 Mhz.
Để tạo dao động cho bộ vi điều khiển.



Vcc, GND : cung cấp nguồn nuôi cho bộ vi điều khiển. cấp qua chân 20 và 40.

1.3 Tổng quan về ngôn ngữ C và các hàm , kiểu dữ liệu hay dùng
cho việc lập trình cho Vi điều khiển
+ Những từ khóa sau đây không được dùng làm tên biến hay tên hàm:
auto, break, case, char, continue, default, do, double, else, extern, float, for, goto, if, int,
long, register, return, short, sizeof, static, struct, switch, typedef, union, unsigned, while.
+ Ngoài ra còn nhưng từ khóa đặc biệt khác như là : void, const, enum, volatige.
* Các kiểu khai báo biến trong C[separator]
Tên biến

Số bit

Số byte

Số byte

char
unsigned char

8
8


1
1

-128 đến -127
0 đến 255

short

16

2

-32769 đến 32767

unsigned short

16

2

0 đến 65535

int

16

2

-32768 đến 32767


unsigned int
long

16
32

2
4

0 đến 65535
2,147,483,648 đến 2,147,483,647

unsigned long

32

4

0 đến 4,294,697,295

+ví dụ : Khai báo một biến là : unsigned char x; biến này là biến kí tự được nhận giá trị từ
0 đến 255
Mặt khác khi khai báo biến ta có thể gán luôn giá trị vào cho biến như unsigned char x=0;
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

14


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện


Đề tài 5
Tự động hóa 3 – K10

và cũng có thể khái báo biến cùng 1 lúc như : unsigned int x,y;
* Lời giải thích:
Tùy theo mặc định trong C không cho phép ta cho các lời giải thích lòng vào với nhau.
+ Lời giải thích dài : Được đặt giữa dấu :/* và */
+ Lời giải thích ngắn : Được đặt sau dấu //
* Biểu thức đơn giản và các câu lệnh gán.
Các biểu thức tính toán và các câu lệnh gắn trong C được quy định sắn chúng ta chỉ việc
áp dụng vào thôi chứ không được sáng tạo.
+ Số học và thao tác bít:
Các biểu thức
+
*
/
%
&
|
^
~
>>
<<

Chức năng
Phép cộng
Phép trừ
Phép nhân
Phép chia

Module toán học hay lấy phần trăm
Phép hội các bit
Phép tuyển các Bit
Phép tuyển có loại trừ (XOR)
Đảo toàn bộ các bit
Dịch trái bit
Dịch phải bít[separator]

Ví dụ : unsigned char x,y,z; x=y+z;

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

15


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

+ Các lệnh Logic:
Các biểu thức
&&
||
!
<
>
<=
>=

==
=
!=
++
-+=
-=

Chức năng
Phép hội Logic (AND)
Phép tuyển Logic (OR)
Phép phủ định(Not)
Phép nhỏ hơn
Phép lớn hơn
Phép nhỏ hơn hoặc bằng
Phép lớn hơn hoặc bằng
Phép bằng
Phép gán giá trị
Phép không bằng hay khác
Phép tăng giá trị lên 1 giá trị
Phép giảm giá trị đi 1 giá trị
Phép tăng giá trị lên n lần
Phép giảm giá trị đi n lần

Ví dụ : if(x!=y) z=0; hay x++, x+=y

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

16



Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

* Thứ tự ưu tiên của các toán tử
Các toán tử khác nhau không cùng 1 mức ưu tiên tức là một số phép tính sẽ được thực
hiện trước. Các toán tử ở dòng 1 có mức ưu tiên hơn dòng 2 và cũng như vậy như các
dòng tiếp theo
Ví dụ : < <== thứ tự của chúng được thực hiện từ trái sang phải tức là từ < ....<==
Chú ý : Có 14 quy tắc ưu tiên trong C chảng hạn toán tử && được thực hiện trước toán tử
|| nhưng sau toán tử <<,..., Chủ yếu nó được thực hiện từ trái sang phải.
* Một số tên hàm thường dùng trong :
Tên hàm
sqpt (x)
exp(x)
log(x)
log10(x)
fabs(x)
floor (x)
fmod(x,y)
sin(x)
cos(x)
x%y

Nội dung
Tính căn bậc 2 của giá trị x
Tính e mũ của giá trị x
Tính logarit cơ số tự nhiên của giá trị x

Tính logarit của cơ số 10 của giá trị x
Trị tuyệt đối của x
Làm tròn giá trị x
Phần dư của phép chia cho x
Tính sin(x)
Tính cos(x)
Lấy phần dư của x chia y
Các giá trị của x, y là số thực

Ví dụ : 16%7 giá trị này là lấy phần dư của 16/7
* Kiểu khai báo thư viện
Chỉ thị #include chỉ cho phép vi xử lý nhận nội dung của tệp khác và nhận chúng vào
chương trình.
Các dạng chung của một chỉ thị bao hàm:
#include / / Tệp bao hàm hệ thống chuẩn
#include"file.h" / / Tệp bao hàm cục bộ
Nếu tệp tiêu đề được đặt trong nháy kép ("") thì tệp là cục bộ và C tìm thấy tệp này trong
các thư mục hiện tại. Nếu tệp được đặt trong () thì nó là tệp hệ thống chuẩn và nó được
tìm thấy trong các thư mục include.
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

17


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10


* Cấu trúc hàm trong C
Hàm dùng để chứa các chỉ thị có thể thực hiện được vào chương trình ngắn gọn.Trong C
có hai kiểu cấu trúc hàm :
+ Hàm trả lại giá trị
Cấu trúc : kieugiatritralaiham tên hàm(Biên truyền vào hàm)
{
Các câu lệnh xử lý ở đây;
}
Trong hàm này thường được sử dụng lệnh return để truyền 1 giá trị ra ngoài hàm. Tất cả
các hàm trừ void đều được sử dụng bằng lệnh return.
ví dụ :
unsigned char biendt(unsigned char x, unsigned char y)
{
x=x+y;
reture x;
}
+ Hàm không trả lại giá trị
Cấu trúc : void ten_ham()
{
Các câu lệnh thực hiện ở đây;
}
kiểu giá trị hàm này cũng dễ hiểu hơn cái này là đặc trưng cho C.
Ví dụ:
void biendt() // Khai bao ham mang ten biendt[separator]
{
unsigned char x,y;
x+=y;
}

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh


18


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

* Mảng trong C
Mảng là được dùng để lưu các nhóm dữ liệu giống nhau. Khuôn dạng mảng 1 chiều:
cấu trúc : kiểu tên[số phần tử ];
Trong đó : Kiểu là kiểu dữ liệu trong C như int, char
tên là tên biến số phần tử là một số nguyên chỉ giá trị lớn nhất của mảng.
Ví dụ : int biendt[3]={0,1,2}; // mảng này gồm 3 phần tử có độ dài là 3
Ngoài ra nó còn mảng nhiều chiều thường được sử dụng mảng 2 chiều và 3 chiều
cấu trúc : kiểu tên [số pt1][số pt2]...[];
ví dụ: unsigned char biendt[20][30];
* Bộ tiền xử lý.
Ngoài kiểu khai báo thư viện trong C thì nó còn câu lệnh #define. Câu lệnh này cho phép
người lập trình định nghĩa trực tiếp các biến hơn thế nữa nó còn cho phép định nghĩa một
maco hay thay thế đơn giản.
Ví dụ:
#define biendt 100
ở trên ta nhận thấy rằng biến biendt được gắn bằng 1 giá trị là 100.
* Cấu trúc có điều kiện IF
Nếu giá trị biểu thức khác không thì câu lệnh sẽ được thực hiện
+Cấu trúc : if (biểu thức) câu lệnh;
hay if(biểu thức)

{
câu lện 1;
câu lệnh 2;
............
Câu lện n;
}
Còn nếu điều kiện sai thì các câu lệnh dưới if sẽ không được thực hiện
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

19


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

Ví dụ :unsigned int i,j;
if(++i>100) j++;
+ Ngoài ra chúng ta còn sử dụng cấu trúc if - else. Nếu biểu thức trong if không đúng thì
nó thực hiện câu lệnh dưới esle
if(biểu thức)
{
câu lệnh 1;
câu lệnh 2;
...............
câu lệnh n;
}
else

{
câu lệnh 1;
câu lệnh 2;
..............;[separator]
câu lệnh n;
}
Chú ý:
-Trong C các biểu thức điều kiện ngoài biểu thức quan hệ có thể là một biểu thức số , nếu
giá trị biểu này bằng 0 sẽ nhận giá trị sai, nếu khác không nhận giá trị đúng
- Trước ELSE mà chỉ có 1 câu lệnh thì kết thúc lệnh phải có dấu ; của lệnh if
- Biểu thức điều kiện phải đặt giữa ()
+ Các điều kiện lồng nhau:
if(biểu thức 1) lệnh 1;
else(biểu thức 2) lệnh 2;
else(biểu thức 3) lệnh 3;
.....

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

20


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

else lệnh n;
* Cấu trúc vòng While

Dạng của nó như sau:
while (điều kiện) statement
while(1) {};
Tạo vòng lặp mãi mãi , rất hay đùng trong lập trình VXL .Chương trình chính sẽ được
viết trong dấu ngoặc.
Vòng lặp do-while
Dạng thức:
do statement while (điều kiện);
do
{
x++; // cho nay cac ban co the viet nhieu cau lenh ,
}
while(x>20)
tăng giá trị của x cho đến khi x > 10
Chức năng của nó là hoàn toàn giống vòng lặp while chỉ trừ có một điều là điều kiện điều
khiển vòng lặp được tính toán sau khi statement được thực hiện, vì vậy statement sẽ được
thực hiện ít nhất một lần ngay cả khi condition không bao giờ được thoả mãn .Như vd
trên kể cả x >20 thì nơ vẫn tăng giá trị 1 lần trước khi thoát nếu x=100 thì tăng x thêm 1
còn không thì giảm x. Nói chung câu lệnh while(1) thường được sử dụng sau void main()
* Cấu trúc for
Vòng lặp for .
Dạng thức:
for (điều kiện 1; điều kiện 2; điều kiện 3) câu lệnh;
và chức năng chính của nó là lặp lại câu lệnh chừng nào condition còn mang giá trị đúng,
như trong vòng lặp while. Nhưng thêm vào đó, for cung cấp chỗ dành cho lệnh khởi tạo
và lệnh tăng. Vì vậy vòng lặp này được thiết kế đặc biệt lặp lại một hành động với một số
lần xác định.
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

21



Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

Cách thức hoạt động của nó như sau:
1, điều kiện 1 được thực hiện. Nói chung nó đặt một giá khí ban đầu cho biến điều khiển.
Lệnh này được thực hiện chỉ một lần.
2, condition được kiểm tra, nếu nó là đúng vòng lặp tiếp tục còn nếu không vòng lặp kết
thúc và lệnh được bỏ qua.
3, câu lệnh được thực hiện. Nó có thể là một lệnh đơn hoặc là một khối lệnh được bao
trong một cặp ngoặc nhọn.
4, Cuối cùng, điều kiện 3 được thực hiện để tăng biến điều khiển và vòng lặp quay trở lại
bước 2.
Phần khởi tạo và lệnh tăng không bắt buộc phải có. Chúng có thể được bỏ qua nhưng vẫn
phải có dấu chấm phẩy ngăn cách giữa các phần. Vì vậy, chúng ta có thể viết for (;n<10;)
hoặc for(;n<10;n++).
Bằng cách sử dụng dấu phẩy, chúng ta có thể dùng nhiều lệnh trong bất kì trường nào
trong vòng for, như là trong phần khởi tạo. Ví dụ chúng ta có thể khởi tạo một lúc nhiều
biến trong vòng lặp:
for ( n=0, m=200 ; n!=m ; n++, m-- )
{
câu lệnh
}
Ví dụ dùng trong vi điều khiển:
void delay(unsigned int t)
{

unsigned int i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
}
* Câu lệnh rẽ nhánh và nhảy
+ Lệnh break.
Sử dụng break chúng ta có thể thoát khỏi vòng lặp ngay cả khi điều kiện để nó kết thúc
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

22


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

chưa được thoả mãn. Lệnh này có thể được dùng để kết thúc một vòng lặp không xác định
hay buộc nó phải kết thúc giữa chừng thay vì kết thúc một cách bình thường. Ví dụ,
chúng ta sẽ dừng việc đếm ngược trước khi nó kết thúc:
+ Lệnh continue.
Lệnh continue làm cho chương trình bỏ qua phần còn lại của vòng lặp và nhảy sang lần
lặp tiếp theo. Ví dụ chúng ta sẽ bỏ qua số 5 trong phần đếm ngược:
+ Lệnh goto.
Lệnh này cho phép nhảy vô điều kiện tới bất kì điểm nào trong chương trình. Nói chung
bạn nên tránh dùng nó trong chương trình C++. Tuy nhiên chúng ta vẫn có một ví dụ
dùng lệnh goto để đếm ngược:
+ Hàm exit.
Mục đích của exit là kết thúc chương trình và trả về một mã xác định. Dạng thức của nó

như sau
void exit (int exit code);
exit code được dùng bởi một số hệ điều hành hoặc có thể được dùng bởi các chương trình
gọi.
Theo quy ước, mã trả về 0 có nghĩa là chương trình kết thúc bình thường còn các giá trị
khác 0 có nghĩa là có lỗi. các lệnh trên mình chủ yếu chỉ dùng lệnh break để thoát khỏi
vòng lặp . Các lệnh khác thường rất ít được sử dụng
*Cấu trúc lựa chọn: switch.
Cú pháp của lệnh switch hơi đặc biệt một chút. Mục đích của nó là kiểm tra một vài giá trị
hằng cho một biểu thức, tương tự với những gì chúng ta làm ở đầu bài này khi liên kết
một vài lệnh if và else if với nhau. Dạng thức của nó như sau:
Code:
switch (bieu thuc)
{
case 0:
câu lệnh;
break;
Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

23


Trường ĐH Công Nghiệp Hà Nội
Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

case 1:
câu lệnh ;

break;
.
.
.
default:
case n: câu lệnh ;break;
Ví dụ của câu lệnh này:
void hienthi(unsigned char x)
{
switch(x)
{
case0:PRT1DR=0x00;break;
case1:PRT1DR=PRT1DR&0xfe;break;
case2:PRT1DR=PRT1DR&0xfd;break;
}
void main()
{
unsigned char n;
for(n=0;n<3;n++)
{
hienthi(n);
delay();
}}

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

24


Trường ĐH Công Nghiệp Hà Nội

Khoa Điện

Đề tài 5
Tự động hóa 3 – K10

CHƯƠNG 2: CẢM BIẾN DS18B20 VÀ
GIAO TIẾP 1W

Đo và điều khiển nhiệt độ dùng DS18B20 hiển thị Led 7 thanh

25


×