LỜI NÓI ĐẦU
Sau gần 3 năm trên giảng đường đại học, chúng em đã học được khá nhiều kiến
thức nhưng đa số chúng chỉ là lý thuyết, mang tính tổng quát và trừu tượng cao. Vận
dụng lý thuyết vào thực tế không phải là một điều dễ dàng, đặc biệt trong điều kiện
thực tế thay đổi từng giờ như hiện nay. Đồ án I chính là một bước khởi đầu trong việc
tìm hiểu thực tế và vận dụng kiến thức trong sách vở vào thực tế. Không những thế,
quá trình làm đồ án chắc chắn sẽ mang lại cho chúng em nhiều kỹ năng cần thiết để
làm việc sau này.
Đề tài mà nhóm chúng em được giao trong đồ án I là “Làm công tắc 6 nút chạm
điều khiển độ sáng của đèn”. Đây tuy là một đề tài không mới nhưng để sản phẩm làm
ra chạy tốt và mang tính thẩm mỹ thì lại là một vấn đề không hề dễ đối với sinh viên
mới bắt đầu làm mạch như chúng em. Đề tài cũng giúp chúng em tiếp xúc với một
mảng ứng dụng lớn và khá mới hiện nay, đó là Nhà thông minh. Rất có thể, đây cũng
chính là một con đường mà chúng em theo đuổi sau này.
Chúng em xin trân trọng cảm ơn thầy giáo Nguyễn Hoàng Nam, thầy đã tận tính
hướng dẫn chúng em từng điều nhỏ nhất để chúng em làm nên sản phẩm cuối cùng.
Sản phẩm làm ra chắc chắn sẽ có những điểm yếu, cũng như báo cáo này chắc chắn
không thể tránh khỏi sai sót, mong các thầy cô cũng như các bạn có những góp ý để
sản phẩm của nhóm hoàn thiện hơn.
Các thành viên của nhóm
Nguyễn Duy Thành
Trần Đình Thiêm
Nguyễn Hữu Thiết
Đinh Đỗ Thủy
Công tắc 6 nút chạm điều khiển bóng đèn
MỤC LỤC
2
Công tắc 6 nút chạm điều khiển bóng đèn
CHƯƠNG I. TỔNG QUAN
1.1. Giới thiệu đề tài
Nhà thông minh (Smart home hay Home automation) là một ứng dụng ngày càng
phát triển dựa trên cơ sở của các ngành điện tử, tự động hóa và công nghệ thông tin.
Đây là một lĩnh vực rộng lớn và có nhiều tiềm năng. Mục tiêu của nhà thông minh là
tất cả các thiết bị trong ngôi nhà được kết nối với nhau và được điều khiển hoàn toàn
tự động theo các kịch bản thông minh, tạo ra môi trường sống tiện nghi, an toàn và tiết
kiệm năng lượng. [1.2]
Các chức năng chính thường sử dụng trong nhà thông minh: [1.1]
1. Điều khiển chiếu sáng (on/off, dimmer, scence, timer, logic, )
2. Điều khiển mành, rèm, cửa cổng
3. Hệ thống an ninh, báo động, báo cháy
4. Điều khiển điều hòa, máy lạnh
5. Hệ thống âm thanh đa vùng
6. Camera, chuông hình
7. Hệ thống bảo vệ nguồn điện
8. Các tiện ích và ứng dụng khác
Một số hãng chuyên sản xuất và tích hợp sản phẩm nhà thông minh nổi tiếng trên
thế giới như: Hager, Siemens, ABB, Schneider, Berker, Gira, [1.2]
Đề tài “Làm công tắc 6 nút chạm điều khiển độ sáng của đèn” tuy chưa thể nói là
điều khiển chiếu sáng cho nhà thông minh nhưng cũng là bước đầu thoát ly khỏi tu
duy thông thường của công tắc cơ khí và núm xoay điều chỉnh. Công tắc được làm từ
các cảm biến quang nên chúng ta chỉ cần chạm vào công tắc mà không cần tác động
một lực nào mà bóng đèn vẫn thay đổi độ sáng theo ý muốn của người điều chỉnh.
1.2. Mục tiêu của đề tài
Các mục tiêu đặt ra khi thực hiện đề tài “Làm công tắc 6 nút chạm điều khiển độ
sáng của đèn” gồm:
1.2.1. Củng cố lại nội dung lý thuyết liên quan
Đề tài liên quan trực tiếp đến các môn học Điện tử tương tự, Thiết kế hệ thống số,
Cảm biến và kỹ thuật đo lường, Vi xử lý. Ngoài ra trong quá trình thực hiện, sinh viên
cũng phải tìm hiểu thêm các tài liệu liên quan đến thiết kế mạch nguyên lý, thiết kế và
làm mạch in…
3
Công tắc 6 nút chạm điều khiển bóng đèn
1.2.2. Rèn luyện nâng cao kỹ năng thực hành
Kỹ năng thực hành bao gồm kỹ năng tìm hiểu thiết bị, phân tích và lắp ráp mạch…
1.2.3. Nâng cao kỹ năng làm việc nhiều người (làm việc nhóm)
Làm việc với nhiều người khác đồng nghĩa với việc phải phân công công việc hợp
lý sao cho phù hợp với khả năng và sở trường của mỗi người; đánh giá công việc của
mỗi người để rút ra những cái đã làm được và chưa làm được, rút kinh nghiệm; và để
làm được các công việc đó nhóm cần phải có một trưởng nhóm.
1.2.4. Làm ra sản phẩm thực
Thực hiện đề tài không phải chỉ làm trên giấy hay chỉ làm ra mạch demo, mục tiêu
của đề tài là làm ra sản phẩm thực sử dụng được trong nhà. Sản phẩm được sử dụng
như một công tắc chạm thay thế công tắc cơ khí thông thường.
Sản phầm làm ra cần đạt được một số yêu cầu như:
a) Chạy được: điều khiển được bóng đèn với điều kiện có ánh sáng (mạch không
chạy được trong tối), có đủ 6 mức điều khiển
b) Mẫu mã tương đối đẹp, gọn nhẹ
c) Tiết kiệm
1.3. Hướng tiếp cận
Ngày nay, công tắc chạm, công tắc cảm ứng là bộ phận không thể thiếu trong một
ngôi nhà thông minh. Công tắc chạm khiến người ta thích thú bởi sự bền đẹp và tiện
dụng của nó. Công tắc chạm hiện nay sử dụng chủ yếu các công nghệ: cảm biến điện
dung (Capacitance touch switch), cảm biến điện trở (Resistance touch switch), cảm
biến áp điện (Piezo touch switch) [1.3].
Được sự định hướng của giáo viên hướng dẫn, nhóm đã chọn một loại cảm biến
đơn giản và phù hợp với điều kiện kinh tế cũng như trình độ hiện tại, đó là cảm biến
quang. Dựa trên nguyên lý che sáng, cảm biến quang có một nhược điểm dễ thấy nhất
là không thể sử dụng được trong bóng tối hay trong điều kiện không đủ ánh sáng.
Nhưng vì đồ án cũng là một sự khởi đầu và điều kiện thời gian không cho phép, nên
nhóm chấp nhận hi sinh cái mất đó để làm ra một sản phẩm đầu tay, và có thể hoàn
thiện thêm sản phẩm sau này.
Sau khi lựa chọn cảm biến (đầu vào), để xử lý các thông tin đầu vào này, có hai
hướng để thực thi như sau:
4
KHỐI
XỬ LÝ
KHỐI
ĐẦU VÀO
KHỐI LED HIỂN THỊ
KHỐI
CHẤP HÀNH
Công tắc 6 nút chạm điều khiển bóng đèn
1. Dùng các IC số
2. Dùng kỹ thuật vi xử lý, vi điều khiển
Nếu lựa chọn phương án thứ nhất là dùng IC số, quá trình thực hiện chắc chắn gặp
nhiều khó khăn do chức năng của mỗi IC số bị hạn chế, mạch nếu làm ra sẽ cồng
kềnh, mất thẩm mỹ … Bên cạnh đó, hiện nay các chip vi điều khiển được bày bán rất
nhiều, giá cả cũng không quá đắt, mỗi vi điều khiển tích hợp nhiều chức năng nên nếu
lựa chọn theo phương án này mạch sẽ đơn giản hơn, gọn nhẹ hơn và có thể mở rộng
hay thay đổi chương trình khi cần thiết. Vì những lý do trên cũng như được sự hướng
dẫn của thầy, nhóm đã chọn phương án 2, sử dụng một loại vi điều khiển đơn giản họ
8051, AT89C51.
1.4. Sơ đồ khối tổng quát
Hình 1.1. Sơ đồ khối tổng quát
1.5. Tài liệu tham khảo
Trong chương Tổng quan này, nhóm đã tham khảo chủ yếu các nguồn từ internet.
Các phần được đánh số trong báo cáo là đoạn trích dẫn hay tham khảo từ các địa chỉ
web:
[1.1] Wikipedia, Nhà thông minh: />[1.2] />[1.3] Wikipedia, Touch switch: />5
Công tắc 6 nút chạm điều khiển bóng đèn
CHƯƠNG II. PHÁT TRIỂN
2.1. Lý thuyết về cảm biến, LED và vi điều khiển
2.1.1. Tế bào quang dẫn (quang trở)
Đặc trưng cơ bản của tế bào quang dẫn là điện trở
của nó phụ thuộc vào thông lượng của bức xạ và phổ
của bức xạ đó. Tế bào quang dẫn là một trong những
cảm biến có độ nhạy cao. Cơ sở vật lý của tế bào quang
dẫn là hiện tượng quang dẫn do kết quả của hiệu ứng
quang điện bên trong. Đó là hiện tượng giải phóng hạt
tải điện trong vật liệu bán dẫn dưới tác dụng của ánh sáng.
Vật liệu chế tạo cảm biến
Cảm biến quang thường được chế tạo bằng các bán dẫn đa tinh thể đồng nhất hoặc
đơn tinh thể, bán dẫn riêng hoặc pha tạp.
- Đa tinh thể: CdS, CdSe, CdTe
PbS, PbSe, PbTe
- Đơn tinh thể: Ge, Si tinh khiết hoặc pha tạp Au, Cu, Sb, In
Các tính chất cơ bản của cảm biến quang dẫn là:
- Điện trở tối R
C0
phụ thuộc vào hình dạng, kích thước, nhiệt độ và bản chất lý
hóa của vật liệu. Khi chiếu sáng điện trở R
C
giảm rất nhanh, quan hệ điện trở và
độ rọi là phi tuyến.
- Độ nhạy
Độ nhạy phổ của tế bào quang dẫn được định nghĩa theo biểu thức:
Khi điện áp U = 10 V, diện tích bề mặt tế bào bằng 1cm
2
, độ nhạy của phổ
khoảng 0,1 ÷ 10 A/W.
Độ nhạy phổ phụ thuộc vào nhiệt độ.
Tế bào quang dẫn có độ nhạy cao cho phép đơn giản hóa trong các ứng dụng
nhưng có một số nhược điểm:
- Đặc tính điện trở - độ rọi là phi tuyến
- Thời gian hồi đáp tương đối lớn
- Thông số không ổn định do già hóa
- Độ nhạy phụ thuộc vào nhiệt độ
6
Hình 2.1. Quang trở
Công tắc 6 nút chạm điều khiển bóng đèn
2.1.2. Điốt phát quang (LED, Light-emitting Diode)
LED là các điốt có khả năng phát ra ánh sáng hay tia hồng ngoại, tử ngoại. Cũng
giống như điốt, LED được cấu tạo từ một khối bán dẫn loại p ghép với một khối bán
dẫn loại n.
Cấu tạo của LED được minh họa trên hình 2.2.
Nguyên lý hoạt động của LED:
Hoạt động của LED giống với nhiều loại điốt
bán dẫn.
Khối bán dẫn loại p chứa nhiều lỗ trống tự do
mang điện tích dương nên khi ghép với khối
bán dẫn n (chứa các điện tử tự do) thì các lỗ
trống này có xu hướng chuyển động khuếch tán
sang khối n. Cùng lúc khối p lại nhận thêm các
điện tử (điện tích âm) từ khối n chuyển sang.
Kết quả là khối p tích điện âm (thiếu hụt lỗ
trống và dư thừa điện tử) trong khi khối n tích
điện dương (thiếu hụt điện tử và dư thừa lỗ trống).
Ở biên giới hai bên mặt tiếp giáp, một số điện tử bị lỗ trống thu hút và khi chúng
tiến lại gần nhau, chúng có xu hướng kết hợp với nhau tạo thành các nguyên tử
trung hòa. Quá trình này có thể giải phóng năng lượng dưới dạng ánh sáng (hay
các bức xạ điện từ có bước sóng gần đó).
Hầu hết các vật liệu làm LED có chiết suất rất cao, tức là hầu hết ánh sáng phát ra
sẽ quay ngược vào bên trong thay vì phát ra ngoài không khí. Do đó công nghệ
trích xuất ánh sáng từ LED cũng rất quan trọng, cần rất nhiều sự nghiên cứu và
phát triển.
Tính chất:
Tùy theo mức năng lượng giải phóng cao hay thấp mà bước sóng ánh sáng phát ra
khác nhau (tức màu sắc của LED sẽ khác nhau). Mức năng lượng (và màu sắc của
LED) hoàn toàn phụ thuộc vào cấu trúc năng lượng của các nguyên tử chất bán
dẫn.
7
Hình 2.2. Cấu tạo LED
Công tắc 6 nút chạm điều khiển bóng đèn
LED thường có điện thế phân cực thuận cao hơn điốt thông thường, trong khoảng
1,5 đến 3 V. Nhưng điện thế phân cực nghịch ở LED thì không cao. Do đó, LED
rất dễ bị hư hỏng do điện thế ngược gây ra.
Bảng 2.1. Điện thế phân cực thuận một số loại LED
Loại LED Điện thế phân cực thuận
Đỏ 1,4 - 1,8V
Vàng 2 - 2,5V
Xanh lá cây 2 - 2,8V
2.1.3. Vi điều khiển 8051
1
a) Sơ đồ chân 8051
8051 là IC vi điều khiển (Microcontroller) do hãng Intel sản xuất. IC này có đặc
điểm như sau:
- 4k byte ROM
- 128 byte RAM
- 4 port xuất nhập (I/O port) 8 bit
- 2 bộ định thời 16 bit
- Mạch giao tiếp nối tiếp
- Không gian nhớ chương trình (mã) ngoài 64K
- Không gian nhớ dữ liệu ngoài 64K
- Bộ xử lý bit (thao tác trên các bit riêng rẽ)
- 210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
- Nhân/chia trong 4μs
Sơ đồ chân của 8051 được chỉ ra trên hình 2.3.
1 Vì điều kiện không cho phép, báo cáo này chỉ đề cập đến những vấn đề chính của vi điều khiển 8051 có liên
quan đến mạch của nhóm.
8
Công tắc 6 nút chạm điều khiển bóng đèn
Hình 2.3. Sơ đồ chân của 8051
• Chức năng của các chân 8051:
Port 0:
Từ chân 32 đến chân 39 (P0.0 – P0.7). Port 0 có 2 chức năng: trong các thiết kế
cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối với
thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu.
Port 1:
Từ chân 1 đến chân 9 (P1.0 – P1.7). Port 1 là port IO dùng cho giao tiếp với thiết
bị ngoài nếu cần.
Port 2:
Từ chân 21 đến chân 28 (P2.0 – P2.7). Port 2 là một port có tác dụng kép dùng
như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị
dùng bộ nhớ mở rộng.
Port 3:
Từ chân 10 đến chân 17 (P3.0 – P3.7). Port 3 là port có tác dụng kép. Các chân
của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc
tính đặc biệt của 8051 như ở bảng sau:
9
Công tắc 6 nút chạm điều khiển bóng đèn
Bảng 2.2. Các chức năng đặc biệt của Port 3
(Program store enable):
là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình mở rộng và
thường được nối đến chân của Eprom cho phép đọc các byte mã lệnh.
ở mức thấp trong thời gian 8051 lấy lệnh. Các mã lệnh của chương trình được
đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 8051 để
giải mã lệnh. Khi 8051 thi hành chương trình trong ROM nội ở mức cao.
ALE (Address Latch Enable):
Khi 8051 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và dữ
liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30
dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết
nối chúng với IC chốt.
Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là
địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
(External Access):
Tín hiệu vào ở chân 31 thường được mắc lên mức 1 hoặc mức 0. Nếu ở mức 1,
8051 thi hành chương trình từ ROM nội. Nếu ở mức 0, 8051 thi hành chương
trình từ bộ nhớ mở rộng. Chân được lấy làm chân cấp nguồn 21V khi lập trình
cho Eprom trong 8051.
RST (Reset):
Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên
trong được nạp những giá trị thích hợp để khởi động hệ thống. Khi cấp điện mạch
phải tự động reset.
Các ngõ vào bộ dao động X1, X2:
10
Bit Tên Chức năng chuyển đổi
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD
TXD
T0
T1
Ngõ vào dữ liệu nối tiếp.
Ngõ xuất dữ liệu nối tiếp.
Ngõ vào ngắt cứng thứ 0.
Ngõ vào ngắt cứng thứ 1.
Ngõ vào TIMER/ COUNTER thứ 0.
Ngõ vào của TIMER/ COUNTER thứ 1.
Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.
Tín hiệu đọc bộ nhớ dữ liệu ngoài.
T1
T0
Điều khiển ngắtCác thanh ghi khác128 byte RAM
MRO nội
CPU
Oscillator Điều khiển bus
Các port I/O
Port nối tiếp
Port nối tiếp
Timer 0
Timer 1
INT0
INT1
EA
RST
PSEN
ALE
P0 P2 P1 P3
TxD RxD
Công tắc 6 nút chạm điều khiển bóng đèn
Bộ tạo dao động được tích hợp bên trong 8051. Khi sử dụng 8051, người ta chỉ
cần nối thêm tụ thạch anh và các tụ. Tần số tụ thạch anh thường là 12 MHz.
b) Tổ chức bộ nhớ của 8051
Sơ đồ khối bên trong 8051
Hình 2.4. Sơ đồ khối của chip 8051
Tổ chức bộ nhớ:
Bộ nhớ bên trong 8051 bao gồm ROM và RAM. RAM bao gồm nhiều thành phần:
phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các
thanh ghi chức năng đặc biệt.
11
Công tắc 6 nút chạm điều khiển bóng đèn
8051 có bộ nhớ theo cấu trúc Harvard: có những vùng nhớ riêng biệt cho chương
trình và cho dữ liệu. Chương trình và dữ liệu có thể chứa bên trong 8051 nhưng 8051
vẫn có thể kết nối với 64 kbyte bộ nhớ chương trình và 64 kbyte bộ nhớ dữ liệu mở
rộng.
Hình 2.5. Cấu trúc bộ nhớ vi điều khiển họ 8051
Bộ nhớ chương trình (ROM)
Hình 2.6 chỉ ra sơ đồ phần địa chỉ thấp của bộ nhớ chương trình. Sau khi reset,
CPU bắt đầu khởi động từ vị trí 0000H.
Mỗi vectơ ngắt trong 8051 được bố trí ở một vị trí cố định trong bộ nhớ chương
trình (hình vẽ). Khi có một ngắt, bộ đếm chương trình của CPU sẽ nhảy đến địa chỉ
đầu của vectơ ngắt đó và thực hiện chương trình phục vụ ngắt. Chẳng hạn như,
ngắt ngoài 0 (External Interrupt 0) được bố trí ở vị trí 0003H. Nếu ngắt ngoài 0
được sử dụng, chương trình phục vụ ngắt của nó phải bắt đầu ở vị trí 0003H. Nếu
ngắt không được sử dụng, vùng ngắt của nó có thể được sử dụng với mục đích bộ
nhớ chương trình thông thường.
12
Công tắc 6 nút chạm điều khiển bóng đèn
Hình 2.6. Bộ nhớ chương trình của 8051
Bộ nhớ dữ liệu (RAM)
Hình 2.7. Cấu trúc bộ nhớ dữ liệu của 8051
Bộ nhớ dữ liệu của 8051 gồm 2 khối: Khối 128 byte thấp
1
(Lower 128) và không
gian các thanh ghi chức năng đặc biệt (SFR space).
128 byte thấp RAM 8051 được phân chia như sau:
1 Để phân biệt với 128 byte cao (Upper 128) trong 8052…
13
Công tắc 6 nút chạm điều khiển bóng đèn
- 4 bank thanh ghi có địa chỉ từ 00H đến 1FH, mỗi bank gồm 8 thanh ghi từ
R0 đến R7. Tại mỗi thời điểm nhất định, chỉ có 1 bank thanh ghi được sử dụng
(dưới tên R0-R7), việc lựa chọn bank thanh ghi này được thiết lập bằng 2 bit
trong thanh ghi trạng thái chương trình (Program Status Word, PSW). Sử dụng
các thanh ghi R0 – R7 mang lại hiệu quả cao hơn so với định địa chỉ trực tiếp,
vì độ dài câu lệnh (tính bằng byte) ngắn hơn so với sử dụng địa chỉ trực tiếp.
Hình 2.8. Bộ nhớ dữ liệu trên chip 8051
- Ram địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH. Vùng này bao gồm 128
bit được đánh địa chỉ từ 00H đến 7FH.Ýtưởng truy xuất từng bit bằng phần
mềm là một đặc tính mạnh của vi điều khiển nói chung. Các bit có thể được đặt,
xóa, and, or,… với 1 lệnh đơn. Ngoài ra các port cũng có thể truy xuất được
từng bít làm đơn giản phần mềm xuất nhập từng bit.
- Ram đa dụng từ 30H đến 7FH. Như tên gọi của nó, các ô nhớ ở vùng này
được sử dụng với mục đích tùy chọn của người sử dụng. Mọi địa chỉ trong vùng
ram đa dụng đều có thể được truy xuất tự do dùng kiểu địa chỉ trực tiếp hay
gián tiếp.
1
Các thanh ghi chức năng đặc biệt:
8051 có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Register) ở
vùng trên của RAM nội từ địa chỉ 80H đến FFH.
1 Các kiểu địa chỉ sẽ được đề cập chi tiết hơn ở phần sau.
14
Công tắc 6 nút chạm điều khiển bóng đèn
Hình 2.9. Vùng nhớ các thanh ghi chức năng đặc biệt
Chú ý: tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21
thanh ghi chức năng đặc biệt được định nghĩa sẵn các địa chỉ.
c) Tập lệnh của 8051
Thanh ghi trạng thái chương trình PSW
Thanh ghi trạng thái chương trình PSW (Program Status Word) nằm ở địa chỉ D0H
(vùng nhớ các thanh ghi chức năng đặc biệt, SFR space). Thanh ghi PSW chứa các bit
trạng thái liên quan đến trạng thái làm việc của CPU. Thanh ghi này bao gồm Cờ nhớ
(Carry bit), Cờ nhớ phụ (Auxiliary Carry, dùng cho mã BCD), Các bit chọn bank
thanh ghi, Cờ tràn (Overflow flag), Bit chẵn lẻ (Parity bit), và 2 cờ trạng thái người
dùng tự định nghĩa.
Cờ nhớ, ngoài việc phục vụ chức năng của một bit nhớ thông thường trong các câu
lệnh toán học, nó còn đóng vai trò là một “thanh ghi” đặc biệt (giống như
Accumulator) trong các lệnh xử lý bit.
Các bit RS0 và RS1 được dùng để lựa chọn một trong 4 bank thanh ghi như trên
hình 2.8. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu
cần. Khi một câu lệnh xuất hiện một trong các ký hiệu từ R0 đến R7, thanh ghi được
truy xuất sẽ nằm ở bank mà các bit RS0 và RS1 đang lựa chọn.
Bit chẵn lẻ (Parity bit) liên quan tới số lượng số 1 trong thanh ghi Accumulator:
15
Công tắc 6 nút chạm điều khiển bóng đèn
P = 1 nếu thanh ghi A chứa một số lẻ số 1 và P = 0 nếu thanh ghi A chứa một số chẵn
số 1. Vì thế, tổng số số 1 trong thanh ghi A với P luôn luôn là số chẵn.
Hai bit trong PSW không được định nghĩa và có thể được sử dụng với mục đích
nhớ thông thường.
Bảng 2.3. Các bit trong thanh ghi PSW
Bit Ký hiệu Địa chỉ Ý nghĩa
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
CY
AC
F0
RS1
RS0
0V
_
P
D7H
D6H
D5H
D4H
D3H
D2H
D1H
D0H
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Bit 1 chọn bank thanh ghi
Bit 0 chọn bank thanh ghi
00=bank 0: địa chỉ 00H – 07H
01=bank 1: địa chỉ 08H – 0FH
10=bank 2: địa chỉ 10H – 1FH
11=bank 3: địa chỉ 18H –1FH
Cờ tràn
Dự trữ
Cờ parity chẵn lẽ.
Cấu trúc cơ bản của một câu lệnh
Một câu lệnh trong 8051 có cấu trúc cơ bản gồm 2 phần:
Mã lệnh + Toán hạng
Ví dụ:
MOV A, R0
DEC R0
Các chế độ định địa chỉ (Addressing Modes)
CPU có thể truy cập dữ liệu theo nhiều cách khác nhau. Dữ liệu có thể ở trong một
thanh ghi, ở trong bộ nhớ hoặc được cho dưới dạng một giá trị tức thời. Cách CPU
truy cập dữ liệu được gọi là chế độ định địa chỉ của 8051.
Các chế độ định địa chỉ được xác định từ khi thiết kế bộ vi xử lý và không thể bị thay
đổi do lập trình viên. 8051 có tất cả 5 chế độ định địa chỉ như sau:
- Trực tiếp (Direct Addressing)
- Gián tiếp (Indirect Addressing)
- Thanh ghi (Register Addressing)
16
Công tắc 6 nút chạm điều khiển bóng đèn
- Tức thời (Immediate Constants)
- Chỉ số (Indexed Addressing)
Chế độ địa chỉ trực tiếp
Ở chế độ này, toán hạng được xác định bởi một địa chỉ 8 bit. Chỉ có RAM nội và
các thanh ghi chức năng đặc biệt có thể được định địa chỉ trực tiếp.
Ví dụ:
MOV R0, 40H ;Sao nội dung ngăn nhớ 40H của RAM vào R0
MOV 56H, A ;Sao thanh ghi A vào ngăn nhớ RAM 56H
Chế độ địa chỉ gián tiếp
Ở chế độ này, thanh ghi được dùng để trỏ đến dữ liệu có trong bộ nhớ. Nếu dữ
liệu có trên chip CPU thì chỉ các thanh ghi R0 và R1 mới được sử dụng, và như
vậy cũng có nghĩa là không thể dùng các thanh ghi R2 – R7 để trỏ đến địa chỉ của
toán hạng ở chế độ định địa chỉ này. Nếu R0 và R1 được dùng làm con trỏ, nghĩa
là chúng lưu địa chỉ của các ngăn nhớ RAM thì trước các thanh ghi cần đặt dấu
“@” như ví dụ sau:
MOV A, @R0 ;Chuyển ngăn nhớ RAM có địa chỉ ở R0 vào A
MOV @R1, B ;Chuyển B vào ngăn nhớ RAM có địa chỉ ở R1
Chế độ địa chỉ thanh ghi
Chế độ định địa chỉ thanh ghi là sử dụng các thanh ghi để lưu dữ liệu cần thao
tác. Ví dụ:
MOV A, R0 ;Sao nội dung thanh ghi R0 vào thanh ghi A
MOV R2,A ;Sao nội dung thanh ghi A vào thanh ghi R2
Chế độ địa chỉ tức thời
Ở chế độ địa chỉ này, toán hạng nguồn là một hằng số và như tên gọi, toán hạng
có ngay sau mã lệnh. Lưu ý rằng, trước dữ liệu tức thời cần có dấu “#”. Chế độ
định địa chỉ này có thể được dùng để nạp dữ liệu vào mọi thanh ghi, kể cả thanh
ghi con trỏ dữ liệu DPTR. Ví dụ:
MOV A, #25H ;Nạp giá trị 25H vào thanh ghi A
MOV R4, #62 ;Nạp giá trị 62 thập phân vào R4
MOV DPTR, #4521H ;Nạp 4521H vào con trỏ dữ liệu DPTR
Chúng ta cũng có thể sử dụng chế độ địa chỉ tức thời để gửi dữ liệu đến các cổng
của 8051.
Ví dụ, “MOV P1, #03H” là một lệnh hợp lệ.
Chế độ địa chỉ chỉ số
Chế độ định địa chỉ số được sử dụng rộng rãi khi truy cập các phần tử dữ liệu của
bảng trong không gian ROM chương trình của 8051. Lệnh được dùng cho mục
đích này là “MOVC A,@A+DPTR”. Thanh ghi 16 bit DPTR và thanh ghi A
17
Công tắc 6 nút chạm điều khiển bóng đèn
được dùng để tạo ra địa chỉ của phần tử dữ liệu được lưu trong ROM trên chip.
Do các phần tử dữ liệu được cất trong không gian ROM chương trình trên chip
8051 nên cần dùng lệnh MOVC thay cho lệnh MOV (chữ “C” ở cuối lệnh có
nghĩa là mã lệnh “Code”).
Các nhóm lệnh cơ bản trong 8051
Trong cấu trúc tập lệnh của 8051, có 5 nhóm lệnh cơ bản sau:
- Lệnh số học (Arithmetic Instructions)
- Lệnh logic (Logical Instructions)
- Lệnh di chuyển dữ liệu (Data Transfers)
- Lệnh xử lý bit (Boolean Instructions)
- Lệnh nhảy (Jump Instructions)
Trong phạm vi khuôn khổ của báo cáo, chúng em xin phép chỉ đề cập đến 3 nhóm
lệnh được sử dụng chủ yếu trong đồ án là Lệnh di chuyển dữ liệu, Lệnh xử lý bit và
Lệnh nhảy.
Lệnh di chuyển dữ liệu
Bảng 2.4. Các lệnh di chuyển dữ liệu trong 8051
Câu lệnh Thực hiện
Chế độ định địa chỉ
Thời
gian thực
hiện (μs)
Tr
T
Gi
T
ThG TưT
MOV A,<src> A = <src> x x x x 1
MOV <dest>,A <dest> = A x x x 1
MOV <dest>,<src> <dest> = <src> x x x x 2
MOV DPTR,#data16 DPTR = hằng số 16 bit x 2
PUSH <src> INC SP: MOV “@SP”, <src> x 2
POP <dest>
MOV <dest>, “@SP”: DEC
SP
x 2
XCH A,<byte> Tráo đổi ACC và <byte> x x x 1
XCHD A,@Ri
Tráo đổi bit thấp giữa ACC
và @Ri
x 1
Bảng 2.4 thống kê các lệnh dùng để di chuyển dữ liệu trong RAM nội. Với tần số
nhịp clock là 12 MHz, tất cả những lệnh này thực hiện trong 1 hoặc 2 μs.
18
Công tắc 6 nút chạm điều khiển bóng đèn
Câu lệnh MOV <dest>, <src> cho phép di chuyển dữ liệu giữa bất kỳ 2 ô nhớ
nào trong RAM nội hay vùng SFR (vùng nhớ các thanh ghi chức năng đặc biệt)
mà không cần qua trung gian Accumulator. Cần nhớ là vùng nhớ SFR chỉ có thể
truy cập bằng địa chỉ trực tiếp.
Lệnh xử lý bit
Các câu lệnh xử lý bit được thống kê trong bảng 2.5.
Bảng 2.5. Các lệnh xử lý bit trong 8051
Câu lệnh Thực hiện
Thời gian
thực hiện
(μs)
ANL C,bit C = C.AND.bit 2
ANL C,/bit C = C.AND NOT.bit 2
ORL C,bit C = C.OR.bit 2
ORL C,/bit C = C.OR NOT.bit 2
MOV C,bit C = bit 1
MOV bit,C bit = C 2
CLR C C = 0 1
CLR bit bit = 0 1
SETB C C = 1 1
SETB bit bit = 1 1
CPL C C = .NOT.C 1
CPL bit bit = .NOT.bit 1
JC rel Jump if C = 1 (nhảy nếu C = 1) 2
JNC rel Jump if C = 0 (nhảy nếu C = 0) 2
JB bit,rel Jump if bit = 1 (nhảy nếu bit = 1) 2
JNB bit,rel Jump if bit = 0 (nhảy nếu bit = 0) 2
JBC bit,rel Jump if bit = 1; CLR bit 2
Lệnh nhảy
Bảng 2.6 chỉ ra các lệnh nhảy không điều kiện.
Bảng 2.6. Các lệnh nhảy không điều kiện trong 8051
19
Công tắc 6 nút chạm điều khiển bóng đèn
Câu lệnh Thực hiện
Thời gian
thực hiện
(μs)
JMP addr
Jump to addr
(Nhảy đến địa chỉ addr)
2
JMP @A+DPTR
Jump to A+DPTR
(Nhảy đến địa chỉ A+DPTR)
2
CALL addr
Call subroutine at addr
(Gọi chương trình con tại địa chỉ addr)
2
RET
Return from subroutine
(Trở về từ chương trình con)
2
RETI
Return from interrupt
(Trở về từ ngắt)
2
NOP
No operation
(Không làm gì)
1
d) Thời gian CPU trong 8051
8051 có một bộ dao động trên chip, được sử dụng như nguồn xung clock cho CPU.
Để sử dụng bộ dao động trên chip này, người sử dụng phải nối thêm một bộ cộng
hưởng thạch anh giữa 2 chân XTAL1 và XTAL2 của vi điều khiển, cùng với các tụ
điện nối đất như hình 2.10.
20
Công tắc 6 nút chạm điều khiển bóng đèn
Hình 2.10. Sử dụng bộ dao động trên chip
Chu kỳ máy (Machine Cycles)
Mỗi chu kỳ máy bao gồm 6 state (S1 – S6). Mỗi state kéo dài trong 2 chu kỳ dao
động. Vì vậy, một chu kỳ máy sẽ bằng 12 chu kỳ dao động hay là 1 μs nếu bộ dao
động có tần số 12MHz.
Mỗi state được chia thành 2 pha: P1 và P2, mỗi pha là một chu kỳ dao động.
Một lệnh có thể được thực hiện trong một, hai chu kỳ máy hay nhiều hơn. Một câu
lệnh 1 byte – một chu kỳ máy (chẳng hạn như CLR C) sẽ bắt đầu được thực thi ở
State 1,mã lệnh được đọc và chốt vào thanh ghi lệnh. Quá trình thực thi lệnh kết thúc
ở cuối State 6 của chu kỳ máy.
Cấu trúc ngắt
1
8051 cung cấp 5 nguồn ngắt: 2 ngắt ngoài, 2 ngắt của bộ định thời, và ngắt nối
tiếp. Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh
ghi cho phép ngắt (IE) ở địa chỉ A8H, thanh ghi được địa chỉ hóa từng bit.
e) Một số vấn đề đáng quan tâm khác của 8051
Một số thanh ghi quan trọng khác
Thanh ghi B
Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép
toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và
B rồi trả kết quả về 16 bit trong A (byte thấp) và B (byte cao). Lệnh DIV AB sẽ
chia A cho B rồi trả kết quả nguyên trong A và phần dư trong B. thanh ghi cũng
có thể xem như thanh ghi đệm đa dụng.
Con trỏ ngăn xếp
Con trỏ ngăn xếp SP là một thanh ghi 8 bit ở địa chỉ 18H. Nó chứa địa chỉ của
byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh trên ngăn xếp bao gồm
các lệnh cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ
liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu và lệnh lấy dữ liệu ra khỏi
ngăn xếp sẽ làm giảm SP. Ngăn xếp của 8051 được giữ trong ram nội và giới hạn
các địa chỉ có thế truy xuất bằng địa chỉ gián tiếp, chúng là 128 byte đầu của
8051.
Để khởi động SP với ngăn xếp bắt đầu tại địa chỉ 60 H, các lệnh sau đây được
dùng:
1 Vì điều kiện không cho phép và mạch đồ án không sử dụng ngắt nên mục này chỉ mang tính giới thiệu.
21
Công tắc 6 nút chạm điều khiển bóng đèn
MOV SP,#5FH
Khi reset 8051, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu tiên sẽ được
cất vào ô nhớ ngăn xếp có địa chỉ là 08 H. Ngăn xếp được truy xuất trực tiếp
bằng các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu hoặc truy xuất
ngầm bằng lệnh gọi chương trình con ACALL, LCALL và các lệnh trở về (RET,
RETI) để lưu trữ giá trị của bộ đếm chương trình khi bắt đầu thực hiện chương
trình con và lấy lại khi kết thúc chương trình con.
Các thanh ghi port xuất nhập
Các port của 8051 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở
địa chỉ A0H, và port3 ở địa chỉ B0H. tất cả các port này đều có thể truy xuất từng
bit nên rất thuận tiện trong khả năng giao tiếp.
Các thanh ghi port nối tiếp
8051 chứa một port nối tiếp dành cho việc trao đổi thông tin với các thiết bị nối
tiếp như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác. Một thanh ghi
gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả 2 dữ liệu truyền và
dữ liệu nhận. Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc
SBUF. Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển
port nối tiếp SCON ở địa chỉ 98H.
Tín hiệu Reset
8051 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu kỳ,
sau đó xuống mức thấp để 8051 bắt đầu làm việc. RST có thể kích bằng tay bằng một
phím nhấn thường mở, sơ đồ mạch reset như hình trên (hình a), sau khi reset hệ thống
được tóm tắt như sau:
Bảng 2.7. Giá trị các thanh ghi sau Reset
22
Thanh ghi Nội dung
Đếm chương trình PC
Thanhghi tích lũy A
Thanh ghi B
Thanh ghi trạng thái
SP
DPTR
Port 0 đến Port 3
IP
IE
Các thanh ghi định thời
0000H
00H
00H
00H
07H
0000H
FFH
XXX0000 B
0XX00000 B
00H
Công tắc 6 nút chạm điều khiển bóng đèn
Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được Reset tại địa
chỉ 0000H. Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa chỉ
0000H của bộ nhớ chương trình. Nội dung của Ram trong chip không bị hay đổi
bởi tác động của ngõ vào Reset.
2.2. Các khối trong mạch điện
2.2.1. Khối đầu vào
Yêu cầu:
- Tạo tín hiệu chuẩn (0 – 5 V) để đưa vào bộ điều khiển.
- Phản ứng khá nhạy với thay đổi do che và không che tay.
- Phản ứng được trong trường hợp không có ánh sáng mạnh (cấp cho quang
trở).
Khối đầu vào bao gồm cảm biến quang trở (LDR) và mạch xử lý tín hiệu là mạch
so sánh sử dụng opamp. Sơ đồ nguyên lý cho một LDR được cho trên hình vẽ.
Hình 2.11. Sơ đồ nguyên lý mạch đầu vào
Nguyên lý hoạt động của mạch rất đơn giản:
- Khi bị che (chạm tay, không có ánh sáng), điện trở của LDR rất lớn làm cho
điện thế điểm A khá lớn → V
P
> V
N
→ U
ra
= Vcc.
- Khi không bị che (có ánh sáng chiếu vào LDR), điện trở của LDR giảm làm
cho điện thế tại điểm A giảm → V
P
< V
N
→ U
ra
= GND = 0.
23
Công tắc 6 nút chạm điều khiển bóng đèn
Nếu chọn R = 100k và đặt con chạy biến trở ở mức 50% ( tức điện thế V
N
= 2,5 V)
thì mức điện trở của LDR mà tại đó điện áp ra đảo mức là 100k.
Thực nghiệm đo cho thấy, quang trở LDR có giá trị điện trở lớn nhất khi không có
ánh sáng cỡ 200k và có giá trị điện trở nhỏ nhất khi có ánh sáng mạnh chiếu vào là
20k. Như vậy giá trị điện trở R trên đáp ứng khá tốt yêu cầu khi cường độ ánh sáng
môi trường không quá yếu.
Tín hiệu ra từ opamp sẽ được đưa vào 1 chân
port của vi điều khiển. Vì điện trở ra của opamp
rất bé và tín hiệu ra chỉ có 2 mức là Vcc = 5 V
và 0 V nên đây chính là tín hiệu chuẩn đưa vào
vi điều khiển.
Opamp được sử dụng ở đây nằm trong IC
LM324. Cấu tạo và sơ đồ chân của LM324 được
biểu diễn trên hình vẽ.
LM324 gồm 4 opamp được gói chung một vỏ.
IC này có 14 chân.
Vì công tắc 6 nút chạm cần 6 cảm biến. Mỗi cảm biến cần một opamp nên cần sử
dụng ít nhất 2 IC LM324.
Một nhược điểm của mạch đầu vào này là
khi ánh sáng môi trường yếu, sự phân biệt giữa
2 trạng thái chạm và không chạm là không rõ ràng. Do vậy có thể dẫn đến hiện tượng
mất điều khiển hay điều khiển không đúng
yêu cầu đặt ra.
2.2.2. Khối xử lý
Nằm trong họ vi điều khiển 8051,
AT89C51 là một trong những vi mạch đơn
giản mà bất cứ một kỹ sư điều khiển nào
cũng phải biết.
Hình dạng và sơ đồ chân của AT89C51
được mô tả ở hình vẽ.
AT89C51 gồm 40 chân. Nguồn sử dụng là 5 V.
24
Hình 2.12. LM324
Hình 2.13. AT89C51
Công tắc 6 nút chạm điều khiển bóng đèn
Vai trò của khối xử lý là:
- Xử lý tín hiệu từ khối đầu vào.
- Điều khiển LED theo đúng quy tắc yêu cầu (xem mục 2.2.3 ở dưới).
- Điều khiển khối chấp hành (dimmer) để điều chỉnh độ sáng của đèn.
Hình 2.14. Sơ đồ mạch khối vi xử lý
Chương trình nạp vào vi điều khiển được trình bày ở mục 2.2.5.
2.2.3. Khối LED hiển thị
Yêu cầu kỹ thuật:
- Các LED sáng thể hiện vị trí chạm theo quy tắc: mỗi LED tương ứng với một
nút chạm, chạm một nút bất kỳ thì LED tương ứng với nút đó và các LED ở
các nút thấp hơn đều sáng.
- Các LED được bố trí thẳng
hàng với nhau và ngang
hàng với các nút chạm (vấn
đề này được xử lý khi thiết
kế mạch in).
Cách mắc:
Các LED được mắc theo sơ đồ A
chung, đầu K của các LED nối vào
port 3 của vi điều khiển. Để hạn chế
25
Hình 2.15. Cách mắc LED