Luận Văn Thiết kế, thi công và viết chương trình điều khiển mạch thực hành cho Z80 CPU. Giao tiếp với máy tín

Thảo luận trong 'Điện - Điện Tử' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    167
    Điểm thành tích:
    0
    Xu:
    0Xu
    MỤC LỤC
    Mở đầu trang 4

     Chương I Phân tích yêu cầu
    1.1 Phân tích yêu cầu trang 5
    1.2 Phương hướng giải quyết vấn đề trang 5

     Chương II Thiết kế phần cứng
     2.1. Phân tích các chức năng của cổng ghép nối với máy in trang 8
     2.2. Kiến trúc Z80 CPU. trang 10
     2.3. Thiết kế chi tiết. trang 48
     2.4. Nguyên lý hoạt động. trang 49

     Chương III. Giới thiệu phần soạn thảo văn bản
    3.1. Các thành phần chính của main menu trang 55
    3.2. Hướng dẫn sử dụng trong màn hình soạn thảo trang 55

     Chương IV. Giải thuật trang 57

     Chương V. Chương trình nguồn
    5.1. Chương trình đưa data ra RAM chung, Debug, Dump, Run trang 71
    5.2. Chương trình con viết bằng ngôn ngữ con Assembler Z80 dùng
    đọc trạng thái các thanh ghi trang 109
    5.3. Chương trình con viết bằng ngôn ngữ con Assembler Z80 dùng
    dump memory trang 111
    5.4. Chương trình tạo tiện ích soạn thảo văn bản vàhỗ trợ chế độ chạy
    debug Z80 trang 111
    5.5. Các chương trình ví dụ trang 133

     Phụ lục A: Các thông báo lỗi. trang 142

     Phụ lục B: Vi mạch 8255. trang 143

     Tài liệu tham khảo. trang 145


      



    Lời nói đầu

    Sự phát triển đi lên vượt bậc của ngành kỹ thuật máy tính và điện tử hiện nay đã được minh chứng cụ thể qua cuộc sống hằng ngày của chúng ta trong tất cả các lĩnh vực.
    Việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã đem lại những kết quả đầy tính ưu việt. Các thiết bị, hệ thống đo lường và điều khiển ghép nối với máy tính có độ chính xác cao, thời gian thu thập số liệu ngắn, nhưng đáng quan tâm hơn là mức độ tự động hoá trong việc thu nhận và xử lý dữ liệu.
    Kỹ thuật số ra đời đã khắc phục được các khuyết điểm của kỹ thuật tương tự, làm cho các bộ phận máy móc trở nên đơn giản, gọn nhẹ, ít tốn kém năng lượng và xử lý thông tin nhanh, chính xác hơn so với kỹ thuật tương tự.
    Tuy vậy, nếu sử dụng các bộ điều khiển dùng các IC số chúng vẫn còn mắc một số khuyết điểm mà so với kỹ thuật vi xử lý nó vẫn tồn tại như:
    - Kích thước lớn.
    - Năng lượng tiêu thụ lớn.
    - Tính mềm dẽo thấp, khó thay đổi.
    - Khó sửa chữa, bảo trì.
    Vi xử lý là một vi mạch điện tử có mật độ tích hợp cao, trong đó gồm các mạch số có khả năng nhận, xử lý và xuất dữ liệu. Đặc biệt là quá trình xử lý dữ liệu được điều khiển theo một chương trình gồm tập hợp các lệnh từ bên ngoài mà người sử dụng có thể thay đổi được một cách dễ dàng. Một vi xử lý có thể thực hiện rất nhiều yêu cầu điều khiển khác nhau.
    Kỹ thuật vi xử lý ra đời với sự kết hợp giữa phần cứng và phần mềm đã làm cho hoạt động của các mạch điện trở nên mềm dẽo hơn với những phần mềm rất linh hoạt mà ta có thể sửa chữa, thay đổi hoặc bổ sung làm cho chương trình điều khiển thêm phong phú tùy theo nhu cầu của người sử dụng.
    Kỹ thuật vi xử lý có tính phức tạp trong hoạt động, thiết kế nhưng lại rất kinh tế vì giá thành hạ và kích thước chiếm chỗ không nhiều, có dung lượng cao. Ngoài ra về mặt kỹ thuật cũng hơn hẳn kỹ thuật số vì quá trình hoạt động rất mềm dẽo, tốc độ xử lý cao và lại có thể mở rộng tính năng hoạt động sau này cho mạch điện. Đây là ưu điểm rất thuận lợi mà kỹ thuật vi xử lý mang lại.

    Chúng em xin chân thành cảm ơn Thầy Nguyễn Xuân Minh đã tận tình hướng dẫn để hoàn thành luận văn này. Chúng tôi cũng xin chân thành cảm ơn các bạn bè đã đóng góp ý kiến và chỉ dẫn trong khi thực hiện đề tài.

    Vì trình độ có hạn và đây làđề tài đầu tiên thực hiện một cách có hệ thống cho nên chắc chắn không thể tránh khỏi nhiều thiếu sót.
    Một đoạn code :
    Chương V. Chương trình nguồn

    5.1. Chương trình đưa data ra Ram chung, Debug, Dump, Run.

    /*===================LUẬN VĂN TỐT NGHIỆP=====================
    - Chương trình được viết trên Turbo C++ Version 3.0.
    - Đề tài: Giao tiếp giữa PC & KIT Z80 qua LPT1.
    - Giáo viên hướng dẫn: Thầy Nguyễn Xuân Minh.
    - Người viết: Lưu Đình Dũng.
    - Ngày viết: 11-03-1999.
    - Cập nhật lần cuối: 30-06-1999
    - Chú ý: Dòng đầu tiên của chương trình phải đượcc khai báo bằng lệnh:
    - ld sp,xxxxh
    ============================================================*/
    #include <dos.h>
    #include <stdio.h>
    #include <io.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    /*== Typedefs =================================================*/
    typedef unsigned char byte;
    typedef
    struct addr{
    byte lo;
    byte hi;
    };
    /*== Các pin tương ứng của 74LS374==================================
    NC CS8255 /OER CS244 EWT /CER A1 A0
    D7 D6 D5 D4 D3 D2 D1 D0
    ============================================================*/
    /*== Constants =================================================*/
    #define BasicADDR 0x378 /*Địa chỉ cổng máy in*/
    #define DataREG BasicADDR /*Địa chỉ thanh ghi data*/
    #define StateREG BasicADDR + 1 /*Địa chỉ thanh ghi trạng thái*/
    #define CTRLREG BasicADDR + 2 /*Địa chỉ thanh ghi điều khiển*/
    //============================================================
    #define Init374 0xD7/*ENB=1,CS8255=1,/OER=0,CS244=1,EWT=0,/CER=1,A1=1,A0=1*/
    /*1101 0111*/
    #define Init8255 0x97/*ENB=1,CS8255=0,/OER=0,CS244=1,EWT=0,/CER=1,A1=1,A0=1*/
    /*1001 0111*/
    #define WRPortA 0x94/*ENB=1,CS8255=0,/OER=0,CS244=1,EWT=0,/CER=1,A1=0,A0=0*/
    /*1001 0100*/
    #define WRPortC 0x96/*ENB=1,CS8255=0,/OER=0,CS244=1,EWT=0,/CER=1,A1=1,A0=0*/
    /*1001 0110*/
    #define RDPortA 0x94/*ENB=1,CS8255=0,/OER=0,CS244=1,EWT=0,/CER=1,A1=0,A0=0*/
    /*1001 0100*/
    #define RDPortC 0x96/*ENB=1,CS8255=0,/OER=0,CS244=1,EWT=0,/CER=1,A1=1,A0=0*/
    /*1001 0110*/
    #define ENBRAM 0xD3/*ENB=1,CS8255=1,/OER=0,CS244=1,EWT=0,/CER=0,A1=1,AO=1*/
    /*1101 0011*/
    #define GetStart 0x67/*ENB=0,CS8255=1,/OER=1,CS244=0,EWT=0,/CER=1,A1=1,AO=1*/
    /*0110 0111*/
    //=============================================================
    #define GetDebug 0x4F/*ENB=0,CS8255=1,/OER=0,CS244=0,EWT=1,/CER=1,A1=1,A0=1*/
    /*0100 1111*/
    #define ClearEWT 0x67/*ENB=0,CS8255=1,/OER=1,CS244=0,EWT=0,/CER=1,A1=1,A0=1*/
    /*0110 0111*/
    #define EnbRAM 0x6F/*ENB=0,CS8255=1,/OER=1,CS244=0,EWT=1,/CER=1,A1=1,A
     

    Các file đính kèm:

Đang tải...