Vi điềukhiển sẽ xuất dữ liệu hiện thị nhiệt độ đặt ra hai led 7 đoạn qua PB của 82552 vàkhi chương trình được cho phép chạy thì 8051 xuất xung điều khiển triac ứng vớigóc pha lớn nhất và
Trang 1TÓM TẮT ĐỒ ÁN TỐT NGHIỆP
I ĐẶT VẤN ĐỀ
Tủ ấm là một thiết bị không thể thiếu tại các phòng xét nghiệm của bệnhviện Vấn đề ổn định nhiệt độ cho các thiết bị này rất quan trọng, nó ảnh hưởngkhông nhỏ đến chất lượng khám chữa bệnh của bệnh viện, ví dụ nếu nhiệt độkhông ổn định thì việc nuôi cấy vi khuẩn sẽ không đạt chất lượng, dẫn đến kết quảkháng sinh đồ sẽ sai làm cho các bác sỹ lâm sàng sử dụng không đúng loại khángsinh để điều trị cho người bệnh Là một công chức công tác trong ngành Y tế, bảnthân em đã quan tâm đến vấn đề này từ lâu, sau một thời gian được các thầy côtrang bị kiến thức, nay em xin được thực hiện đề tài tốt nghiệp thiết kế và thi công
hệ thống “ điều khiển và ổn định nhiệt độ tủ ấm y tế”.
Để điều khiển và ổn định nhiệt độ cho tủ ấm thì có nhiều phương pháp,trong phạm vi đồ án này nhận thấy sự mềm dẽo, linh hoạt và chính xác của vi điềukhiển nên em thiết kế, thi công hệ thống bằng cách dùng vi mạch 8051 và điềukhiển theo phương pháp kiểm soát pha
Hệ thống có thể thực hiện được các chức năng sau:
+ Đo và hiển thị nhiệt độ trong dãi từ 30oC đến 55oC
+ Điều khiển và ổn định nhiệt độ trong dãi từ 37oC đến 40oC
+ Đặt nhiệt độ cần ổn định từ bàn phím
+ Điều khiển công suất theo phương pháp kiểm soát pha
Sơ đồ khối tổng quát của hệ thống được mô tả như sau:
Hình I: Sơ đồ khối tổng quát của hệ thống điều khiển và ổn định nhiệt độ
ROM
VI ĐIỀU KHIỂN
ĐỒNG BỘ
ĐIỀU KHIỂN
AD
Trang 2Chức năng và nhiệm vụ từng khối:
+ Khối vi điều khiển: điều hành mọi hoạt động của hệ thống Vi điều khiển
đọc chương trình từ ROM và thực thi lệnh, xuất tín hiệu điều khiển thiết bị chấphành
+ Khối bộ nhớ ROM: lưu trữ chương trình điều hành hoạt động.
+ Khối giao tiếp vào ra: thông qua khối giao tiếp vào ra mà vi điều khiển
tiến hành đọc dữ liệu từ bộ ADC đưa vào, xuất dữ liệu ra khối hiển thị
+ Khối đồng bộ, điều khiển và khối công suất: có nhiệm vụ phát hiện thời
điểm đảo pha của điện áp lưới, nhận tín hiệu điều khiển góc kích Triac từ vi điềukhiển nhằm thay đổi điện áp đặt vào khối công suất
+ Khối cảm biến: có nhiệm vụ cảm nhận và chuyển đổi giá trị nhiệt độ thu
được từ khối công suất thành tín hiệu điện áp, đưa đến đầu vào bộ chuyển đổi AD
+ Khối ADC: thực hiện quá trình chuyển đổi tín hiệu tương tự thu được từ
ngõ ra khối cảm biến sang tín hiệu số
+Khối hiển thị: hiển thị nhiệt độ thực của thiết bị và hiển thị giá trị nhiệt độ
cần ổn định do người sử dụng đưa vào từ bàn phím
+ Khối giao tiếp bàn phím: thực hiện quá trình giao tiếp giữa người và vi điều
khiển Vi điều khiển sẽ nhận giá tri nhiệt độ cần đặt từ bàn phím và tiến hành điềukhiển thiết bị hoạt động đúng theo yêu cầu
II THIẾT KẾ VÀ THI CÔNG
Nguyên lý hoạt động cơ bản của hệ thống như sau :
+ Sau khi hệ thống được cấp nguồn, giá trị nhiệt độ cần ổn định sẽ được ngườisử dụng đặt vào từ bàn phím đưa vào 8051 qua các bit P1.3, P1.4 và P1.5 Vi điềukhiển sẽ xuất dữ liệu hiện thị nhiệt độ đặt ra hai led 7 đoạn qua PB của 8255(2) vàkhi chương trình được cho phép chạy thì 8051 xuất xung điều khiển triac ứng vớigóc pha lớn nhất và xung start để khởi động ADC, sau đó nó sẽ so sánh nhiệt độđọc được từ cảm biến với nhiệt độ đặt để điều khiển thời điểm kích Triac cho phùhợp
+ Qua cảm biến LM335, giá trị nhiệt độ sẽ được chuyển đổi thành điện áptương ứng, sau đó được cách ly, bù, khuếch đại với hệ số phù hợp rồi đưa đến mạchADC để số hoá Quá trình số hoá được điều khiển bởi bit P1.0 của 8051, kết quảtại ngõ ra ADC sẽ được đọc vào 8051 thông qua PB của 8255(2), sau khi xử lý
8051 sẽ xuất giá trị nhiệt độ đo được ra 3 Led 7 đoạn thông qua 3 port của 8255(1).+ Mạch đồng bộ có mục đích giúp cho 8051 phát hiện thời điểm đảo pha củađiện áp lưới, thông qua bit P1.1, 8051 sẽ phát hiện được điểm không và điểm 180o
để từ đó “ tính toán và xác định“ tăng hay giảm thời điểm xuất xung kích Triac ( tăng hay giảm góc pha ), sau khi so sánh nhiệt độ đặt và nhiệt độ đo được, để ổnđịnh nhiệt độ của thiết bị theo đúng yêu cầu
Theo yêu cầu đề ra, quá trình thiết kế bao gồm hai phần:
+ Thiết kế phần cứng
Trang 3PA
PB PC
PA PB
Y0-Y4
1 Thiết kế phần cứng
Phần cứng của hệ thống bao gồm :
+ Kít vi điều khiển 8051
+ Khối cảm biến và ADC
+ Khối đồng bộ và điều khiển công suất
+ Khối hiển thị và bàn phím
1.1 Kít vi điều khiển 8051
Kít vi điều khiển 8051 bao gồm các khối sau:
+ Khối điều khiển trung tâm
+ Khối bộ nhớ, bao gồm : - Bộ nhớ EPROM 2764
- Bộ nhớ RAM HM6264
+ Khối giao tiếp ngoại vi 8255
+ Khối giãi mã địa chỉ 74LS138
+ Bộ chốt địa chỉ 74LS573
+ Vi mạch giao tiếp cổng nối tiếp MAX 232
Trong đó, bộ nhớ RAM HM6264 và vi mạch giao tiếp MAX 232 chỉ được sửdụng trong quá trình thi công để nạp chương trình chạy thử từ máy tính qua cổngCOM Khi chạy thử thành công, chương trình sẽ được nạp cố định vào EPROM
2764 và lúc này hai vi mạch nói trên không còn tham gia vào quá trình hoạt độngcủa mạch
Sinh viên thực hiện: Nguyễn văn Đức Lớp
Hình 1.1: Sơ đồ khối KÍT 8051
Trang 41.1.1 Khối điều khiển trung tâm
Khối xử lý trung tâm dùng vi mạch 8051, khối này có nhiệm vụ điều hànhtoàn bộ quá trình hoạt động của hệ thống Các chân 8051 được sử dụng như sau:
+ Port 0 : do sử dụng ROM ngoài nên port này trở thành bus địa chỉ (A0-A7)và bus dữ liệu (D0-D7) đa hợp trong nữa đầu của chu kỳ máy tín hiệu ALE ở mứccao sẽ chốt byte thấp của địa chỉ và nữa chu kỳ sau các chân của port 0 sẽxuất/nhập dữ liệu
+ Port 2 : dùng làm byte cao của bus địa chỉ
+ Port1 :
- Chân P1.0 xuất tín hiệu điều khiển ADC
- Chân P1.1 nhận tín hiệu từ mạch đồng bộ
- Chân P1.2 xuất tín hiệu điều khiển Triac
- Chân P1.3 nối đến phím SET của bàn phím
- Chân P1.4 nối đến phím ENTER của bàn phím
- Chân P1.5 nối đến phím RESET của bàn phím
- Các chân P1.6 và P1.7 không sử dụng
+ Các chân điều khiển :
- Chân ALE nối đến chân G của 74HC573
- Chân RD và WRnối đến chân RD và WR của 8255, chân WR
còn nối đến chân WE của 6264
- Chân PSEN và RD được nối vào cổng AND và đầu ra nối đếnchân OE của 6264, PSEN nối đếnOE của 2764
- Các đường A13, A14, A15 nối đến các chân A, B, C của 74LS138
- ChânEA do dùng ROM ngoài nên được nối mass
- Chân RXD và TXD nối đến chân T1in và R1out của MAX 232
- Các chân INT0, INT1, T0, T1 không sử dụng
1.1.2 Khối bộ nhớ ngoài
Khối này bao gồm EPROM 2764 và RAM 6264, toàn bộ chương trình điềukhiển hệ thống được lưu trữ trong ROM 2764, khi hệ thống hoạt động 8051 sẽ truyxuất chương trình này để điều khiển hệ thống Riêng RAM 6264 chỉ được sử dụngtrong quá trình thi công để nạp chương trình chạy thử từ máy tính Khi chạy thửthành công, chương trình sẽ được nạp cố định vào EPROM 2764 đến lúc này nókhông còn tham gia vào quá trình hoạt động của mạch
1.1.3 Khối giao tiếp ngoại vi
Để giao tiếp ngoại vi, ta dùng hai IC 8255 Chức năng các port của mỗi ICnhư sau :
+ 8255(1): cả 3 port đều có chung nhiệm vụ là xuất dữ liệu hiển thị nhiệt
độ thực của thiết bị ra led 7 đoạn Nội dung của từ điều khiển là CW(1):80H
+ 8255(2): - PA xuất dữ liệu hiển thị nhiệt độ đặt ra led 7 đoạn
Trang 5Nội dung của từ điều khiển là CW(2):82Hø.
1.1.4 Khối giải mã địa chỉ
Khối giải mã địa chỉ dùng vi mạch 74LS138 để chọn các chip ROM, RAM,
8255 Tại một thời điểm chỉ có 1 IC được truy xuất nên các đường địa chỉ A13,A14, A15 được dùng để chọn các chip A13, A14, A15 lần lượt nối tới 3 đầu vàoA,B,C của IC giải mã 74LS138 Các ngõ ra Y0, Y1, Y3, Y4 lần lượt được nối tớichọn chip của ROM, RAM và hai 8255, khi Yi = 0 thì IC đó được chọn
1.2 Khối cảm biến và ADC
1.2.1 Mạch cảm biến nhiệt độ
Mạch cảm biến dùng LM335, quan hệ giữa nhiệt độ và điện áp ngõ ra nhưsau:
Vout = 0,01ToK = 2,73 + 0,01ToC
Như vậy, khi nhiệt độ thiết bị thay đổi 1o thì điện áp ngõ ra LM335 sẽ thay đổimột lượng là 0,01V Ứng với dãi hoạt động của thiết bị từ 30oC đến 55oC, sự biếnthiên điện áp tại ngõ ra LM335 theo nhiệt độ ngõ vào là:
Tại 0oC thì điện áp ngõ ra Vout = 2,73 (V)
Tại 30oC thì điện áp ngõ ra Vout = 3,03 (V)
Tại 55oC thì điện áp ngõ ra Vout = 3,28 (V)
Bảng 1.1: Giản đồ bộ nhớ 8051
Trang 7V1 V2
áp tại ngõ ra của mạch là 0 V và ứng với nhiệt độ 55oC là 5V Do vậy, tín hiệu tạingõ ra LM335 trước khi đưa đến mạch khuếch đại cuối, ta thiết kế mạch bù điện ápdùng TL084 với đầu vào không đảo là nối với ngõ ra LM335và đầu vào còn lại làmạch tạo điện áp chuẩn với điện áp là Vch = 3,03V
Mạch khuếch đại cuối có nhiệm vụ khuếch đại điện áp tại đầu ra của mạch bùlên 20 lần, như vậy khi nhiệt độ tại ngõ vào LM335 là 30oC thì điện áp ngõ ra củamạch cảm biến là 0V và tại ngõ vào 55oC thì điện áp ngõ ra là 5V
1.2.2 Mạch chuyển đổi AD
Để thực hiện việc chuyển đổi AD, ta sử dụng vi mạch ADC 0809, đây là vimạch có 8 ngõ vào tương tự và ngõ ra digital 8 bit Để thực hiện việc chuyển đổi vànhận dữ liệu từ ADC, trong đồ án thực hiện các bước sau :
+ Ngõ vào CLK của 0809 sẽ được điều khiển bởi mạch tạo dao động có tần sốkhoảng 900KHz
+ Vref(+) = 5V, Vref(-) = 0V
+ Ngõ vào IN0 được chọn nên các chân A0,A1,A2 nối mass
+ 8051 xuất xung start tại chân P1.0 để bắt đầu quá trình chuyển đổi
+ Trì hoãn khoảng 150s để ADC thực hiện hoàn toàn việc chuyển đổi
+ Dữ liệu 8 bit tại ngõ ra ADC sẽ được đọc vào port B của 8255(2)
Tại nhiệt độ 30oC ngõ ra ADC có giá trị 00H và tại 55oC thì ngõ ra ADC có giá trịFFH
1.3 Khối đồng bộ và điều khiển công suất
1.3.1 Khối đồng bộ
Mạch đồng bộ có nhiệm vụ giúp cho vi điều khiển nhận biết thời điểm điện áplưới chuyển pha 0o và 180o , dựa vào thời điểm này mà vi điều khiển “tính toán“thời điểm phát xung kích khởi điều khiển Triac sau khi đã so sánh giá trị nhiệt độđọc được với nhiệt độ cần ổn định
1 2 V A C
1 2
Trang 81.3.2 Mạch điều khiển công suất
Tải được điều khiển theo phương pháp kiểm soát pha dùng triac, lúc mới hoạtđộng vi điều khiển sẽ xuất xung điều khiển ứng với góc pha lớn nhất, khi nhiệt độtrên tải chưa bằng nhiệt độ đặt, góc pha sẽ được điều khiển giảm dần và ngược lạinếu nhiệt độ trên tải vượt quá yêu cầu thì góc pha sẽ được điều khiển tăng dần
Hình 1.5 :Sơ đồ mạch điều khiển
R18
220VAC 1
2
12V
220 R19
A915
Trang 91.4.1 Khối hiển thị
Khối này gồm có hai mạch:
+ Mạch hiển thị nhiệt độ đặt
+ Mạch hiển thị nhiệt độ thiết bị
a.Mạch hiển thị nhiệt độ đặt
Để hiển thị giá trị nhiệt độ cần ổn định do người sử dụng đặt vào từ bàn phím
em dùng 2 led 7 đoạn loại cathod chung có ký hiệu SM 120561K Tín hiệu đượcxuất ra từ Port A của 8255(2) sẽ được đưa qua IC 4511 giãi mã số nhị phân BCDthành số thập phân trước khi xuất ra led 7 đoạn để hiển thị
b.Mạch hiển thị nhiệt độ thiết bị
Để hiển thị nhiệt độ của thiết bị ta sử dụng 3 led 7 đoạn loại Anot chung có kýhiệu HY-5161BS, một led hiển thị hàng chục, một led hiển thị hàng đơn vị và ledcòn lại hiển thị hàng thập phân Dữ liệu được lấy ra từ 3 Port của 8255(1) Sơ đồmạch được giới thiêu ở trang kế bên
C H U S O H A N G D V I
a b c d e f g
.
3 3 0 x 7 R
U 1
4 5 1 1
7 1 2 6 3 4 5
1 3
1 2
1 1
1 0 9
1 5
1 4
A B C D
L T
B I
L E
A B C D E F G
1 2 3 4 5 6 7 8
4 7 K
C H U S O H A N G C H U C
5 V
3 3 0 x 7 R
4 7 K
F r o m P A 2
5 V
a b c d e f g
.
U 2
4 5 1 1
7 1 2 6 3 4 5
1 3
1 2
1 1
1 0 9
1 5
1 4
A B C D
L T
B I
L E
A B C D E F G
Hình 1.7 : Sơ đồ mạch hiển thị nhiệt độ đặt
Trang 101.4.2 Khối bàn phím
Mạch bàn phím có 3 phím ấn, có chức năng như sau :
+ Phím SET dùng để đặt nhiệt độ cần ổn định
+ Phím ENTER cho phép vi điều khiển chạy ổn định nhiệt độ
+ Phím RESET cho phép dừng điều khiển và đặt lại nhiệt độ
2 Thiết kế phần mềm
Hình 1.8 : Sơ đồ mạch hiển thị nhiệt độ thiết bị
Trang 11Trong mục này em trình bày thiết kế chương trình cho chip vi điều khiển 8051dưạ trên cơ sở phần cứng thiết kế trong phần trước Chương trình được lưu trong bộnhớ ROM ngoài, vi điều khiển tiến hành đọc chương trình trong ROM và thực thilệnh để điều khiển hệ thống hoạt động theo yêu cầu của đề tài.
Nguyên tắc hoạt động của chương trình như sau: sau khi hệ thống được cấpnguồn, vi điều khiển chờ nhập và đọc giá trị nhiệt độ cần ổn định từ bàn phím, hiểnthị ra 2 led 7 đoạn Sau khi người sử dụng nhấn phím “ Enter “ cho phép chạychương trình, vi điều khiển kích xung cho phép ADC hoạt động rồi nhận dữ liệu tạingõ ra ADC, tra bảng mã nhiệt độ tương ứng để hiển thị kết quả đo được ra 3 led 7đoạn Công việc tiếp theo là vi điều khiển sẽ xuất xung kích Triac ( dựa vào xungđồng bộ ) để mạch công suất hoạt động ứng với góc kích lớn nhất rồi giảmdần , vi điều khiển so sánh nhiệt độ đo được với nhiệt độ đặt nếu chưa bằng thì tiếptục giảm góc kích, ngược lại nếu vượt nhiệt độ đặt thì sẽ tăng dần góc kích, nhưvậy sẽ có một góc kích mà tại đó nhiệt độ sẽ tương đối ổn định và lúc này vi điềukhiển xuất xung tăng giảm góc kích chung quanh góc kích ổn định Nguyên tắccủa việc xuất xung kích Triac của vi điều khiển là : khi phát hiện sườn lên và sườnxuống của xung đồng bộ được đưa vào qua P1.1, vi điều khiển lập tức xóa P1.2 gọi
“Delay” sau đó lập bit P1.2 trong một khoảng sao cho đủ thời gian để kích Triac,thời gian delay dài hay ngắn sẽ quyết định góc kích lớn hay nhỏ Trong quatrình hoạt động nếu có tín hiệu “Reset” (thay đổi nhiệt độ cần ổn định) thì vi điềukhiển sẽ cho phép dừng hệ thống và chờ nhận giá trị nhiệt độ mới Ưu điểm củaviệc điều khiển theo cách này là góc kích sẽ tăng hoặc giảm rất mịn nên khả năngtải sẽ làm việc ổn định
Cấu trúc chương trình được chia ra thành chương trình chính và các chươngtrình con, mỗi chương trình con thực hiện một công việc khác nhau như sau:
+ Chương trình chính
+ Chương trình con nhận nhiệt độ đặt từ bàn phím
+ Chương trình con hiển thị giá trị nhiệt độ ra LED 7 đoạn
+ Chương trình con đọc nhiệt độ từ ADC
+ Chương trình con ổn định nhiệt độ
Trang 122.2 Lưu đồ thuật toán chương trình chính
9.3 Lưu đồ thuật toán các chương trình con
Sinh viên thực hiện: Nguyễn văn Đức Lớp 21ĐT
END
KHỞI ĐỘNG MODE LÀM VIỆC
CHO 8255
KHỞI TẠO GIÁ TRỊ BAN ĐẦU CHO
CÁC THANH GHI GỌI CHƯƠNG TRÌNH CON NHẬP NHIỆT ĐỘ CẦN ỔN ĐỊNH
ỔN ĐỊNH NHIỆT ĐỘ THEO GIÁ TRỊ ĐÃ ĐẶT
YES HIỂN THỊ NHIỆT ĐỘ CẦN ỔN ĐỊNH
GỌI CT CON ĐỌC NHIỆT ĐỘ VÀO GỌI CT CON ỔN ĐỊNH NHIỆT ĐỘ GỌI CT CON HIỂN THỊ NHIỆT ĐỘ
ĐẶT LẠI NHIỆT ĐỘKẾT THÚC
START T
NO
YES
NO NO
Hình 9.1 : Lưu đồ thuật toán chương trình chính
Trang 13Hình 9.2 : Chương trình con nhập nhiệt độ từ bàn phím
Hình 9.3 : Chương trình con đọc nhiệt độ vào
Trang 14NO
HTHỊ ĐỌC NHIỆT ĐỘ TRA BẢNG NHIỆT ĐỘ XUẤT DỮ LIỆU RA LED 7 ĐOẠN
RET
Hình 9.4 : Chương trình con hiển thị nhiệt độ
ĐỌC DỮ LIỆU ỔN ĐỊNH
RET
Hình 9.5 : Chương trình con ổn định nhiệt độ
TĐẶT > T YES GIẢM
TĐẶT < T YES TĂNG
TĐẶT = T YES
Trang 15TRA BẢNG ĐƯA KẾT QUẢ ĐỌC ADC VÀO A GÁN B=10, CHIA A CHO B
LẤY THƯƠNG SỐ LÀM SỐ GIA ĐỂ TRA
“BANGMA” RỒI LƯU VÀO A
RET
Hình 9.6 : Chương trình con tra bảng nhiệt độ
TÁCH 4 BIT THẤP TRONG A LÀM SỐ GIA TRA
“BMLED”HIỂN THỊ HÀNG ĐVỊ
TÁCH 4 BIT CAO TRONG A LÀM SỐ GIA TRA
“BMLED”HIỂN THỊ HÀNG CHỤC LẤY DƯ SỐ CHỨA TRONG B LÀM SỐ GIA
TRA
Trang 16Trong kỹ thuật điều khiển tự động sự kết hợp giữa vi điều khiển, máy tính với các bộ cảm biến được sử dụng phổ biến, thực hiện công việc đo, giám sát và điều khiển hệ thống tự động hay từ xa như các hệ thống: điều khiển nhiệt độ, đếm sản phẩm, ổn định tốc độ động cơ, báo cháy …
Trong các bệnh viện, việc điều khiển ổn định nhiệt độ của các thiết bị như tủ giữ ấm, buồng nuôi cấy vi khuẩn, máy sưởi rất quan trọng vì nó ảnh hưởng đến chất lượng điều trị cho người bệnh Là một cán bộ làm công tác y tế, thấy được tầm quan trọng trên nên em xin được thực hiện đề tài” điều khiển và ổn định nhiệt độ tủ ấm y tế” nhằm từng bước kết hợp những kiến thức đã học với thực tế công việc Tủ ấm Y tế thường được trang bị tại các khu xét nghiệm để giữ bệnh phẩm hoặc các tiêu bản xét nghiệm, các thiết bị này thường có công suất cở 180W đến 200W với nhiệt độ thường được ổn định trong khoảng 37o C đến 40oC.
Trong phạm vi đồ án này em thiết kế mô phỏng thiết bị điều khiển và ổn định nhiệt độ tủ ấm ứng dụng vi điều khiển 8051, trên cơ sở đó em đã tiến hành khảo sát những tính năng của chíp vi điều khiển 8051 để thiết kế và thi công hệ thống với mong ước từng bước tiếp cận thực tế để sau này có điều kiện phục vụ tốt hơn trong công tác khám chữa bệnh tại đơn vị.
1.2 Nhiệm vụ của đề tài
Trang 17định nhiệt độ tủ giữ ấm y tế dùng chíp vi điều khiển 8051, đáp ứng được các yêu cầu sau:
+ Đo và hiển thị nhiệt độ thực của thiết bị
+ Đặt nhiệt độ cần ổn định từ bàn phím.
+ Điều khiển và ổn định nhiệt độ trong dãi yêu cầu từ 30oC đến 55oC + Điều khiển công suất nhiệt của thiết bị theo phương pháp điều khiển pha dùng Triac.
Nhiệm vụ thiết kế hệ thống được chia làm 2 phần:
- Thiết kế và thi công phần cứng của hệ thống.
- Viết phần mềm điều khiển hoạt động hệ thống.
Sơ đồ khối tổng quát của hệ thống như sau:
Chức năng và nhiệm vụ từng khối:
+Khối vi điều khiển: Điều hành mọi hoạt động của hệ thống Vi điều khiển đọc chương trình từ ROM và thực thi lệnh, xuất tín hiệu điều khiển thiết bị chấp hành.
+Khối bộ nhớ ROM: Lưu trữ chương trình điều hành hoạt động.
Hình 7.6 : Sơ đồ khối tổng quát của hệ thống điều khiển và ổn định nhiệt
độ dùng 8051
HIỂN THỊ
Mạch đồng bộ
Điều khiển Triac
GIAO TIẾP VÀO RA
Khối công suất BÀN
PHÍM
Trang 18+Khối giao tiếp vào ra: Thông qua khối giao tiếp vào ra mà vi điều khiển tiến hành đọc dữ liệu từ bên ngoài đưa vào, giám sát và điều khiển trạng thái hoạt động của thiết ngoại vi, xuất dữ liệu ra thiết bị hiển thị
+Khối đồng bộ, điều khiển và khối công suất: có nhiệm vụ phát hiện thời điểm đảo pha của điện áp lưới, điều khiển góc kích Triac nhằm thay đổi điện áp đặt vào khối công suất.
+Khối cảm biến: Có nhiệm vụ chuyển đổi các đại lượng phi điện đó là nhiệt độ thành tín hiệu điện (điện áp), đưa đến đầu vào bộ chuyển đổi ADC.
+Khối ADC: Thực hiện quá trình chuyển đổi tín hiệu từ tương tự sang tín hiệu số.
+Khối hiển thị: Hiển thị nhiệt độ thực của thiết bị từ vi điều khiển đưa đến và hiển thị giá trị nhiệt độ cần ổn định do người sử dụng đưa vào từ bàn phím.
+Khối giao tiếp bàn phím: Thực hiện quá trình giao tiếp giữa người và
vi điều khiển Vi điều khiển sẽ nhận giá tri nhiệt độ cần đặt từ bàn phím và tiến hành điều khiển thiết bị hoạt động đúng theo yêu cầu.
Trang 19Chương 2:
GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8951
2.1 Tổng quan về kỹ thuật vi điều khiển
2.1.1 Khái quát chung về vi điều khiển
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có thể lập trình được, dùng để điều khiển hoạt động của một hệ thống Theo chương trình điều khiển đã nạp sẵn bên trong chip, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, sau đó dựa vào kết quả của quá trình xử lý để đưa ra các thông báo, tín hiệu điều khiển tiến hành điều khiển quá trình hoạt động của các thiết bị bên ngoài Vi điều khiển được ứng dụng trong rất nhiều sản phẩm công nghiệp và tiêu dùng.
Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển điều khiển hoạt động của TV, máy giặt, đầu đọc laser, điện thoại, lò vi-ba Trong hệ thống sản xuất tự động, bộ vi điều khiển được sử dụng trong Robot, dây chuyền tự động Các hệ thống càng “thông minh” thì vai trò của hệ vi điều khiển càng quan trọng.
2.1.2 Lịch sử phát triển của vi điều khiển
Bộ vi điều khiển thực ra là một loại vi xử lí trong tập hợp các bộ vi xử lý nói chung Bộ vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 1970
do sự phát triển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-Oxide-Semiconductor), mức độ tích hợp của các linh kiện bán dẫn trong một chip ngày càng cao.
Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 do công ty texas Instruments vừa là nơi phát minh vừa là nhà sản xuất Nhìn tổng thể thì bộ vi xử lý chỉ có chứa trên một chip những chức năng cần thiết để xử lý chương trình theo một trình tự, còn tất cả bộ phận phụ trợ khác cần thiết như: bộ nhớ dữ liệu, bộ nhớ chương trình, bộ chuyển đổi AD, khối điều khiển, khối hiển thị, điều khiển máy in, nối đồng hồ và lịch là những linh kiện nằm ở bên ngoài được nối vào bộ vi xử lý.
Mãi đến năm 1976 công ty INTEL (Intelligen-Elictronics) mới cho ra đời bộ vi điều khiển đơn chip đầu tiên trên thế giới với tên gọi 8048 Bên cạnh bộ xử lý trung tâm, 8048 còn chứa bộ nhớ dữ liệu, bộ nhớ chương trình,
Trang 20bộ đếm và phát thời gian, các cổng vào ra digital trên một chip Các công ty khác cũng lần lược cho ra đời các bộ vi điều khiển 8 bit tương tự như 8048 và hình thành họ vi điều khiển MCS-48.
Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển đơn chip với tên gọi 8951 Và sau đó hàng loạt các vi điều khiển cùng loại với 8951 ra đời và hình thành họ vi điều khiển MCS-51
Đến nay họ vi điều khiển 8 bit MCS51 đã có đến 250 thành viên và hầu hết các công ty hàng dẫn đầu thế giới chế tạo Đứng đầu là công ty INTEL và rất nhiều công ty khác như : AMD, SIEMENS, PHILIPS, DALLAS, OKI …
2.1.3 Sơ đồ khối của một bộ vi điều khiển
Sơ đồ khối chung của hầu hết các bộ vi điều khiển bao gồm CPU, bộ nhớ ROM hay EPROM và RAM, mạch giao tiếp, mạch giao tiếp song song, bộ định thời gian, hệ thống ngắt và các BUS được tích hợp trên cùng một chip.
2.2 Kiến trúc của vi điều khiển 8951
IC vi điều khiển 8951 thuộc họ MCS51 có các đặc điểm sau :
Giao tiếp song song
Thiết bị nối tiếp
Thiết bị song song
Hình 2.1: Sơ đồ khối của bộ vi điều khiển
Nguồn hồ ngoài đồng
Ngắt ngoài
Bus dữ liệu, địa chỉ, điều khiển
Đồng hồ nội
Trang 21+ Hai bộ định thời 16 bits
+ Giao tiếp nối tiếp
+ 64KB không gian bộ nhớ chương trình ngoài
+ 64 KB không gian bộ nhớ dữ liệu ngoài
+ Bộ xử lí luận lí (thao tác trên các bit đơn)
- 210 bit được địa chỉ hóa
- Bộ nhân / chia 4s
2.2.1 Cấu trúc bên trong của 8951
Hình 2.2 : Sơ Đồ Khối 8951
Phần chính của vi điều khiển 8951 là bộ xử lí trung tâm (CPU: central processing unit) bao gồm :
+ Thanh ghi tích lũy A
+ Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
INT\1 INT\0 TIMER2 TIMER1 PORT nối tiếp
TXD * RXD *
Điều khiển
ngắt
Điều khiển bus
CPU
Port nối tiếp
Các port I/O
Tạo dao
động
Trang 22+ Đơn vị logic học (ALU : Arithmetic Logical Unit )
+ Từ trạng thái chương trình (PSW : Prorgam Status Word)
+ Bốn băng thanh ghi
+ Con trỏ ngăn xếp
+ Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời gian và logic.
Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ dao động, ngoài ra còn có khả năng đưa một tín hiệu giữ nhịp từ bên ngoài.
Chương trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ngắt ở bên trong Các nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn bộ đếm định thời hoặc cũng có thể là giao diện nối tiếp.
Hai bộ định thời 16 bit hoạt động như một bộ đếm.
Các cổng (port0, port1, port2, port3), sử dụng vào mục đích điều khiển.
Ở cổng 3 có thêm các đường dẫn điều khiển dùng để trao đổi với một bộ nhớ bên ngoài, hoặc để đầu nối giao diện nối tiếp, cũng như các đường ngắt dẫn bên ngoài
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việc độc lập với nhau Tốc độ truyền qua cổng nối tiếp có thể đặt trong dãy rộng và được ấn định bằng một bộ định thời.
Trong vi điều khiển 8951 có hai thành phần quan trọng khác đó là bộ nhớ và các thanh ghi :
+ Bộ nhớ gồm có bộ nhớ RAM và bộ nhớ ROM dùng để lưu trữ dữ liệu và mã lệnh.
+ Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình xử lí Khi CPU làm việc nó làm thay đổi nội dung của các thanh ghi.
2.2.2 Chức năng các chân của vi điều khiển 8951
Sinh viên thực hiện: Nguyễn văn Đức Lớp 21ĐT
1 2
1 3
1 4
1 5 1 2 3 4 5 6 7
Trang 23
Vi điều khiển 8951 có 32 trong 40 chân có chức năng như là các cổng I/
O, trong đó 24 chân được sử dụng với hai mục đích Nghĩa là ngoài chức năng cổng I/O, mỗi chân có công dụng kép này có thể là một đường điều khiển của Bus địa chỉ hay Bus dữ liệu hoặc là mỗi chân hoạt động mọt cách độc lập để giao tiếp với các thiết đơn bit như là công tắc, LED, transistor…
a.Port0: là port có 2 chức năng, ở trên chân từ 32 đến 39 của MC 8951 Trong các thiết kế cỡ nhỏ không dùng bộ nhớ ngoài, P0 được sử dụng như là những cổng I/O Còn trong các thiết kế lớn có yêu cầu một số lượng đáng kể bộ nhớ ngoài thì P0 trở thành các đường truyền dữ liệu và 8 bit thấp của bus địa chỉ.
b Port1: là một port I/O chuyên dụng, trên các chân 1-8 của MC8951 Chúng được sử dụng với một múc đích duy nhất là giao tiếp với các thiết bị ngoài khi cần thiết.
c Port2: là một cổng có công dụng kép trên các chân 21 – 28 của MC
8951 Ngoài chức năng I/O, các chân này dùng làm 8 bit cao của bus địa chỉ cho những mô hình thiết kế có bộ nhớ chương trình ROM ngoài hoặc bộ nhớ dữ liệu RAM có dung lượng lớn hơn 256 byte.
d Port3: là một cổng có công dụng kép trên các chân 10 – 17 của MC
8951 Ngoài chức năng là cổng I/O, những chân này kiêm luôn nhiều chức năng khác nữa liên quan đến nhiều tính năng đặc biệt của MC 8951, được mô tả trong bảng sau:
Hình 2.3 : Sơ đồ chân 8951
Trang 24Bit 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
0 INT 1 INT
T0 T1
ƯWR RD
Ngõ vào dữ liệu nối tiếp.
Ngõ xuất dữ liệu nối tiếp.
Ngắt ngoài 0.
Ngắt ngoài 1.
Ngõ vào TIMER 0.
Ngõ vào của TIMER 1.
Điều khiển ghi dữ liệu lên bộ nhớ ngoài.
Điều khiển đọc bộ nhớ dữ liệu ngoài.
Bảng 2.1 : Chức năng của các chân trên port3
e PSEN (Program Store Enable): 8951 có 4 tín hiệu điều khiển, PSEN là tín hiệu ra trên chân 29 Nó là tín hiệu điều khiển để cho phép truy xuất bộ nhớ
chương trình mở rộng và thường được nối đến chân OE (Output Enable) của một EPROM để cho phép đọc các byte mã lệnh của chương trình Tín hiệu PSEN ở mức thấp trong suốt phạm vi quá trình của một lệnh Các mã nhị phân của chương trình được đọc từ EPROM qua bus và được chốt vào thanh ghi lệnh của 8951 để giải mã lệnh Khi thi hành chương trình trong ROM nội PSEN sẽ ở mức cao.
f ALE (Address Latch Enable ): Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các xử lý 8585, 8088 8951 dùng ALE để giải đa hợp bus địa chỉ và dữ liệu, khi port 0 được dùng làm bus địa chỉ/dữ liệu đa hợp: vừa là bus dữ liệu vừa là byte thấp của địa chỉ 16 bit ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nữa đầu của chu kỳ bộ nhớ Sau đó, các đường Port 0 dùng để xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của chu kỳ bộ nhớ.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng là nguồn xung nhịp cho các hệ thống Nếu xung trên
8951 là 12MHz thì ALE có tần số 2MHz Chân này cũng được làm ngõ vào cho xung lập trình cho EPROM trong 8951.
g EA (External Access): Tín hiệu vào EA trên chân 31 thường được nối lên mức cao (+5V) hoặc mức thấp (GND) Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K) Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng Người ta còn dùng chân
EA làm chân cấp điện áp 21V khi lập trình cho EPROM trong 8951.
Trang 25h RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của 8951 Khi tín hiệu này được đưa lên mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong 8951 được đưa vào những giá trị thích hợp để khởi động hệ thống.
i.OSC: 8951 có một bộ dao động trên chip, nó thường được nối với thạch anh giữa hai chân 18 và 19 Tần số thạch anh thông thường là 12MHz.
j POWER: 8951 vận hành với nguồn đơn +5V Vcc được nối vào chân 40 và Vss (GND) được nối vào chân 20.
2.2.3 Tổ chức bộ nhớ của bộ vi điều khiển 8951
8951 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong 8951, dù vậy chúng có thể được mở rộng bằèng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu.
Bộ nhớ bên trong bao gồm ROM và RAM trên chip RAM trên chip bao gồm nhiều 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
RAM bên trong chip 8951 được phân chia như sau:
Bank thanh ghi (00H – 1FH).
RAM địa chỉ hóa từng bit (20H – 2FH)
RAM đa dụng (30H – 7FH)ø
Các thanh ghi chức năng đặc biệt (80H – FFH).
a RAM đa dụng
Bộ nhớ chương trình được chọn qua PSEN
0000
Bộ nhớ dữ liệu được chọn qua
Trang 26Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp Ví dụ, để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích lũy lệnh sau sẽ được dùng :
MOV A, 5FH
Lệnh này di chuyển một byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (5FH) Đích nhận dữ liệu được ngầm xác định trong mã lệnh là thanh ghi tích lũy A.
RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay R1 Ví dụ, sau khi thi hành cùng nhiệm vụ như lệnh đơn ở trên :
MOV R0, #5FH
MOV A, @R0
Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0 và lệnh thứ hai dùng địa gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy.
Trang 277F FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 BRAM đa dụng
2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P.32D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60 A8 AF AC A
B AA A9 A8 IE2B 5F 5E 5D 5C 5B 5A 59 58
23 1F 1E 1D 1C 1B 1A 19 18 8D không được địa chỉ hoá bit TH1
22 17 16 15 14 13 12 11 10 8C không được địa chỉ hoá bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B không được địa chỉ hoá bit TL1
20 07 06 05 04 03 02 01 00 8A không được địa chỉ hoá bit TL01F Bank 3 89 không được địa chỉ hoá bit TMO
D
18 88 8F 8E 8D 8C 8B 8A 89 88 TCON
17 Bank 2 87 không được địa chỉ hoá bit PCON10
0F Bank 1 83 không được địa chỉ hoá bit DPH
08 82 không được địa chỉ hoá bit DPL
07 Bank thanh ghi 0 81 không được địa chỉ hoá bit SP
00 (mặc định cho R0 -R7) 80 87 86 85 84 83 82 81 80 P0 RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
Bảng 2.2: Tổ chức bộ nhớ dữ liệu trên chíp
Địa chỉ
byte
Trang 28b RAM địa chỉ hóa từng bit
8951 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H đến 2FH, và phần còn lại trong các thanh ghi chức năng đặc biệt
Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung Các bit có thể được đặt, xóa, AND, OR …với một lệnh đơn Đa số các vi xử lý khác đòi hỏi một chuổi lệnh để đạt được hiệu quả tương tự Hơn nữa, các port I/0 cũng được địa chỉ từng bit làm đợn giản phần mềm xuất nhập từng bit.
Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH Các địa chỉ này được truy xuất như các byte hoặc các bit phụ thuộc vào lệnh được dùng
Ví dụ, để đặt bit 67H, ta dùng lệnh sau : SETB 67H
Ở đây địa chỉ bit 67H là bit có trọng số lớn nhất (MSB) ở địa chỉ byte 2CH, lệnh trên sẽ không tác động đến các bit khác của byte này.
c Các bank thanh ghi
MC 8951 cung cấp 32 byte thấp nhất của bộ nhớ dữ liệu nội là dành cho các bank thanh ghi, 8 thanh ghi (RO đến R7) ở vị trí cuối cùng của RAM và theo mặc định (sau khi Reset hệ thống) các thanh ghi này ở các địa chỉ 00H- 07H, tiếp đó là bank 1, bank 2 và bank 3 Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào thanh ghi tích lũy:
MOV A, R5
Đây là lệnh một byte dùng địa chỉ thanh ghi Tất nhiên, thao tác tương tự có thể được thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai:
MOV A, 05H
Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh tương ứng dùng địa chỉ trực tiếp Các giá trị dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này.
Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghi trong từ trạng thái chương trình (PSW) Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào địa chỉ 18H:
MOV R0, A
Ý tưởng dùng các bank thanh ghi cho phép chuyển hướng chương trình nhanh và hiệu quả, từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng không phụ thuộc vào các phần khác.
Trang 292.2.4 Các thanh ghi chức năng đặc biệt ( SFR )
Các thanh ghi nội của 8951 được truy xuất ngầm định bởi tập lệnh Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1 Tác động này được ngầm định trong mã lệnh.
Các thanh ghi trong 8951 được định dạng như một phần của RAM trên chip Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ không có lợi khi đặt chúng vào trong RAM trên chip) Đó là lý do để 8951 có nhiều thanh ghi Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 địa chỉ SFR là được định nghĩa.
Ngoại trừ thanh ghi tích lũy (A) có thể được truy xuất ngầm như đã nói,
đa số các SFR được truy xuất dùng địa chỉ trực tiếp Chú ý rằng một vài SFR có thể được địa chỉ hóa bit hoặc byte Trongi thiết kế phải thận trọng khi truy xuất bit và byte
Ví dụ lệnh sau:
SETB 0E0H
Sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không thay đổi Tathấy rằng E0H đồng thời là địa chỉ byte của thanh ghi tích lũy và là địa chỉ bitcó trọng số nhỏ nhất trong thanh ghi tích lũy Vì lệnh SETB chỉ tác động trênbit, nên chỉ có địa chỉ bit là có hiệu quả
a Từ trạng thái chương trình (PWS)
Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ D0H chứa các bit trạng thái như bảng tóm tắt sau:
Bit Ký hiệu Địa chỉ Ýù nghĩa
OVP
D7HD6HD5HD4HD3H
D2HD1HD0H
Cờ nhớCờ nhớ phụCờ 0
Bit 1 chọn bank thanh ghiBit chọn bank thanh ghi
00=bank 0; địa chỉ 00H-07H01=bank 1: địa chỉ 08H-0FH10=bank 2:địa chỉ 10H-17H11=bank 3:địa chỉ 18H-1FHCờ tràn
Dự trữCờ Parity chẵn
Trang 30Bảng 2.3: Từ trạng thái chương trình + Cờ nhớ (CY) có công dụng kép Thông thường nó được dùng cho các lệnh toán học: nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn phép trừ Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh sau:
ADD A, #1
Sẽ trả về thanh ghi tích lũy kết qủa 00H và set cờ nhớ trong PSW Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lý thi hành trên bit Ví dụ, lệnh sẽ AND bit 25H với cờ nhớ và đặt kết qủa trở vào cờ nhớ:
ANL C, 25H
+ Cờ nhớ phụ AC :
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết qủa của 4 bit thấp trong khoảng 0AH đến 0FH Nếu các giá trị cộng được là số BCD, thì sau lệnh cộng cần có DA A ( hiệu chỉnh thập phân thanh ghi tích lũy) để mang kết qủa lớn hơn 9 trở về giá trị đúng
+ Cờ zero F0: Cờ F0 là một bit cờ đa dụng dành các ứng dụng của người dùng.
+ Các bit chọn bank thanh ghi
Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghiđược tích cực Chúng được xóa sau khi reset hệ thống và được thay đổi bằngphần mềm nếu cần Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và dichuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy:SETB RS1
SETB RS0
MOV A, R7
Khi chương trình được hợp dịch các địa chỉ bit đúng được thay thế chocác ký hiệu “RS1” và “RS0” Vậy lệnh SETB RS1 sẽ giống như lệnh SETB0D4H
+ Cờ Tràn
Cờ tràn (0V) được set một lệnh cộng hoặc trừ nếu có một phép toán bịtràn Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểmtra bit này để xác định xem kết qủa của nó có nằm trong tầm xác định không.Khi các số không dấu được cộng, bit 0V có thể được bỏ qua Các kết qủa lớnhơn +127 hoặc nhỏ hơn –128 sẽ set bit 0V
b.Thanh ghi B
Trang 31các phép toán nhân và chia Lệnh MUL AB sẽ nhân các giá trị không dấu 8bit trong A và B rồi trả về kết qủa 16 bit trong A (byte thấp) và B (byte cao).Lệnh DIV AB sẽ chia A cho B rồi trả về kết qủa nguyên trong A và phần dưtrong B Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng Nóđược địa chỉ hóa từng bit bằng các địa chỉ bit F0H đến F7H.
c Con trỏ ngăn xếp
Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H Nó chứa địachỉ 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ănxếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏingă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ẽ đọc dữ liệu và làm giảm SP Ngănxếp của 8951 được
giữ trong RAM nội và được 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 8951
Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây được dùng:
MOV SP, #5FH
Trên 8951ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM trên chip là 7FH Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ lệu đầu tiên.
Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp mà để nó lấy giá trị mặc định khi reset hệ thống Giá trị măc định đó là 07H và kết qủa là ngăn đầu tiên để cất dữ liệu có địa chỉ 08H Nếu phần mềm ứng dụng không khởi động lại SP, bank thanh ghi 1 (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm ngăn xếp.
Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưugiữ tạm thời và lấy lại dữ liệu hoặc được truy xuất ngầm bằng các lệnh gọichương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) để cất vàlấy lại bộ đếm chương trình
d Con trỏ dữ liệu
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài, đây làmột thanh ghi 16 bit ở địa chỉ 82H (byte thấp) và 83H (byte cao) Ba lệnh sausẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H:
MOV A, #55H
MOV DPTR, #1000H
MOVX @DPTR, A
Trang 32Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghitích lũy, lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bit1000H vào con trỏ dữ liệu Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữliệu trong A (55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR (1000H)
e Các thanh ghi port xuất nhập
Các port của 8951 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H, Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H Tất cả các Port đều được địa chỉ hóa từng bit Điều đó cung cấp một khả năng giao tiếp thuận lợi.
f Các thanh ghi timer
8951 chứa 2 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc đếm sự kiện Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao) Timer 1 ở địa chỉ 8BH (TL1:byte thấp) và 8DH (TH1: byte cao)
Việc vận hành timer được set bởi thanh ghi Timer Mode (TMOD) ở địachỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H Chỉ có TCONđược địa chỉ hóa từng bit
g Các thanh ghi port nối tiếp
8951 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tinvới các thiết bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các
IC khác có giao tiếp nối tiếp (có bộ chuyển đổi A/D, các thanh ghi dịch ).Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cảhai dữ liệu truyền và nhận Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữliệu thì đọc từ SBUF Các mode vận hành khác nhau được lập trình qua thanhghi điều khiển port nối tiếp (SCON) được địa chỉ hóa từng bit ở địa chỉ 98H
h Các thanh ghi ngắt
8951 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấm sau khireset hệ thống và sẽ được cho phép bằng việc ghi vào thanh ghi cho phép ngắt(IE) ở địa chỉ 8AH một giá trị phù hợp Cả hai thanh ghi được địa chỉ hóatừng bit
i Các thanh ghi điều khiển công suất
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bitđiều khiển Chúng được tóm tắt trong bảng sau:
B
it
7 SMOD Bit gấp đôi tốc độ baud, nếu được
Trang 33trong các mode 1,2 và 3 của port nối tiếp
Không định nghĩaKhông định nghĩaKhông định nghĩaBit cờ đa dụng 1Bit cờ đa dụng 0Giảm công suất, được set để kích hoạt mode giảm công suất, chỉ thoá khi reset
Mode chờ, set để kích hoạt mode chờ, chỉ thoát khi có ngắt hoặc reset hệ thống
2.2.5 Bộ nhớ ngoài
8951 có khả năng mở rộng bộ nhớ đến 64K bộ nhớ chương trình và 64K bộ nhớ dữ liệu bên ngoài Do đó có thể dùng thêm ROM và RAM ngoài nếu cần.
Khi dùng bộ nhớ ngoài, Port 0 không còn là một port I/O thuần túy nữa Nó được hợp kênh giữa bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để chốt byte thấp của địa chỉ khi bắt đầu mỗi chu kỳ bộ nhớ Port 2 thông thường được dùng cho byte cao của bus địa chỉ.
Trong nữa đầu của mỗi chu kỳ bộ nhớ, byte thấp của địa chỉ được cấp trong Port 0 và được chốt bằng xung ALE.
Một IC chốt 74HC373 (hoặc tương đương) sẽ giữ byte địa chỉ thấp trong phần còn lại của chu kỳ bộ nhớ Trong nửa sau của chu kỳ bộ nhớ Port
0 được dùng như bus dữ liệu và được đọc hoặc ghi tùy theo lệnh.
a Truy xuất bộ nhớ chương trình ngoài
Bộ nhớ chương trình ngoài là một IC ROM được phép bởi tín hiệu PSEN Hình sau mô tả cách nối một EPROM vào 8951:
Sinh viên thực hiện: Nguyễn văn Đức Lớp 21ĐT
Port 0
EA
ALE Port 2
Trang 34Một chu kỳ máy của 8951 có 12 chu kỳ xung nhịp Nếu bộ dao động trên chip được lái bởi một thạch anh 12MHz thì chu kỳ máy kéo dài 1s Trong một chu kỳ máy sẽ có 2 xung ALE và 2 byte được đọc từ bộ nhớ chương trình (nếu lệnh hiện hành là một byte thì byte thứ hai sẽ được loại bỏ) Giản đồ thời gian của một lần lấy lệnh được vẽ ở hình sau:
b Truy xuất bộ nhớ dữ liệu ngoài
Hình 2.5 Giao tiếp giữa 8951 và EPROM
Trang 35Hình 2.7: Giao tiếp giữa 8951và RAM
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc bằng các tín hệu WR và RD (các chân P3.6 và P3.7 thay đổi chức năng) Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bit hoặc R0 và R1 xem như thanh ghi địa chỉ.
Kết nối bus địa chỉ và bus dữ liệu giữa RAM và 8951 cũng giống EPROM và do đó cũng có thể lên đến 64 byte bộ nhớ RAM Ngoài ra, chân
RD của 8951 được nối tới chân cho phép xuất (OE) của RAM và chân WR được nối tới chân ghi (WR) của RAM.
Giản đồ thời gian cho lệnh đọc bộ nhớ dữ liệu ngoài được vẽ trên hình sau đối với lệnh MOVX A, @DPTR:
Hình 2.8: Giản đồ thời gian của lệnh MOVX
DPL
Opcode
74HC37 3
Q G
ALE
Port 2 RD WR
895 1
D0 D7 RAM A0 A7
A8 A15
OE WE
Trang 36Giản đồ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tương tự chỉ khác đường WR sẽ thay vào đường RD và dữ liệu được xuất ra trên port 0 (RD vẫn giữ mức cao).
2.2.6 Lệnh reset
8951 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu kỳ máy và sau đó trả về mức thấp RST có thể được kích khi cấp điện dùng một mạch R-C.
Hình 2.9: Mạch reset hệ thống.
Trạng thái của tất cả các thanh ghi của 8951 sau khi reset hệ thống được tóm tắt trong bảng sau:
Đếm chương trình Tích lũy B PSW SP DPTR Port 0-3 IP IE Các thanh ghi định thời
SCON SBUF PCON(HMOS) PCON(CMOS)
0000H 00H
00H
00H 07H 0000H FFH XXX00000B 0XX00000B 00H 00H 00H 0XXXXXXB 0XXX0000B
Bảng 2.5: Trạng thái các thanh ghi sau khi reset
Trang 37trình, nó được đặt lại 0000H Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở địa chỉ đầu tiên trong bộ nhớ trong chương trình: địa chỉ 0000H Nội dung của RAM trên chip không bị thay đổi bởi lệnh reset.
Trang 38Chương 3:
CÁC PHƯƠNG PHÁP BIẾN ĐỔI TƯƠNG TỰ - SỐ
3.1 Nguyên tắc làm việc của bộ chuyển đổi AD
Để kết nối nguồn tín hiệu tương tự với hệ thống xử lý tín hiệu số, người
ta sử dụng các bộ chuyển đổi tương tự - số (ADC) nhằm chuyển đổi tín hiệu tương tự sang số hoặc bộ chuyển đổi số - tương tự (DAC) để chuyển đổi từ số sang tương tự.
Nguyên tắc làm việc của bộ chuyển đổi AD như sau:
Hình 3.1: Nguyên tắc làm việc của bộ chuyển đổi
Tiếp theo, mạch lượng tử hoá có nhiệm vụ rời rạc hoá tín hiệu tương tự về mặt biên độ Sau mạch lượng tử hoá là mạch mã hoá, tại đây kết quả lượng tử hoá được sắp xếp lại theo một quy luật nhất định nào đó tuỳ thuộc
Mạch lấy mẫu
ADC
Lượng tử hoá mã
hoá
uA(t)
uS(t)
uD
uA(t )
uS(t )
t t
Trang 39và mã hoá gọi chung là phép biến đổi AD.
Quá trình lấy mẫu được thực hiện theo định lý lấy mẫu Kachenhicop Thông tin trong tín hiệu tương tự sẽ không bị ảnh hưởng khi lấy mẫu nếu thoả mãn 2 điều kiện sau:
- Tín hiệu gốc uA(t) liên tục theo thời gian và có băng tần hữu hạn Tần số cao nhất là fC.
- Tần số lấy mẫu fS 2fC.
3.2 Các phương pháp chuyển đổi
3.2.1 Phương pháp chuyển đổi AD song song
Hình 3.2: Sơ đồ khối mạch chuyển đổi AD theo phương pháp song song
Tín hiệu uA(t) cần chuyển đổi được đưa đồng thời đến các bộ so sánh từ
S1 đến Sn Điện áp chuẩn Uch được đặt vào dãy các điện trở R mắc nối tiếp, vì vậy điện áp chuẩn đưa vào từng bộ so sánh khác nhau 1 lượng không đổi và giảm từ bộ so sánh S1 đến bộ so sánh Sn
Mạch hoạt động theo nguyên tắc sau:
Khi uA(t) > Uch của bộ so sánh thứ k thì đầu ra bộ so sánh có mức 1, và ngược lại có mức 0 Sau đó đưa vào 1 chân của cổng AND, chân còn lại nối với xung lấy mẫu Khi tồn tại xung lấy mẫu thì các xung đầu ra của bộ so sánh được đưa vào các FLIP - FLOP nhớ Như vậy, sau khoảng thời gian bằng chu kỳ lấy mẫu là có 1 tín hiệu biến đổi và được đưa đến đầu ra Với bộ
R
R
R
+_
+_
+_
FF
FF
FF
Mạch mã hoá
uA(t)
Xung lấy mẫu
Trang 40chuyển đổi N bit, để phân biệt được 2N mức lượng tử cần phải có 2N - 1 bộ
3.2.2 Chuyển đổi AD bằng phương pháp xấp xỉ liên tiếp
Hình 3.3: Sơ đồ khối mạch chuyển đổi bằng phương pháp xấp xỉ liên tiếp.
Mạch chuyển đổi AD này là mạch chuyển đổi thông dụng có tốc độ cao Mạch gồm có bộ so sánh, bộ chuyển đổi DA, thanh ghi xấp xỉ liên tiếp SAR (Sucesive Approximation Converter).
Khi đưa xung Start vào để khởi động, thanh ghi xấp xỉ liên tiếp SAR bị xoá về không, đồng thời xung CK đưa vào SAR tạo thành những mã số xấp
xỉ Xung CK đầu tiên đưa bit có trọng số cao nhất (MSB) lên 1, các bít còn lại đặt bằng 0.
Số nhị phân ở ngõ ra của SAR được đưa vào mạch chuyển đổi DAC để tạo ra điện thế tham chiếu Vch Điện thế này được đưa vào bộ so sánh để so sánh với điện áp tương tự ngõ vào Vin (là điện áp cần chuyển sang tín hiệu số)
Nếu:
Vin
liên tiếp SAR Clock
Start
So sánh
Dữ liệu xuất ra