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

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

Đ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

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 ộ ố

- Prescaler c a timer0 có các giá tr 1, 8, 64, 256, 1024 Ta ch n lủ ị ọ ần lượt các giá tr này và ị tính n Th y rấ ằng prescaler = 64 ta được k t qu n là 1 sế ả ố nguyên 125 (điều này giúp ta dễ 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ị ớ

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

WAIT: SBIS TIFR0,TOV0 ;cho co TOVO = 1 bao Timer0 trân RJMP WAIT ;co T0V0=0 tiép tqc cho

SBI TIFR0,TOV0 ;TOV0 = 1 => xoa co TOVO hoac OUT TIFR0,R17 LDI R17,0x00 ;dwng Timer0

OUT TCCR0B,R17

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

Trang 7

LDI R17,255 ;gia tri so sanh (TOP), hoac LDI R17,0xFF OUT OCR0A,R17 ;copy gia tri so sanh (TOP) vao OCROA LDI R17,0X42 ;Timer0 mode CTC, chic nâng dâo ngo ra OCOA OUT TCCR0A,R17

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) Kế ối chân OC0A và chân OC0B ra 2 kênh đo của oscilloscope, đo và ghi nhận, t n giải thích dạng sóng thu được

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 ứ

=> Trường hợp này do OCR0 cập nhật khi đạt bottom và TOV0=1 khi đạt nên tạo dạng xung ở 2 ngõ ra có dạng như kết quả thu được

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.

Bài 5:

a) Viết chương trình tạo ra 1 xung t n s 1Khz, duty cycle 25% trên chân OC0B ầ ố b) K t nế ối vào Oscilloscope và đo dạng sóng ngõ ra

c) K t n i OC0B vào kênh R c a 1 LED RGB Viế ố ủ ết 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%

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

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

Giải thích: Nh ng thông s này t o ữ ố ạ được chương trình con delay 10us và từ đó xài ctc này để đáp ứng yêu c u bài toán ầ

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ị

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 va hang 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 pu

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

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

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

; 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