39
TRƯỜNG ĐẠI HỌC THÔNG TIN LIÊN LẠC KHOA KỸ THUẬT CƠ SỞ BỘ MÔN ĐIỆN TỬ SỐ BÁO CÁO KẾT QUẢ THÍ NGHIỆM MÔN:KĨ THUẬT VI XỬ LÍ NHÓM 6 Danh sách thành viên nhóm Lê Thị Nhàn Trương Thị Phương Thảo Lại Văn Tú GIẢNG VIÊN HƯỚNG DẪN : CAO VĂN NAM Nha Trang ngày 18 tháng 11 năm 2015

BÁO CÁO K T QU THÍ NGHI M MÔN:KĨ THU T VI X LÍ NHÓM 6

Embed Size (px)

Citation preview

TRƯỜNG ĐẠI HỌC THÔNG TIN LIÊN LẠC

KHOA KỸ THUẬT CƠ SỞ BỘ MÔN ĐIỆN TỬ SỐ

BÁO CÁO KẾT QUẢ THÍ NGHIỆMMÔN:KĨ THUẬT VI XỬ LÍ

NHÓM 6

Danh sách thành viên nhóm Lê Thị Nhàn

Trương Thị Phương Thảo Lại Văn Tú GIẢNG VIÊN HƯỚNG DẪN : CAO VĂN NAM

Nha Trang ngày 18 tháng 11 năm 2015

NỘI DUNG THÍ NGHIỆMI.Thí nghiệm trên EMU 8086

Bài thực hành 1: Viết chương trình cho bộ VXL 8086/8088 thực hiện phéptính 24H + 12H

2

Bài thực hành 2: Viết chương trình cho vxl hiển thị dòng thông báo “Chaomung cac ban den voi EMU 8086” ra màn hình máy tính.

3

Bài thực hành 3: Viết chương trình cho vi xử lý 80x86 thực hiện phép toánsau: (5+10)-1=? Và hiển thị kết quả ra màn hình máy tính dưới dạng số nhị phân.

4

5

6

Bài thực hành 4: Viết chương trình cho nhập 1 ký tự từ màn hình vàxuất câu thông báo chào buổi sáng, buổi trưa hay buổi chiều tương ứng với ký

tự nhập vào là 'S', 's', 'T', 't', 'C', 'c'.

7

Sau khi thí nghiệm song thì nhóm đã hiểu rõ thêm về mạch 8086 . và có thể vận dụng nó vào thực tế .trên lý thuyết thì ta thấy đơn giản nhưng khi thực hành thì có một số vấn đề phải tìm hiểu kĩ cành thêm .kết quả thí nghiệm của nhóm đã đạt yêu cầu về bài thí nghiệm , nhóm cũng rút ra được nhiều kiến thức về emu80686.

II thực hành trên proteusBài 1 led a : mạch

8

b : chương trình của led;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;chuong trinh dieu khien 8 led sang don

dung port 1;ket noi port 1 den 8 led bang 1 day cap 8

soi;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;dinh nghia cac bien

x0 equ 10h y0 equ 20h dem equ 30h tam equ 31h led1 equ p1

9

led3 equ p3;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;bat dau chuong trinh chinh;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx org 0000h sjmp mainmain: mov led1,#0 lb: mov led1,#0 lcall delay ;tat 8 led va delay mov dem,#8 ;led1 se di chuyen 8 vi tri mov x0,#0 lb2: mov tam,dem mov y0,#00000001b ;luu trang thai ban

daulb1: mov a,y0 orl a,x0 mov led1,a ;dua du lieu ra cong 1 lcall delay clr c ;xoa Cy de chi dich 1 led di mov a,y0 rlc a mov y0,a djnz tam,lb1 ;giam noi dung o nho

(11h)<> 0 thi quay lai mov x0,led1 djnz dem,lb2 lcall delay ljmp lb

10

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

;chuong trinh con delay;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay: mov 7eh,#0f0h del: mov 7fh,#0ffh djnz 7fh,$ djnz 7eh,del ret end

bài 2 led 7 đoạn

11

b : chương trình$DEBUG $NOPAGING$NOSYMBOLS $MOD51;*******************************************

********************** ;Thuc hien viec quet led ;Yeu cau: ; - quet led o port 1 va port2 ; - port1 la cong du lieu ; - port2 la cong chon led7 ; - cu 100us thi quet led mot lan su dung

interrup timer 0 ;*******************************************

********************** org 0h

ljmp main main:

lcall init_portlcall init_other

l1: lcall quet_led12

sjmp l1 ;***********************;Khoi dong cac cong ;*********************** init_port:

mov p0,#0hmov p1,#0FFhmov p2,#0h

ret ;******************************;Khoi dong cac thong so khac;******************************init_other:

mov r1,#01Hmov r2,#20mov tmod,#01hmov DPTR,#table

ret ;***********************;Cac ham delay;***********************delay:;delay 1s l2:

mov th0,#high(-50000)mov tl0,#low(-50000)clr tf0 setb tr0

wait: jnb tf0,waitclr tr0 clr tf0dec r2cjne r2,#0,l2mov r2,#20

13

retdelay1:;delay 100us

mov th0,#high(-100)mov tl0,#low(-100)clr tf0 setb tr0

wait1: jnb tf0,wait1clr tr0clr tf0

ret ;***********************;Ham quet led;***********************quet_led:

mov p2,#0ffhmov p1,#0c0hmov p2,#0feh lcall delay;mov p2,#0ffhmov p1,#0f9hmov p2,#11111101blcall delay ;mov p2,#0ffhmov p1,#0a4hmov p2,#11111011blcall delay;mov p2,#0ffhmov p1,#0b0hmov p2,#11110111blcall delay

14

;mov p2,#0ffhmov p1,#099hmov p2,#11101111blcall delay;mov p2,#0ffhmov p1,#092hmov p2,#11011111blcall delay;mov p2,#0ffhmov p1,#082hmov p2,#10111111blcall delay ;mov p2,#0ffhmov p1,#0f8hmov p2,#01111111blcall delay

rettable: db 0C0h;0

db 0F9h;1db 0A4h;2db 0B0h;3 db 099h;4db 092h;5db 082h;6 db 0F8h;7 db 080h;8 db 090h;9 db 088h;a db 083h;b

15

db 0C6h;c db 0A1h;d db 086h;e db 08Eh;f

end

bài 3 LCD a : mạch

16

b : chương trình $DEBUG$NOPAGING$NOSYMBOLS$MOD51;*******************************************

***********;Xuat du lieu ra LCD;Yeu cau:; - Su dung vi xu ly giao tiep voi LCD. Xuat

ra; dong chu (da dinh truoc); - P1 la cong noi voi LCD;*******************************************

***********17

;Cac chan dieu khien cua LCDrs equ p3.0rw equ p3.1en equ p3.2;Port giao tiep voi LCDLCD_port equ p1org 0h ljmp mainmain: lcall init_portL2: lcall init_LCD lcall write_data mov r2,#20L3: mov r1,#100 lcall delay_timer dec r2 cjne r2,#0,L3 sjmp L2;Khoi dong cac conginit_port:ret;Khoi dong cac thong so khacinit_other: ret ;*******************************************

*;Ham khoi dong LCD ;*******************************************

*init_LCD: mov a,#38h ;khoi tao dong 1 cua LCD lcall write_cmd mov a,#0ch ;bat mang hinh (0ch) va tat

con tro (00h)18

lcall write_cmd ;mov a,#06h ;Chon che do inc+shift ;lcall write_cmd mov a,#01h ;xoa mang hinh lcall write_cmdret ;*******************************************

****************;Ham ghi cau lenh vao LCD ; du lieu lenh can ghi phai dua vao thanh

ghi a truoc;*******************************************

*****************write_cmd: mov LCD_port,a clr rs ;chon thanh ghi dieu khien clr rw ;chon lenh ghi setb en clr en mov r1,#5 lcall delay_timerret;*******************************************

******************;Ham delay(de cho cho LCD thuc hien lenh);*******************************************

******************delay: ;delay tho so mov 70h,#100cont: mov 71h,#0ffh djnz 71h,$ djnz 70h,contret

19

;*************************************************************

;Ham delay su dung ngat timer (de cho cho LCD thuc hien lenh)

;*************************************************************

delay_timer: ;nhap so miligiay can delay vao thanh ghi r1

con_delay: mov tmod,#01h ; chon timer0 dem dinh

thoi 16 bit mov th0,#high(-1000) mov tl0,#low(-1000) mov tl0,#low(-1000) setb tr0wait: jnb tf0,wait clr tr0 clr tf0 dec r1 cjne r1,#0,con_delayret;*******************************************

***********;Ham ghi du lieu vao LCD; - Du lieu can ghi o tai "string" ;*******************************************

***********write_data: mov a,#080h ;dua con tro ve dau hang 1

cua LCD lcall write_cmd ;write mov DPTR,#string

20

mov r0,#0hL1: mov a,r0 movc a,@a+DPTR cjne a,#0,con_write sjmp end_writecon_write: push acc mov a,r0 mov b,#16 div ab ;phan nguyen-->acc, phan du-->b mov r6,0f0h ; dua b-->r6 cjne r6,#0,no_change ;neu r0 ko chia het

cho 16 ->no_change mov b,#2 div ab mov r6,0f0h ; dua b-->r6 cjne r6,#0,row2 ;r0 ko chia het cho 32-

>row2 lcall clear1 ;xoa hang 1 mov r4,#0h ;dua con tro ve dau hang 1 lcall set_cursor; sjmp no_changerow2: lcall clear2 ;xoa hang 2 mov r4,#40h ;dua con tro ve hang 2 lcall set_cursorno_change: pop acc lcall write_LCD inc r0 sjmp L1end_write:ret

21

;*********************************************

;Xoa hang 1 cua LCD;*******************************************

**clear1: push acc mov acc,#20h mov r4,#0h mov r5,#16 lcall set_cursorcon_clear: mov LCD_port,a setb rs clr rw setb en clr en mov r1,#5 lcall delay_timer dec r5 cjne r5,#0,con_clear mov r4,#0h lcall set_cursor pop acc ret;*******************************************

** ********;Xoa hang 2 cua LCD;*******************************************

** ********clear2: push acc mov acc,#20h

22

mov r4,#40h mov r5,#16 lcall set_cursorcon_clear2: mov LCD_port,a setb rs clr rw setb en clr en mov r1,#5 lcall delay_timer dec r5 cjne r5,#0,con_clear2 mov r4,#40h lcall set_cursor pop accret;*******************************************

*******;Ham ghi tung ky tu vao LCD; - Du lieu phai o trong thanh ghi a;******************************************

********write_LCD: mov LCD_port,a setb rs ; chon thanh ghi du lieu clr rw ; cho LCD biet day la du lieu setb en clr en mov r1,#100 lcall delay_timerret

23

;******************************************************

;Ham thiet lap vi tri con tro trong LCD; - Nap gia tri con tro vao thanh ghi r4 truoc;*******************************************

***********set_cursor: push acc mov a,#80h add a,r4 mov LCD_port,a clr rs ; chon thanh ghi dieu khien clr rw ; chon ghi vao LCD setb en clr en mov r1,#5 lcall delay_timer pop accret;*******************************************

*** ********;Ham xoa LCD;*******************************************

*** ********LCD_clear: mov a,#01h lcall write_cmdret;Du lieu can xuat ra LCDstring: db '***Lam quen voi LCD!***' db 'Chuc cac dong chi khoe, va co ket qua

cao trong mon hoc tap!' db '----Tran trong kinh chao!----'

24

db 0end

bài 4 mô tơa : mạch

25

b : chương trình ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx;chtr dieu khien step motor quay lien tuc

theo chieu nguoc lai ;ket noi port2 (da dem dong) toi port STEP-

MOTOR";xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxx org 0000h sjmp main1 org 0030hmain1: mov p1,#0 main: mov p1,#10000000b lcall delay1giay

26

mov p1,#0 lcall delay1giay mov p1,#01000000b lcall delay1giay mov p1,#0 lcall delay1giay mov p1,#00100000b lcall delay1giay mov p1,#0 lcall delay1giay mov p1,#00010000b lcall delay1giay mov p1,#0 lcall delay1giay sjmp main;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxx;chuong trinh con delay voi thoi gian ngan

hon;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxx delay: mov r7,#0 djnz r7,$ djnz r7,$ djnz r7,$ djnz r7,$ ret delay1giay: mov 6ah,#2 xx3: mov 6bh,#0 xx2: mov 6ch,#0 djnz 6ch,$

27

djnz 6bh,xx2 djnz 6ah,xx3 ret end

+ led 32 trái tima : mạch

28

b : chương trình#include<regx52.h>Editer By ChipKool_Onlinesbit wt1=P0^7;// P0sbit wt2=P0^6;sbit wt3=P0^5;sbit wt4=P0^4;sbit wt5=P0^3;sbit wt6=P0^2;sbit wt7=P0^1;sbit wt8=P0^0;

sbit w1=P1^0;// P1sbit w2=P1^1;sbit w3=P1^2;sbit w4=P1^3;sbit w5=P1^4;sbit w6=P1^5;sbit w7=P1^6;sbit w8=P1^7;

29

sbit w21=P2^0; // P2sbit w22=P2^1;sbit w23=P2^2;sbit w24=P2^3;sbit w25=P2^4;sbit w26=P2^5;sbit w27=P2^6;sbit w28=P2^7;

sbit w11=P3^0; // P3sbit w12=P3^1;sbit w13=P3^2;sbit w14=P3^3;sbit w15=P3^4;sbit w16=P3^5;sbit w17=P3^6;sbit w18=P3^7;

unsigned char code a[8][64]= {

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

30

1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}

//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 };//-----------------------------------------------------void delayus(int time){ // ham nay co do che la 20 us int n; unsigned char a; for(n=0;n<time;n++) { a=0; }}//-----------------------------------------------------void delayus1(){ // ham nay co do che la 20 us unsigned char a,n; for(n=0;n<10;n++)

31

{ a=0; }}//-----------------------------------------------------void saobang1vong(){ int n,k,h; for(k=0;k<33;k++) { for(n=1;n<14;n++) { for(h=0;h<8;h++) {

P1=0xff;P2=0xff;P3=0xff;//wr=n1;wg=n2;wb=n3;

w1=a[h][k];w2=a[h][k+1];w3=a[h][k+2];w4=a[h][k+3];w5=a[h][k+4];w6=a[h][k+5];w7=a[h][k+6];w8=a[h][k+7]; //P1

w11=a[h][k+8];w12=a[h][k+9];w13=a[h][k+10];w14=a[h][k+11];w15=a[h][k+12];w16=a[h][k+13];w17=a[h][k+14];w18=a[h][k+15];//P3

w21=a[h][k+16];w22=a[h][k+17];w23=a[h][k+18];w24=a[h][k+19];w25=a[h][k+20];w26=a[h][k+21];w27=a[h][k+22];w28=a[h][k+23];//P2

wt1=a[h][k+24];wt2=a[h][k+25];wt3=a[h][k+26];wt4=a[h][k+27];wt5=a[h][k+28];wt6=a[h][k+29];wt7=a[h][k+30];wt8=a[h][k+31];//P0

delayus1(); }

32

} }}//-----------------------------------------------------void saobang2benduoilen() { int n,k,h; for(k=15;k<33;k++) { for(n=1;n<20;n++) { for(h=0;h<8;h++) {

P1=0xff;P2=0xff;P3=0xff;P0=0xff;//wr=n1;wg=n2;wb=n3;

w1=a[h][k]; // p3.7 w2=a[h][k+1];wt8=a[h][k+1]; // p3.6 -

p2.0 w3=a[h][k+2];wt7=a[h][k+2]; w4=a[h][k+3];wt6=a[h][k+3]; w5=a[h][k+4];wt5=a[h][k+4]; w6=a[h][k+5];wt4=a[h][k+5]; w7=a[h][k+6];wt3=a[h][k+6]; w8=a[h][k+7];wt2=a[h][k+7]; w11=a[h][k+8];wt1=a[h][k+8]; w12=a[h][k+9];w28=a[h][k+9]; w13=a[h][k+10];w27=a[h][k+10]; w14=a[h][k+11];w26=a[h][k+11]; w15=a[h][k+12];w25=a[h][k+12]; w16=a[h][k+13];w24=a[h][k+13]; w17=a[h][k+14];w23=a[h][k+14]; w18=a[h][k+15];w22=a[h][k+15]; w21=a[h][k+16];

33

delayus1(); } } }}//-----------------------------------------------------void saobang2bentrenxuong() { int n,k,h; for(k=15;k<33;k++) { for(n=1;n<20;n++) { for(h=0;h<8;h++) {

P1=0xff;P2=0xff;P3=0xff;P0=0xff;//wr=n1;wg=n2;wb=n3;

w21=a[h][k]; // p3.7 w22=a[h][k+1];w18=a[h][k+1]; // p3.6 -

p2.0 w23=a[h][k+2];w17=a[h][k+2]; w24=a[h][k+3];w16=a[h][k+3]; w25=a[h][k+4];w15=a[h][k+4]; w26=a[h][k+5];w14=a[h][k+5]; w27=a[h][k+6];w13=a[h][k+6]; w28=a[h][k+7];w12=a[h][k+7]; wt1=a[h][k+8];w11=a[h][k+8]; wt2=a[h][k+9];w8=a[h][k+9]; wt3=a[h][k+10];w7=a[h][k+10]; wt4=a[h][k+11];w6=a[h][k+11]; wt5=a[h][k+12];w5=a[h][k+12]; wt6=a[h][k+13];w4=a[h][k+13]; wt7=a[h][k+14];w3=a[h][k+14];

34

wt8=a[h][k+15];w2=a[h][k+15]; w1=a[h][k+16]; delayus1(); } } }}//-----------------------------------------------------void saobang2benxoaytrai() { int n,k,h; for(k=15;k<33;k++) { for(n=1;n<20;n++) { for(h=0;h<8;h++) {

P1=0xff;P2=0xff;P3=0xff;P0=0xff;//wr=n1;wg=n2;wb=n3;

w18=a[h][k]; // p3.7 w17=a[h][k+1];wt8=a[h][k+1]; // p3.6 -

p2.0 w16=a[h][k+2];wt7=a[h][k+2]; w15=a[h][k+3];wt6=a[h][k+3]; w14=a[h][k+4];wt5=a[h][k+4]; w13=a[h][k+5];wt4=a[h][k+5]; w12=a[h][k+6];wt3=a[h][k+6]; w11=a[h][k+7];wt2=a[h][k+7]; w8=a[h][k+8];wt1=a[h][k+8]; w7=a[h][k+9];w28=a[h][k+9]; w6=a[h][k+10];w27=a[h][k+10]; w5=a[h][k+11];w26=a[h][k+11]; w4=a[h][k+12];w25=a[h][k+12];

35

w3=a[h][k+13];w24=a[h][k+13]; w2=a[h][k+14];w23=a[h][k+14]; w1=a[h][k+15];w22=a[h][k+15]; w21=a[h][k+16]; delayus1(); } } }}//-----------------------------------------------------void saobang2benxoayphai() // Test{ int n,k,h; for(k=15;k<33;k++) { for(n=1;n<20;n++) { for(h=0;h<8;h++) {

P1=0xff;P2=0xff;P3=0xff;P0=0xff;//wr=n1;wg=n2;wb=n3;

//w18=a[h][k]; // p3.7 w2=a[h][k+1];w22=a[h][k+1]; // p3.6 -

p2.0 w3=a[h][k+2];w23=a[h][k+2]; w4=a[h][k+3];w24=a[h][k+3]; w5=a[h][k+4];w25=a[h][k+4]; w6=a[h][k+5];w26=a[h][k+5]; w7=a[h][k+6];w27=a[h][k+6]; w8=a[h][k+7];w28=a[h][k+7]; w11=a[h][k+8];wt1=a[h][k+8]; w12=a[h][k+9];wt2=a[h][k+9]; w13=a[h][k+10];wt3=a[h][k+10];

36

w14=a[h][k+11];wt4=a[h][k+11]; w15=a[h][k+12];wt5=a[h][k+12]; w16=a[h][k+13];wt6=a[h][k+13]; w17=a[h][k+14];wt7=a[h][k+14]; w18=a[h][k+15];wt8=a[h][k+15]; w21=a[h][k+16];w1=a[h][k+16]; delayus1(); } } }}//-----------------------------------------------------void main(){ P0=0x00;P1=0x00;P2=0x00;P3=0x00; while(1) { saobang1vong(); saobang2benduoilen(); saobang2bentrenxuong(); saobang2benxoaytrai(); saobang2benxoayphai(); }}

37

Nhóm đã biết cách làm cho mạch chạy và nắm vững lý thuyết về mạch , hiểu thêm về môn học ,và có thể tự tin làm thêm được cách mạch khác .

38

39