Giáo trình Thực hành vi xử lý - Đại học Bách khoa TP HCM

Mục Lục

Mục Lục . 1

Bài 1 : Giới thiệu MPLAB IDE và KIT PIC. 1

1.1 Môi trường phát triển MPLAB. 1

1.2 Nạp file hex vào vi điều khiển PIC. 8

1.3 Debug dùng MpLab SIM. 12

1.4 Debug onchip dùng Mplab ICD2. 15

1.5 Bài tập . 15

Bài 2 : Khảo sát cổng xuất nhập . 16

2.1 Kiến thức liên quan. 16

2.1.1 Các thanh ghi điều khiển cổng xuất nhập . 16

2.1.2 Kết nối mạch. 16

2.2 Các bước hiện thực yêu cầu 1 . 18

2.3 Chương trình mẫu yêu cầu 1. 20

2.4 Các bước hiện thực yêu cầu 2 . 21

2.5 Chương trình mẫu yêu cầu 2. 22

2.6 Bài tập . 23

Bài 3 : Khảo sát cơchếngắt quãng, giao tiếp LCD ký tự. 24

3.1 Kiến thức liên quan. 24

3.1.1 Tóm tắt các thanh ghi điều khiển ngắt. 24

3.2 Các bước hiện thực yêu cầu 1 . 25

3.3 Chương trình mẫu yêu cầu 1. 28

3.4 LCD ký tự2x16 . 31

3.4.1 Hình dạng và ý nghĩa các chân:. 31

3.4.2 Tổchức vùng nhớcủa LCD. 32

3.4.3 Các lệnh giao tiếp với LCD. 34

3.4.4 Khởi tạo LCD. 35

3.5 Các bước hiện thực yêu cầu 2 . 36

3.6 Bài tập . 41

Bài 4 : Khảo sát bộ định thời. 42

4.1 Các bước hiện thực yêu cầu 1 . 42

4.2 Chương trình mẫu . 46

4.3 Bài tập . 48

Bài 5 : Kỹthuật quét ma trận phím. 49

5.1 Kết nối mạch ma trận phím. 49

5.2 Các bước hiện thực . 50

5.3 Bài tập . 54

Bài 6 : Kỹthuật quét LED. 56

6.1 Cấu tạo LED 7 đoạn và LED ma trận . 56

6.2 Kết nối mạch. 58

6.3 Các thanh ghi liên quan và cách điều khiển. 59

6.4 Các bước hiện thực. 62

6.5 Bài tập . 65

Bài 7 : Khảo sát bộtruyền nhận nối tiếp . 66

7.1 Các bước hiện thực. 66

7.2 Chương trình mẫu . 68

7.3 Bài tập . 70

Bài 8 : Khảo sát khối chuyển đổi A-D. 71

8.1 Các bước hiện thực . 71

8.2 Bài tập . 72

Bài 9 : Khảo sát các khối chức năng đặc biệt khác. 73

9.1 Các bước hiện thực PWM. 73

9.2 Chương trình mẫu . 74

9.3 Bài tập . 75

pdf79 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: dkS00TYs | Lượt xem: 3509 | Lượt tải: 5download
Tóm tắt nội dung Giáo trình Thực hành vi xử lý - Đại học Bách khoa TP HCM, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Cuối cùng là hàm quan trọng nhất, hàm này được gọi trong timer 
để thực hiện việc quét led. 
DISPLAY 
 CALL INCREASING_INDEX 
 UPDATE_DATA RED_SCREEN_BUFFER,RED_DATA 
 UPDATE_DATA GREEN_SCREEN_BUFFER,GREEN_DATA 
 UPDATE_DATA SEVEN_LED_BUFFER,SEVEN_LED_DATA 
 UPDATE_DATA COLUMN_BUFFER,COLUMN_DATA 
 SPI_TRANSMIT RED_DATA 
 SPI_TRANSMIT GREEN_DATA 
 SPI_TRANSMIT SEVEN_LED_DATA 
 SPI_TRANSMIT COLUMN_DATA 
 CALL CLOCK_STORAGE 
 RETURN 
6.5 Bài tập 
Xây dựng ứng dụng cho phép số “1234” chạy qua các led 7 đoạn. 
Xây dựng ứng dụng cho phép 1 dòng chữ chạy qua led ma trận. 
Bộ môn Kỹ Thuật Máy Tính 65 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
Bài 7 : Khảo sát bộ truyền nhận nối tiếp 
Nội dung: 
Khảo sát cổng COM máy PC, các thông số truyền nối tiếp. 
Khảo sát bộ truyền nối tiếp của PIC. 
Tìm hiểu cách sử dụng chương trình Hyper Terminal truyền nhận nối tiếp trên 
máy PC. 
Yêu cầu: 
Viết chương trình giao tiếp giữa máy tính và vi điều khiển PIC. 
7.1 Các bước hiện thực. 
Bước 1: Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project 
là Uart và chọn chip 18f4520. Ta được hình sau: 
Bước 2: Include file p18f4520.inc vào file uart.asm 
Bước 3: Khởi tạo PortB là output, PORTC.6 là output, PORTC.7 là input. 
 INIT_PORT 
 CLRF LATB ; Clear PORTB output latches 
 CLRF TRISB ; Config PORTB as all outputs 
 BCF TRISC,6 ; Make RC6 an output 
Bộ môn Kỹ Thuật Máy Tính 66 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
 BSF TRISC,7 
 RETURN 
Bước 4: Khởi tạo các vector ngắt 
 org 00000h ; Reset Vector 
 goto Start 
 org 00008h ; Interrupt vector 
 goto IntVector 
Start 
 GOTO $ 
IntVector 
 RETFIE 
Bước 5: Khởi tạo cho ngắt UART, tốc độ 9600baud tại tần số 4Mhz. 
 INIT_UART 
 MOVLW 19h ; 9600 baud @4MHz 
 MOVWF SPBRG 
 BSF TXSTA,TXEN ; Enable transmit 
 BSF TXSTA,BRGH ; Select high baud rate 
 BSF RCSTA,SPEN ; Enable Serial Port 
 BSF RCSTA,CREN ; Enable continuous reception 
 BCF PIR1,RCIF ; Clear RCIF Interrupt Flag 
 BSF PIE1,RCIE ; Set RCIE Interrupt Enable 
 BSF INTCON,PEIE ; Enable peripheral interrupts 
 BSF INTCON,GIE ; Enable global interrupts 
 RETURN 
Bước 6: Viết chương trình trong ngắt thực hiện nhiệm vụ nhận một dữ liệu 
từ máy tính truyền xuống sau đó gởi lại kí tự đó cho máy tình nhận lại. 
IntVector 
 btfss PIR1,RCIF ; Did USART cause interrupt? 
 goto ISREnd ; No, some other interrupt 
 movlw 06h ; Mask out unwanted bits 
 andwf RCSTA,W ; Check for errors 
 btfss STATUS,Z ; Was either error status bit set? 
 goto RcvError ; Found error, flag it 
Bộ môn Kỹ Thuật Máy Tính 67 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
 movf RCREG,W ; Get input data 
 movwf LATB ; Display on LEDs 
 movwf TXREG ; Echo character back 
 goto ISREnd ; go to end of ISR, restore context, 
return 
RcvError 
 bcf RCSTA,CREN ; Clear receiver status 
 bsf RCSTA,CREN 
 movlw 0FFh ; Light all LEDs 
 movwf PORTB 
 goto ISREnd ; go to end of ISR, restore context, 
return 
ISREnd 
 retfie 
7.2 Chương trình mẫu 
;=====================================; 
; Name: uart.asm 
; Project: Viết chương trình giao tiếp giữa máy tính và vi điều khiển PIC. 
; Author: BKIT HARDWARE CLUB 
; Homepage:  
; Creation Date: 8 - 8 - 2009 
;======================================; 
 list p=18F4520 ; set processor type 
 include 
;************************************************************ 
; Reset and Interrupt Vectors 
 org 00000h ; Reset Vector 
 goto Start 
 org 00008h ; Interrupt vector 
 goto IntVector 
;************************************************************ 
; Program begins here 
Bộ môn Kỹ Thuật Máy Tính 68 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
 org 00020h ; Beginning of program EPROM 
Start 
 CALL INIT_PORT 
 CALL INIT_UART 
Main 
 goto Main ; loop to self doing nothing 
INIT_PORT 
 clrf LATB ; Clear PORTB output latches 
 clrf TRISB ; Config PORTB as all outputs 
 bcf TRISC,6 ; Make RC6 an output 
 bsf TRISC,7 ; Make RC7 an input 
 RETURN 
INIT_UART 
 movlw 19h ; 9600 baud @4MHz 
 movwf SPBRG 
 bsf TXSTA,TXEN ; Enable transmit 
 bsf TXSTA,BRGH ; Select high baud rate 
 bsf RCSTA,SPEN ; Enable Serial Port 
 bsf RCSTA,CREN ; Enable continuous reception 
 bcf PIR1,RCIF ; Clear RCIF Interrupt Flag 
 bsf PIE1,RCIE ; Set RCIE Interrupt Enable 
 bsf INTCON,PEIE ; Enable peripheral interrupts 
 bsf INTCON,GIE ; Enable global interrupts 
 RETURN 
;************************************************************ 
; Interrupt Service Routine 
IntVector 
 btfss PIR1,RCIF ; Did USART cause interrupt? 
 goto ISREnd ; No, some other interrupt 
 movlw 06h ; Mask out unwanted bits 
 andwf RCSTA,W ; Check for errors 
 btfss STATUS,Z ; Was either error status bit set? 
 goto RcvError ; Found error, flag it 
Bộ môn Kỹ Thuật Máy Tính 69 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
 movf RCREG,W ; Get input data 
 movwf LATB ; Display on LEDs 
 movwf TXREG ; Echo character back 
 goto ISREnd ; go to end of ISR, restore context, return 
RcvError 
 bcf RCSTA,CREN ; Clear receiver status 
 bsf RCSTA,CREN 
 movlw 0FFh ; Light all LEDs 
 movwf PORTB 
 goto ISREnd ; go to end of ISR, restore context, return 
ISREnd 
retfie 
 end 
7.3 Bài tập 
Viết chương trình trên PC, gửi 1 chuỗi string xuống board, dòng chữ này sẽ chạy 
qua led ma trận hoặc LCD. 
Khi nhấn 1 phím trên board nhấn, sẽ gửi 1 chuỗi string lên PC qua cổng COM, 
viết chương trình trên PC nhận chuỗi string này và in ra giao diện. 
Bộ môn Kỹ Thuật Máy Tính 70 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
Bài 8 : Khảo sát khối chuyển đổi A-D 
Nội dung: 
Khảo sát hoạt động khối chuyển đổi A-D. 
Khảo sát các thanh ghi điều khiển hoạt động khối chuyển đổi A-D. 
Yêu cầu: 
Viết chương trình đọc và hiển thị giá trị điện áp thay đổi bởi biến trở. 
8.1 Các bước hiện thực 
Bước 1: Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project 
là a2d và chọn chip 18f4520. Ta được hình sau: 
Bước 2: Include file p18f4520.inc vào file a2d.asm 
 Bước 3: Khởi tạo module ADC để ta có thể sử dụng một cách dễ dàng. 
InitializeAD 
 Movlw B'00000100' ; Make RA0,RA1,RA4 analog inputs 
 movwf ADCON1 
 movlw B'11000001' ; Select RC osc, AN0 selected, 
 movwf ADCON0 ; A/D enabled 
 movlw 0x01 
 movwf ADCON2 
 call SetupDelay ; delay for 15 instruction cycles 
 bsf ADCON0,GO ; Start first A/D conversion 
 return 
Để khởi tạo được module ADC ta chỉ cần quan tâm chủ yếu tới các thanh 
Bộ môn Kỹ Thuật Máy Tính 71 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
ghi ADCCON1, ADCCON0, ADCON2. Như chương trình khởi tạo trên ta thấy 
đầu tiên phải cấu hình cho các pin tương ứng phải là chân AN0, mặc định của các 
chân này có chức năng là Input/Output digital. Sau đó ta phải chọn kênh ADC 
tương ứng, ở đây ta sử dụng kênh AD0. Và một điểm quan trọng nữa chính là bit 
GO trong thanh ghi ADCON0, khi bít này được bật lên thì module AD mới bắt 
đầu chuyển đổi tín hiệu. 
Bước 4: Tiếp theo là hàm đọc giá trị ADC: 
Update_adc 
 bsf ADCON0,GO ;start conversion 
 btfsc ADCON0,GO 
 bra $-2 
 movf ADRESH,W 
 return 
Sau khi chuyển đổi tín hiệu A-D, giá trị số sẽ được lưu vào thanh ghi 
ADRESH. Đến đây tùy vào ứng dụng cụ thể mà ta có thể biến đổi giá trị này tùy 
theo yêu cầu mà ta mong muốn. 
8.2 Bài tập 
Tích hợp module LCD, lấy giá trị điện thế từ biến trở hiển thị lên LCD. 
Sử dụng module ADC của Pic để đo nhiệt độ trong phòng, dùng LCD để hiển thị 
giá trị nhiệt độ. 
Bộ môn Kỹ Thuật Máy Tính 72 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
Bài 9 : Khảo sát các khối chức năng đặc biệt khác 
Nội dung: 
Khảo sát khối chức năng WDT. 
Khảo sát khối chức năng PWM . 
Khảo sát các chế độ hoạt động của vi điều khiển. 
Yêu cầu: 
Viết chương trình sử dụng chức năng WDT. 
Viết chương trình sử dụng chức năng PWM điều khiển độ sáng của LED. 
Viết chương trình sử dụng chức năng Power control. 
9.1 Các bước hiện thực PWM 
Bước 1: Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project 
là pwm và chọn chip 18f4520. Ta được hình sau: 
Bước 2: Include file p18f4520.inc vào file pwm.asm. 
Bước 3: Tích hợp module LCD vào project pwm, tham khảo bài tập về 
LCD. 
Bước 4: Khởi tạo module PWM để ta có thể sử dụng một cách dễ dàng. 
Init_pwm 
 ;configure CCP1 module for buzzer 
 bcf TRISC,2 
 movlw 0x80 
Bộ môn Kỹ Thuật Máy Tính 73 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
 movwf PR2 ;initialize PWM period 
 movlw 0x80 ;initialize PWM duty cycle 
 movwf CCPR1L 
 bcf CCP1CON,CCP1X 
 bcf CCP1CON,CCP1Y 
 ;postscale 1:1, prescaler 4, Timer2 ON 
 movlw 0x05 
 movwf T2CON 
 movlw 0x0F ;turn buzzer on 
 movwf CCP1CON 
 return 
Để khởi tạo chức năng pwm, đầu tiên ta phải cấu hình cho PORTC2 là 
output. Tiếp theo khởi tạo chu kì của PWM thông qua việc cấu hình thanh ghi 
PR2. Sau đó ta khởi tạo duty cycle của xung pwm bằng cách cấu hình thanh ghi 
CCPR1L. 
9.2 Chương trình mẫu 
;=====================================; 
; Name: pwm.asm 
; Project: Su dung Pwm de xuat am thanh ra loa. 
; Author: BKIT HARDWARE CLUB 
; Homepage:  
; Creation Date: 20 - 8 - 2009 
;======================================; 
 list p=18f4520 
 #include "p18f4520.inc" 
; vectors 
 org 0x000000 ; reset vector 
 bra START 
;************************************************************ 
; program 
START 
 call Init_pwm 
Bộ môn Kỹ Thuật Máy Tính 74 Thực hành Vi xử lý 
 ĐH. Bách Khoa TP.HCM Khoa KH & KTMT 
 goto $ 
Init_pwm 
 bcf TRISC,2 
 movlw 0x80 
 movwf PR2 ;initialize PWM period 
 movlw 0x80 ;initialize PWM duty cycle 
 movwf CCPR1L 
 bcf CCP1CON,CCP1X 
 bcf CCP1CON,CCP1Y 
 ;postscale 1:1, prescaler 4, Timer2 ON 
 movlw 0x05 
 movwf T2CON 
 movlw 0x0F ;turn buzzer on 
 movwf CCP1CON 
 return 
 END 
9.3 Bài tập 
Tìm hiểu và hiện thực chương trình điều khiển RC Servo. 
Bộ môn Kỹ Thuật Máy Tính 75 Thực hành Vi xử lý 

File đính kèm:

  • pdfGiáo trình Thực hành vi xử lý - Đại học Bách khoa TP HCM.pdf