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

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

33 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

Thông tin cơ bản

Tiêu đề Báo Cáo Thí Nghiệm Môn: Vi Xử Lý
Tác giả Phan Ngọc Hùng, Tô Trần Hữu Luân, Trần Khải Nguyên, Phan Tấn Phát
Người hướng dẫn GVHD: Nguyễn Phan Hải Phú
Trường học Đại Học Quốc Gia Tphcm Trường Đại Học Bách Khoa
Chuyên ngành Vi Xử Lý
Thể loại BÁO CÁO
Năm xuất bản 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 33
Dung lượng 9,62 MB

Nội dung

LAB 2_1: DÙNG TIMER ĐỂ TẠO DELAY VÀ TẠO XUNG.. S dử ụng chương trình con này để tạo xung 500 Hz trên chân PA0... Mã nguồn chương trình cho hai trường hợp... c Thay đổi giá trị dip switch

Trang 2

LAB 2_1: DÙNG TIMER ĐỂ TẠO DELAY VÀ TẠO XUNG

Bài 1:

a) Viết chương trình con delay 1 ms sử ụ d ng timer 0 S dử ụng chương trình con này để tạo xung 500 Hz trên chân PA0

b) Mô ph ng, ch nh sỏ ỉ ửa chương trình để ạ t o ra xung chính xác

c) K t nế ối chân PA0 vào oscilloscope để kiểm tra

Trang 3

Với m t thộ ời gian delay cho trước, ta có giá tr s xung cị ố ần đếm được tính là n=tdelay/(TOSCxN), ch n h s chia N sao cho giá tr n n m tọ ệ ố ị ằ ừ 0 đến 256 và là m t s ộ ốnguyên

n p giá tr cho thanh ghi tránh sai s ) ạ ị ố

- V i n =125 thì ta n p giá -125 cho thanh ghi TCNT0- V i prescaler = 64 thì 3 bit ớ ạ trị ớCS02:CS01:CS00 =011

- V y các giá tr c a các thanh ghi trong timer 0 lậ ị ủ ần lượt là: TCNT0 = -125, TCCR0A = 0x00, TCCR0B = 0x03

Trang 4

START:

RCALL DELAY ;delay tpo do rong xung

IN R17,PORTB ;doc PortB

EOR R17,R16 ;dâo bit PBO (do R16=0x01=OBOOOO 0001) OUT PORTB, R17

RJMP START ;lap vong lai

; chuong trinh con delaylms

Trang 5

Bài 2:

a) Viết chương trình tạo 1 xung vuông 64

us s d ng timer 0 ử ụ ở chế độ Normal mode Ngõ

ra s d ng chân OC0 ử ụb) Viết chương trình thực hiện tạo xung vuông có chu k 64 us s d ng timer 1 ỳ ử ụ ở chế độCTC mode Ngõ ra s d ng chân OC0 ử ụ

c) K t n i chân OC0 ra oscilloscope và quan sát ế ố

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

a Ở mode Normal, khi nào bit TOVx được set lên 1?

- Khi timer tràn t $FF ừ ➔ $00 ho c $FFFF ặ ➔ $0000 thì c TOVn set lên 1b mode CTC, ờ Ởkhi nào bit OCFx được set lên 1?

- Khi timer đạt đến giá tr trong thanh ghi (OCRxA + 1) thì c OCFxA lên 1 ị ờ

- Khi timer đạt đến giá tr trong thanh ghi (OCRxB + 1) thì c OCFxB lên 1 ị ờ

c Giá tr các thanh ghi cị ấu hình cho timer 0 cho 2 trường h p ợ

- Mode NOR TCNT0 = -125, TCCR0A = $00, TCCR0B = $03

- Mode CTC OCR0A = 255, TCCR0A = $02, TCCR0B = $01

d Mã nguồn chương trình cho hai trường hợp

Trang 6

LDI R16,0X00

OUT TCCR0A,R16 ; MODE NORMAL OUT TCCR0B,R16 ; DUNG TIMER START:

Trang 7

LDI R17,0X01 ;Timer0 chpy, he so chia N=1

OUT TCCR0B,R17

START: RJMP START

Trang 8

a) Cho chương trình sau tạo 2 xung PWM trên OC0A và OC0B

b Gi i thích lý do có d ng sóng (t n s , chu k làm viả ạ ầ ố ỳ ệc, phase) như kết qu ả

ldi r16, (1 << COM0B1)|(1 << COM0A1) | (1 << WGM00)|(1 << WGM01)

Trang 9

- 2 kênh đều có t n s sóng là b ng nhau và chu k c a sóng kênh 2 là ngầ ố ằ ỳ ủ ở ắn hơn kênh 1.Bài 4:

a) Sửa chương trình trên ứng với các trường hợp khác nhau của TCCR0A và TCCR0B

0 FOC0

A FOC0

B

WGM0

2 CS0

2 CS0

1 CS0

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

a Các mode làm vi c c a timer 0 ng v i các giá trệ ủ ứ ớ ị trên bảng

CS02:CS01:CS00 = 010 tương ứng với b chia 8 ộ

+ Mode 2: WGM02:WGM01:WGM00 = 111 tương ứng với mô th c FPWM ứ

TOP = OCR0A

OCR0X c p nhậ ậ ởt BOTTOM

Trang 10

TOV0 = 1 TOP = OCR0A = 100 ở

CS02:CS01:CS00 = 010 tương ứng với b chia 8 ộ

+ Mode 3: WGM02:WGM01:WGM00 = 010 tương ứng với mô th c CTC ứ

Trang 11

Trường h p 3: TCCR0A = 0b10100001, TCCR0B = 0b00000010 ợ

=>Trường h p này do OCR0 c p nhợ ậ ật khi đạt top và TOV0=1 khi đạt bottom nên t o d ng xung ạ ạ

ở 2 ngõ ra có dạng như kết quả thu được

a Timer0 làm việc ở mode nào?

- Timer0 hoạt động mode NOR ( TOP: 0xFF) i v i (1) ở đố ớ

- Timer0 hoạt động ở mode FPWM( TOP: OCR0A) đố ới v i (2)

b Giá trị đưa vào các thanh ghi của timer 0 là bao nhiêu? Giải thích

Trang 12

Chương trình tạo xung 1kHz, duty cycle 25% trên chân OC0B:

.EQU TP_H=-31 ;giá trị đặt trước mức 1

.EQU TP_L=-94 ;giá trị đặt trước mức 0

Trang 13

START: SBI PORTB,4 ;PB4 = 1 1MC

WAIT: SBIS TIFR0,TOV0 ;ch c TOV0=1 báo Timer0 tràn 2/1MC ờ ờ

RET ;

Trang 14

Chương trình tăng duty cycle trên OC0B từ 0% lên 100% rồi lại gi m xu ng 0, sau 10 ms ả ốduty cycle tăng/giảm 1%:

Trang 15

LDI R16, (1<<CS01)|(1<<CS00);Mode CTC va Prescaler = 64 OUT TCCR0B, R16

WAIT_C_H:

IN R17, TIFR0 ;Doc gia tri thanh ghi bao tran

SBRS R17, OCF0A ;Kiem tra co bao tran

RJMP WAIT_C_H ;Chua tran tiep tuc dem

OUT TIFR0, R17 ;Xoa co tran

MOV R16, SIGN_L

OUT OCR0A, R16

WAIT_C_L:

IN R17, TIFR0 ;Doc gia tri thanh ghi bao tran

SBRS R17, OCF0A ;Kiem tra co bao tran

RJMP WAIT_C_L ;Chua tran tiep tuc dem

OUT TIFR0, R17 ;Xoa co tran

Trang 16

OUT OCR0A, R16 ;Nap gia tri cho bo dem

LDI R16, (1<<CS01)|(1<<CS00) ;Mode CTC va Prescaler = 64 OUT TCCR0B, R16

WAIT_A:

IN R17, TIFR0 ;Doc gia tri thanh ghi bao tran

Trang 17

LAB2-2: GIAO TIẾP LED 7 ĐOẠN VÀ LED MA TR N

Bài 2:

Trang 18

a) K t n i 1 port c a AVR vào header J34 K t n i 2 chân port khác vào tín hi u nLE0 và ế ố ủ ế ố ệnLE1 trên header J82 Set jumper để cấp nguồn cho LED 7 đoạn

b) S dử ụng các chương trình mẫu trong tài liệu hướng d n thí nghi m, viẫ ệ ết chương trình

hi n th sể ị ố 0123 lên 4 LED 7 đoạn, s dử ụng timer 0 để quét LED v i t n s quét 50Hz ớ ầ ố

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

a Để có tần số quét là 50Hz, một LED sẽ sáng 1 lần trong bao lâu?

- LED s sáng 1 l n trong 5ms ẽ ầ

b Cấu hình timer như thế nào để có độ trễ này

- C u hình timer0 mode NOR v i giá tr n p cho TCNT0 là -156 ấ ớ ị ạ

- Giá tr các thanh ghi c a timer0: TCNT0: -156, TCCR0A: $00, TCCR0B: $04 ị ủ

c Mã ngu n và chú thích ồ

.EQU DATA_DDR = DDRD ; SET UP PORT D la ngo ra

.EQU DATA_OUT = PORTD

Trang 19

; -DISPLAY_7SEG -

; input data R18 choose led to display

; input R17 data to display -

; Chon LED hien thi

SBI LE, 0 ; mo cong

NOP

CBI LE, 0 ; khoa cong

; Do bang tim gia data

CLR R16 ; GIA TRI TRUNG GIAN LDI ZH, HIGH(TABLE << 1) ; look-up Led7seg LDI ZL, LOW(TABLE << 1)

ADD ZL, R17

ADC ZH, R16

Trang 20

TIMER_DELAY: ; tan so quet 50HZ => CO 4 LED TIMEDELAYFRAME = 200HZ ; 1/200 = 0.05 s = 40 000 (MCs) => use CLK/256 divider with N = 156 pulses

LDI R16, 0

DELAY:

LDI R16, -156 ; input (- n)

LDI R16, $04 ; use CLK/256 prescaler

WAIT:

SBIS TIFR0, TOV0 ; check if TOV = 1

Trang 21

Bài 3:

a) K t n i port c a AVR vào dip Switch, gi sế ố ủ ả ử đó là PORTA

b) Viết chương trình hiện giá trị PORTA * 9 lên 4 LED 7 đoạn

c) Thay đổi giá trị dip switch và quan sát kết quả

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

a Giá tr PORTA * 9 là s có bao nhiêu bit ị ố

- Giá tr tị ối đa là 255*9 = 2295 (dec) => 12 bit

b Làm thế nào để ể hi n th t ng ch s lên 4 LED? ị ừ ữ ố

- Phân tách s 12 bit thành 4 s BCD, lố ố ấy mã LED 7 đoạn của 4 số BCD đó để hiển thị lên 4 LED

Trang 23

OUT DDRA, R16 ;PortA la input

SER R16

OUT DDRB, R16 ;PortB la output

OUT PORTA, R16 ;Pull-up

LDI R16, $03 ;PortD chan 0 va 1 la output

OUT DDRD, R16

CBI PORTD, 0 ;Khoa chot

CBI PORTD, 1 ;Khoa chot

MOVW R20, R0 ;Ket qua luu vao R21:R20

PUSH TRAM ;Dung sau

PUSH CHUC ;Dung sau

CALL SAVE_TRAM_CHUC_DONVI ;Sau dong nay ta se duoc hang don vi cua ket qua STS $0100, DONVI ;Luu hang don vi vao o nho nay

MOV SONHO CHUC ;Hang chuc o kqua truoc chinh la so nho cua phep nhan lan sau

Trang 24

ADD R20, SONHO CALL SAVE_TRAM_CHUC_DONVI ;Sau dong nay se duoc hang tram vahang nghin cua kqua

PUSH R18 ;Cat hang don vi

MOV R18, R22 ;Lay phan nguyen chia 10 lan 2

CLR R22

L2:

Trang 25

PUSH R18 ;Cat hang tram

POP TRAM ;Hang tram

POP CHUC ;Hang chuc

POP DONVI ;Hang don vi

; enable 573 to choose led

;Turn off led

Trang 26

; - USE TIMER0 TO DELAY

SET_UP_TIMER: ; 1/200 = 0.05 s = 40 000 (MCs) => use CLK/256 divider with N = 156 puLDI R16, 0

Trang 27

Bài 4:

a) K t n i các tín hi u c n thiế ố ệ ầ ết để điều khi n LED ma tr n ể ậ

b) S dử ụng chương trình mẫu, ch nh s a n u c n thiỉ ử ế ầ ết để ể hi n thị chữ ‘A’ lên LED ma trận

Trang 28

Quét LED ma tr n s dậ ử ụng timer để ạ t o delay v i t n s quét 25 Hz ớ ầ ố

c) Ch nh sỉ ửa chương trình để đạ ầt t n s quét là 125Hz ố

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

a Mô t k t n i trên kit ả ế ố

- L y jumper c p áp cho LED MATRIX ấ ấ

- K t n i PORTD v i Header c a LED MATRIX ế ố ớ ủ

- K t nế ối dây đơn từ PA0-PA3 v i tín hi u CLR, CLK, LATCH, DSI ớ ệ

b Để có tần số quét 25Hz thì một cột LED sáng trong bao lâu?

- Để có t n s quét 25Hz thì m t c t LED sáng trong 5ms ầ ố ộ ộ

c S khác nhau khi quét t n s 25Hz và 125Hz ự ở ầ ố

- B ng mằ ắt thường thì trên kit thí nghi m không th y rõ sệ ấ ự khác nhau nhưng về lý thuyết thì ở

t n s 25Hz LED sầ ố ẽ chớp tắt nhanh hơn 125Hz

Trang 29

.equ latchPin = 1 ; Set latch pin to pin 1 of PORTB

.equ shiftDataPort = PORTB ; Set shift data port to PORTB

.equ shiftDataPin = 0 ; Set shift data pin to pin 0 of PORTB

; Initialize ports as outputs

shiftregister_initport:

push r24

ldi r24,(1<<clearSignalPin)|(1<<shiftClockPin)|(1<<latchPin)|(1<<shiftDataPin); out DDRB, r24 ; Set DDRB to output

pop r24

ret

shiftregister_cleardata:

cbi clearSignalPort, clearSignalPin ; Set clear signal pin to low

; Wait for a short time

sbi clearSignalPort, clearSignalPin ; Set clear signal pin to high

ret

; Shift out data

;shift out R27 to bar led

Trang 30

dec r18

brne shiftloop

; Latch data

sbi latchPort, latchPin ; Set latch pin to high

cbi latchPort, latchPin ; Set latch pin to low

; J38 connect to PORTD

; clear signal pin to pin 0 of PORTB

; shift clock pin to pin 1 of PORTB

Ngày đăng: 15/04/2024, 18:56

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w