logo

Hướng dẫn sử dụng ISIS Portues

Dưới đây là các công cụ thao tác cơ bản 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 khi điều khiển thực hiện mạch thực tế còn thiếu thốn
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 thứ tự dòng trong Nơi báo lỗi chương trình 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-RED LED-YELLOW LED-BLUE LED-GREEN LED-RED LED-YELLOW 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 P0.1/AD1 360R 33p 37 R21 P0.2/AD2 360R X2 18 XTAL2 P0.3/AD3 36 R20 360R CRYSTAL 35 R19 P0.4/AD4 360R 34 R18 C2 P0.5/AD5 360R 33 R17 P0.6/AD6 360R 9 32 RST P0.7/AD7 360R 21 R16 360R P2.0 33p R15 +5V P2.0/A8 P2.1/A9 22 R14 360R P2.1 D9 D10 D11 D12 D13 D14 D15 D16 23 P2.2 P2.2/A10 R13 360R P2.3 LED-BLUE LED-GREEN LED-RED LED-YELLOW LED-BLUE LED-GREEN LED-RED LED-YELLOW 29 24 R12 360R PSEN P2.3/A11 30 25 P2.4 ALE P2.4/A12 R11 360R P2.5 31 26 R10 360R EA P2.5/A13 27 P2.6 P2.6/A14 R9 360R 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-RED LED-YELLOW LED-BLUE LED-GREEN LED-RED LED-YELLOW 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 U4 R25 Q1 LED10 7 13 R26 LED PNP +5V LED11 1 A QA 12 R27 1k LED12 2 B QB 11 R28 330R LED13 6 C QC 10 R29 330R 4 D QD 9 R30 330R 5 BI/RBO QE 15 R31 330R 3 RBI QF 14 R32 330R LT QG 330R 7447 330R D1 D2 D3 D4 D5 D6 D7 D8 LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW LED-YELLOW U1 19 39 R1 XTAL1 P0.0/AD0 38 R2 P0.1/AD1 37 R3 330R P0.2/AD2 R4 330R X1 18 XTAL2 P0.3/AD3 36 R5 330R CRYSTAL 35 R6 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 P2.0/A8 21 33p 33p 22 +5V P2.1/A9 23 +5V P2.2/A10 29 24 PSEN P2.3/A11 30 25 LED ALE P2.4/A12 31 26 EA P2.5/A13 27 P2.6/A14 28 P2.7/A15 LED10 R17 1 10 R9 LED11 R18 2 P1.0 P3.0/RXD 11 R10 LED12 R19 330R 3 P1.1 P3.1/TXD 12 R11 330R LED13 R20 330R 4 P1.2 P3.2/INT0 13 R12 330R LED20 R21 330R 5 P1.3 P3.3/INT1 14 R13 330R LED21 R22 330R 6 P1.4 P3.4/T0 15 R14 330R LED22 R23 330R 7 P1.5 P3.5/T1 16 R15 330R LED23 R24 330R 8 P1.6 P3.6/WR 17 R16 330R 330R P1.7 P3.7/RD 330R +5V 330R 330R AT89C51 U2 R33 LED20 7 13 +5V LED21 1 A QA 12 R34 LED22 2 B QB 11 R35 330R LED23 6 C QC 10 R36 330R 4 D QD 9 R37 330R 5 BI/RBO QE 15 R38 330R 3 RBI QF 14 R39 330R LT QG 330R 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? MOV A,R7 ; NO Ú MOVE TO NEXT 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
DMCA.com Protection Status Copyright by webtailieu.net