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
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:
- Giáo trình Thực hành vi xử lý - Đại học Bách khoa TP HCM.pdf