Tải bản đầy đủ (.docx) (39 trang)

THIẾT kế MẠCH đo NHIỆT độ dùng IC 8051 + LCD 16x2 có code

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 (717.76 KB, 39 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ
---------------------------------------

BÁO CÁO TỔNG KẾT
TÊN ĐỀ TÀI :
“THIẾT KẾ MẠCH ĐO NHIỆT ĐỘ DÙNG IC 8051”

Giáo viên hướng dẫn: TS. Tống Văn Luyên
Sinh viên thực hiện:
1. Nguyễn Đức Hùng 2.Nguyễn Văn Mận

-

3.Nguyễn Viết Tuyến -

Hà Nội ,2020


MỤC LỤC

2


DANH MỤC CÁC BẢNG BIỂU.
, ĐỒ THỊ.

3



MỞ ĐẦU
1. Tổng quan về đề tài.
Ngày nay lĩnh vực điều khiển đã được ứng dụng rộng rãi trong các thiết bị, sản
phẩm phục vụ cho nhu cầu sinh hoạt hằng ngày của con người như máy giặt,
đồng hồ điện tử,TV ...
Hiện nay có rất nhiều hình thức đo nhiệt độ khác nhau tùy vào cách sử dụng
trong các lĩnh vực khác nhau. Một trong số những hình thức đo nhiệt độ mà có giá
thành tương đối rẻ và khơng quá khó thực hiện là sử dụng IC . Để làm được một
mạch đo điện tử chúng ta có thể dùng Arduino, dùng IC rời, dùng EPROM, dùng vi
điều khiển, hay điều khiển bằng máy tính... Trong Đồ án này em xin trình bày thiết kế
mạch đo nhiệt độ dùng vi điều khiển 8051.

2. Mục tiêu của đề tài.
• Hiểu được cách thực hiện đo nhiệt độ của đề tài.
• Tự thiết kế ra bo mạch đo nhiệt độ dùng 8051.

3. Nội dung nghiên cứu.
• Tìm hiểu về vi điều khiển 8051.
• Xây dựng thuật tốn, mạch in của đề tài.

4. Kết quả đạt được.
• Mạch hoạt động có độ ởn định và chính xác cao.
• Báo cáo tởng kết về phương pháp, quy trình thiết kế.
• Thiết kế phần cứng của board mạch được cài đặt và tài liệu hướng dẫn sử

dụng kèm theo.

4



CHƯƠNG 1.CƠ SỞ LÝ THUYẾT
1.1 Vi điều khiển 8051
1.1.1 Kiến trúc vi điều khiển

Hình 1.1 Cấu tạo IC
Đặc tính

Số lượng

ROM trên chíp

4K byte

RAM

128 byte

Bộ định thời

2

Các chân vào – ra

32

Cởng nối tiếp

1

Nguồn ngắt


6

Bảng 1.1 Cấu tạo vi điều khiển 8051

5


1.1.2 Sơ đồ chân

Hình 1.2 Cấu tạo sơ đồ chân
Chân VCC
Chân số 40 là VCC , có chức năng cấp điện áp nguồn cho chíp. Nguồn điện áp
là+5V.
Chân GND
Chân số 20 là GND, được nối với đất.
Chân XTAL1 và XTAL2
Một bộ dao động thạch anh sẽ được nối tới các chân đầu vào XTAL1 (chân 19)
và XTAL2 (chân

18).

Bộ

dao

động

thạch


anh

được

nối

tới XTAL1 và XTAL2 cũng cần hai tụ gốm giá trị khoảng 30pF
Chân RST
RST là chân số 9 - Reset. Nó là một chân đầu vào có mức tích cực cao (bình
thường ở mức thấp). Khi cấp xung cao tới chân này thì bộ vi điều khiển sẽ được
Reset và kết thúc mọi hoạt động.
Chân EA
EA có nghĩa là truy cập ngồi (External Access): là chân số 31 trên vỏ kiểu DIP.
Nó là một chân đầu vào và phải được nối hoặc với Vcc hoặc GND. Hay nói cách
khác là nó khơng được để hở.
Chân PSEN
6


PSEN là chân đầu ra cho phép cất chương trình (Program Store Enable) trong hệ
thống. Trên vi điều khiển 8051, chương trình được cất ở bộ nhớ ROM ngồi thì
chân này được nối tới chân OE của ROM.
Chân ALE
Chân cho phép chốt địa chỉ ALE là chân đầu ra tích cực cao. Khi nối 8051 tới bộ
nhớ ngồi thì cởng P0 dùng để trao đổi cả địa chỉ và dữ liệu.
Các chân cổng vào/ra và các chức năng của chúng
Bốn cổng P0, P1, P2 và P3 đều sử dụng 8 chân và tạo thành cởng 8 bít. Tất cả các
cởng khi Reset đều được cấu hình như các đầu ra, sẵn sàng để được sử dụng như
các cổng đầu ra.
Cổng P0

Cổng P0 chiếm tất cả 8 chân (từ chân 32 đến 39). Nó có thể được dùng như cởng
đầu ra, để sử dụng các chân của cổng P0 vừa làm đầu ra, vừa làm đầu vào thì mỗi
chân phải được nối tới một điện trở kéo bên ngồi 10k
Cổng P1
Cởng P1 cũng chiếm tất cả 8 chân (từ chân 1 đến chân 8) nó có thể được sử dụng
như đầu vào hoặc đầu ra. Cống P1 không cần các điện trở kéo.
Cổng P2
Cổng P2 cũng chiếm 8 chân (các chân từ 21 đến 28). Nó có thể được sử dụng như
đầu vào hoặc đầu ra. Khi Reset, thì cởng P2 được cấu hình như một cởng đầu
ra.Cống P2 khơng cần các điện trở kéo.
Cổng P3
Cổng P3 chiếm tổng cộng là 8 chân từ chân 10 đến chân 17. Nó có thể được sử
dụng như đầu vào hoặc đầu ra.Cống P3 không cần các điện trở kéo.

7


Bít của cống P3

Chức năng

chân số

P3.0

Nhận dữ liệu (RXD)

10

P3.1


Phát dữ liệu (TXD)

11

P3.2

Ngắt 0(INT0)

12

P3.3

Ngắt 1(INT1)

13

P3.4

Bộ định thời 0 (TO)

14

P3.5

Bộ định thời 1 (T1)

15

P3.6


Ghi (WR)

16

P3.7

Đọc (RD)

17

Bảng 1.2 Dữ liệu ,chức năng của các chân P3
Các vi điều khiển thuộc họ 8051 đều tở chức thành 2 khơng gian chương trình và
dữ liệu. Kiến trúc vi xử lý 8 bit của 8051 này cho phép truy nhập và tính tốn
nhanh hơn đối với không gian dữ liệu nhờ việc phân chia 2 không gian bộ nhớ
chương trình và dữ liệu như trên. Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ
thống 16 bit địa chỉ vẫn có thể thực hiện nhờ thanh ghi con trỏ.
Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở rộng tối đa
64Kbyte. Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp sẵn trong
chip có kích thước nhỏ nhất là 4k byte. Với các vi điều khiển khơng tích hợp sẵn
bộ nhớ chương trình trên chip, buộc phải thiết kế bộ nhớ chương trình bên ngồi.
Ví dụ sử dụng EPROM: 2764 (64Kbyte), khi đó chân PSEN phải ở mức tích cực
(5V).

8


Hình 1.3 Cấu trúc vi điều khiển 8051.
Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình. Họ vi điều
khiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128 byte và có thể mở

rộng với bộ nhớ dữ liệu ngồi lên tới 64k byte.

1.1.3 Các thanh ghi đặc biệt
8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ địa
chỉ 80H đến FFH. Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều
được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa.

Hình 1.4 Các thanh ghi đặc biệt.
9


Thanh ghi chính
Thanh ghi tính tốn chính của vi điều khiển 8051 ACC (Accumulator). Là thanh
ghi đặc biệt của 8051 dùng để thực hiện các phép toán của CPU, thường kí hiệu là
A.
Thanh ghi phụ
Thanh ghi tính tốn phụ của vi điều khiển 8051 là B. Thanh ghi B ở địa chỉ F0H
được dùng chung với thanh chứa A trong các phép toán nhân, chia. Lệnh MUL AB
nhân 2 số 8 bit không dấu chứa trong A và B và chứa kết quả 16 bit vào cặp thanh
ghi B, A (thanh chứa A cất byte thấp và thanh ghi B cất byte cao).
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cất
trong thanh ghi B. Thanh ghi B còn được xử lý như một thanh ghi nháp. Các bit
được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H.
Thanh ghi trạng thái chương trình (PSW)
Thanh ghi trạng thái chương trình PSW là thanh ghi mơ tả tồn bộ trạng thái
chương trình đang hoạt động của hệ thống
Thanh ghi ngăn xếp (Stack Pointer)
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP chứa địa chỉ
của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến satck bao gồm lệnh
cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack. Các lệnh PUSH và POP sẽ

cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chương trình con
(ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nội dung của
bộ đếm chương trình PC (Program counter)
Thanh ghi các cổng P0-P3
Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại địa chỉ
90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H. Tất cả các port đều được
định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh.
Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer)
10


Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộ
đệm nhận dữ liệu. Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu sẽ được
chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi quá trình
truyền dữ liệu qua truyền thơng nối tiếp kết thúc. Khi thực hiện việc chuyển dữ
liệu từ SBUF ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền
thông nối tiếp.
Thanh ghi của bộ định thời/bộ đếm
8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gian
hoặc để đếm các sự kiện. Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các
thanh ghi của bộ đếm thời gian. Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và
8CH (TH0, byte cao). Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH
(TH1, byte cao).
Các thanh ghi điều khiển
Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON và PCON là
các thanh ghi điều khiển và ghi nhận trạng thái của hệ thống ngắt, bộ đếm/định
thời, truyền thơng nối tiếp.

1.1.4 Tập lệnh 8051
• Nhóm lệnh di chuyển dữ liệu.


Lệnh Mov dạng byte:
Cú pháp : Mov ( dest – byte ),( src – byte )
Chức năng: Lệnh sao chép nội dung của toán hạng nguồn cào tốn hạng đích, nội
dung của tốn hạng nguồn khơng thayh đổi. Lệnh này không làm ảnh hưởng đến
các cờ.
Lệnh Mov dạng word.
Cú pháp : Mov dptr,#data
Chức năng: Giá trị 16 bít chính là tốn hạng thứ 2 trực tiếp trong câu lệnh được
nạp vào thanh ghi con trỏ dữ liệu <DPTR> byte cao của dữ liệu được nạp vào
thanh ghi <DPH>, còn byte thấp được nạp vào thanh ghi <DPL>. Lệnh này không
11


làm ảnh hưởng đến cờ hiệu. Kichd thước 3byte, thời gian thực hiện là 2 chu kỳ
máy, mã lệnh là 1001 0000
Lệnh Mov dạng bít
Cú pháp: Mov <dest – bit>,<source - bit>
Chức năng: Chuyển dữ liệu ở dạng sao chép tốn hạng nguồn vào tốn hạng đích,
1 tốn hạng nguồn là cờ hiệu và một tốn hạng cịn lại là bít địa chỉ trực tiếp. Lệnh
này khơng làm ảnh hưởng đến thanh ghi hoặc cờ khác.
Lệnh hoán chuyển dữ liệu.
Cú pháp : XCH A,<byte>
Chức năng: Hoán chuyển nội dung của thanh ghi tích lũy với thanh ghi hoặc bộ
nhớ có địa chỉ trong toán hạng thứ 2 của câu lệnh, tốn hạng thứ 2 có thể là thanh
ghi, thanh ghi này có thể là trực tiếp hoặc gián tiếp.
Lệnh hốn chuyển 4 bít thấp.
Cú pháp: XCHD a,@R1
Kích thước : dài 1 byte, thời gian thực hiện : 1 chu kỳ máy; Mã lệnh 1100 0111
Lệnh xóa bít.

Cú pháp : CLR (bít)
Chức năng: Lệnh xóa 1 bit về khơng, với 1 bít được định địa chỉ trực tiếp, lệnh này
khơng ảnh hưởng đến các cờ.
Lệnh xóa thanh ghi tích lũy
Cú pháp: CLR A
Chức năng: Lệnh xóa tất cả các bít của thanh ghi tích lũy về 0. lệnh này khơng ảnh
hưởng đến trạng thái của các cờ. Kích thước 1 byte; thời gian thực hiện là 1 chu kỳ
máy
Lệnh thiết lập bít.
Cú pháp : CPL <bit>
Chức năng: Lệnh lấy bù của bit, làm bit đã cho sẽ được lấy bù với bít được định
địa chỉ trực tiếp.
12


• Nhóm lệnh rẽ nhánh chương trình.

Lệnh quay trở về từ chương trình con.
Cú pháp : Ret; Kích thước: 1 byte;
Thời gian thực hiện : 2 chu kỳ máy; Mã lệnh: 0010 0010.
Lệnh quay trở về từ ngắt.
Cú pháp : Reti; Kích thước: 1 byte ;
Thời gian thực hiện: 2 chu lỳ máy; Mã lệnh : 0010 0010.
Lệnh nhảy gián tiếp
Cú pháp: JMP @A+DPTR; Kích thước: 1 byte;
Thời gian thực hiện : 2 chu kỳ máy ; Mã lệnh: 0010 0000.
Lệnh nhảy nếu 1 bít khơng được thiết lập.
Cú pháp : JBN bit,rel; Kích thước: 3 byte;
Thời gian thực hiện: 2 chu kỳ máy; Mã lệnh: 0011 0000.
Lệnh nhảy nếu 1 bít được thiết lập và xóa bít đó.

Cú pháp: JBC bit,rel ; Kích thước : 3 byte ;
Thời gian thực hiện : 2 chu kỳ máy; Mã lệnh: 0001 0000.
Lệnh nhảy nếu cờ CF không được thiết lập.
Cú pháp : JC rel ; Kích thước : 2 byte ;
Thời gian thực hiện: 2 chu kỳ máy ; Mã lệnh : 0101 0000.
Lệnh nhảy nếu thanh ghi tích lũy bằng 0.
Cú pháp : JZ rel ; Kích thước : 2 byte;
Thời gian thực hiện: 2 chu kỳ máy ; Mã lệnh : 0110 0000.
Lệnh nhảy nếu thanh ghi tích lũy khác 0.
Cú pháp : JNZ rel; Kích thước: 2byte;
Thời gian thực hiện : 2 chu kỳ máy; Mã lệnh : 0111 0000.
• Nhóm lệnh tính tốn số học.
13


Lệnh thực hiện phép cộng.
Cú pháp : ADD a,<src - byte>
Chức năng: Cộng giá trị biến nội dung trong thanh ghi tích lũy, kết quả lưu vào
thanh ghi tích lũy.
Lệnh cộng có nhớ.
Cú pháp : ADDC a,<src - byte>
Chức năng: Cộng giá trị biến với nội dung trong thanh ghi tích lũy và cộng với cờ
nhớ, kết quả lưu trong thanh ghi tích lũy.
Lệnh trừ có nhớ.
Cú pháp: SUBB a, <src - byte>
Chức năng: Thực hiện phép trừ thanh ghi tích lũy với tốn hạng thứ 2 và cờ nhớ
CF, kết quả lưu vào thanh ghi tích lũy nếu quả phép trừ có nhớ thì cờ CF được thiết
lập.
Lệnh tăng lên 1 đơn vị.
Cú pháp: INC <byte>

Chức năng: Lệnh INC tăng giá trị của biến đã cho lên 1 đơn vị. Biến có độ dài 1
byte do đó nếu giá trị ban đầu là 0FFH thì tăng lên 1 thì kết quả sẽ là 00H. Lệnh
không làm ảnh hưởng đến trạng thái cờ.
Lệnh giảm 1 đơn vị.
Cú pháp: DEC <byte>
Chức năng : Giảm giá trị của biến xuống 1 đơn vị. Nếu giá trị ban đầu là 00H thì
sau khi giảm sẽ 0FFh.
Lệnh thực hiện phép nhân.
Cú pháp : MUL AB
Kích thước 1 byte; Thời gian thực hiện: 4 chu kỳ máy; Mã lệnh: 1010 0100
Lệnh thực hiện phép chia.
14


Cú pháp: DIV AB
Kích thước: 1 byte; Thời gian thực hiện: 4 chu kỳ máy ;Mã lệnh : 1000 0100
Lệnh hiệu chỉnh số thập phân.
Cú pháp : DA A
Kích thước : 1 byte; Thời gian thực hiện: 1 chu kỳ máy; Mã lệnh: 1100 0100
• Nhóm lệnh tốn học logic.

Lệnh AND cho các biến 1 byte.
Cú pháp : ANL <dest - byte>, <sre - byte>
Chức năng: Lệnh AND thực hiện phép tính logic AND theo mức bít giữa các biến
dài 1 byte đã cho. Kết quả lưu vao toán hạng đích.
Lệnh AND cho các biến 1 bit.
Cú pháp: ANL C,<src – bit >
Kích thước : 2 byte; Thời gian thực hiện : 2 chu kỳ máy
Lệnh OR cho các biến 1 byte.
Cú pháp: ORL < dest – byte >, <src - byte>

Chức năng: thực hiện phép tính logic OR mức byte giữa câc biến đã cho, kết quả
được lưu toán hạng đích.
Lệnh ORL cho các biến 1 bít.
Cú pháp : ORL C,<src - bit>
Lệnh X-OR cho các biến 1 byte.
Cú pháp: XRL <dest - byte>, <src - byte>
Chức năng: Lệnh XRL thực hiện phép tính logic X-OR mức byte giữa các biến đã
cho, kết quả được lưu trong toán hạng đích.

1.2 Tìm hiểu linh kiện

15


1.2.1 IC ADC0808
Các bộ chuyển đổi ADC được sử dụng hết sức rộng rãi. Máy tính số làm việc trên
các giá trị nhị phân, tuy nhiên trong thực tế, các đại lượng vật lý đều ở dạng tưomg
tự (liên tục). Nhiệt độ, áp suất, độ ẩm, tốc độ... là một trong những đại lượng vật lý
của thế giới thực mà ta thường gặp hàng ngày. Một đại lượng vật lý được chuyển
về dòng điện hoặc điện áp qua một thiết bị được gọi là bộ biến đổi. Bộ biến đổi
cũng có thể được xem là bộ cảm biến. Một trong số đó là chip ADC0808
IC ADC0808 là một vi mạch tích hợp có chức năng chuyển đởi tín hiệu tương tự
sang kỹ thuật số (Analog to Digital Converters), độ phân giải của bộ ADC là 8bit
tức nó sẽ chuyển đởi tín hiệu điện tương tự sang 256 mức điện áp so với Vref cấp
vào bộ chuyển đởi.

Hình 1.5 Cấu tạo ADC 0808 .
• Sơ đồ chân:

16



Hình 1.6 Sơ đồ chân ADC 0808 .
Sau đây chúng ta xem chức năng của từng chân ADC0808:
IN0-7 – ngõ vào tín hiệu Analog Input
START – chân điều khiển tín hiệu bắt đầu q trình biến đởi ADC.
EOC – Chân phát tín hiệu báo kết thúc q trình chuyển đởi ADC 2-1 – 2-8 – Ngõ ra
Tín hiệu số- Data 8 bit
OUT EN – Chân cho phép xuất.
CLK – chân nhận nguồn xung Clock
Vcc/ GND – Chân nhận điện nguồn dương
Vref+/ Vref- – Chân nhận(input) điện áp tham chiếu.
ALE – Address Latch Enable
ADD A, B, C – Address Input A, B, C (xác định ngõ vào)
Như vậy ADC0808 có tất cả 8 đầu vào Analog, được xác định bởi A, B, C (từ 000
đến 111)! Và chúng ta lưu ý tầm điện áp đầu vào analog là: 0 đến 5v, tương ứng
với mức 0 và mức 255 ở đầu ra. Tuy nhiên chúng ta cũng có thể chọn giá trị đầu
vào nhỏ hơn mà vẫn có thể chia với độ 255 thông qua việc điều chỉnh điện áp trên
chân điện áp tham chiếu Vref, ví dụ 2,55 V.

17


1.2.2 LM35
Cảm biến nhiệt độ LM35 là một loại cảm biến tương tự rất hay được ứng
dụng trong các ứng dụng đo nhiệt độ thời gian thực. Vì nó hoạt động khá chính xác
với sai số nhỏ, đồng thời với kích thước nhỏ và giá thành rẻ là một trong những ưu
điểm của nó. Vì đây là cảm biến tương tự (analog sensor) nên ta có thể dễ dàng đọc
được giá trị của nó bằng hàm analogRead().
Hình 1.7 Cấu tạo LM35.


-

LM35 là một cảm biến nhiệt độ analog

-

Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35.

Đặc điểm chính của cảm biến LM35.
+ Điện áp đầu vào từ 4V đến 30V.
+ Độ phân giải điện áp đầu ra là 10mV/°C.
+ Độ chính xác cao ở 25 C° là 0.5° C
+ Trở kháng đầu ra thấp 0.1 cho 1mA tải.
→ Đơn vị nhiệt độ: °C.
→ Nhiệt độ thay đởi tuyến tính: 10mV/°C

18


Hình 1.8 Sơ đồ chân Lm35
LM35 khơng cần căn chỉnh nhiệt độ khi sử dụng
Độ chính xác thực tế: 1/4°C ở nhiệt độ phịng và 3/4°C ngồi khoảng 2°C tới
150°C
LM35 có hiệu năng cao, cơng suất tiêu thụ là 60uA
Cảm biến LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại
chân Vout (chân giữa) ứng với mỗi mức nhiệt độ.
Như vậy, bằng cách đưa vào chân bên trái của cảm biến LM35 hiệu điện thế
5V,chân phải nối đất, đo hiệu điện thế ở chân giữa bằng các pin A0 trên arduino
(giống y hệt cách đọc giá trị biến trở), bạn sẽ có được nhiệt độ (0-100ºC) bằng

công thức:
1. float temperature = (5.0*analogRead(A0)*100.0/1024.0);

Với LM35, bạn có thể tự tạo cho mình mạch cảm biến nhiệt độ sử dụng LM35 và
tự động ngắt điện khi nhiệt độ vượt ngưỡng tối đa, đóng điện khi nhiệt độ thấp hơn
ngưỡng tối thiểu thông qua module rơ le...

19


Hình 1.9 Sơ đồ điện áp vào các chân lm 35.

1.2.3 LCD16x2
• Giới thiệu:

-Ngày nay thiết bị LCD được sử dụng trong rất nhiều ứng dụng của VĐK .LCD có
rất nhiều ưu điểm so với các dạng hiển thị khác .Nó có khả năng hiển thị kí tự đa
dạng ,trực quan (chữ, số và kí tự đồ họa),dễ dàng đưa vào mạch ứng dụng theo
nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ.
• Hình dáng :

Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau ,dưới đây là
loại

thơng

dụng:

Hình 1.10 Cấu tạo LCD.


20


Hình 1.11 Sơ đồ chân của LCD
• Chức năng các chân :

21


Châ
n
1


hiệu
Vss

Mô tả

2

GND của mạch điều khiển
VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với

3
4

VCC=5V của mạch điều khiển
VEE Điều chỉnh độ tương phản của LCD.
RS

Chân chọn thanh ghi (Register select). Nối chân RS với logic

Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với

“0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của
LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của
LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
5

R/W

trong LCD.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để

6

E

LCD ở chế độ đọc.
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên trong nó khi phát hiện một xung (high-tolow transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi
phát hiện cạnh lên (low-to-high transition) ở chân E và được


714

DB0
DB7

LCD giữ ở bus đến khi nào chân E xuống mức thấp.
Tám đường của bus dữ liệu dùng để trao đởi thơng tin với MPU.
Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit
MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới

15

-

DB7, bit MSB là DB7
Nguồn dương cho đèn nền

16

-

GND cho đèn nền

22


Bảng 1.3 Chức năng các chân của LCD.
* Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thơng tin từ LCD thơng qua các

chân DBx. Cịn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho
LCD thông qua các chân DBx.

1.3 Ngôn ngữ lập trình
1.3.1 Khái niệm
C là một ngơn ngữ lập trình máy tính. Được dùng để tạo ra các chỉ dẫn cho
máy tính.C được phát triển bởi Dennis M. Ritchie để phát triển hệ điều hành
UNIX sau đó được sử dụng để phát triển các phần mềm…
C có thể chạy trên hầu hết các hệ điều hành.C được coi như là ngơn ngữ mẹ vì
nó được dùng để viết ra nhiều ngôn ngữ khác như C++, Python, Java …
C được đánh giá là dễ học so với các ngôn ngữ bậc thấp như Assembly hay
Pascal… Do đó nó được sử dụng làm mơn lập trình cơ sở (Hiện tại một số trường
đại học đã chuyển môn cơ sở sang Javascript). Tuy nhiên so với các ngôn ngữ bậc
cao như Java, Python thì nó lại khó học hơn rất nhiều.
C là một ngơn ngữ bậc trung, được sử dụng để:





Kết hợp với Assembly để viết các trình điều khiển
Viết hệ điều hành
Viết ra các ngôn ngữ khác
Sử dụng để viết các hệ thống core
Nhìn chung thì C khá là khó (bởi khái niệm con trỏ, quản lý bộ nhớ) và

thường trên trường chỉ học ở mức độ cơ bản. Nếu theo lập trình về phần cứng, hệ
điều hành hay các hệ thống core thì mới tiếp tục học nâng cao… do đó mới đầu
học C các bạn thấy khó nhằn một chút thì cũng bình thường.


1.3.2 Ví dụ
Ví dụ đơn giản sau đây được thấy trong lần in đầu tiên của cuốn "The C
Programming Language", và đã trở thành bài tiêu chuẩn trong chương nhập môn
của hầu hết các loại sách giáo khoa về lập trình. Chương trình hiển thị câu "hello,
23


world!" trên đầu ra chuẩn, mà thường là một màn hình. Mặc dù vậy, nó có thể xuất
ra một tập tin hay xuất ra trên một thiết bị phần cứng kể cả trên một vùng chứa, tùy
thuộc vào việc đầu ra chuẩn được chỉ thị vào đâu khi chương trình này được thực
thi.
#include <stdio.h>
2 int main(void)
3{
4 printf("hello, world!");
5 return 0;
6}

Hình 1.12 Ví dụ đơn giản về ngơn ngữ C


#include <stdio.h> khai báo file stdio.h, nó là một thư viện mà ta có thể
dùng sẵn. Trong trường hợp này hàm printf() mà mình sử dụng đã được định
nghĩa trong sdtio.h, nếu mình khơng khai báo stdio.h thì chương trình sẽ
khơng hiểu hàm printf() là gì.



int main() hàm main (chương trình viết bởi c sẽ bắt đầu chạy từ
hàm main). int biểu thị kết quả trả về của hàm main là kiểu số nguyên




Các dấu {} được dùng để đánh dấu mở đầu và kết thúc của một khối lệnh,
một hàm. Dấu ; được dùng để kết thúc 1 lệnh



printf("Hello World!"); thực hiện in ra dịng chữ Hello World!



return 0; kết quả trả về của hàm main là 0. Trong ví dụ này thì giá trị trả về
của hàm main khơng quan trọng .

24


CHƯƠNG 2 .THỰC HIỆN THIẾT KẾ VÀ THI
CÔNG
2.1 Giới thiệu
2.1.1 Phần mềm Proteus
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 PIC, 8051, PIC, dsPIC, AVR, HC11,
MSP430, ARM7/LPC2000 ... các giao tiếp I2C, SPI, CAN, USB, Ethenet,... ngồi
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ử.
Những khả năng của proteus :
• Tự động sắp xếp đường mạch và vẽ điểm giao đường mạch.
• Chọn đối tượng và thiết lập thơng số cho đối tượng dễ dàng
• Xuất file thống kê linh kiện cho mạch
• Xuất ra file Netlist tương thích với các chương trình làm mạch in thơng dụng.
• Đối với người thiết kế mạch chun nghiệp, ISIS tích hợp nhiều cơng cụ giúp cho
việc quản lý mạch điện lớn, mạch điện có thể lên đến hàng ngàn linh kiện.
• Khả năng tự động đánh số linh kiện.

2.1.2 Phần mềm Altium Designer
- Giao diện thiết kế, quản lý và chỉnh sửa thân thiện, dễ dàng biên dịch, quản lý
file, quản lý phiên bản cho các tài liệu thiết kế.

25


×