Các bước cơ bản vẽ một mạch điện tử bằng ISIS: Bước 1: Khởi động ISIS có giao diện như hình H1.1 Bước 2: Lấy linh kiện từ thư viện - Chọn biểu tượng P Pick from libraries: Hình H1.2 - G
Trang 1HỌC VIỆN NÔNG NGHIỆP VIỆT NAM
KHOA CƠ ĐIỆN
BỘ MÔN TỰ ĐỘNG HÓA
*********o O o*********
TÀI LIỆU HƯỚNG DẪN THÍ NGHIỆM
VI XỬ LÝ TRONG ĐIỀU KHIỂN
HÀ NỘI – 2014
Trang 2BÀI 1 THIẾT KẾ VÀ MÔ PHỎNG MẠCH ĐIỂN TỬ BẰNG PHẦN MỀM PROTEUS
- SỬ DỤNG PHẦN MỀM KEIL C LẬP TRÌNH VI ĐIỀU KHIỂN
I.Thiết kế và mô phỏng mạch điện tử bằng phần mềm Proteus
1 Giới thiệu chung:
Proteus là phần mềm của hãng Labcenter dùng để vẽ sơ đồ nguyên lý, mô phỏng và vẽ mạch điện Proteus gồm có hai phần:
- ISIS dùng để vẽ sơ đồ nguyên lý và mô phỏng
- ARES dùng để thiết kế mạch in
2 Thiết kế và mô phỏng mạch điện tử bằng ISIS:
Khởi động ISIS có giao diện màn hình chính như sau:
Hình 1.1 Giao diện ISIS của Proteus Phần phía trên và bên phải là công cụ dùng để vẽ mạch nguyên lý Phần màu xám ở giữa là nơi vẽ mạch
a Một số công cụ cơ bản:
Selection mode:chức năng này để chọn linh kiện
Component mode: Lấy linh kiện trong thư viện
Trang 3Terminal: chứa Ground, Power,…
Wire Lable mode: đặt nhãn cho wire
Graph: dùng để vẽ đồ thị như dòng, áp,…
General Mode: chứa các nguồn điện, nguồn xung,nguồn dòng
Voltage Probe mode: dùng đo điện thế tại một điểm trên mạch, đây là thiết bị không có thực trong thực tế
Current Probe mode: dùng để đo dòng điện tại một điểm trên mạch, đây là thiết bị không
có thực trong thực tế
Virtual Instrument mode: chứa các dụng cụ đo dòng và áp được mô phỏng trong thực tế
b Các bước cơ bản vẽ một mạch điện tử bằng ISIS:
Bước 1: Khởi động ISIS có giao diện như hình H1.1
Bước 2: Lấy linh kiện từ thư viện
- Chọn biểu tượng P (Pick from libraries):
Hình H1.2
- Giao diện Pick Device hiện ra như hình H1.3:
Có thể chọn linh kiện bằng cách chọn trực tiếp từ Category hoặc gõ keyword của linh kiện cần sử dụng vào mục Keyword Linh kiện được chọn sẽ xuất hiện ở cửa sổ Result
và được bôi đen
- Click double chọn linh kiện trong của sổ Result Khi đó linh kiện được chọn xuất hiện
trong cửa sổ Device
- Sau khi chọn hết linh kiện cần sử dụng trong mạch đóng cửa sổ Pick device
Trang 4Hình 1.3
Hình 1.4 Bước 3: Vẽ mạch điện:
Chọn linh kiện trong cửa sổ Device selector Di chuyển chuột đến vị trí cần đặt linh kiện trên cửa sổ thiết kế Click double linh kiện sẽ xuất hiện trong cửa sổ thiết kế (Hình 1.5)
Để nối dây giữa các chân ta click chuột vào chân cần nối dây 1 và di chuyển chuột đến chân cần nối dây 2 Click chuột tại chân 2, dây giữa hai chân sẽ được nối
Trang 5- Thực hiện các thao tác quay, lấy đối xứng,….linh kiện
- Thay đổi thông số của linh kiện bằng cách click double vào
linh kiện cần hiệu chỉnh mở cửa sổ Edit component
- Đối với vi điều khiển cần đổ chương trình vào vi điều
khiển trước khi mô phỏng bằng cách chọn Program file
trong Edit component, mở link có file hex đã biên dịch từ
chương trình đã viết đổ vào vi điều khiển
Trang 6II Sử dụng phần mềm Keil C lập trình vi điều khiển:
Bước 1: Khởi động phần mềm Keil C, giao diện như sau:
Hình 1.7 Bước 2: Mở một New project:
Hình 1.8 Đặt tên và lưu Project mới:
Trang 7Bước 3: Lựa chọn vi điều khiển sử dụng:
Ví dụ chọn vi điều khiển AT89C51 của hãng Atmel
Trang 8Bước 4: Mở New File
Save New file với đuôi c hoặc s/.scr/.a tùy vào ngôn ngữ sử dụng để lập trình là C hay Assembly
Trang 9Add file vào project đang thực hiện:
Chọn loại file nguồn (đuôi c nếu viết bằng C và đuôi s/.src/.a nếu viết bằng Assembly)
click vào file muốn Add click button Add
Trang 10Newfile sẽ xuất hiện trong project và có thể viết chương trình
Bước 5: Viết chương trình
Bước 6: Biên dịch sang File hex
Các File nguồn được viết bằng ngôn ngữ C hay Assembly đều phải biên dịch sang file có đuôi hex thì vi xử lý mới hiểu và thực thi được chương trình Quá trình đó thực hiện như sau:
- Chọn Option for Target
Trang 11 cửa sổ Option for Target xuất hiện chọn mục Output click vào mục Create hex file như hinh OK
chọn Build target để biên dịch chương trình
Khi chương trình không có lỗi File hex được tạo và lưu tại thư mục chứa project đang thực hiện
Trong trường hợp chương trình có lỗi, trình biên dịch sẽ báo lỗi Quay lại bước 5 để tìm và sửa lỗi Biên dịch lại
Trang 12III Yêu cầu:
Cho sơ đồ mô phỏng như hình:
- Có thể sử dụng các linh kiện tương đương khác thay thế
- Điện áp cung cấp cho vi điều khiển là 5V
- Sử dụng pin 9V để tạo nguồn 5V cấp cho mạch điều khiển
- Chọn nguồn phù hợp với loa chip
- Các chân của port 0 phải được treo lên mức cao trước khi sử dụng
Trang 13BÀI 2 TẬP LỆNH CỦA AT89C51 VÀ PORT XUẤT NHẬP
I Tóm tắt lý thuyết
1 Các Port xuất nhập của AT89C51
AT89C51 có 4 Port xuất nhập tương ứng P0, P1, P2, P3 như hình H.2.1
Bảng 2.1 Chức năng của các chân trên Port 3
- Port 0 khi được dùng làm Port xuất nhập cần phải sử dụng điện trở kéo lên bên ngoài Port0 như hình H.2.2
H.2.1.Sơ đồ chân của AT89C51
ngoài: P0 làm bus địa chỉ và dữ liệu thấp (AD7 – AD0)
Port 2
Có 2 chức năng:
bên trong: P0 làm đýờng xuất nhập
ngoài: P0 làm bus địa chỉ và dữ liệu cao (AD15 – AD8)
Port 3
Có nhiều chức
năng
(Xem bảng 2.1)
Trang 14Hình H.2.2 Điện trở kéo lên của Port 0
- Port P1, P2, P3 có thể cấu hình làm port xuất nhập mà không cần dùng điện trở kéo lên do bên trong đã tích hợp sẵn điện trở
- Port P0, P2, P3 ngoài chức năng làm Port xuất nhập còn có thêm các chức năng khác (Hình H.2.1 và Bảng 2.1)
2 Tập lệnh của AT89C51
Lệnh của AT89C51 có độ dài 8bit, tương ứng có 256 câu lệnh, được chia thành các nhóm
cơ bản như sau:
Chi tiết các lệnh tham khảo trong Phụ lục 1
II Nội dung thực hành:
Sử dụng file sodomophong đã có ở bài 1 Hãy thực hiện các công việc sau:
1 Cấu hình port P1 là Port đầu vào, port P0 là Port đầu ra Khi ấn Button (P1.0) thì gửi ra P0 giá trị bằng 45
Khi ấn Button 2 (P1.1) thì gửi ra một xung từ cao xuống thấp lên chân P0.0
2 Sử dụng lệnh nhảy và lặp viết chương trình để led ở chân P0.0 nhấp nháy
3 Viết chương trình để các Led trên Port 0 sáng xen kẽ nhau: led 1,3,5,7 sáng – 2,4,6,8 tắt
và ngược lại
Quá trình được lặp đi lặp lại
4 Viết chương trình để các led trên Port 0 lần lượt sáng từ 1-8 Quá trình trên lặp lại không ngừng
Trang 15BÀI 3 GIAO TIẾP VI ĐIỀU KHIỂN VỚI LED7 THANH I.Tóm tắt lý thuyết
1 Giới thiệu về Led 7 thanh
Hình 3.1 Led 7 đoạn Led 7 thanh gồm 2 loại: loại có anot chung và loại có catot chung, thực chất là 7 đèn led được nối với nhau như sau:
a) Loại nối anot chung b) Loại nối catot chung
Hình 3.2 Phân loại Led 7 đoạn
Trang 16Đối với loại có anot chung, chân COM phải được đưa lên mức logic 1 và muốn led nào
sáng phải đặt các chân tương ứng từ a-f xuống mức thấp
Ví dụ: Muốn hiển thị số 5 bằng Led 7 đoạn có anot chung, các led a – f – g – c – d phải sáng
Để thực hiện được điều này thì các chân a – f – g – c – d phải được đặt ở mức logic 0
Do đó ta có mã hiển thị số 5 như sau:
Số dp g f e d c b a Mã hex
5 1 0 0 1 0 0 1 0 92h
Tương tự như vậy đối với các số khác
Đối với Led7 thanh có catot chung ta làm ngược lại, chân COM được đặt ở mức 0 và
muốn một led nào đó sáng phải đặt chân tương ứng với Led đó lên mức cao
Ví dụ muốn hiển thị số 6 bằng led 7 thanh có catot chung, ta phải đặt các chân a – f – g – c – d-
e lên mức cao Tương ứng có mã hiển thị như sau:
Số dp g f e d c b a Mã hex
6 0 1 1 1 1 1 0 1 7Dh
Bảng 3.1 Bảng mã hiển thị của Led 7 thanh có anot chung:
Trang 17Bảng 3.2 Bảng mã hiển thị của Led 7 thanh có catot chung:
2 Hiển thị nhiều Led 7 đoạn:
Trong các ứng dụng thực tế thường phải sử dụng nhiều Led 7 đoạn để hiển thị số liệu, nhưng mỗi Led 7 đoạn đòi hỏi phải có 8 đường dữ liệu, trong khi số port xuất nhập của vi xử
lý có hạn Để tiết kiệm đường truyền dữ liệu của vi xử lý người ta thường sử dụng một Port truyền dữ liệu chung cho tất cả các led (Hình 3.3, Hình 3.4) Điều này làm xuất hiện vấn đề là làm thế nào để gửi được chính xác dữ liệu cần hiển thị đến từng led Có hai phương pháp phổ biến hiện nay đang được sử dụng là phương pháp quét Led và phương pháp chốt led
a Phương pháp quét Led:
Phương pháp này dựa trên hiện tượng lưu ảnh trên võng mạc, tức là nếu một hình ảnh xuất hiện tối thiểu 24 lần/s sẽ tạo cho người quan sát cảm giác là một hình ảnh liên tục
Khi nhiều led cùng dùng chung một đường dữ liệu như Hình 3.3, dữ liệu từ vi xử lý sẽ đồng thời được gửi đến tất cả các Led, do đó ta không thể để các Led sáng cùng một lúc Tại mỗi thời điểm chỉ có duy nhất một led sáng, các led còn lại sẽ tắt Sau thời gian duy trì, Led đó
sẽ tắt và Led tiếp theo sẽ sáng Do hiện tượng lưu ảnh trên mắt nên người quan sát sẽ nhìn thấy các led sẽ hiển thị đồng thời với các số khác nhau Quá trình quét LED được hiển thị như sau:
Bật led sáng – Hiển thị dữ liệu Trễ Tắt Led xóa dữ liệu
Trang 18Việc lựa chọn Led nào sáng/tắt được thực hiện bằng cách đóng mở các Tranzitor (xem Hình 3.3)
Thông thường chọn tần số sáng/tối cho một led là 25Hz (Tức là led hiển thị 25 lần/s)
Hình 3.3 Phương pháp quét Led
Do đó có thể tính được thời gian duy trì cho từng led sáng như sau:
Giả sử có n Led cần hiển thị
-Tần số cho một chu kỳ quét n led = 25hz X n
-Thời gian duy trì cho một lần sáng của từng led = 1/Tần số chu kỳ quét led
Phương pháp này tiện dụng ở phần cứng lẫn phần mềm, tuy nhiên nếu số lượng led quá nhiều thì thời gian sáng trung bình dành cho mỗi led giảm đi Điều này kéo theo các led sẽ suy giảm độ sáng Mặt khác phải tích hợp thêm IC giải mã, nhiều việc phát sinh cho thiết kế mạch lẫn lập trình Phương pháp này ứng dụng cho các hiển thị thông tin ít, khoảng 20 led bảy đoạn trở xuống nhưng thông tin nhiều như bảng tỉ giá ngoại tệ cần vài trăm led thì không được
b Phương pháp chốt Led:
Vẫn chia sẻ bus dữ liệu cho tất cả các led như phương pháp quét , đồng thời các led đều
có chân A (hoặc C) chung nối sẵn lên nguồn (hoặc đất) nghĩa là các Led lúc nào cũng sẵn sàng hiển thị Mỗi led bảy đoạn kết hợp với 1 IC chốt, vi xử lý điều khiển chốt dữ liệu cho chính xác Dữ liệu cho từng led sẽ lần lượt đưa lên Bus, ứng với dữ liệu của led nào thì IC chốt của led đó sẽ chốt dữ liệu lại, động tác này do vi xử lý thực hiện Sau một lượt dữ liệu sẽ xuất hiện đầy đủ trên tất cả các led bảy đoạn, kể từ đó vi xử lý không cần mất công hiển thị
Trang 19nữa, các led sẽ sáng liên tục chứ không như phương pháp quét Như vậy hình ảnh của phương pháp chốt sáng hơn và không nhấp nháy
Hạn chế của phương pháp này là tốn nhiều IC chốt, mạch điều khiển chốt phức tạp (có thể dùng IC giải mã 74138, 74154 như phương pháp quét)
II Nội dung thí nghiệm
1 Hãy viết chương trình đếm số xung được đưa vào chân P1.0 và hiển thị lên Led 7 đoạn Khi đếm đến 9 thì reset về 0 Quá trình được lặp đi lặp lại
2 Vẽ sơ đồ mô phỏng hình 3.3 và thực hiện các công việc sau:
- Viết chương trình đếm từ 0-99
- Viết chương trình giảm từ 99-0
3 Vẽ sơ đồ mô phỏng hình 3.4 và thực hiện các công việc tương tự ở câu 2
Trang 20BÀI 4 TIMER /COUNTER – NGẮT I.Tóm tắt lý thuyết
1 Timer/Counter:
a Thanh ghi định thời
- 8051 có hai bộ điều khiển định thời là Timer 0 và Timer 1
- Mỗi Timer có một thanh ghi định thời 16bit, và được chia thành hai thanh ghi 8bit: Timer high (TH) và Timer Low (TL)
Hình 4.1 Các thanh ghi định thời
b.Thanh ghi điều khiển TCON:
- TFx: Cờ tràn Timerx Được set và clear bởi phần cứng
Trang 21c.Thanh ghi chế độ định thời TMOD:
Để thiết lập chế độ làm việc của các Timer ta sử dụng thanh ghi TMOD 8bit Cả Timer
0 và Timer 1 đều dùng chung thanh ghi TMOD để điều khiển, trong đó: 4bit thấp thiết lập chế
độ điều khiển cho Timer 0 và 4bit cao thiết lập chế độ điều khiển cho Timer 1
-Gate: Khi Gate =1 thì Timer/Counter chỉ làm việc khi cả TRx =1 và INTx=1
Khi Gate = 0 thì Timer/Counter làm việc được khi TRx=1
- C/T: Bit lựa chọn chế độ đếm (counter) hay định thời (Timer)
C/T = 0: chế độ Timer
C/T=1: chế độ định thời
- M0,M1: Lựa chọn chế độ định thời
Trang 222 Ngắt:
89C51 có 5 nguồn ngắt: 2 ngắt ngoài, 2 ngắt timer và ngắt nối tiếp
a Thanh ghi điều khiển ngắt IE:
- EA: =1 cho phép ngắt toàn cục
=0 không cho phép ngắt
- ES: cho phép ngắt nối tiếp
Trang 23- ET1, ET0: cho phép ngắt Timer 1, Timer0
- EX1, EX0: cho phép ngắt ngoài 1, ngắt ngoài 0
Muốn cho phép một ngắt nào xảy ra phải set 2 bit: Bit cho phép ngắt toàn cục và bit cho phép từng ngắt riêng rẽ
Dưới đây là các vector ngắt và vị trí ngắt tương ứng:
II Nội dung thí nghiệm
1 Viết lại chương trình đếm từ 0-9 dùng Timer/counter
2 Viết lại chương trình tạo một xung vuông có tần số 4Khz trên chân P3.7 dùng ngắt Timer
3 Viết chương trình tạo đàn điện tử với các phím tạo ra âm thanh có tần số như sau:
Các phím tương ứng từ button 1 Button 8