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

Báo cáo thí nghiệm môn vi xử lý

24 15 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

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 159,72 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÁO CÁO THÍ NGHIỆM MÔN: VI XỬ LÝ TP.HCM , THÁNG ...... NĂM 201... 1 Để tạo sự trực quan và dễ hiểu cho người đọc, một số chương trình có số câu lệnh nhiều sẽ được chia làm nhiều cột, được đọc từ trái sang phải. BÀI 1: LẬP TRÌNH GIAO TIẾP LED ĐƠN VÀ PHÍM ĐƠN THÍ NGHIỆM 1:Viết chương trình thực hiện việc đọc liên tục trạng thái của nút nhấn được nối đến P1.0 và hiển thị ra led được nối tại chân P3.0 (bit thứ 0 của led thanh BL202). ORG 2000H LOOP: SETB P1.0 MOV C, P1.0 MOV P3.0,C SJMP LOOP END - LED nối vào P1.0 và P3.0 đều bị tác động. LED tại P1.0 bị tác động do phần cứng, khi nhấn phím, mức điện áp trên P1.0 bằng 0, đầu còn lại của LED được nối với điện trở và nối lên VCC nên đèn tại P1.0 sáng. Tương tự, tại P3.0, 1 đầu LED được nối vào điện trở và nối đến VCC, đầu còn lại nối đến P3.0. Khi nhấn nút, P1.0 có mức điện áp thấp, phần mềm sẽ đọc mức điện áp và đặt cho P3.0 mức điện áp thấp nên đèn sáng. - Tất cả các chân trên P1 và P3 đều có thể sử dụng do tất cả các chân đều có thể dùng làm chân IO. THÍ NGHIỆM 2: Biên dịch và thử nghiệm chương trình cho sẵn sau: ORG 2000H MAIN: CPL P3.0 JMP MAIN END - Theo lý thuyết, với thạch anh 11.0592MHz, chương trình trên sẽ tạo ra sóng vuông trên P3.0 với chu kì 6.5us - Vẽ dạng sóng: - Tần số tối đa một xung tuần hoàn có chu kỳ nhiệm vụ 50% có thể đạt được là 153600Hz với đoạn code như trên

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ

BÁO CÁO THÍ NGHIỆM

MÔN: VI XỬ LÝ

TP.HCM , THÁNG NĂM 201

Trang 2

Để tạo sự trực quan và dễ hiểu cho người đọc, một số chương trình có số câu

lệnh nhiều sẽ được chia làm nhiều cột, được đọc từ trái sang phải.

BÀI 1: LẬP TRÌNH GIAO TIẾP LED ĐƠN VÀ PHÍM ĐƠN

THÍ NGHIỆM 1:Viết chương trình thực hiện việc đọc liên tục trạng thái của nút nhấn được

nối đến P1.0 và hiển thị ra led được nối tại chân P3.0 (bit thứ 0 của led thanh BL202).

- LED nối vào P1.0 và P3.0 đều bị tác động LED tại P1.0 bị tác động do phần cứng, khi nhấn

phím, mức điện áp trên P1.0 bằng 0, đầu còn lại của LED được nối với điện trở và nối lên

VCC nên đèn tại P1.0 sáng Tương tự, tại P3.0, 1 đầu LED được nối vào điện trở và nối đến

VCC, đầu còn lại nối đến P3.0 Khi nhấn nút, P1.0 có mức điện áp thấp, phần mềm sẽ đọc

mức điện áp và đặt cho P3.0 mức điện áp thấp nên đèn sáng

- Tất cả các chân trên P1 và P3 đều có thể sử dụng do tất cả các chân đều có thể dùng làm

- Theo lý thuyết, với thạch anh 11.0592MHz, chương trình trên sẽ tạo ra sóng vuông trên

P3.0 với chu kì 6.5us

- Vẽ dạng sóng:

- Tần số tối đa một xung tuần hoàn có chu kỳ nhiệm vụ 50% có thể đạt được là 153600Hz với

đoạn code như trên

Trang 3

- Vòng trễ tạo ra với thời gian trễ 0.5ms Mỗi vòng lặp DJNZ có thời gian thực thi 2 chu kì

máy, mỗi chu kì máy có thời gian bằng 12 chu kì thạch anh Gọi n là số lần lặp:

0.5(10^-3)=2n.Tmáy=2n.12Txtal=24n.(1/11059200) => n=230.4 => chọn n=230

- Vẽ lại dạng sóng:

- Sai số nhỏ nhất có thể đạt được: (230.4-230)/230.4=0.17%

THÍ NGHIỆM 4:

Viết chương trình con Delay1sIns và dùng chương trình con này để chớp/tắt LED đơn gắn

vào P1.0 sau mỗi khoảng thời gian 1s

DJNZ R5,LOOP3 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET

END

- Tính thời gian delay 1s:

1=2n.Tmáy=2n.12Txtal=24n.( 1

11059200) => n=460800 => chọn n1=250; n2=250; n3=7

Trang 4

THÍ NGHIỆM 5:

Viết chương trình tạo hiệu ứng quay LED: các LED đơn trên BARLED1 sáng lần lượt từ trái

sang phải sau thời gian 1s và lặp lại Sử dụng chương trình con 1s đã viết ở trên

MOV R5,#250 LOOP3:

DJNZ R5,LOOP3 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET

SIGNAL:

DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH END

- LED ngoài cùng bên trái nối với MSB của P1

Trang 5

BÀI 2: LẬP TRÌNH TIMER VÀ HIỂN THỊ LED 7 ĐOẠN

JNB TF0,$

CLR TF0 CLR TR0 RET END

- Dạng sóng có thể bị sai số, để hạn chế sai số, ta nên tính toán giá trị nạp vào TH0 và TL0

- Ở chế độ 2, độ trễ gây ra do các câu lệnh đảo giá trị bit gây sai số cho dạng sóng ngõ ra

Tuy nhiên sai số là không lớn

Trang 6

MOV 22H, B ; LUU HANG CHUC

MOV 23H, A ; LUU HANG TRAM

Trang 7

MOV R7,#18 TIMELOOP:

MOV TMOD, #01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0

JNB TF0,$

CLR TF0 CLR TR0 DJNZ R7,TIMELOOP RET

END

Trang 8

BÀI 3: QUÉT LED 7 ĐOẠN VÀ GIAO TIẾP LCD

THÍ NGHIỆM 1:

Viết chương trình con DisplayLED xuất giá trị chứa trong thanh ghi R0 lên LED 7 đoạn có

số thứ tự chứa trong thanh ghi R1 R0 nằm trong tầm từ 0-9 và R1 trong tầm từ 0-3.

Sau đó dùng chương trình con này viết chương trình chính xuất giá trị 1 lên LED 7 đoạn số 3

CJNE A,#2,ANONUM3 MOV A,#0B0H

ADD A,R0 SJMP DONE ANONUM3:

MOV A,#70H ADD A,R0 DONE:

MOV DPTR,#0000H MOVX @DPTR,A RET

FINISH: NOP END

THÍ NGHIỆM 2:

Viết chương trình hiển thị số 1 lên LED7 đoạn 0, sau đó 1s hiển thị số 2 lên LED 7 đoạn 1,

sau đó 1s hiển thị số 3 lên LED 7 đoạn 2, sau đó 1s hiển thị số 4 lên LED 7 đoạn 3 Quá trình

này lặp đi lặp lại Việc hiển thị này sử dụng chương trình con DisplayLED đã viết ở trên

Giảm thời gian trễ xuống còn 100 ms Quan sát hiện tượng

Tính toán thời gian trễ sao cho không còn thấy LED nhấp nháy và áp dụng vào chương trình

Giảm thời gian trễ xuống bằng 0 (không sử dụng hàm delay) Quan sát hiện tượng

ADD A,R0 SJMP DONE ANONUM1:

CJNE A,#1,ANONUM2 MOV A,#0D0H

ADD A,R0 SJMP DONE ANONUM2:

CJNE A,#2,ANONUM3 MOV A,#0B0H

ADD A,R0 SJMP DONE ANONUM3:

MOV A,#70H ADD A,R0

DONE:

MOV DPTR,#0000H MOVX @DPTR,A RET

DELAY1S:

MOV R7,#18 TIMELOOP:

MOV TMOD, #01H MOV TH0,#HIGH(- 50000)

MOV TL0,#LOW(-50000) SETB TR0

JNB TF0,$

CLR TF0 CLR TR0 DJNZ R7,TIMELOOP RET

END

Trang 9

- Khi giảm thời gian delay còn 100ms, các LED 7 đoạn chớp tắt nhanh hơn

- Khi loại bỏ hàm delay, các LED 7 đoạn dường như hiển thị các số cùng lúc

- Mắt người có hiện tượng lưu ảnh, những hình ảnh chuyển động với tốc độ trên 24 khung

hình 1 giây sẽ khiến mắt ta không thể phân biệt được sự nhấp nháy của ảnh Vậy LED cần có

thời gian sáng mỗi chu kì quét là: 1/(4.25)=10ms

THÍ NGHIỆM 3:

Download chương trình mẫu LCD.A51 trên trang web bộ môn điện tử

Biên dịch và chạy thử chương trình

Sửa chương trình để hiển thị tên sinh viên lên hàng đầu

- Tại cuối chương trình, sau nhãn MESSAGE, sửa các kí tự trong dấu “” thành tên sinh viên

THÍ NGHIỆM 4:

Viết thêm chương trình con CLRSCREEN để xóa màn hình LCD

Viết thêm chương trình con GOTOXY để di chuyển con trỏ của LCD đến hàng x, cột y, với

X chứa trong R0 và Y chứa trong R1

MOV A, #38H ACALL WRITECOM MOV A, #0EH ACALL WRITECOM MOV A, #06H ACALL WRITECOM RET

CLEAR:

MOV A, #01H ACALL WRITECOM RET

GOTOXY:

Trang 10

INC A DJNZ B,LOOP EXIT:

RET DISPLAYSTRING1:

MOV A,#0 LOOP1:

DJNZ B,LOOP WAIT_LCD:

MOV R6,#10 DL1:

MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 RET

MESSAGE:

DB "HELLO WORLD!",0 MESSAGE1:

DB "NHOM 4",0

END

Trang 11

BÀI 4: LẬP TRINH GIAO TIẾP PHÍM ĐƠN VÀ BÀN PHÍM SỐ HEX

THÍ NGHIỆM 1:Viết chương trình đếm số lần nhấn SW310 (phím đơn kết nối vào P1.0),

hiển thị lên LCD theo cấu trúc: Push Number = xx (xx là số lần nhấn)

LCD_E BIT P3.4

LCD_RS BIT P3.5 LCDADDR EQU 6000H

ORG 0000H MAIN:

MOV @R0, 30H MOV DPTR,

#LCDADDR

ACALL CLEAR ACALL INIT_LCD MOV P1,#0FFH MOV R0,#0 LOOP:

ACALL CLEAR ACALL DISPLAYSTRING

ACALL DISPNUM MOV A,P1

CJNE A,#0FEH, LOOP

INC R0 SJMP LOOP DISPNUM:

MOV A,R0 DIV AB ADD A,#30H ACALL WRITETEXT MOV A,B

ADD A,#30H ACALL WRITETEXT RET

INIT_LCD:

MOV A,#38H ACALL WRITECOM

MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET

CLEAR:

MOV A,#01H ACALL WRITECOM RET

WRITECOM:

MOV DPTR,#LCDADDR

SETB LCD_E CLR LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET

WRITETEXT:

MOV DPTR,#LCDADDR

SETB LCD_E SETB LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET

DISPLAYSTRING:

MOV A,#0 LOOPDISPSTRING:

MOV DPTR,

#MESSAGE

MOV R0,A

Trang 12

MOVC A,@A+DPTR

JZ EXIT ACALL WRITETEXT MOV A,R0

INC A DJNZ B,LOOPDISPSTRING

EXIT:

RET WAIT_LCD:

MOV R6,#10 DL1:

MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 RET

CLEAR:

MOV A,#01H ACALL WRITECOM RET

WRITECOM:

MOV DPTR,#LCDADDR SETB LCD_E

CLR LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET

WRITETEXT:

MOV DPTR,#LCDADDR SETB LCD_E

SETB LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET

DISPLAYSTRING:

MOV A,#0 LOOPDISPSTRING:

MOV DPTR, #MESSAGE MOV R0,A

MOVC A,@A+DPTR

JZ EXIT

Trang 13

MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1

RET DELAYBUTTON:

MOV R6,#40 DL2:

MOV R7, #250 DJNZ R7, $ DJNZ R6,DL2 RET

MESSAGE:

DB "PUSH NUMBER = ",0 END

THÍ NGHIỆM 3:Viết chương trình con SCANKEY quét bàn phím ma trận 4x4 trên board

thí nghiệm Các giá trị trả về từ 0-15 nếu có phím được nhấn hoặc 255 nếu không có phím

được nhấn Kết quả chứa trong R0

Sử dụng chương trình con này viết chương trình gửi lên máy tính các ký tự từ '0' cho đến 'F'

ứng với phím được nhấn trên bàn phím, baudrate là 19200

SJMP DONE ANOBUT4:

MOV P1,#0DFH ACALL DELAYBUTTON MOV A,P1

CJNE A,#0DEH,ANOBUT5 MOV R0,#'1'

SJMP DONE ANOBUT5:

CJNE A,#0DDH,ANOBUT6 MOV R0,#'5'

SJMP DONE ANOBUT6:

CJNE A,#0DBH,ANOBUT7 MOV R0,#'9'

SJMP DONE ANOBUT7:

CJNE A,#0D7H,ANOBUT8 MOV R0,#'D'

SJMP DONE ANOBUT8:

MOV P1,#0BFH ACALL DELAYBUTTON MOV A,P1

CJNE A,#0BEH,ANOBUT9 MOV R0,#'2'

SJMP DONE ANOBUT9:

CJNE A,#0BDH,ANOBUT10 MOV R0,#'6'

Trang 14

SJMP DONE ANOBUT15:

CJNE A,#077H,ANOBUT16 MOV R0,#'F'

SJMP DONE ANOBUT16:

MOV R0,#255 DONE:

RET

DELAYBUTTON:

MOV R6,#40 DL2:

MOV R7, #250 DJNZ R7, $ DJNZ R6,DL2 RET

END

Trang 15

BÀI 5: LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ ADC

THÍ NGHIỆM 1: Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính thông qua

HyperTerminal với tốc độ baud 19200 pbs mỗi khi SW 310 (gắn vào P1.0) được nhấn

JNB TI,$

CLR TI MOV SBUF, A RET

Viết chương trình nhận các ký tự từ máy tính gửi đến EME-MC8 thông qua HyperTerminal

(bằng cách gõ các ký tự trên bàn phím khi đang ở trong chương trình HyperTerminal) và hiển

thị lên LCD như sau:

Nếu ký tự là chữ thì hiển thị lên LCD; Enter thì xuống hàng; ESC thì xóa màn hình LCD;

Backspace thì xóa ký tự bên trái dấu nháy

MOV A, SBUF RET

LCD_INIT:

MOV A, #38H ACALL WRITE_COMMAND MOV A,#0EH

ACALL WRITE_COMMAND MOV A,#06H

ACALL WRITE_COMMAND RET

WAIT_LCD:

MOV R7,#100 WAITLCDLOOP:

MOV R6,#250 DJNZ R6,$

DJNZ R7,WAITLCDLOOP RET

Trang 16

MOVX @DPTR,A SETB EN

CLR EN RET END

Trang 17

BÀI 6: LẬP TRÌNH NGẮT

THÍ NGHIỆM 1:

Viết chương trình làm song song 2 công việc sau:

Nhận 1 byte từ máy tính và xuất ngược lại (echo) lên màn hình terminal

Bật LED gắn vào P1.1 khi SW 317 (gắn vào P1.0) được nhấn, và tắt LED khi phím được nhả

SJMP LOOP SERIALINT:

JNB RI,SKIP CLR RI MOV A,SBUF MOV SBUF,A SKIP:

CLR TI RETI END

DISPLAYLED:

MOV A,R1 CJNE A,#0,ANONUM1 MOV A,#0E0H

ADD A,R0 SJMP DONE ANONUM1:

CJNE A,#1,ANONUM2 MOV A,#0D0H

Trang 18

MOV DPTR,#0000H MOVX @DPTR,A RET

A,#7FH,COUNTDONE MOV R0,#23H

MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A DEC R0 MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A DEC R0 MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A DEC R0 MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A SJMP COUNTDONE SKIP:

INC A

MOV @R0,A COUNTDONE:

RET DELAYBUTTON:

MOV R6,#40 DL2:

MOV R7, #250 DJNZ R7, $ DJNZ R6,DL2 RET

TIMER0INT:

CLR TR0 CJNE R1,#4,CONT MOV R1,#0

CONT:

MOV A,R1 ADD A,#20H MOV R0,A MOV A,@R0 MOV R0,A ACALL DISPLAYLED MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) SETB TR0

RETI DISPLAYLED:

Trang 19

CJNE A,#2,ANONUM3 MOV A,#0B0H

ADD A,R0 SJMP DONE ANONUM3:

MOV A,#70H ADD A,R0 DONE:

MOV DPTR,#0000H MOVX @DPTR,A RET

END

THÍ NGHIỆM 4:

Viết chương trình thực hiện đồng hồ bấm giây, hiển thị lên LED 7 đoạn Hai LED 3 và 2 thể

hiện số giây, 2 LED 1 và 0 thể hiện phần trăm của giây

MOV P1,#0FFH MOV A,P1 CJNE A,#0FEH,ANOBUTTON1 MOV R0,#20H

MOV @R0,#0 INC R0 MOV @R0,#0 INC R0 MOV @R0,#0 INC R0 MOV @R0,#0 CLR C

SJMP CONTCOUNT ANOBUTTON1:

CJNE A,#0FDH,ANOBUTTON2 SETB C

SJMP CONTCOUNT ANOBUTTON2:

CJNE A,#0FBH,CONTCOUNT

Trang 20

MOV DPTR,#0000H MOVX @DPTR,A RET

TIMEVALUE:

JNC COUNTDONE MOV R0,#23H MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A DEC R0 MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A DEC R0 MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A DEC R0 MOV A,@R0 CJNE A,#9,SKIP MOV A,#0 MOV @R0,A SJMP COUNTDONE SKIP:

INC A MOV @R0,A SJMP COUNTDONE COUNTDONE:

Trang 21

RET END

Trang 22

ACALL DELAY1S CJNE R0,#59,INCS MOV R0,#0 CJNE R1,#59,INCM MOV R1,#0

CJNE R2,#23,INCH MOV R2,#0

SJMP FINISH INCS:

INC R0 SJMP FINISH INCM:

INC R1 SJMP FINISH INCH:

INC R2 FINISH:

ACALL CLEAR ACALL DISPHOUR ACALL DISPMIN ACALL DISPSEC SJMP LOOP

MOV A,P0 ACALL DELAY100MS CJNE A,#10111111B,ANOBUTHOUR1 MOV A,R2

CJNE A,#23,INCHOUR MOV R2,#0

ACALL CLEAR ACALL DISPHOUR SJMP ANOBUTHOUR3 INCHOUR:

INC R2 ACALL CLEAR ACALL DISPHOUR ANOBUTHOUR1:

CJNE A,#01111111B,ANOBUTHOUR2 MOV A,R2

CJNE A,#0,DECHOUR MOV R2,#23

ACALL CLEAR ACALL DISPHOUR SJMP ANOBUTHOUR3 DECHOUR:

DEC R2 ACALL CLEAR ACALL DISPHOUR ANOBUTHOUR2:

CJNE A,#11011111B,ANOBUTHOUR3 RET

INITMIN:

ACALL CLEAR MOV A,#0 MOV R4,#8 MOV DPTR,#MESSAGE3 INITMINLOOP:

MOV R5,A MOVC A, @A+DPTR ACALL WRITETEXT MOV A,R5

INC A DJNZ R4, INITMINLOOP ACALL DELAY1S

MOV R1,#0 ACALL CLEAR

Trang 23

INC R0 ACALL CLEAR ACALL DISPSEC ANOBUTSEC1:

CJNE A,#01111111B,ANOBUTSEC2 MOV A,R0

CJNE A,#0,DECSEC MOV R0,#59

ACALL CLEAR ACALL DISPSEC SJMP ANOBUTSEC3 DECSEC:

DEC R0 ACALL CLEAR ACALL DISPSEC ANOBUTSEC2:

CJNE A,#11011111B,ANOBUTSEC3 RET

INITTIME:

ACALL CLEAR MOV A,#0 MOV R4,#9 MOV DPTR,#MESSAGE1 INITTIMELOOP:

MOV R5,A MOVC A, @A+DPTR ACALL WRITETEXT MOV A,R5

INC A DJNZ R4, INITTIMELOOP RET

DISPSEC:

MOV B,#10 MOV A,R0 DIV AB ADD A,#30H ACALL WRITETEXT MOV A,B

ADD A,#30H ACALL WRITETEXT RET

Trang 24

MOV TMOD, #01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0

WAIT: JNB TF0, WAIT CLR TF0

CLR TR0 DJNZ R7,RECOUNT RET

DELAY100MS:

MOV R7,#2 RECOUNT1:

MOV TMOD, #01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0

WAIT1: JNB TF0, WAIT1 CLR TF0

CLR TR0 DJNZ R7,RECOUNT1 RET

MESSAGE1:

DB 'I','N','I','T',' ','T','I','M','E' MESSAGE2:

DB 'I','N','I','T',' ','H','O','U','R' MESSAGE3:

DB 'I','N','I','T',' ','M','I','N' MESSAGE4:

DB 'I','N','I','T',' ','S','E','C'

END

Ngày đăng: 08/12/2021, 23:57

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w