Hướng dẫn sử dụng ISIS PROTUES
Dưới đây là các công cụ và các thao tác cơ bản nhất giúp người sử dụng nhanh chóng sử dụng công cụ PROTUES mô phỏng
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
HƯỚNG DẪN SỬ DỤNG ISIS PROTUES
Dưới đây là các công cụ và các thao tác cơ bản nhất giúp người sử dụng nhanh chóng
sử dụng Protues như một công cụ mô phỏng, học tập và nghiên cứu khi điều kiện thực
hiện mạch thực tế còn thiếu thốn, hạn chế hoặc kiểm chứng các hoạt động của mạch
nguyên lý trước khi thực hiện lắp ráp mạch. Tuy nhiên, mô phỏng chỉ giúp chúng ta tiên
đoán, ước lượng các tình huống sẽ xảy ra trong thực tế với các thông số tối thiểu chứ mô
phỏng không phải là thực tế nên đôi khi ta thấy có những tình huống xảy ra trong thực tế
mà mô phỏng không có được. Do đó, mô phỏng dùng Protues chỉ có giá trị tham khảo
cho việc thực hiện mạch thực tế.
1. Mở chương trình ISIS Protues.
Double click vào icon để mở chương trình ISIS Protues hoặc
ta cũng có thể chọn:
Ø Start Ú Programs Ú Protues 6 professional Ú ISIS 6 professional.
2. Tạo bản vẽ mới.
Chọn:
Ø Menu File Ú New Design… hoặc
Ø Click lên .
3. Lưu bản vẽ.
Chọn:
Ø Menu File Ú Save Design hoặc
Ø Menu File Ú Save Design As… (lưu bản vẽ này với một tên khác) hoặc
Ø Click lên hoặc
Ø nhấn S
khi hộp thoại Save ISIS Design file bật lên, nhập tên file vào ô file name và click chọn
nút Save để lưu lại.
4. Mở bản vẽ đã lưu.
Chọn:
Ø Menu File Ú Load Design… hoặc
Ø Click lên hoặc
Ø nhấn L
khi hộp thoại Load ISIS Design file bật lên, tìm kiếm file cần mở trong vùng Look in và
cửa sổ file, nhấn nút Open để mở bản vẽ đã lưu.
Biên soạn: Phan Đình Trung Trang 1/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
5. Đặt kích thước cho trang giấy vẽ.
Chọn System Ú Set sheet sizes…
Chọn khổ giấy từ A0 Ú A4 trong hộp thoại Sheet Size Configuration hoặc người sử
dụng có thể tự nhập kích cỡ giấy cho riêng mình ở phần lựa chọn User.
6. Đặt linh kiện lên vùng bản vẽ.
Lấy linh kiện đặt lên bản vẽ:
Ø Chọn menu Library Ú Pick device/symbol…hoặc
Ø click vào biểu tượng hoặc
Ø click vào chữ P trên
Ø Trong cửa sổ Pick Devices, ta đánh tên linh kiện cần tìm vào ô keywords (không
cần đánh chính xác tên, protues sẽ tìm các linh kiện có tên gần giống với từ khóa)
hoặc ta có thể tìm kiếm kết quả trong khung Category và Results.
Khung Schematic Preview và PCB Preview cho phép ta xem hình dạng linh
kiện trong bản vẽ nguyên lý và bản vẽ mạch in.
Ø Click chọn tên linh kiện trong khung Results rồi chọn nút OK. Tên linh kiện đã chọn
sẽ xuất hiện ở khung DEVICES.
Ø Click chọn tên linh kiện cần đặt lên bản vẽ trong khung DEVICES rồi click lên vùng
bản vẽ nơi muốn đặt linh kiện, linh kiện sẽ xuất hiện tại vị trí vừa click.
Mẹo:
Ta cũng có thể Double Click lên tên linh kiện trong khung Results để đưa linh kiện vào
khung DEVICES. với cách làm này, ta có thể lấy một lúc nhiều linh kiện khác nhau nhanh
hơn.
7. Xóa linh kiện đã đặt.
Click phải lên linh kiện cần xóa:
Ø click phải lần thứ 2, hoặc
Ø nhấn nút Delete trên bàn phím, hoặc
Ø chọn menu Edit Ú Cut to clipboard hoặc
Ø chọn nút hoặc
Ø chọn nút .
8. Di chuyển linh kiện đã đặt.
Ø Click phải lên linh kiện cần di chuyển. Nhấn và giữ chuột trái trên linh kiện, rê đến
nơi cần đặt, thả chuột trái, linh kiện sẽ xuất hiện tại vị trí mới hoặc
Ø chọn , rê chuột đến vị trí mới và click để đặt linh kiện.
Biên soạn: Phan Đình Trung Trang 2/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
9. Sao chép một linh kiện đã đặt trên bản vẽ.
Ø Click phải lên linh kiện cần chép. Chọn , rê chuột đến vị trí mới và click để đặt
linh kiện hoặc
Ø nhấn nút , rồi nhấn nút , rê chuột đến vị trí mới và click để đặt linh kiện.
10. Xoay và vẽ đối xứng linh kiện.
Để xoay hoặc vẽ đối xứng linh kiện, ta click phải lên linh kiện cần thực hiện, và click
lựa chọn nút tương ứng trong thanh tác vụ như sau: . Các nút từ trái qua
phải lần lượt là: xoay phải, xoay trái, xoay với góc cho trước, đối xứng qua trục dọc, đối
xứng qua trục ngang.
Chú ý: nếu linh kiện chưa chọn thì thanh tác vụ này sẽ có màu xanh da trời.
11. Chỉnh sửa thông số linh kiện.
Để chỉnh sửa thông số cho linh kiện hoặc đối tượng, ta click chọn nút instant edit
mode ( ) rồi click vào linh kiện hoặc đối tượng cần chỉnh sửa. Khi người sử dụng muốn
thực hiện bất kỳ thao tác nào trên linh kiện hay đối tượng trong Protues đều phải click
phải chọn đối tượng cần thao tác. Ta cũng có thể chọn linh kiện bằng chuột phải rồi click
trái để chỉnh giá trị của linh kiện.
Ta cũng có thể dùng công cụ này để nạp chương trình cho vi điều khiển.
12. Phóng to, thu nhỏ, chuyển vùng xem bản vẽ.
Chức năng Menu View Bàn phím Icon
chuyển vùng xem Pan F5
Phóng to vùng xem Zoom In F6
Phóng nhỏ vùng xem Zoom Out F7
Xem toàn bộ bản vẽ Zoom All F8
Phóng to 1 vùng lựa chọn bằng chuột Zoom to Area
Mẹo:
Ø Ta có thể dùng nút Scroll của chuột để thực hiện chức năng Zoom in và Zoom Out.
Ø Ta cũng có thể click lên vùng tương ứng trong bản vẽ thu nhỏ để chuyển đến vị trí
cần xem.
Biên soạn: Phan Đình Trung Trang 3/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
13. Đặt nguồn và mass cho mạch.
Click chọn nút Inter-sheet terminals ( ) trên thanh công cụ, cửa sổ
sẽ mở ra cho phép người dùng lựa chọn loại terminal cần dùng. Có hai loại terminal
chúng ta có thể sử dụng ở đây là:
Ø GROUND: vẽ ký hiệu mass (ground), cung cấp điện áp 0 V cho mô phỏng mạch.
Ø POWER: vẽ ký hiệu nguồn, ta chọn nút instant edit mode ( ) , click lên ký hiệu
vừa đặt trên bản vẽ, nhập giá trị nguồn điện vào ô string. Ví dụ: +5V.
Chú ý: ta phải đặt chính xác nguồn dương hoặc âm, không được để trống. ví dụ: 5V.
14. Nối dây cho mạch.
Nút Bus. ( ): phần mềm sẽ tự quyết định lúc nào người sử dụng đang muốn vẽ
đường bus, hay đang muốn vẽ đường mạch. Thông thường, khi đường vẽ bắt đầu từ 1
đường mạch hoặc từ 1 chân linh kiện thì máy sẽ quyết định là ta đang vẽ đường
mạch. Các trường hợp còn lại là ta đang vẽ đường bus.
Ø Để vẽ đường BUS: ta chọn nút Bus., click vào vùng trống cần vẽ, kéo chuột để vẽ
nên các đường thẳng, muốn rẽ hướng, ta click để xác định điểm quẹo. Double click
để kết thúc vẽ đường Bus.
Ø Để vẽ đường mạch: ta click vị trí bắt đầu vẽ từ chân linh kiện hoặc từ 1 đường
mạch có sẵn.
15. Tạo điểm nối dây.
Để tạo điểm nối dây, ta chọn công cụ Junction Dot. ( ) ở trên thanh công cụ. Sau đó
click vào nơi giao nhau giữa các đường dây mà ta muốn đặt để tạo điểm nối.
Chú ý:
Dù các đường dây cắt nhau nhưng không có điểm nối thì phần mềm vẫn xem như
các dây này không nối với nhau.
16. Đặt tên cho đường dây.
Các đường mạch có cùng tên trong bảng vẽ mạch sẽ được nối lại với nhau dù chúng
có hay không có nối trên bảng vẽ. Cách này sẽ làm bảng vẽ mạch gọn gàng và dễ đọc
hơn. Để đặt tên đường mạch, ta chọn công cụ Wire label ( ) trên thanh công cụ rồi click
vào đường dây muốn đặt tên, ta nhập tên đường mạch trong ô string của cửa sổ Edit wire
label.
17. Máy phát (generators) dùng cho mô phỏng.
Biên soạn: Phan Đình Trung Trang 4/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
Protues sử dụng một số nguồn điện AC, DC và nguồn tín hiệu ảo như nguồn Sin,
nguồn xung vuông, nguồn âm thanh, nguồn xung clock… các nguồn ảo này chúng ta có
thể lấy ra sử dụng ở nút generator ( ) hoặc virtual instruments ( ).
18. Dụng cụ đo đạc ảo.
Bên cạnh các máy phát ảo, protues cũng cung cấp cho người sử dụng một công cụ đo
ảo như Volt kế AC/DC, ampere kế AC/DC, các công cụ phân tích phổ, phân tích nhiễu,
phân tích tín hiệu hỗn hợp DC và AC,… các bộ công cụ đo ảo này chúng ta có thể lấy ra
ở các nút công cụ Simulation Graph ( ), Voltage Probe ( ), Current Probe ( ), Virtual
instruments ( ).
19. Chạy, tạm dừng và ngưng chạy mô phỏng.
Chúng ta có thể cho phép bắt đầu mô phỏng mạch như sau:
a) Chạy mô phỏng:
Ø click lên nút ( ) hoặc
Ø chọn menu Debug Ú Execute hoặc
Ø nhấn nút F12 trên bàn phím.
Ta cũng có thể cho mạch chạy mô phỏng:
liên tục bằng cách chọn Debug Ú Execute without breakpoints hoặc nhấn
•
phím Alt+ hoặc
đến một thời điểm định trước bằng cách chọn Debug Ú Execute for Specified
•
time.
b) Tạm dừng mô phỏng:
Ø click lên nút ( ) hoặc
Ø chọn menu Debug Ú Pause Animation.
c) Dừng mô phỏng:
Ø click lên nút ( ) hoặc
Ø chọn menu Debug Ú Stop Animation.
d) Một số chức năng khác:
Bỏ qua việc thực hiện một đoạn chương trình
chọn Debug Ú Step Over hoặc
§
nhấn nút F10 trên bàn phím.
§
Bước vào thực hiện chương trình con
chọn Debug Ú Step Into hoặc
§
nhấn nút F11 trên bàn phím.
§
Bước ra khỏi chương trình con đang thực hiện
Biên soạn: Phan Đình Trung Trang 5/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
chọn Debug Ú Step Out hoặc
§
nhấn nút Ctrl+F11 trên bàn phím.
§
nhảy đến thực hiện chương trình ở một vị trí được chỉ định
chọn Debug Ú Step to hoặc
§
nhấn nút Ctrl+F10 trên bàn phím.
§
Biên soạn: Phan Đình Trung Trang 6/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
HƯỚNG DẪN BIÊN DỊCH CHƯƠNG TRÌNH CHO HỌ 8051
A. Biên dịch bằng công cụ DOS.
Trước khi biên dịch bằng công cụ DOS, chương trình vi điều khiển phải được viết trước
dùng các phần mềm soạn thảo trong Win như Notepad, Winword,… và lưu ở các định
dạng text thông dụng như *.txt, *.a51, *.asm,… với phần tên file nên có độ dài không quá
8 ký tự và lưu file càng gần thư mục gốc càng tốt. file chương trình nên nằm cùng thư
mục với chương trình biên dịch. Tốt nhất chúng ta nên sử dụng Notepad để soạn thảo.
Để biên dịch trong DOS, ta dùng 2 chương trình:
Ø ASM51.EXE để biên dịch chương trình sang dạng file object (*.OBJ).
Ø OH.EXE để thực hiện chuyển các file object thành các file HEX (*.HEX) cho
chương trình nạp vi điều khiển có thể đọc được. Một số chương trình nạp vi điều
khiển không có khả năng đọc file HEX, ta phải sử dụng thêm chương trình
HEX2BIN.EXE để chuyển file HEX trên về dạng file BIN trước khi nạp.
Để biên dịch chương trình, ta thực hiện như sau:
Ø nhấn Start Ú Programs Ú Accessories Ú Command Prompt để mở cửa sổ DOS
hoặc
Ø nhấn Start Ú Run… rồi gõ lệnh cmd để mở cửa sổ DOS.
Trong cửa sổ DOS, ta dùng các lệnh chuyển ổ đĩa và lệnh chuyển thư mục để di
chuyển đến thư mục có chứa chương trình biên dịch. Như trong ví dụ là thư mục C:\ASM.
Gõ lệnh dịch chương trình sang file Object:
ASM51
Chú ý: tên file chương trình phải ở dạng 8.3 của DOS.
Ví dụ, để dịch chương trình TEST.TXT sang dạng OBJ ta đánh lệnh như sau
ASM51 TEST.TXT
Trên màn hình sẽ thông báo cho ta biết là chương trình có bị lỗi hay không. Nếu có lỗi,
ta mở file *.LST để xem báo lỗi và quay lại chương trình ban đầu để sửa (như ví dụ là file
Biên soạn: Phan Đình Trung Trang 7/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
TEST.LST). Nếu chương trình không lỗi, ta tiếp tục biên dịch từ file Obj sang file HEX
bằng cách gõ lệnh:
OH
Ví dụ:
Bây giờ ta có thể sử dụng một chương trình đi kèm mạch nạp để nạp cho vi điều
khiển.
B. Biên dịch bằng công cụ WIN.
Có rất nhiều công cụ biên dịch trong Win như 8051IDE (free trial download at
www.acebus.com/win8051.htm ), M-IDE51 (free download at
www.opcube.com/home.html ), Keil (www.Keil.com ),… trong đó M-IDE51 là công cụ sử
dụng miễn phí. Các công cụ này cho phép chúng ta soạn thảo chương trình ngay trong
phần mềm mà không cần các phần mềm soạn thảo khác. Ngoài ra, các phần mềm này
còn có thể biên dịch các chương trình viết bằng ngôn ngữ ANSI C.
Sau khi cài đặt chương trình, ta click vào biểu tượng trên desktop hoặc chọn
Start Ú programs Ú MIDE-51 package Ú MIDE-51 để chạy chương trình. Giao diện
chương trình có dạng
Nút biên dịch chương trình
Khu vực viết chương trình
Nơi báo lỗi chương trình
thứ tự dòng trong
chương trình
Biên soạn: Phan Đình Trung Trang 8/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
Chương trình này chỉ chấp nhận những chương trình được lưu với phần mở rộng được
hỗ trợ như .ASM, .A51, .X51…. Do đó khi sử dụng, ta phải lưu trước các file trên với đúng
phần mở rộng được hỗ trợ ngay khi vừa tạo mới vùng văn bản.
Chúng ta nên xem thêm hướng dẫn sử dụng phần mềm này trong mục Help của phần
mềm.
C. Một số lỗi biên dịch thường gặp
Sau đây là một số lỗi biên dịch thường mắc phải khi viết chương trình.
1. text found beyond END statement – có các ký tự dư phía sau lệnh END Ú xóa hết
tất cả các ký tự phía sau chữ D của lệnh END kể cả các ký tự khoảng trắng và ký
tự xuống dòng.
2. undefined symbol – lỗi chưa khai báo nhãn/ ký hiệu đang sử dụng hoặc thiếu số 0
trước khai báo số hex Ú khai báo nhãn hoặc ký hiệu đang dùng hoặc xem lại có
đánh sai chính tả so với khai báo hay không, xem có thiếu số 0 trong khai báo số
hex hay không.
3. no END statement found – thiếu lệnh END cuối chương trình Ú thêm END cuối
chương trình.
4. illegal statement syntax – lỗi sai cú pháp Ú xem lại tập lệnh cho câu lệnh tương
ứng đang sử dụng.
5. illegal operand – lỗi sai vị trí hoặc sai kiểu toán hạng Ú xem lại tập lệnh cho câu
lệnh tương ứng đang sử dụng.
Biên soạn: Phan Đình Trung Trang 9/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
HƯỚNG DẪN DÙNG ISIS PROTUES MÔ PHỎNG
BÀI 1 – GIAO TIẾP VỚI LED
A. Giao tiếp với LED đơn.
Mở chương trình ISIS và lấy các linh kiện trong danh sách như hình
bên và thực hiện vẽ mạch như sau.
+5V
D17 D18 D19 D20 D21 D22 D23 D24
LED-BLUE
LED-GREEN LED-YELLOW LED-GREEN LED-YELLOW
LED-RED LED-BLUE LED-RED
P 2 .0
P 2 .1
P 2 .2
P 2 .3
P 2 .4
P 2 .5
P 2 .6
P 2 .7
C1 U1 R24
19 39 R23
XTAL1 P0.0/AD0
38 R22
360R
P0.1/AD1
37
33p R21
360R
P0.2/AD2
X2 18 36 R20
360R
XTAL2 P0.3/AD3
35 R19
CRYSTAL 360R
P0.4/AD4
34 R18
360R
P0.5/AD5
C2 33 R17
360R
P0.6/AD6
9 32
360R
RST P0.7/AD7
R16
360R
P2.0
21
33p R15
+5V P2.0/A8
D9 D10 D11 D12 D13 D14 D15 D16
P2.1
22 R14
360R
P2.1/A9
P2.2
23 R13 LED-BLUE
LED-GREEN LED-YELLOW LED-GREEN LED-YELLOW
LED-RED LED-BLUE LED-RED
360R
P2.2/A10
P2.3
29 24 R12
360R
PSEN P2.3/A11
P2.4
30 25 R11
360R
ALE P2.4/A12
P2.5
31 26 R10
360R
EA P2.5/A13
P2.6
27 R9
360R
P2.6/A14
P2.7
28 360R
P2.7/A15
R8
360R
1 10 R7
P1.0 P3.0/RXD
2 11 R6
360R
P1.1 P3.1/TXD
3 12 R5
360R
P1.2 P3.2/INT0
4 13 R4
360R
P1.3 P3.3/INT1
5 14 R3
360R
P1.4 P3.4/T0
6 15 R2
360R
P1.5 P3.5/T1
7 16 R1
360R
P1.6 P3.6/WR
8 17 360R
P1.7 P3.7/RD
360R
AT89C51
D1 D2 D3 D4 D5 D6 D7 D8
LED-BLUE
LED-GREEN LED-YELLOW LED-GREEN LED-YELLOW
LED-RED LED-BLUE LED-RED
Biên soạn: Phan Đình Trung Trang 10/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
Mở cửa sổ chương trình MIDE–51 và nhập đoạn chương trình sau:
MAIN:
MOV P3,#00000001B
JMP MAIN
END
Biên dịch chương trình sang file HEX và mở cửa sổ ISIS để nạp chương trình trên cho
AT89C51 như sau:
Chọn và click lên linh kiện AT89C51.
§
chọn và chọn file HEX vừa dịch ở trên, nhấn OK.
§
nhấn nút để thực hiện mô phỏng.
§
Nhiệm vụ.
Quan sát hiện tượng xuất hiện trên mạch khi chạy mô phỏng.
§
Nếu thay Port 3 trong chương trình bằng Port 2, quan sát hiện tượng xảy ra trên
§
các led nối vào Port 2.
Nếu thay Port 3 trong chương trình bằng Port 0, quan sát hiện tượng xảy ra trên
§
các led nối vào Port 0. Hãy cho biết tại sao với cùng cách mắc led như Port 3
nhưng ở Port 0 led có hiện tượng như vậy? Hãy đề xuất biện pháp khắc phục.
Gợi ý: xem đặc tính cấu tạo của chân Port 0.
Hãy rút ra kết luận, cách mắc led như ở Port 3 và Port 2 là kiểu nào sau đây: CA
§
(Common Anode – Anode chung), CC (Common Cathode – Cathode chung). Với
từng kiểu mắc đó, hãy cho biết muốn 1 led nào đó sáng thì chân điều khiển tương
ứng phải ở mức mấy (0 hay 1)? Nếu muốn tắt thì sao?
Bài tập.
Viết các đoạn chương trình thực hiện các yêu cầu sau:
1) Các led nối vào Port 3 sáng dần rồi tắt dần và lặp lại liên tục.
2) Các led nối vào Port 2 có 1 led sáng chạy từ trái qua phải rồi từ phải qua trái và lặp
lại liên tục.
Biên soạn: Phan Đình Trung Trang 11/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
Hãy chèn thêm một câu lệnh gọi chương trình con delay1s (phải viết khai báo chương
trình con delay1s) sau mỗi lần xuất dữ liệu ra Port.
Hãy quan sát hiện tượng trên mạch khi có và không có chèn câu lệnh gọi delay1s ở
trên.
Gợi ý chương trình con delay1s:
DELAY1S:
PUSH ACC
MOV TMOD,#01H
MOV A,#20
LOOP:
MOV TH0,#HIGH(–50000)
MOV TL0,#LOW(–50000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ ACC,LOOP
POP ACC
RET
Gợi ý bài tập 2 – ta có thể sử dụng lệnh quay trái/ theo lưu đồ đề nghị như sau:
Biên soạn: Phan Đình Trung Trang 12/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
B. Giao tiếp với LED bảy đoạn.
Thực hiện vẽ mạch sau với danh sách linh kiện như hình bên
+5V
+5V
Q1
U4 R25
R26 LED
PNP
LED10 7 13 R27
A QA
1k
LED11
+5V 1 12 R28
330R
B QB
LED12 2 11 R29
330R
C QC
LED13 6 10 R30
330R
D QD
4 9 R31
330R
BI/RBO QE
5 15 R32
330R
RBI QF
3 14 330R
LT QG
D1 D2 D3 D4 D5 D6 D7 D8
330R
7447
LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW
LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW
U1
R1
19 39 R2
XTAL1 P0.0/AD0
38 R3
330R
P0.1/AD1
37 R4
330R
P0.2/AD2
X1 18 36 R5
330R
XTAL2 P0.3/AD3
35 R6
CRYSTAL 330R
P0.4/AD4
34 R7
330R
P0.5/AD5
33 R8
330R
P0.6/AD6
9 32 330R
RST P0.7/AD7
330R
C2 C1 21
P2.0/A8
22
33p 33p +5V P2.1/A9
+5V
23
P2.2/A10
29 24
PSEN P2.3/A11
LED
30 25
ALE P2.4/A12
31 26
EA P2.5/A13
27
P2.6/A14
28
P2.7/A15
R17 R9
LED10 1 10
R18 R10
P1.0 P3.0/RXD
LED11 2 11
R19 R11
330R 330R
P1.1 P3.1/TXD
LED12 3 12
R20 R12
330R 330R
P1.2 P3.2/INT0
LED13 4 13
R21 R13
330R 330R
P1.3 P3.3/INT1
LED20 5 14
R22 R14
330R 330R
P1.4 P3.4/T0
LED21 6 15
R23 R15
330R 330R
P1.5 P3.5/T1
LED22 7 16
R24 R16
330R 330R
P1.6 P3.6/WR
LED23 8 17
330R 330R
P1.7 P3.7/RD
+5V
330R 330R
AT89C51
U2 R33
LED20 7 13 R34
A QA
LED21
+5V 1 12 R35
330R
B QB
LED22 2 11 R36
330R
C QC
LED23 6 10 R37
330R
D QD
4 9 R38
330R
BI/RBO QE
5 15 R39
330R
RBI QF
3 14 330R
LT QG
330R
7447
Biên soạn: Phan Đình Trung Trang 13/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
Mở cửa sổ MIDE–51 và nhập đoạn chương trình sau rồi thực hiện chạy mô phỏng
mạch dùng ISIS.
MAIN:
MOV P1, #25H
MOV P0, #0AAH
MOV P3, #00010010B
JMP $
END
Nhiệm vụ.
Quan sát hiện tượng xuất hiện trên mạch khi chạy mô phỏng.
§
Hãy giải thích tại sao các led đơn nối vào Port 0 không sáng Ú đề xuất cách khắc
§
phục bằng cách viết lại chương trình trên.
Gợi ý: quan sát/ đo đạc xem Transistor đã dẫn chưa? nếu chưa thì phải kích như
thế nào để transistor dẫn được.
Hãy cho biết phương thức giải mã led 7 đoạn của led 7 đoạn mắc vào port 3 và 2
§
led 7 đoạn mắc vào U2 và U4 là giải mã cứng hay giải mã mềm. Nếu ta thay 25H
trong chương trình bằng 25 thì điều gì xảy ra.
Hãy quan sát cách xuất một số cụ thể lên các led 7 đoạn trong mạch.
§
Bài tập.
Viết các đoạn chương trình thực hiện các yêu cầu sau:
1) Hãy viết chương trình thực hiện đếm lên từ 0 Ú 9 trên led 7 đoạn ở port 3 và lặp lại
liên tục.
2) Hãy viết chương trình thực hiện đếm xuống từ 9 Ú 0 trên led 7 đoạn ở port 3 và
lặp lại liên tục.
3) Hãy viết chương trình thực hiện đếm lên từ 00 Ú 99 trên 2 led 7 đoạn ở port 1 và
lặp lại liên tục.
4) Hãy viết chương trình thực hiện đếm xuống từ 99 Ú 00 trên 2 led 7 đoạn ở port 1
và lặp lại liên tục.
5) Hãy viết chương trình thực hiện đếm lên trên 2 led 7 đoạn ở port 1 từ 00 đến một
số đặt trước (ví dụ: 56) thì chớp các led đơn ở port 0.
Biên soạn: Phan Đình Trung Trang 14/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
BÀI 2 – GIAO TIẾP VỚI BÀN PHÍM HEXA
Thực hiện vẽ mạch sau với danh sách linh kiện cho ở danh sách bên
Mở cửa sổ chương trình MIDE–51 và nhập đoạn lệnh sau rồi thực hiện mô phỏng
dùng ISIS ( ta chọn nút component để có thể tác động lên các nút khi thực hiện mô phỏng
trong ISIS)
MAIN:
CALL GET_KEY
JNC MAIN
MOV P2,A
Biên soạn: Phan Đình Trung Trang 15/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
JMP MAIN
GET_KEY:
;xem phần gợi ý chương trình con get_key ở dưới
RET
END
Gợi ý Chương trình con quét phím:
Đây là gợi ý về chương trình con quét phím không chống rung.
Nếu kết thúc chương trình con mà C = 0 Ú không có phím nhấn, ngược lại nếu C=1
Ú có phím nhấn và giá trị phím nhấn nằm trong thanh ghi A
GET_KEY:
PUSH 05H ; STORE REGISTERS
PUSH 06H
PUSH 07H
MOV A,#0FEH ; START WITH COLUMN 0
MOV R6,#4 ; USE R6 AS COUNTER
TEST:
MOV P1,A ; ACTIVE COLUMN LINE
MOV R7,A ; SAVE ACC
MOV A,P1 ; READ BACK PORT 0
ANL A,#0F0H ; ISOLATE ROW LINES
CJNE A,#0F0H,KEY_HIT ; ROW LINE ACTIVE?
; NO Ú MOVE TO NEXT
MOV A,R7
RL A ; COLUMN LINE
DJNZ R6,TEST
CLR C ; NO KEYPRESSED
SJMP EXIT ; EXIT WITH C = 0
KEY_HIT:
MOV R7,A ; SAVE IN R6
MOV A,#4 ; PREPAIR FOR CALCULATE
CLR C ; COLUMN WEIGHTING
SUBB A,R6 ; 4 – R6 = WEIGHTING
MOV R6,A ; SAVE IN R6
MOV A,R7 ; RESTORE SCAN CODE
SWAP A ; PUT IN LOW NIBBLE
MOV R5,#4 ; USE R5 AS COUNTER
AGAIN:
RRC A ; ROTATE UNTIL 0
JNC DONE ; DONE WITH C = 0
INC R6 ; ADD 4 UNTIL ACTIVE ROW
INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ; C=1 IF KEYPRESSED
MOV A,R6 ; CODE IN A
EXIT:
POP 07H ; RESTORE REGISTER
POP 06H
Biên soạn: Phan Đình Trung Trang 16/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
POP 05H
RET
Gợi ý Chương trình con quét phím có chống rung:
Đây là gợi ý về chương trình con quét phím có chống rung, nếu có phím nhấn, giá trị
phím nhấn sẽ cất trong stack, đến khi phím được nhả, giá trị phím nhấn được trả về trong
thanh ghi A. Khi sử dụng đoạn chương trình này, ta không cần xét đến cờ C nữa vì
chương trình chỉ thoát ra khi nhả phím và giá trị phím nhấn trả về trong thanh ghi A.
DEBOUNCED:
MOV R3,#50 ; debounce count
BACK:
CALL GET_KEY ; key pressed?
JNC DEBOUNCED ; no: check again
DJNZ R3,BACK ; yes: repeat checking 50 times
PUSH ACC ; store key code in stack
BACK2:
MOV R3,#50 ; wait gor key up
BACK3:
CALL GET_KEY ; key pressed?
JC BACK2 ; yes: keep checking
DJNZ R3,BACK3 ; no: repeat checking 50 times
POP ACC ; restore key code
RET
Nhiệm vụ.
Dùng chuột nhấn giữ một nút trên bàn phím, quan sát xem led có hiện số không?
§
Cho biết giá trị mà phím nhấn đó trả về trong thanh ghi A.
Nếu bỏ lệnh JNC MAIN thì điều gì xảy ra?
§
Nếu đảo thứ tự dây nối cột trong mạch, điều gì xảy ra khi mô phỏng.
§
Nếu đảo thứ tự dây nối hàng trong mạch, đìêu gì xảy ra khi mô phỏng.
§
Thay đoạn chương trình chính trên bằng đoạn chương trình sau rồi thực hiện lại
§
các bước trên.
MAIN:
CALL DEBOUNCED
MOV P2,A
JMP MAIN
GET_KEY:
;xem phần gợi ý chương trình con get_key ở trên
RET
DEBOUNCED:
;xem phần gợi ý chương trình con debounced ở trên
RET
END
Bài tập.
Hãy viết chương trình thực hiện các yêu cầu sau:
Biên soạn: Phan Đình Trung Trang 17/18
Hướng dẫn mô phỏng dùng ISIS Protues 22/06/2007
1) Nhập một số từ bàn phím và hiển thị số đó ra led ở Port 3 (gợi ý: dùng thêm MOVC).
2) Nhập một số từ bàn phím và thực hiện việc đếm lên trên led ở port 2 từ 0 đến số vừa
nhập.
3) viết chương trình chuyển đổi bố trí bàn phím hexa chuẩn về dạng bố trí phím như
trong sơ đồ mạch.
Vẽ thêm một mạch giải mã cứng led nối vào nibble cao của port 2, viết chương trình
thực hiện yêu cầu sau:
4) Khi ta nhấn phím X, giá trị phím X sẽ hiện lên led ở nibble thấp. nếu nhấn tiếp phím
Y thì giá trị phím X sẽ hiện lên led ở nibble cao và giá trị phím Y sẽ hiện lên led ở
nibble thấp (gợi ý: dùng thêm SWAP).
5) viết tiếp chương trình ở bài 4 trên sao cho khi nhấn phím >9 thì thực hiện việc đếm
lên từ 00 đến 2 số vừa nhập ở trên.
Biên soạn: Phan Đình Trung Trang 18/18