1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

73 9 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

Tiêu đề Báo Cáo Thí Nghiệm Vi Xử Lý
Tác giả Nguyễn Huy Khiểm, Huỳnh Minh Khải, Huỳnh Quốc Kiệt
Người hướng dẫn Trần Văn Hoàng
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Khoa Điện-Điện Tử
Thể loại báo cáo thí nghiệm
Năm xuất bản 2018-2019
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 73
Dung lượng 547,21 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ÀI THÍ NGHIỆM 1:LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN MỤC TIÊU:  Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình..  Nắm được cách lập trình giao tiếp IO port  Nắm được các

Trang 1

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

KHOA ĐIỆN- ĐIỆN TỬ



Giáo viên hướng dẫn: Trần Văn Hoàng

Thành viên nhóm:

1 Nguyễn Huy Khiêm 1710138

2 Huỳnh Minh Khôi 1710149

3 Huỳnh Quốc Kiệt 1710156

Trang 2

BÀI THÍ NGHIỆM 1:

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

MỤC TIÊU:

 Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình

 Nắm được cách lập trình giao tiếp IO port

 Nắm được cách lập trình tạo thời gian trễ dùng các lệnh

CHUẨN BỊ:

 Đọc chương 1, chương 2 và chương 6 của tài liệu hướng dẫn

 Viết chương trình và mô phỏng các bài thí nghiệm

LÝ THUYẾT VỀ PHÍM NHẤN VÀ LED:

1 Cấu tạo phần cứng của phím đơn và led:

Trang 3

2 Tín hiệu của phím nhấn và Led:

- Đối với phim nhấn đơn trên Kit thí nghiệm được thiết kế theo cấu hình chế độ

pull-up Nên khi nhấn phím thì chân port sẽ đọc giá trị 0 Ngược lại chân port đọc giá trị 1

- Đối với Led muốn Led sang thì phải cho port tín hiệu 0 do thiết kế phần cứng của

4 Trả lời câu hỏi:

- Giải thích tại sao có đến 2 led cùng bị tác động khi nhấn hoặc thả nút?

Trả lời: Khi nhấn hoặc thả nút (nút ứng với P1.0) thì do cấu cấu tạo phần cứng

của Kit thí nghiệm nên ta có Led tương ứng được nói chung port với nút (P1.0) sẽ

bị tác động đồng thời do chịu tác động của phần mềm mà ta đã nạp vào 8051 nênLed được nói vào port quy định trong chương trình (P3.0) cũng sẽ bị tác động.Chính vì vậy chúng ta sẽ thấy có 2 Led bị tác động khi nhấn hoặc thả nút

- Tổng kết xem các bit nào của 2 port có thể được dùng trong thí nghiệm trên và

giải thích tại sao?

Trả lời: Các bit của 2 port đều sử dụng được trừ 2 bit P3.6 và P3.7 Vì 2 bit P3.6

và P3.7 được sử dụng để làm tín hiệu điều khiển cho chế độ 3 bus mà kit thínghiệm sử dụng cụ thể là P3.6=nWR, P3.7= nRD nên các LED nói vào 2 bit nàycủa port 3 không sử dụng được

II THÍ NGHIỆM 2:

1 Mục tiêu:

- Nắm được cách tạo trễ dùng vòng lặp lệnh

2 Yêu cầu:

- Viết chương trình tạo xung vuông 1 Hz, chu kỳ nhiệm vụ 50% trên P1.0

3 Code của chương trình:

ORG 2000H

Trang 4

4 Trả lời câu hỏi:

- Để tạo xung 1 Hz, các vòng trễ tạo ra như thế nào Tính toán chính xác dựa trên

chương trình đã viết.

Trả lời: Dùng cách câu lệnh DJNZ để tạo các vòng lặp tạo trễ cho chương trình.

Dựa trên thạch anh có tần số 11.0592 MHz thì chu kỳ máy MC=1,0851 µs

Chương trình trên do chu kỳ làm việc là 50% tức ½ chu kỳ sẽ ở mức 1, ½ còn lạicủa chu kỳ sẽ là mức 0 Trong 1 chu kỳ làm việc 0.5s xung ở mức 1, 0.5s xung ởmức 0 Vì vậy ta cần dùng chương trình tạo trễ trong thời gian 0.5s Thời gianchính xác mà chương trình DELAY05S trên là:

(((255.2+1+2).224+1+2).4+2+1).MC=0,4988s

Sai số của chương trình DELAY05S: |0,4988−0,50,5 |.100 %=0,24 %

- Sai số nhỏ nhất có thể đạt được so với yêu cầu là bao nhiêu?

Trả lời: Sai số nhỏ nhất có thể đạt được là: 0%

III THÍ NGHIỆM 3:

1 Mục tiêu:

- Nắm được cách viết chương trình con để tạo trễ

2 Yêu cầu:

- 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

3 Code chương trình:

a Chương trình con Delay1sIns

Trang 5

4 Trả lời câu hỏi:

- Thời gian 1s được tạo ra như thế nào?

Trả lời: Thời gian 1s được tạo ra bằng 3 vòng lặp DJNZ long ghép vào nhau Dựa

vào chu kỳ máy của từng lệnh ta tính được số vòng lặp cần thiết cho lệnh DJNZ,tạo được độ trễ 1s Đối với chường trình Display1sIns này thì thời gian delay tínhnhư sau: (((250.2+1+2).229+1+2).8+2+1).MC=0,99992s MC là chu kỳ máy(1MC= 1,0851 µs) Sai số cùa chương trình trên: %sai số= 0,00836%

IV THÍ NGHIỆM 4:

Trang 6

1 Mục tiêu:

- Nắm được cách hiển thị LED và tạo hiệu ứng

2 Yêu cầu:

- 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

4 Trả lời câu hỏi:

- Led ngoài cùng bên trái kết nối đến MSB (most significant bit) hay LSB (less

significant bit) của port 1?

Trả lời: Led ngoài cùng bên trái được nối đến MSB của port.

Trang 7

 Đọc chương 2 và chương 4 của tài liệu hướng dẫn

 Viết chương trình và mô phỏng các bài thí nghiệm

LÝ THUYẾT CƠ BẢN:

1 LED 7 đoạn :

Cấu tạo của led 7 đoạn gồm 8 led đơn được nối chung cực anode (dạng led anodechung) hoặc nối chung cực cathode (dạng led cathode chung) Các đoạn led đơnnày được đặt tên là a, b, c, d, e, f, g và dấu chấm dp Để hiển thị một giá trị lên led

7 đoạn, cần cấp điện áp lên chân chung và các tín hiệu điều khiển đoạn tương tựnhư điều khiển các led đơn

Trang 8

- Viết chương trình chính hiển thị số 9 lên LED 7 đoạn số 0 bằng cách cho R0 bằng

9 và gọi chương trình con DisplayLed0

Trang 9

3 Code của chương trình:

ORG 2000H

MOV R0, #9ACALL DISPLAYLED0SJMP KT

DISPLAYLED0:

MOV A, R0ADD A, #0E0HMOV DPTR, #0000HMOVX @DPTR, ARET

KT:

NOPEND

- Viết chương trình hiển thị lên LED 7 đoạn số 0 các con số từ 0 đến 9 sau các

khoảng thời gian 1s

3 Code của chương trình:

Trang 10

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

có số thứ tự ghi trong thanh ghi R1

- Xuất giá trị 1 lên LED số 3

3 Code chương trình VÀ GIẢI THÍCH Ý NGHĨA

MOV B, R1 ; chuyển giá trị trong R1 sang B

MOV A, #11110111B ; chuyển giá trị 11110111B sang A

LOOP:

DJNZ B, LOOP ; thực hiện B lần vòng lặp LOOP

ANL A, #11110000B ; AND A với 11110000B để giữ lại 4 bit cao của APUSH ACC ; lưu giá trị của A vào Stack

MOV A, R0 ; chuyển giá trị từ R0 sang A

ANL A, #00001111B ; AND A với 100001111B để giữa lại 4 bit thấp

MOV R0, A ; chuyển giá trị trong A sang R0

POP ACC ; đưa giá trị A lưu trong Stack quay lại vào A

ORL A, R0 ; OR A với R0 để 4 bit thấp là data; 4 bit cao là điều

Trang 11

;khiển LEDMOV DPTR, #0000H

MOVX @DPTR, A

RET

4 Trả lời câu hỏi:

- Giải thích ý nghĩa các lệnh của đoạn chương trình trong hướng dẫn

- Trả lời: Ý nghĩa chi tiết các câu lệnh được giải thích trên phần code.

Trang 13

b Code thời gian delay 100MS:

- Thay chương trình con DELAY1S ở code trên bằng chương trình con sau:

DELAY100MS:

MOV R6, #183 LOOP2:

MOV R5, #255 LOOP3:

DJNZ R5, LOOP3 DJNZ R6, LOOP2 RET

c Thời gian tính toán để không nhấp nháy 10MS

4 Trả lời câu hỏi:

- Thời gian trễ để không còn thấy LED nhấp nháy là bao nhiêu theo lý thuyết?Giải thích cách tính

- Trả lời: Thời gian trễ để không còn thấy LED nhấp nháy theo lý thuyết là:

1/4T >24 ( số lần chớp trong 1s của Led lớn hơn 24 lần )

 T<10.4 MS.

- Khi giảm rất nhỏ thời gian trễ, hiện tượng xảy ra là gì? Giải thích

- Trả lời: Khi giảm thời gian trễ rất nhỏ thì mắt ta sẽ thấy các LED hiển thị cùng

1 lúc và không có hiện tượng giật LED Giải thích là do chu kì sáng tắt củaLED rất nhỏ do thời gian delay nhỏ nên mắt người không còn cảm giác về sợsáng tắt liên tục của LED

Trang 14

MỤC TIÊU:

 Nắm được cách điều khiển LCD

 Nắm được cách giao tiếp ADC

 Nắm được cách chuyển giá trị đọc được thành giá trị thực tế

CHUẨN BỊ:

 Đọc chương 5 và chương 9 của tài liệu hướng dẫn

 Viết chương trình và mô phỏng các bài thí nghiệm

LÝ THUYẾT VỀ LCD VÀ ADC:

1 Lý thuyết về LCD:

a Các chân của LCD và chức năng:

b Thiết kế phần cứng của LCD:

BÀI THÍ NGHIỆM 3:

GIAO TIẾP LCD VÀ ADC

Trang 16

1 Mục tiêu:

- Nắm được cách thức xuất giá trị lên LCD

2 Yêu cầu:

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

- Biên dịch và chayjthurw chương trình,

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

Trang 19

4 Trả lời câu hỏi:

- Giải thích ý nghĩa và cách sử dụng các chương trình con trên project mẫu

- Trả lời: Ý nghĩa và cách sử dụng các chương trình con của project mẫu:

- Chương trình con INIT_LCD có nhiệm vụ khởi động module LCD

- Chương trình con CLEAR có nhiệm vụ xóa tất cả các ký tự đang hiển thị của LCD

- Chương trình con WRITECOM có nhiệm vụ ghi 1 byte lệnh đến LCD

- Chương trình con WRITETEXT có nhiệm vụ ghi 1 byte dữ liệu hiển thị đến LCD

- Chương trình con DISPLAYSTRING để dễ dàng hơn trong việc lấy các

ký tự và xuất ra LCD bằng phương pháp tra bảng

- Chương trình con WAIT_LCD tạo thời gian trễ để LCD có thể hoàn thành thao tác hiện thời trước khi bắt đầu 1 thao tác khác

II THÍ NGHIỆM 2:

1 Yêu cầu:

- 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ỏ LCD đến hàng x cột y, với x chứa trong R0 và y chứa trong R1

- Sửa chương trình ở thí nghiệm 1 để hiển thị thêm số nhóm ở hàng thứ 2

2 Code chương trình:

Trang 20

a Code chương trình con CLRSCREEN:

Trang 22

MOV R6,#10DL1:

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

GOTOXY:

PUSH ACCMOV A, R0MOV DPTR, #TBMOVC A, @A+DPTRADD A, R1

LCALL WRITECOMPOP ACC

TB: DB 80H, 0C0HRET

Trang 23

- Viết chương trình hiển thị giá trị của kênh 0 của ADC lên LCD dùng chương trình con READADC đã viết

Trang 25

DELAY_LCD:

; -MOV R6,#10DL1:

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

GOTOXY:

; -PUSH ACCMOV A, R2MOV DPTR, #TBMOVC A,@A+DPTRADD A, R3

LCALL WRITE_COMPOP ACC

RET

DELAY:

; -PUSH 06HPUSH 07HMOV R5,#8DL3:

MOV R6,#250DL2:

MOV R7, #250DJNZ R7, $DJNZ R6,DL2DJNZ R5, DL3POP 06HPOP 07HRET

TB:

; -DB 80H, 0C0HEND

3 Trả lời câu hỏi:

- Giá trị này có phải giá trị thực của điện áp đặt vào kênh 0 hay không?

Trang 26

- Trả lời: Giá trị này không phải giá trị thực của điện áp đặt vào kênh 0.

- Để hiển thị giá trị thực tế của mức điện áp đặt vào kênh 0 ta phải làm

BANG0_1:

MOV 31H, AMOV A, 32HMOV B, #10MUL ABMOV 33H, BMOV B, #51

Trang 31

MỤC TIÊU:

 Nắm được cách giao tiếp timer để tạo trễ và tạo baudrate

 Nắm được cách giao tiếp port nối tiếp

CHUẨN BỊ:

 Đọc chương 3 và chương 7 của tài liệu hướng dẫn

 Viết chương trình và mô phỏng các bài thí nghiệm

LÝ THUYẾT VỀ TIMER VÀ SERIAL PORT:

có thể hoạt động ở chế độ 8-bit hoặc 16-bit Tùy theo số xung đếm cần nhiều hay

ít mà có thể cấu hình Timer ở chế độ tương ứng

2 Lý thuyết về Serial port:

a Khung truyền nối tiếp bất đồng bộ:

Thuật ngữ tốc độ baud dùng để chỉ tốc độ truyền dữ liệu nối tiếp được truyền Tốc độ baud được định nghĩa 1/(thời gian giữa những chuyển tiếp tín hiệu)

b Thiết kế phần cứng:

BÀI THÍ NGHIỆM 4:

LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT

Trang 32

Hai tín hiệu dùng cho giao tiếp là TXD và RXD trên Port 3 của 8051 Như vậy,người lập trình cần bật ON hai switch này (của SW_CC4) để có thể dùng cổng nối tiếp:

ACALL DELAY005SDJNZ R7, MAIN_LOOP_1SJMP MAIN_LOOP

DELAY005S:

MOV TMOD, #01HMOV TH0, #HIGH(-46080)MOV TL0, #LOW(-46080)

Trang 33

SETB TR0JNB TF0, $CLR TF0RETEND

4 Trả lời câu hỏi:

- Để tạo sóng 1 Hz, ta có thể sử dụng timer ở chế độ 2 được không?

- Trả lời: Để tạo sóng 1 Hz, ta có thể sử dụng timer chế độ 2 được.

- Dạng sóng có bị sai số không? Để hạn chế sai số ta phải nạp các giá trị vào timer như thế nào?

- Trả lời: Dạng sóng có sai số Để hạn chế sai số ta nạp các giá trị vào timer như

Trang 34

SJMP LOOP

END

4 Trả lời câu hỏi:

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

- Trả lời: Ở chế độ 2, độ trễ gây ra do các câu lệnh đảo giá trị bit không gây sai

số cho dạng sóng ngõ ra Vì ở chế độ 2, giá trị được tự động nạp lại khi tràn nên không cần phải dừng lại để nạp lại giá trị, do đó dạng sóng chỉ bị dịch đi

do các độ trễ chứ không gây ra sai số cho dạng sóng

3 Code chương trình:

ORG 2000H

;SET SMOD LEN 1MOV A, PCONSETB ACC.7MOV PCON, A

;SET SERIAL PORT MODE 1MOV SCON, #01010010B

;SET TOC DO BAUD THONG QUA TIMER 1MOV TMOD, #20H

MOV TH1, #(-3)SETB TR1MAIN_LOOP1:

MOV R7, #0MOV DPTR, #TABLEMAIN_LOOP2:

JB P1.0, $ACALL DELAYJNB P1.0, $MOV A, R7INC R7MOVC A, @A+DPTR

JZ MAIN_LOOP1

Trang 35

ACALL SENDSJMP MAIN_LOOP2SEND:

JNB TI, $CLR TIMOV SBUF, ARET

; -DELAY:

MOV R6, #183LOOP2:

MOV R5, #255LOOP3:

DJNZ R5, LOOP3DJNZ R6, LOOP2RET

TABLE: DB "HELLO,WORLD ",0END

MOV TH1, #-3SETB TR1

; -; -CT

Trang 37

ACALL DELAYRET

WRITE_DATA:

; SETB RSSETB ENMOV DPTR, #8000HMOVX @DPTR, ACLR EN

ACALL DELAYRET

GOTOXY:

; PUSH ACCMOV A, R0MOV DPTR, #TBMOVC A, @A+DPTRADD A, R1

LCALL WRITE_COMPOP ACC

RET

; -; -CT CON DELAY:

DELAY -MOV R6, #183LOOP2:

MOV R5, #255LOOP3:

DJNZ R5, LOOP3DJNZ R6, LOOP2RET

TB:

; -DB 80H, 0C0H

END

1 Yêu cầu:

- Viết chương trình nhận các ký tự từ máy tính gửi đến EME-MC8 thông quaHyperTerminal (bằng cách gõ các ký tự trên bàn phím khi đang ở trongchương trình HyperTerminal) và hiển thị lên LCD như sau:

Trang 38

Nếu ký tự là chữ thì hiển thị lên LCD; Enter thì xuống hàng; ESC thì xóa mànhình LCD; Backspace thì xóa ký tự bên trái dấu nháy.

Trang 42

 Đọc chương 8 của tài liệu hướng dẫn

 Viết chương trình và mô phỏng các bài thí nghiệm

Trang 43

Để cho phép ngắt, người lập trình phải cho phép bit tương ứng trong thanh ghi IE

Người lập trình cũng có thể chọn mức ưu tiên cho ngắt thông qua thanh ghi IP

Trang 44

- 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ả

3 Code của chương trình:

ORG 2000HLJMP MAINORG 2023HLJMP SPISRORG 2030H

MAIN:

MOV A, PCONSETB ACC.7MOV PCON, AMOV TMOD, #20HMOV SCON, #01010000BMOV TH1, #-3

SETB EASETB ESSETB TR1MAIN_LOOP:

JNB P1.0, DUOCNHANSETB P1.1

SJMP MAIN_LOOPDUOCNHAN:

CLR P1.1SJMP MAIN_LOOPSPISR:

JB RI, NHANCLR TISJMP DONENHAN:

CLR RI

Trang 45

MOV A, SBUFMOV SBUF, ADONE:

RETIEND

Trang 54

BÁO CÁO PHẦN BÀI TẬP THÊM

P3.2 Sáng từ trái qua phải (Từ trọng số cao đến thấp)

P3.3 Sáng từ 2 LED ở giữa rồi lần lượt sáng cặp LED tương ứng

kế đến cặp LED ngoài cùng sángP3.4 Sáng từ phải qua trái (Từ trọng số thấp đến cao)

P3.5 Sáng từ 2 LED ngoài cùng, rồi lần lượt sáng cặp LED tương

ứng kế tiếp đến 2 LED ở giữa sáng

Trang 56

; -; CHUONG TRINH CON KIEM TRA

II BÀI THÍ NGHIỆM 2:

HIỂN THỊ LED 7 ĐOẠN

Trang 57

MOV R7,#1 ;1 DUNG; 0 CHAY

MOV A,#0 ;PERCENT SECOND

Trang 59

; -TABLE:

DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H

END

III BÀI THÍ NGHIỆM 3:

GIAO TIẾP LCD VÀ ADC

Trang 63

IV BÀI THÍ NGHIỆM 4:

LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT

ĐỀ:

Viết chường trình thực hiện đồng hồ bằng LED 7 đoạn hoặc LCD hiển thị phút và giây

Sử dụng Serial Port để điều chỉnh thời gian của đồng hồi Cụ thể:

Trang 68

Viết chương trình thực hiện các nhiệm vụ sau:

- Thực hiện đồng hồ hiển thị phút giây trên LCD

- Chỉnh thời gian bằng Serial Port (Dùng ngắt Serial port)

- Đồng thời trên LCD hiển thị giá trị đọc được trực tiếp từ kênh 0 (Thực hiện trong chương trình chính)

Cụ thể trong chương trình: nhập P sau đó nhập tiếp 2 số để quy định phút, 2 số tiếp theoquy định giây, sau đó đồng hồ LED sẽ tự động cập nhật giá trị

Ngày đăng: 19/09/2021, 10:01

HÌNH ẢNH LIÊN QUAN

- Viết thêm chương trình con CLRSCREEN để xóa màn hình LCD - Báo cáo thí nghiện vi xử lý
i ết thêm chương trình con CLRSCREEN để xóa màn hình LCD (Trang 19)
4. Trả lời câu hỏi: - Báo cáo thí nghiện vi xử lý
4. Trả lời câu hỏi: (Trang 19)
- 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áo cáo thí nghiện vi xử lý
h ận 1 byte từ máy tính và xuất ngược lại (echo) lên màn hình terminal (Trang 44)

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