THÍ NGHIỆM VI XỬ LÝ - VI ĐIỀU KHIỂN

71 654 0
THÍ NGHIỆM VI XỬ LÝ - VI ĐIỀU KHIỂN

Đ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

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH THÍ NGHIỆM VI XỬ LÝ - VI ĐIỀU KHIỂN BM Kỹ thuật Máy tính 2011 Mục Lục Mục Lục Bài : Giới thiệu MPLAB IDE KIT PIC 1.1 Môi trường phát triển MPLAB 1.2 Nạp file hex vào vi điều khiển PIC 1.3 Debug dùng MpLab SIM 10 1.4 Debug onchip dùng Mplab ICD2 12 1.5 Bài tập 12 Bài : Khảo sát cổng xuất nhập 13 2.1 Kiến thức liên quan 13 2.1.1 Các ghi điều khiển cổng xuất nhập 13 2.1.2 Kết nối mạch 13 2.2 Các bước thực yêu cầu 14 2.3 Chương trình mẫu yêu cầu 16 2.4 Các bước thực yêu cầu 17 2.5 Chương trình mẫu yêu cầu 18 2.6 Bài tập 19 Bài : Khảo sát chế ngắt quãng, giao tiếp LCD ký tự 21 3.1 Kiến thức liên quan 21 3.1.1 Tóm tắt ghi điều khiển ngắt 21 3.2 Các bước thực yêu cầu 22 3.3 Chương trình mẫu yêu cầu 24 3.4 LCD ký tự 2x16 26 3.4.1 Hình dạng ý nghĩa chân: 26 3.4.2 Tổ chức vùng nhớ LCD 27 3.4.3 Các lệnh giao tiếp với LCD 30 3.4.4 Khởi tạo LCD 30 3.5 Các bước thực yêu cầu 32 3.6 Bài tập 37 Bài : Khảo sát định thời 37 4.1 Các bước thực yêu cầu 38 4.2 Chương trình mẫu 39 4.3 Bài tập 41 Bài : Kỹ thuật quét ma trận phím 42 5.1 Kết nối mạch ma trận phím 42 5.2 Các bước thực 43 5.3 Bài tập 47 Bài : Kỹ thuật quét LED 48 6.1 Cấu tạo LED đoạn LED ma trận 48 6.2 Kết nối mạch 50 6.3 Các ghi liên quan cách điều khiển 51 6.4 Các bước thực 54 6.5 Bài tập 57 Bài : Khảo sát truyền nhận nối tiếp 58 7.1 Các bước thực 58 7.2 Chương trình mẫu 60 7.3 Bài tập 62 Bài : Khảo sát khối chuyển đổi A-D 63 8.1 Các bước thực 63 8.2 Bài tập 64 Bài : Khảo sát khối chức đặc biệt khác 65 9.1 Các bước thực PWM 65 9.2 Chương trình mẫu 66 9.3 Bài tập 67 Trường ĐH Bách Khoa TP.HCM Bài : Khoa KH & KTMT Giới thiệu MPLAB IDE KIT PIC Nội dung : Tạo project MPLAB IDE Viết chương trình ASM Dịch nạp chương trình vào vi điều khiển PIC Chạy gỡ rối chương trình 1.1 Phần cứng thí nghiệm ICD2 PICDEM PLUS Bộ hổ trợ lập trình dùng với máy tính ICD2 (In-Circuit Debugger) Cổng nối tiếp ICD2 USB Nối với card PICDEM Nối với máy tính Sơ đồ kết nối ICD2 Kit thí nghiệm PICDEM Plus có đặc điểm hình sau : Đế cắm DIP 18, 28 40 chân (có thể cắm linh kiện dùng lần) Ổn áp +5V dùng cho nguồn 9V, 100 mA AC/DC hay pin 9V Đầu cắm DB-9 theo chuẩn giao tiếp RS-232 Đầu cắm qua lập trình In-Circuit Debugger (ICD) Biến trở 5KΩ dùng cho tín hiệu nhập tương tự Ba nút nhấn dùng tạo tín hiệu kích từ bên reset LED nguồn Bốn LED thị cho PORTB Jumper J6 để ngắt LED thị RB0 (khi nhập tín hiệu từ nút nhấn RB0) Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT 10 Bộ dao động (OSC) MHz 11 Nơi để lắp thêm thạch anh dao động cần 12 Thạch anh dao động 32.768 kHz tạo xung clock cho Timer1 13 Jumper J7 để ngắt dao động RC có sẳn (khoảng MHz) 14 EEPROM nối tiếp 32K x bit 15 Màn hình LCD 16 Kèn Piezo 17 Vùng lắp thêm linh kiện 18 Cảm biến nhiệt TC74 1.2 Môi trường phát triển MPLAB Bước Chạy phần mềm MPLAB: Start_|All Programs_|Microchip_|MPLAB IDE v8.00_|MPLAB IDE Bước Chọn Menu : Project_|Project Wirazd… Chọn Next cửa sổ Welcome Bước Chọn số hiệu PIC cần sử dụng (PIC18F4520) bấm Next: Bước Chọn tool Microchip MPASM Toolsuite ô Active Toolsuite Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT   Chọn MPASM Assembler (mpasmwin.exe) ô Tollsuite Contents Click Next qua cửa sổ kế Bước Nhấn Browse… để chọn thư mục đánh tên project Chọn thư viện thông qua file INC LKR thêm vào project Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT C:\Program Files\Microchip\MPASM Suite\LKR\18f4520.lkr C:\Program Files\Microchip\MPASM Suite\P18F4520.INC Click Next thấy sau : Click Finish Ta project hình sau: Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bước Thêm file vào dự án theo bước sau : Một project đơn giản phải gồm có thành phần Source files Hearder Files Thư mục Source files chứa file text *.asm file *.c chứa code lập trình Thư mục Hearder Files chứa file *.h *.INC: file có sẵn microchip Nếu bạn quên không thêm file cần có vào làm theo hướng dẫn sau : ADD header file: ( Copy header file vào thư mục chứa project để tiện cho việc sử dụng sau này) cửa sổ lựa chọn Chọn header file phù hợp với PIC chọn Open ADD source file: Click chọn New toolbar: Cửa sổ lên sau: Từ Menu bar chọn File_|Save để lưu Thực Save, đặt tên với đuôi asm vào thư mục chứa dự án Nhấp phải vào Source Files chọn Add file >>> chọn file vừa tạo xong Chúng ta hoàn tất việc thêm file vào thư mục Source files Header files Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Công việc viết code (trong cửa sổ text editor source file) Ðối với project lớn dùng nhiều source file header file, ta làm lại trình thêm file vào dự án nhiều lần 1.3 Nạp file hex vào vi điều khiển PIC Sau tạo project, ta tiến hành build để tạo *.hex Có thể mô tả công việc sau: Ví dụ, ta có chương trình cho PIC sau: ;=================================================== ; Name: BaiTN1.asm ; Project: Nhap du lieu tu nut nhan RA4 ; Khi nut RA4 duoc nhan thi led don RB0 sang, ; Khi khong nhan RA4 thi led don RB0 tat ; Author: BKIT HARDWARE CLUB ; Homepage: http://www.bkit4u.com/forum ; Creation Date: - 31 - 2009 ;=================================================== list p=18f4520 #include p18f4520.inc code goto start ;vung dinh nghia du lieu udata ;vung dinh nghia cac chuong trinh PRG code start call init ;chuong trinh chinh main ;cho nhan nut RA4 btfsc PORTA,RA4 bra main bsf LATB,RB0 ;Bat LED RB0 swoff btfss PORTA,RA4 ;cho nhan nut RA4 bra swoff bcf LATB,RB0 ;tat LED RB0 bra main ;Lap lai cong viec ;chuong trinh khoi dong ban dau init bcf TRISB,RB0 ;khoi dong RB0 la cong xuat bsf TRISA,RA4 ;khoi dong RA4 la cong nhap return end Bây lưu chương trình vừa viết thành BaiTN1.asm vào thư mục tạo project phía Để compile chương trình ta vào menu Project_|Build All hình bên Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bốn byte liệu dịch lần có ý nghĩa tương ứng liệu hàng LED đỏ, liệu hàng LED xanh, liệu LED đoạn, điều khiển hàng (con) LED hiển thị Cách điều khiển minh họa thông qua hình sau : RED LED data GREEN LED data 7SEG Control 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RED LED data GREEN LED data 7SEG a f 0 a b f g e d e p 0 f g d p g e d p 0 f g e p d f c p p c d 0 0 0 0 0 0 0 0 0 0 0 p a f b g c d b e b e p g g c a b f c d a b b e p d g c d p a b e d e p g g c a f c f c d a d a f p b e p b e g c e g c f c f b g d a b f a d a p b e a b e g c f c a b e f g d a f a b g c Control e p c d p Giá trị byte “control” chứa nhiều bit Như hình vẽ, cần 12 lần xuất liệu (4 byte) cho frame gồm LED ma trận LED đoạn, lần xuất liệu cho frame gồm có LED ma trận (không quan tâm nội dung hiển thị LED đoạn), lần Bộ môn Kỹ Thuật Máy Tính 53 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT xuất liệu cho frame gồm có LED đoạn(không quan tâm nội dung hiển thị LED ma trận) 6.4 Các bước thực Bước Tạo project giống hướng dẫn chương lấy tên project Led chọn chip 18f4520 Ta hình sau: Bước Include file p18f4520.inc vào file Led_matran.asm Bước Khai báo buffer cần thiết để viết driver cho led Vì ta viết driver nên người sử dụng module không sử dụng hàm mà viết thao tác buffer mà GREEN_SCREEN_BUFFER RES RED_SCREEN_BUFFER RES SEVEN_LED_BUFFER RES COLUMN_BUFFER RES INDEX_OF_BUFFER RES RED_DATA GREEN_DATA SEVEN_LED_DATA COLUMN_DATA RES RES RES RES 1 1 Bước Ngoài nhìn vào mạch ta dễ dàng nhận thấy liệu truyền theo kiểu truyền đồng nối tiếp, xác người ta sử dụng chức SPI để truyền liệu Do ta phải cấu hình cho chip hoạt động chế độ SPI INIT_SPI CLRF SSPCON1 ;SET Fspi = f/4 BSF SSPCON1,5 ;ENALBLE SPI MODE BCF TRISC,5 BCF TRISC,3 RETURN Bộ môn Kỹ Thuật Máy Tính 54 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Trên ta khởi tạo module SPI để hoạt động nhìn lại sơ đồ mạch ta lại thấy có thêm vài kết nối từ vi điều khiển IC74595 Để IC hoạt động ta cần thêm chân tạo clock để chuyển liệu nối tiếp song song IC Ta define thêm cho chân Latch IC 74595 #define LATCH_DIR TRISA,1 #define LATCH_DATA PORTA,1 Đồng thời khởi tạo PORT liên quan: INIT MOVLW 0x0F MOVWF ADCON1 BCF LATCH_DIR BCF LATCH_DATA CLRF INDEX_OF_BUFFER RETURN Bước Ngoài để thực thiếu timer được, để hiển thị led ma trận ta phải quét cột led ma trận led Khi nhìn vào cấu tạo ma trận led ta thấy để thị hình ma trận led ta phải quét led, thời điểm hiển thị cột led mà Nhờ vào tượng lưu ảnh mắt mà quét với tần số cao mắt ta thấy cột sáng chớp nháy Vậy biết ta quét led với tần số hợp lý Như phim ảnh xem phim thực chất ta biết chạy với tần số 24 hình /s Ở ta giả sử vậy, hình led chớp nháy với tần số 24 hình/s, mà hình ta phải quét lần có cột Từ ta suy tần số ta cần phải quét cho cột 8x24 lần/s Từ ta dễ dàng tính timer cần để quét led cách dễ dàng INIT_TIMER0 BSF RCON,IPEN ;enable priority interrupts BSF INTCON2,TMR0IP BSF INTCON,TMR0IF BSF INTCON,TMR0IE BSF INTCON,GIEH BSF INTCON,GIEL CLRF T0CON MOVLW 0x3c MOVWF TMR0H MOVLW 0xAF MOVWF TMR0L BSF T0CON,TMR0ON RETURN Bước Ban đầu ta khởi tạo buffer để hiển thị quét cột led Để dễ dàng việc sử lý ta khởi tạo cho Column_Buffer giá trị tương ứng làm sao, xuất tích cực cột led mà Ở giả sử tích cực cột tích cực mức cao ta khởi tạo cho Column_buffer giá trị sau: 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 Bộ môn Kỹ Thuật Máy Tính 55 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bước Đến sử chuẩn bị xong, ta bắt đầu viết hàm để hiển thị liệu led Đầu tiên ta viết macro SPI_transmit với đối số giá trị byte truyền nối tiếp SPI_TRANSMIT MACRO TEMP_DATA ;Has data been received (transmit complete)? BTFSS SSPSTAT, BF GOTO $-2 ;No MOVF TEMP_DATA, W ;W reg = contents of TXDATA MOVWF SSPBUF ENDM Bước Tiếp theo lấy liệu từ buffer để đưa vào biến tương ứng xuất led Ta viết thêm Macro gồm đối số buffer temp_data Macro làm nhiệm vụ lấy liệu vị trí (được lưu biến index_of_buffer) buffer lưu vào temp_data UPDATE_DATA MACRO BUFFER,TEMP_DATA MOVLW HIGH BUFFER MOVWF FSR0H MOVLW LOW BUFFER MOVWF FSR0L MOVFF INDEX_OF_BUFFER,W ADDWF FSR0L,F CLRF W ADDWFC FSR0H MOVFF INDF0,TEMP_DATA ENDM Bước Như giới thiệu để xuất liệu led, việc dùng module SPI để xuất liệu ta cần phải có thêm tín hiệu clock tác động lên IC74595 liệu nối tiếp ta chuyển qua song song hiển thị led Do ta phải viết thêm hàm tạo clock chân define Latch_data CLOCK_STORAGE BSF LATCH_DATA NOP NOP BCF LATCH_DATA NOP NOP BSF LATCH_DATA RETURN Bước 10 Cuối hàm quan trọng nhất, hàm gọi timer để thực việc quét led DISPLAY CALL INCREASING_INDEX UPDATE_DATA RED_SCREEN_BUFFER,RED_DATA UPDATE_DATA GREEN_SCREEN_BUFFER,GREEN_DATA Bộ môn Kỹ Thuật Máy Tính 56 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT 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 a) Xây dựng ứng dụng cho phép số “1234” chạy qua led đoạn b) Xây dựng ứng dụng cho phép dòng chữ chạy qua led ma trận Bộ môn Kỹ Thuật Máy Tính 57 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Bài : Khoa KH & KTMT Khảo sát truyền nhận nối tiếp Nội dung: Khảo sát cổng COM máy PC, thông số truyền nối tiếp Khảo sát truyền nối tiếp PIC Tìm hiểu cách sử dụng chương trình Hyper Terminal truyền nhận nối tiếp máy PC Yêu cầu: Viết chương trình giao tiếp máy tính vi điều khiển PIC 7.1 Các bước thực Bước Tạo project giống hướng dẫn chương lấy tên project Uart chọn chip 18f4520 Ta hình sau: Bước Include file p18f4520.inc vào file uart.asm Bước Khởi tạo PortB output, PORTC.6 output, PORTC.7 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 58 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM BSF RETURN Bước Khởi tạo vector ngắt org goto Start org goto Khoa KH & KTMT TRISC,7 00000h ; Reset Vector 00008h ; Interrupt vector IntVector Start GOTO $ IntVector RETFIE Bước Khởi tạo cho ngắt UART, tốc độ 9600baud tần số 4Mhz INIT_UART MOVLW 19h ; 9600 baud @4MHz MOVWF SPBRG BSF TXSTA,TXEN ; BSF TXSTA,BRGH BSF BSF RCSTA,SPEN ; Enable Serial Port RCSTA,CREN ; Enable BCF PIR1,RCIF ; Clear RCIF BSF PIE1,RCIE ; Set RCIE BSF INTCON,PEIE ; Enable BSF INTCON,GIE ; Enable global Enable transmit ; Select high baud rate continuous reception Interrupt Flag Interrupt Enable peripheral interrupts interrupts RETURN Bước Viết chương trình ngắt thực nhiệm vụ nhận 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 Bộ môn Kỹ Thuật Máy Tính 59 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT btfss STATUS,Z ; Was either error status bit goto RcvError ; Found error, flag it RCREG,W LATB TXREG ISREnd ; Get input data ; Display on LEDs ; Echo character back ; go to end of ISR, restore set? movf movwf movwf goto context, return RcvError bcf bsf movlw movwf goto context, return RCSTA,CREN ; Clear receiver status RCSTA,CREN 0FFh ; Light all LEDs PORTB ISREnd ; go to end of ISR, restore ISREnd retfie 7.2 Chương trình mẫu ;=====================================; ; Name: uart.asm ; Project: Viết chương trình giao tiếp máy tính vi điều khiển PIC ; Author: BKIT HARDWARE CLUB ; Homepage: http://www.bkit4u.com/forum ; Creation Date: - - 2009 ;======================================; list p=18F4520 ; set processor type include ;************************************************************ ; Reset and Interrupt Vectors org goto org goto 00000h ; Reset Vector 00008h ; Interrupt vector Start IntVector ;************************************************************ ; Program begins here Bộ môn Kỹ Thuật Máy Tính 60 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM org 00020h Khoa KH & KTMT ; Beginning of program EPROM Start CALL CALL INIT_PORT INIT_UART goto Main ; loop to self doing nothing Main INIT_PORT clrf clrf outputs bcf bsf RETURN INIT_UART movlw movwf LATB ; Clear PORTB output latches TRISB ; Config PORTB as all TRISC,6 ; Make RC6 an output TRISC,7 ; Make RC7 an input 19h ; 9600 baud @4MHz SPBRG bsf bsf TXSTA,TXEN TXSTA,BRGH ; Enable transmit ; Select high baud rate bsf bsf RCSTA,SPEN ; Enable Serial Port RCSTA,CREN ; Enable continuous bcf bsf bsf PIR1,RCIF ; Clear RCIF Interrupt Flag PIE1,RCIE ; Set RCIE Interrupt Enable INTCON,PEIE ; Enable peripheral bsf RETURN INTCON,GIE ; Enable global interrupts reception interrupts ;************************************************************ ; Interrupt Service Routine IntVector btfss PIR1,RCIF ; Did USART cause goto ISREnd ; No, some other interrupt movlw andwf btfss 06h RCSTA,W STATUS,Z ; Mask out unwanted bits ; Check for errors ; Was either error status bit interrupt? set? Bộ môn Kỹ Thuật Máy Tính 61 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM goto movf movwf movwf goto context, return Khoa KH & KTMT RcvError ; Found error, flag it RCREG,W LATB TXREG ISREnd ; Get input data ; Display on LEDs ; Echo character back ; go to end of ISR, restore RcvError bcf bsf movlw movwf goto context, return RCSTA,CREN ; Clear receiver status RCSTA,CREN 0FFh ; Light all LEDs PORTB ISREnd ; go to end of ISR, restore ISREnd retfie end 7.3 Bài tập a) Viết chương trình PC, gửi chuỗi string xuống board, dòng chữ chạy qua led ma trận LCD b) Khi nhấn phím board nhấn, gửi chuỗi string lên PC qua cổng COM, viết chương trình PC nhận chuỗi string in giao diện Bộ môn Kỹ Thuật Máy Tính 62 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Bài : Khoa KH & KTMT 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 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 hiển thị giá trị điện áp thay đổi biến trở 8.1 Các bước thực Bước Tạo project giống hướng dẫn chương lấy tên project a2d chọn chip 18f4520 Ta hình sau: Bước Include file p18f4520.inc vào file a2d.asm Bước Khởi tạo module ADC để ta sử dụng 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 Bộ môn Kỹ Thuật Máy Tính 63 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Để khởi tạo module ADC ta cần quan tâm chủ yếu tới ghi ADCCON1, ADCCON0, ADCON2 Như chương trình khởi tạo ta thấy phải cấu hình cho pin tương ứng phải chân AN0, mặc định chân có chức Input/Output digital Sau ta phải chọn kênh ADC tương ứng, ta sử dụng kênh AD0 Và điểm quan trọng bit GO ghi ADCON0, bít bật lên module AD bắt đầu chuyển đổi tín hiệu Bước Tiếp theo hàm đọc giá trị ADC: Update_adc bsf ADCON0,GO ;start conversion btfsc ADCON0,GO bra $-2 movf ADRESH,W return Sau chuyển đổi tín hiệu A-D, giá trị số lưu vào ghi ADRESH Đến tùy vào ứng dụng cụ thể mà ta biến đổi giá trị tùy theo yêu cầu mà ta mong muốn 8.2 Bài tập a) Tích hợp module LCD, lấy giá trị điện từ biến trở hiển thị lên LCD b) Sử dụng module ADC Pic để đo nhiệt độ phòng, dùng LCD để hiển thị giá trị nhiệt độ Bộ môn Kỹ Thuật Máy Tính 64 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Bài : Khoa KH & KTMT Khảo sát khối chức đặc biệt khác Nội dung: Khảo sát khối chức WDT Khảo sát khối chức PWM Khảo sát chế độ hoạt động vi điều khiển Yêu cầu: Viết chương trình sử dụng chức WDT Viết chương trình sử dụng chức PWM điều khiển độ sáng LED Viết chương trình sử dụng chức Power control 9.1 Các bước thực PWM Bước Tạo project giống hướng dẫn chương lấy tên project pwm chọn chip 18f4520 Ta hình sau: Bước Include file p18f4520.inc vào file pwm.asm Bước Tích hợp module LCD vào project pwm, tham khảo tập LCD Bước Khởi tạo module PWM để ta sử dụng cách dễ dàng Init_pwm ;configure CCP1 module for buzzer bcf TRISC,2 movlw 0x80 movwf PR2 ;initialize PWM period Bộ môn Kỹ Thuật Máy Tính 65 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT movlw 0x80 ;initialize PWM duty movwf bcf bcf CCPR1L CCP1CON,CCP1X CCP1CON,CCP1Y cycle ;postscale 1:1, prescaler 4, Timer2 ON movlw 0x05 movwf T2CON movlw 0x0F movwf CCP1CON return ;turn buzzer on Để khởi tạo chức pwm, ta phải cấu hình cho PORTC2 output Tiếp theo khởi tạo chu kì PWM thông qua việc cấu hình ghi PR2 Sau ta khởi tạo duty cycle xung pwm cách cấu hình ghi CCPR1L 9.2 Chương trình mẫu ;=====================================; ; Name: pwm.asm ; Project: Su dung Pwm de xuat am loa ; Author: BKIT HARDWARE CLUB ; Homepage: http://www.bkit4u.com/forum ; Creation Date: 20 - - 2009 ;======================================; list p=18f4520 #include "p18f4520.inc" ; vectors org bra 0x000000 START ; reset vector ;************************************************************ ; program START call Init_pwm goto $ Init_pwm bcf Bộ môn Kỹ Thuật Máy Tính TRISC,2 66 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT movlw movwf 249 PR2 ;initialize PWM movlw 125 ;initialize PWM duty movwf bcf bcf CCPR1L CCP1CON,CCP1X CCP1CON,CCP1Y period cycle ;postscale 1:1, prescaler 4, Timer2 ON movlw 0x05 movwf T2CON movlw 0x0F movwf CCP1CON return ;turn buzzer on END 9.3 Bài tập a) Tìm hiểu thực chương trình điều khiển RC Servo Bộ môn Kỹ Thuật Máy Tính 67 Thực hành Vi xử lý

Ngày đăng: 27/08/2016, 19:13

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan