1. Trang chủ
  2. » Luận Văn - Báo Cáo

4 2 5 giao tiếp máy tính với vi xử lí 8085

107 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

LUẬN VĂN TỐT NGHIỆP GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÍ 8085 LUÂÄN VĂN TỐT NGHIỆP Chương I: CHƯƠNG DẪN NHẬP LUÂÄN VĂN TỐT NGHIỆP I ĐẶT VẤN ĐỀ: Khi nhu cầu học tập ngày cao thiết bị, phương tiện dạy học đóng vai trò quan trọng, giúp người thầy dỡ vất vả việc truyền thụ kiến thức, giúp người học nhanh chóng tiếp thu, để minh họa, chứng thực môt cách cụ thể học mơ hồ trừu tượng Trong này, người thực muốn đề cập đến môn học vi xử lý, lập trình vi xử lý, môn học mang ý nghóa thiết thực xã hội mà trình công nghiệp hóa, đại hóa diễn ngày Khi học môn này, người học không học cấu trúc vi xử lý phần cứng lẫn phần mềm, cách kết nối với IC ngoại vi 8255, 8279, … mà phải sử dụng thành thạo Kit vi xử lý 8085,… Khi viết chương trình Kit vxl 8085 để kiểm nghiệm chương trình ngưòi học phải qua bước : Bước 1: Xác định mục đích yêu cầu chương trình Mục đích, yêu cầu xác định từ đề bài, nhu cầu thực tế, mục đích chung chương trình Để thực mục đích chung này, phải qua nhiều bước, mà bước mục đích cụ thể mới, giải chương trình nhỏ hơn, phát sinh giai đoạn viết lưu đồ Bước 2: Vẽ lưu đồ Lưu đồ dùng để trình bày cách giải vấn đề, thường ngôn ngữ dùng lưu đồ ngôn ngữ máy xác định nào, lưu đồ thực chất để giúp người thảo chương chia nhỏ chương trình lớn Từ lưu đồ tổng quát, vẽ lưu đồ chi tiết Bước 3: Viết chương trình ngôn ngữ gợi nhớ(ngôn ngữ Assembler) Bước 4: Chuyển sang mã máy Bước 5: Nhập mã máy vào Kit phím Bước 6: Chạy thử chương trình kiểm tra kết Một chương trình viết phải chạy thử kiểm tra kết quả, kết phải trường hợp cho phép (điều kiện đặt trước) chương trình, từ kết kiểm tra mà phán đoán, nhận định lỗi để sửa chương trình từ đâu, có phải sửa lại lưu đồ Trong cách làm trên, ta nhận thấy có khó khăn riêng sau: − Quá trình dịch từ ngôn ngữ gợi nhớ sang mã máy (bước 4), đòi hỏi quen thuộc bảng tra mã, không việc chiềm nhiếu thời gian, việc kiểm tra lại chiếm không thời gian Tại lệnh jump, lệnh call, cần phải xác định địa cụ thể, xác ô nhớ xác định lệnh jump Việc hoàn tất chương trình dịch sang mã máy gần đầy đủ − Ở giai đoạn nhập mã máy (bước 5), để nhập nhanh phải nhớ vị trí phím, phải nhập xác để tránh thời gian dò để sửa chương trình nhập sai Để nhập byte cần gõ phím phải đối chiếuqua lại dịch chương trình, nội dung hiển thị led đoạn với địa ô nhớ bàn phím LUÂÄN VĂN TỐT NGHIỆP − Đối với giai đoạn khởi đầu học lập trình vi xử lý, việc xẩy nhầm lẫn gây nhiều thời gian vô ích − Khi cần thêm xóa, sửa chương trình nhiều thời gian để dò lại chương trình, nhập lại khó khăn, chí phải nhập lại phần lớn chương tình − Sau bị điện liệu lưu RAM nguồn dự trữ bị hết, phải nhập lại toàn chương trình Đối với chương trình nhỏ thời gian nhập không đáng kể, chương trình lớn công việc nhiều thời gian, gây phiền hà cho người học người lập trình vi xử lý Bên cạnh đó, thực tế có thiết bị nạp EPROM tiện lợi, mà đem ý tưởng vào việc học lập trình vi xử lý việc giao tiếp với thiết bị khác từ vi xử lý điều dễ dang Ngoài ra, chương trình đại học bao quát, thời gian điều kiện cho phép sinh viên hết bề chương trình mà chưa có có dịp tìm hiểu chiều sâu Do đó, đồ án tốt nghiệp hội tốt cho sinh viên đào sâu vào chương trình học, ứng dụng học vào thực tế, chứng minh hữu ích kiến thức học môi trường sư phạm Từ lý trên, người viết định chọn đề tài “GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÝ 8085” Đề tài đưa chương trình công cụ hỗ trợ việc học lập trình vi xử lý Kit8085 với thứ tự sau: 1) Xác định mục đích yêu cầu chương trình cần viết 2) Vẽ lưu đồ 3) Viết chương trình ngôn ngữ Assembly (ngôn ngữ gợi nhớ) 4) Nhập chương trình ngôn ngữ Assembly vào máy (dùng Norton) 5) Gọi chương trình dịch Assembler để dịch từ ngôn ngữ Assembly sang file có phần mở rộng “prn” chứa mã máy 6) Trong chương trình Giao tiếp, gọi file dịch để nạp vào RAM 7) Chạy thử kiểm tra kết Cách làm có ưu điểm sau: − Dịch từ ngôn ngữ Assembly (ngôn ngữ gợi nhớ) tốn thời gian việc máy tính đảm trách, với độ xác tuyệt đối − Cũng vậy, việc nạp liệu vào RAM vài giây, kiểm tra nạp nên độ xác tuyệt đối − Ngoài ra, chương trình lưu trữ, quản lý dể dàng, dể xem lại, dể kiểm tra Khi cần thêm, xóa sửa chép lại đoạn chương trình, thay đổi địa bắt đầu, đơn giản − Về độ xác thời gian cần thiết chương trình lớn có lợi, phải nạp chương trình nhiếu có lợi II TẦM QUAN TRỌNG CỦA VẤN ĐỀ Trong xã hội ngày phát triển, lượng kiến thức cần truyền tải nhà trường ngày tăng, mà thời gian cho phép ngày bị giảm đi, LUÂÄN VĂN TỐT NGHIỆP nổ lực người dạy lẫn người học cần thiết Bên cạnh đó, phương tiện nhiều góp phần quan trọng trình học tập Trước đây, việc học lập trình vi xử lý diễn cách tự nhiên, coi đầy đủ phương tiện học tập Nhưng nay, có thêm chương trình mô họ vi điều khiển, hay vi xử lý, giao tiếp máy tính với vi xử lý để truyền file… tất nhiên có mặt tích cực, mang thêm nhiều lợi ích cho việc học “Giao tiếp máy tính với vi xử lý” chứng thực giao tiếp _ học _ kit thực tập, điều kích hoạt tìm tòi, ham thích hiểu biết sinh viên III GIỚI HẠN VẤN ĐỀ Đây chuyên đề thú vị, có nhiều vần đề đáng quan tâm, giới hạn thời gian kiến thức, nên đồ án này, người viết trình bày phần sau: − Khái quát Kit 8085 sử dụng, linh kiện có liên quan trực tiếp đến giao tiếp − Cách thức sử dụng kit, hoạt động bên kit lệnh, liệu … mà sau thay cách nạp từ máy tính − Giao tiếp máy tính − Một số điểm cần lưu ý viết chương trình ngôn ngữ gợi nhớ cho chương trình dịch Assembler để tạo file có phần mở rộng prn − Cấu trúc file prn, số liệu cần xuất − Đôi nét ngôn ngữ C, chương trình Download − Chương trình nhận liệu IV MỤC ĐÍCH NGHIÊN CỨU Trước mắt: vấn đề hay, thu hút người viết từ lâu mà có dịp thực hiện, nhu cầu cần thiết thực tế Lâu dài: thiết kế đơn giản, sở ban đầu phát triển thêm hướng tổng quát V XÁC ĐỊNH THUẬT NGỮ Tựa đề tài “Giao tiếp máy tính với kit vi xử lý 8085” Thực chất, vấn đề giao tiếp sở, phương tiện chủ yếu Còn sản phẩm đề tài giao diện hình vi tính mà đó, người dùng cho thể chọn fie cần truyền, truyền xuống kit qua port để nạp liệu vào RAM Đề tài thực việc nạp liệu vào RAM mà sau có phát triển khác Thực tế đề việc thực hành lập trình vi xử lý kit, chương trình để thực tập, chủ yếu nạp vào RAM, mà việc nạp liệu vào Kit nhiều thời gian, mục đích đề tài trước tiên để giải vấn đề đó, sau phát triển lên để đọc vùng RAM, EPROM LUÂÄN VĂN TỐT NGHIỆP Chương II: CƠ SỞ LÝ LUẬN LUÂÄN VĂN TỐT NGHIỆP Từ vấn đề đặt chương trình bày, người thực đề tài tiến hành giải theo hướng sau: − Xác định thiết bị giao tiếp: Kit vi xử lý 8085 có sẵn IC ngoại vi 8255 làm nhiệm vụ giao tiếp, cần chọn IC, xác định địa IC đó, địa port vào ra, mode hoạt động port, xác định điểm nối kết phần cứng với máy tính viết chương trình nhận, phát liệu − Xác định cổng giao tiếp: máy tính: chọn cổng LPT1 (mà sau phát triển để sử dụng LPT2, COM1, COM2) với phướng pháp giao tiếp song song bất đồng − Xây dựng giao diện hình máy tính:Yêu cầu cần có …… phù hợp với người sử dụng Sau tiến hành viết giải thuật, bắt tay vào viết chương trình Ở đây, người thực viết chương trình truyền liệu môi trường Borland C 3.1 Trong trình viết, phải giải khó khăn phát sinh cách cụ thể − Viết chương trình truyền, nhận liệu với Kit − Ghép nối phần lại − Thử nghiệm − Sửa lỗi − Phương pháp chủ yếu tham khảo tài liệu thực nghiệm LUÂÄN VĂN TỐT NGHIỆP Chương III: KIT THỰC TẬP VI XỬ LÝ 8085 LUÂÄN VĂN TỐT NGHIỆP I KIT THỰC TẬP VI XỬ LÝ 8085: Kit thực tập vi xử lý 8085 loại máy tính chủ yếu phục vụ cho mục đích học tập nghiên cứu thiết kế lónh vực vi xử lý Kit này, xuất phát trường ĐH Sư phạm kỹ thuật – Trung tâm Việt-Đức, nhu cầu học tập nhu cầu thực tế, giáo viên môn Điện-Điện tử trường cải tiến cho phù hợp Mặt khác, sinh viên thuộc khoa, đề tài tốt nghiệp, đồ án môn học, với hứng thú, tham khảo, tìm hiểu cấu tạo nguyên lý hoạt động, mở rộng thêm số chức cho kit Một Kit thực tập vi xử lý thường có phần trình bày sơ đồ khối (Hình 1) Với mục đích đề tài giao tiếp song song nên Kit 8085, cần quan tâm đến 8085 lệnh 8085, 8255, 8279 I.1 SƠ LƯC VI XỬ LÝ 8085: Vi xử lý (microprocessor) thiết bị bán dẫn chứa mạch logic điện tử có khả xử lý liệu, chương trình từ đưa vào để điều khiển IC, thiết bị kết nối theo mục đích định trước I.1.1 Cấu trúc phần cứng: I.1.1.1 Cấu trúc bên ngoài: 8085 vi xử lý bit Intel sản xuất, vào năm 1977 Nó có khả định địa cho nhớ tới 64 Kbyte, IC có 40 chân, dạng DIP, sử dụng nguồn đơn + 5V Chức năng, dạng tín hiệu, trạng thái chân 8085 cho bảng sau: Bảng 1: Chân Ký hiệu In/out state Ý nghóa 1,2 X1, X2 I X1, X2 ngõvào mạch dao động Tần số ngõ vào chia cho mạch chia bên Tần số làm việc cực đạicủa: 8085A: 6MHz 8085A-2: 10MHz LUÂÄN VĂN TỐT NGHIỆP 8085A-1:12MHz Reset Out O Cho biết CPU reset Tín hiệu dùng để reset thành phần khác mạch SOD O Serial Output: ngõ liệu nối tiếp xác định lệnh SIM SID I Serial Input: ngõ vào liệu nối tiếp, liệu nạpàobit thứ ghi Accumulator thực lệnh RIM TRAP I Trap: tín hiệu không ngăn Ngõ vào trap kích cạnh lên 7,8,9 RST 7.5, 6.5, 5.5 I Restart Intrerupt Repuest: tín hiệu ngắt ngăn RST 7.5 kích cạnh, RST 6.5 5.5 kích mức 10 INTR I Interrupt: tín hiệu ngắt thôngdụng che lệnh kích mức 11 INTA\ O Interrupt Acknowledge: tín hiwệu dùng để báo cho thiết bị yêu cầu ngắt INTR biết microprocessor chấp nhận yêu cầu ngắt thiết bị yêu cầu ngắt đặt lệnh lên bus liệu 19-12 AD7-AD0 I/O-3 Address/Data bus: đường liệu đường địa tích hợp chung với trạng thái T1 chu kỳ máy, cá ngõ đóng vai trò ngõ địa Các trạng thái lại chu kỳ máy, đóng vai trò đường liệu 20 Vss 28-22 A15-A8 Ground O-3 Address bus:các ngõ dùng LUÂÄN VĂN TỐT NGHIỆP x = (WinWidth-W_CHAR*strlen(MainWindow.sCaption))/2+1; y = BORDERSIZE+(T_SIZE-H_CHAR)/2+1; // Ve duong vien cua hinh chu nhat DrawScreenBorder(0, 0, WinWidth-1, WinHeight-1); delay(DEMODELAY); // Ve tieu de setfillstyle(SOLID_FILL, COLOR_CAPTION); bar(MainWindow.rTitleBar.left, MainWindow.rTitleBar.top, MainWindow.rTitleBar.right, MainWindow.rTitleBar.bottom); setcolor(WHITE); outtextxy(x, y, MainWindow.sCaption); delay(DEMODELAY); // Ve SystemMenu setfillstyle(SOLID_FILL, COLOR_BUTTON); /* bar(MainWindow.rSys.left+1, MainWindow.rSys.top+1, MainWindow.rSys.right-1, MainWindow.rSys.bottom-1); setcolor(BLACK); rectangle((MainWindow.rSys.left+MainWindow.rSys.right)/2-5, (MainWindow.rSys.top+MainWindow.rSys.bottom)/2-1, (MainWindow.rSys.left+MainWindow.rSys.right)/2+5, (MainWindow.rSys.top+MainWindow.rSys.bottom)/2+1); delay(DEMODELAY); */ // Ve Menu // bar(MainWindow.rMenuBar.left, MainWindow.rMenuBar.top, // MainWindow.rMenuBar.right, MainWindow.rMenuBar.bottom); // outtextxy(MainWindow.rMenuBar.left+8, MainWindow.rMenuBar.bottom-13, // "Menu of Program is here"); // delay(DEMODELAY); // Ve chua thong bao bar(MainWindow.rMessage.left, MainWindow.rMessage.top, MainWindow.rMessage.right, MainWindow.rMessage.bottom); OutMessage("Welcome to Demo Window Program"); delay(DEMODELAY); // Ve vung lam viec setfillstyle(SOLID_FILL, COLOR_WINDOW); bar(MainWindow.rViewPort.left, MainWindow.rViewPort.top, MainWindow.rViewPort.right, MainWindow.rViewPort.bottom); setcolor(BLACK); rectangle(MainWindow.rViewPort.left-1, MainWindow.rViewPort.top, MainWindow.rViewPort.right+1, MainWindow.rViewPort.bottom); delay(DEMODELAY); // Dat lai viewport la rViewPort setviewport(MainWindow.rViewPort.left, MainWindow.rViewPort.top, MainWindow.rViewPort.right, MainWindow.rViewPort.bottom, 1); } // /*void DrawSysCoordinates(void) // Ve he truc toa { Xc = VP_WIDTH/2; Yc = VP_HEIGHT/2; 92 LUÂÄN VĂN TỐT NGHIỆP setcolor(COLOR_TEXT); // ve hai truc toa line(0, Yc, VP_WIDTH, Yc); line(Xc, 0, Xc, VP_HEIGHT); // ve hai mui ten line(Xc, 0, Xc-5, 5); line(Xc, 0, Xc+5, 5); line(VP_WIDTH, Yc, VP_WIDTH-5, Yc-5); line(VP_WIDTH, Yc, VP_WIDTH-5, Yc+5); // Ve goc toa outtextxy(Xc-8, Yc+8, "O"); } // void SetLineColor(int C) { LineColor = C; } // void SetPixel(int x, int y) { putpixel(Xc+x, Yc-y, LineColor); } // void Set2Pixel(int Ox, int Oy, int x, int y) { putpixel(Ox+x, Oy-y, LineColor); putpixel(Ox-x, Oy-y, LineColor); } // void Set2PixelHor(int Ox, int Oy, int x, int y) { putpixel(Ox+x, Oy-y, LineColor); putpixel(Ox+x, Oy+y, LineColor); } // void ClearViewPort(void) { struct fillsettingstype FillInfo; // luu thong tin cu getfillsettings(&FillInfo); setfillstyle(SOLID_FILL, COLOR_WINDOW); bar(0, 0, VP_WIDTH, VP_HEIGHT); setfillstyle(FillInfo.pattern, FillInfo.color); DrawSysCoordinates(); } */ // End of SCREEN.C // #include int OutError(char *s) { void far *buf;//con tro chi vung luu tru man hinh unsigned int size = imagesize(200,150,470,240); 93 LUÂÄN VĂN TỐT NGHIỆP LPEVENT lpEvent; int Cx1=280,Cy1=203,Cx2=337,Cy2=223; int Ox1=350,Oy1=203,Ox2=405,Oy2=223; if ((buf = farmalloc(size)) == NULL) { return -1; } else { getimage(200,150,470,240,buf); } setfillstyle(SOLID_FILL,BLUE); HideMouse(); bar(200,150,470,240); setcolor(WHITE); rectangle(200,150,470,240); outtextxy(200+(270-8*strlen(s))/2,170,s); setfillstyle(SOLID_FILL,LIGHTBLUE); bar(Cx1,Cy1,Cx2,Cy2);//280,203,337,223); int OK=0; outtextxy(285,210,"Cancel"); outtextxy(365,210,"OK"); int event; { lpEvent=GetEvent(); if(kbhit()) { if((event=getch())==13) { CompleteOk: HideMouse(); putimage(200,150,buf,COPY_PUT); ShowMouse(); farfree(buf); return OK; } if(event==27) { CompleteCancel: HideMouse(); putimage(200,150,buf,COPY_PUT); ShowMouse(); farfree(buf); return 0; } if(event==9) { OK=!OK; Cancel: if(OK==0) { HideMouse(); 94 LUAÂÄN VĂN TỐT NGHIỆP 95 setfillstyle(SOLID_FILL,BLUE); bar(Ox1,Oy1,Ox2,Oy2);//350,203,405,223); outtextxy(365,210,"OK"); setfillstyle(SOLID_FILL,LIGHTBLUE); bar(Cx1,Cy1,Cx2,Cy2);//280,203,337,223); outtextxy(285,210,"Cancel"); ShowMouse(); } Ok: if(OK==1) { HideMouse(); setfillstyle(SOLID_FILL,BLUE); bar(Cx1,Cy1,Cx2,Cy2);//280,203,337,223); outtextxy(285,210,"Cancel"); setfillstyle(SOLID_FILL,LIGHTBLUE); bar(Ox1,Oy1,Ox2,Oy2);//350,203,405,223); outtextxy(365,210,"OK"); ShowMouse(); } } if(event==0) { event=getch(); if(event==75) { OK=0; goto Cancel; } if(event==77) { OK=1; goto Ok; } } else flushall(); } if(lpEvent->Msg==1) { if(lpEvent->Posx>=Cx1&&lpEvent->PosxPosy>=Cy1&&lpEvent>PosyPosx>=Ox1&&lpEvent->PosxPosy>=Oy1&&lpEvent>Posy=0;FindPos ) for(FindValue=0;FindValue=0;FindPos ) for(FindValue=0;FindValue

Ngày đăng: 06/07/2023, 21:21

w