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

PIC16F84 VÀ MỘT SỐ ỨNG DỤNG LUẬN VĂN TỰ ĐỘNG HÓA

53 35 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

Nội dung

    NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN   Trang 1_53     NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN Trang 2_53     LỜI CẢM ƠN PIC dòng vi điều khiển mẻ nước ta Lần chúng em tiếp xúc với việc tìm hiểu gặp nhiều khó khăn Tuy nhiên nhờ giúp đỡ nhiệt tình giáo viên hướng dẫn_thầy Võ Tường Quân với hỗ trợ nhiệt tình bạn lớp, chúng em hoàn thành tốt đồ án Chúng em xin chân thành cảm ơn Thầy bạn Lần tìm hiểu dòng PIC nên chắn không tránh khỏi thiếu sót, chúng em mong nhận hướng dẫn quý báu Thầy Bộ môn ý kiến đóng góp bạn để tiếp tục tìm hiểu sau dòng vi điều khiển PIC Trang 3_53     LỜI GIỚI THIỆU Ngày nay, với tốc độ phát triển mạnh mẽ công nghệ tự động tất lónh vực việc tìm hiểu ứng dụng dòng chip Vi điều khiển là vấn đề cần quan tâm Họ Vi điều khiển 8051 quen thuộc với chúng ta, xem họ vi điều khiển ưu việt Tuy nhiên với nhu cầu ngày cao tính ổn định, tốc độ xử lý khả tiếp cận dễ dàng người dùng, họ 8051 không phát huy ưu Các chip vi điều khiển thuộc dòng PIC hãng  Microchip  có lẽ không xa lạ Với công nghệ RISC (Reduced Instruction Set Computer ) nâng cao đáng kể tốc độ xử lý, khả chống nhiễu, khả mở rộng tốt, khả nạp lại 1000 lần, tập lệnh đơn giản, hỗ trợ lập trình dạng  Macro và đa dạng chủng loại, dòng PIC dòng vi điều khiển tốt ứng dụng tự động từ đơn giãn đến phức tạp Tuy nhiên đến mẻ chưa ứng dụng rộng rãi Vì việc tìm hiểu dòng vi điều khiển nhu cầu thực tế hứa hẹn mang lại nhiều hiệu thiết thực phục vụ cho công nghệ tự động PIC16F84 tiêu biểu, coi chip vi điều khiển đơn giản dòngï PIC Với Port, 18 chân đầy đủ tính chất ưu việt dòng PIC, PIC16F84 phù hợp với ứng dụng vừa nhỏ, thí nghiệm phục vụ học tập, nghiên cứu Chúng em mong với đồ án “PIC16F84 số ứng dụng” bước khởi đầu mở nhìn gần gũi dòng PIC để từ có thêm công cụ đắc lực điều khiển tự động ®  Trang 4_53     MỤC LỤC NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN   NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN 2  LỜI CẢM ƠN 3  LỜI GIỚI THIỆU 4  Phần I: GIỚI THIỆU VEÀ PIC16F84 7  I.1 Toång quan: quan: .7  I.1.1 Cấu trúc 7  I.1.2 Sơ đồ chaân .8  I.1.3 Bộ tạo xung 9  I.1.4 Reset 10 10  I.1.5 Bộ xử lý trung taâm (CPU) (CPU) 10 10  I.1.6 Thanh ghi trạng thái status 10  I.1.7 Caùc port 11  I.1.8 PORTB vaø TRISB 12 12  I.2 Tổ chức nhớ nhớ 13 13  I.2.1 Caùc ghi SFR .14  I.2.2 Bộ đếm chương trình trình .15 15  I.2.3 Lập trình cho vi điều khiển .15   I.2.4 Các kiểu định địa chæ 15 15  I.3 Các chế ngaét 15 15  I.3.1 Thanh ghi điều khiển ngắt (INTCON ) 16 16  I.4 Timer TMR0 17 17  I.5 Thanh ghi OPTION .18  I.6 Boä nhớ liệu EEPROM .19  I.6.1 Thanh ghi EECON1 19  Phần II: LẬP TRÌNH HP NGỮ CHO PIC16F84 .21  II.1 Giới thieäu: 21  II.1.1 Biểu diễn số trình biên dịch 21  II.1.2 c yế u tố hợ p ngữ : 21 II.2 Tậ p lệnCá h cuû a PIC: 22 22    Phaàn III: PHƯƠNG PHÁP NẠP CHIP .31  III.1 Giới thiệu phần mềm MPLAB 31   III.2 Phần mềm nạp chip IC – PROG: 31 .31  III.3 Mach naïp JDM 32  Phần IV: ỨNG DỤNG 34  IV.1 Điều khiển LED 34  IV.1.1 Hoaït ñoäng 34  IV.1.2 Mạch điều khiển .34  IV.2 Điều khiển động Servo 35  IV.2.1 Hoạt động 35  IV.2.2 Mạch điều khiển .38  Trang 5_53     IV.3 Điều khiển LCD 38 38  IV.3.1 Giới thiệu veà LCD 38  IV.3.2 Hoạt động LCD ứng dụng 41  IV.3.3 Sơ đồ mạch điều khiển LCD 42  IV.4 Mô hình tích hợp: .42  IV.5 Mã chương trình: 44  Trang 6_53   Phần I: Giới thiệu PIC16F84   Phần I: GIỚI THIỆU VỀ PIC16F84 I.1. Tổng quan:  I.1.1. Cấu trúc PIC16F84 thuộ khiể n 8đượ bitccóbiểcấuudiễ trúncdướ RISC( Instruction Computer) Cấu trú c tổc nvig điề quáut củ a i dạnReduce g khố i sau : Set Hình I-1: Sơ đồ khối PIC Bộ nhớ chương trình (Program memory) : Dùng để chứa chương trình nạp Vì chế tạo công nghệ FLASH nên nhớ lập trình hay xoá nhiều lần.Ưu điểm khiến cho vi điều khiển thích hợp cho việc xây dựng ứng dụng điều khiển EPPROM: Đây nhớ để lưu trữ liệu không cấp nguồn Thông thường dùng để chứa liệu quan trọng chẳng may nguồn cấp bị đột ngột.  RAM: Bộ nhớ liệu sử dụng cho suốt trình thực thi chương trình vi điều khiển.  PORTA PORTB: ngõ kết nối vật lý vi điều khiển với phần cứng bên PORTA có chân giao tiếp PORTB có đến chân FREE- RUN TIMER: Đây ghi bit bên vi điều khiển, hoạt động độc lập với chương trình Cứ bốn xung nhịp dao động giá trị tăng lên đạt đến giá trị tối đa 255, sau lại bắt đầu đếm từ Nếu biết xác thời hai lần tăng nội Trang 7_53   Phần I: Giới thiệu PIC16F84   dung ghi Timer, sẽ dùng để định thời gian, đặc điểm hữu ích ứng dụng nhiều thực tế.  CPU(Central Processing Unit ): Đóng vai trò then chốt việc kết nối thành phần vi điều khiển với nhau, so sánh giống não người Nó liên kết hoạt động khối vi điều khiển thực thi chương trình RISC  Ngay phần đầu có nói rằng PIC16F84 có cấu trúc RISC, RISC có nghóa gì? Để thấy ưu điểm vi điều khiển này, vào tìm hiểu khái niệm cấu trúc RISC thông qua việc so sá sánh hai mô hình khối cấu trúc Von - Neuman cấu trúc Harvards   Hình I-2: Cấu trúc Havard Von - Neumann  Như ta biết, cấu trúc vi điều khiển Von Neuman la cấu trúc cổ điển ứng dụng phổ biến.Ở cấu trúc này, bus liệu địa truy xuất đường, phần ảnh hưởng đến tốc độ thực thi vi điều khiển Không giống cấu trúc Von Neuman, cấu trúc Harvards tách riêng bus liệu với bus địa Chính điều tăng tốc độ xử lý vi điều khiển lên cách đáng kể Các vi điều khiển có cấu trúc phần cứng kiểu Harvards gọi vi điều khiển RISC RISC viết tắt thuật ngữ “Reduce Instruction Set Computer” Bởi PIC16f84 có cấu trúc RISC nên có tập lệnh tinh giảm, cụ thể 35 lệnh Tất lệnh thực thi chu kỳ máy,trừ lệnh nhảy rẽ nhánh.   I.1.2. Sơ đồ chân PIC16F84 có tổng cộng 18 chân, tên gọi chức cha châân sau:  Trang 8_53   Phần I: Giới thiệu PIC16F84   Hình I-3: Hình dáng bên PIC16f84 •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  •  Chân1: RA2, chân thứ hai port A Chân 2: RA3, chân thứ ba port A Chân 3: RA4, chân thứ tư port A Ngoài ra, chân có có chức định thời( TOCK1) Chân 4: MCLR ngõ reset cấp áp lập trình cho vi điều khiển Chân 5: Vss chân nối đất nguồn Chân 6: RB0, chân số port B Ngoài ngõ vào ngắt Chân 7: RB1, chân số port B Chân 8: RB2, chân số port B Chân 9: RB3, chân số port B Chân 10: RB4, chân số port B Chân 11: RB5, chân số port B Chân 12: RB6, chân số port B Chân 13:RB7, chân số port B Chân 14: Vdd, chân cấp nguồn cho vi điều khiển Chânn 16: 15: OSC1, OSC2,châ Châ chânnnố nốiivớ vớiibộ bộdao daộ độnng.g Chân 17: RA2, chân số port A Chân 18: RA1, chân số port A  I.1.3.  Bộ Bộ tạo xung Bộ tạo xung dùng để cấp xung cho vi điều khiển hoạt động PIC16F84 hoạ hoạt động vớ với tạo xung dùng thạch anh ma mạïch dao động RC Ở sử dụng thạch anh, ổn định đơn giản Trang 9_53   Phần I: Giới thiệu PIC16F84   Hình I-4: Mạ Mạch tạo xung dùng thạch anh  I.1.4.  Reset Reset Chức Reset dùng để khởi tạo lại cho điều khiển điều kiện ban đầu Thực tế trình hoạt động, có lúc vi điều khiển hoạt động không mong muốn bị tác động tác nhân đó, ta dùng chức Reset để khởi tạo lại chức cho vi điều khiển, đưa ghi vị trí khởi tạo ban đầu Không có thế, Reset có vai trò ngắt ( Interupt ), giúp thoát khỏi chương trình cách tức thời Các nhiều cách ( nguồn ) để Reset lại vi điều khiển, có hai nguồn quan trọng nhất, Reset vừa cấp nguồn ( Power On Reset _ POR ), Reset chân MCLR  I.1.5.  Bộ Bộ xử lý trung tâm (CPU) CPU ví não vi điều khiển, đảm nhận vai trò tìm kiếm giải mã cấu trúc lệnh cho vi điều khiển hoạt động CPU gắn kết thành phần vi điều khiển thành khối thống Như nói trên, chức quan trọng giải mã lệnh Khi ta viết chương trình, câu lệnh thường có dạng gợi nhớ MOVLW 0x20 Thế điề1,u khiể đượ câu lệ).nViệ h trêc ndịch phảtừ i đượ đưdạợcng dịch thànhthàmộ chuỗi để cáccho số 0vivà gọi hiể mãu lệ nhc,( opcode chữ sang nht mã lệnh thực trình biên dịch, chẳng hạn trình dịch hợp ngữ Sau CPU giải mã thực thi lệnh  I.1.6. Thanh ghi trạng thái status Hình I-5: Thanh ghi ghi trạng thái Trang 10_53   Phần IV: ứng dụng  Bảng IV-1: chức chân LCD  Chân số Tên Vss VDD  Chức Đất Cực+ nguồn 10 VEE  RE R/W E D0 D1 D2 D3 Tương phản (constrast) Chọn ghi (Register Select) Read/write Cho phép (Enable) Bít liệu Bít liệu Bít liệu Bít liệu 11 12 13 14 D4 D5 D6 D7 Bít liệu Bít liệu Bít liệu Bít liệu Nguồn cấp cho LCD 5VDC, nhiên LCD hoạt động tốt với nguồn 6VDC hay 4.5VDC LCD tiêu thụ điện Tuy nhiên đèn dùng để chiếu sáng cho LCD lại tiêu thụ điện lớn Vì có tượng sụt áp nguồn ta thấy đèn LCD tối EE) dùng để thay đổi độ tương phản hiển thị Lý tưởng chân Châ nàynnê3 n(Vnố i với nguồn áp thay đổi được, người ta thực cách lắp mạch chia áp dùng biến trở có đầu thay đổi đưa vào chân Đơn giản ta nối chân xuống mass để đạt độ tương phản tốt Chân (RS_Register Select) ngõ vào điều khiển lệnh Khi chân nối mass liệu truyền đến LCD xử lý mệnh lệnh liệu đọc trạng thái Bằng cách đưa chân lên mức cao liệu ký tự xuất nhập modul này.  Chân ( R/W_Read/Write),  R/W_Read/Write), chân cho phép lệnh hay liệu ký tự ghi vào modul kéo xuống mức thấp Khi đưa lên cao, cho phép liệu ký tự hay thông tin trạng thái đọc từ ghi modul Chân (E_ Enable), ngõ vào dùng để khởi động việc chuyển liệu ký tự hay lệnh modul đường liệu Khi ghi hình LCD, Trang 39_53   Phần IV: ứng dụng  liệu chuyển có cạnh xuống tín hiệu E Tuy nhiên đọc từ LCD, liệu khả dụng sau có chuyển tiếp từ thấp lên cao trì liệu khả dụng đến tín hiệu E xuống thấp lần Các chân từ đến 14 đường liệu (D0 ÷  D7) Dữ liệu chuyển đến lấy khỏi hiển thị LCD theo dạng byte hay dạng nửa byte bit (nibble) Trong trường dùng ứng dụng dùng bit chế độ cần đường tín hiệu Sơ đồ kết nối thể hình đây: Hình IV-2: Sơ đồ kết nối LCD bit  Hình IV-3: Sơ đồ kết nối LCD bit  Trang 40_53   Phần IV: ứng dụng   IV.3.2.  Hoạ Hoạt động LCD tro ng ứng dụng Trong ứng dụng này, LCD hoạt động tình khác Mỗi tình LCD làm nhiệm vụ hiển thị lời giới thiệu hay trạng thái hoạt động mô hình Các trạng thái hoạt động LCD liệt kê bảng sau:   Tình 1: vừa khởi động hệ thống, dòng text hiển thị hình lập lại liên tục Bảng IV-2: Các hình hiển thị tình 1  Màn hình Line Text hiển thị 1 DO AN DKHT  DE TAI: pIC16F84 Gvhd Ks Vo tuong quan Nhom thuc hien (None) Dinh Phuong Tan Mssv: 20102326 Nguyen chinh phuc Mssv: 2010 VUONG QUOC VIET MSSV: 2010 TIEU BAO TRAN MSSV: 2010   huố g 2:n Mô hình hoạt động chế độ Led nhấp nháy, hình gồTình m dò ngnhiể thị cố định Bảng IV-3: Các hình hiển thị chế độ 2  Màn hình Line Text hiển thị Che hoat dong  Led nhap nhay Tình 3: Mô hình hoạt động chế độ điều khiển động cơ, hình gồm dòng hiển thị cố định   Trang 41_53   Phần IV: ứng dụng  Bảng IV-4: : Các hình hiển thị chế độ 3  Màn hình Line Text hiển thị Che hoat dong  Dong co servo Hình IV-4: Màn hình LCD ứng dụng   IV.3.3. Sơ đồ mạch điều khiển LCD VCC C1 U1 R2 10k R2 4.7k SW1 R2 4.7k SW2 17 22P RA2 RA3 OSC2/CLKOUT RA4/TOCKIOSC1/CLKIN MCLR VDD GROUND RB7 RB6 RB5 RB0/INT RA0 RB3 RB4 RB2 RB1 X1 14 4MHz 13 12 11 10 PIC16F84 C2 16 15 SW3 22P JP1 D4 T  O    D5 L D6 D7  C  D RS E HEADER Hình IV-5: Sơ đồ mạch điều khiể khiển LCD Trong sơ đồ trên, SW1 có vai trò nút Start, SW2 có vai trò nút Stop, SW1 nút gạt chọn chế độ điều khiển Led hay điều khiển động IV.4. Mô hình tích hợp: Các modul kết hợp với mạch tích hợp Ở ngõ điề khiểnn thứ nhiề2ượ hơnc khả a 1chip chipnàviy điề PIC16F84, dou chip điềuu khiể dùngnăđếngn.củ Hai đượuc khiể phânn nhiệ m vụ điề khiể n cávic Trang 42_53   Phần IV: ứng dụng  modul khác Tuy nhiên, để đồng modul với ngắt chân kiểm tra điều kiện chip nối với Sơ đồ mạch trình bày hình sau: TO MOTOR  J1 JP3 C3 + HEADER         1 2 22P POWER         4        3           2 ENCODER  O   G  V V  U R  S   C  T  O   S   C   U N D R7 92R JP2 R5 4.7k 10k R6 C4 C1 U2 U1 RA4/TOCKI OSC2/CLKOUT MCLR OSC1/CLKIN RA2 RA3 VDD 13 12 11 10 GROUND RB7 RB6 RB5 RB4 RB2 RB1 R8 X2 16 15 R2 14         2 SW2 R4 4.7k         1         2 R3 4.7k D2 R1 18 17 PIC16F84 4.7k 10k 1n R9 RA1 RB0/INT RB3 RA0 C5 1n 4MHz MCLR GROUND RB0/INT RB3 RA0 SW1 D1         1 right LED 17 22P RA2 RA3 OSC2/CLKOUT RA4/TOCKI OSC1/CLKIN PIC16F84 VDD RB7 RB6 RB5 RB4 RB2 RB1 C2 16 15 X1 14 4MHz 22P JP1 13 12 11 10 T  O    L  C  D HEADER SW6 Left LED R14 R13 R12 R11 R10 1k1k 470R 470R 1k   D3  LED D3    LED D3 LED D3 LED D3 LED Hình IV-6: Sơ đồ mạch tích hợp Trong mạch trên, IC1 (U1) điều khiển LCD; IC2 (U2) điều khiển LED động Mạch điện thực tế mô tả hình sau: Trang 43_53   Phần IV: ứng dụng  Hình IV-7: Mạch điện thực tế IV.5. Mã chương trình: Trang 44 53   Phần IV: ứng dụng    Chương trình cho IC1 movwf PORTA Movlw 0x00 ; PORTB = all low movwf PORTB Bsf STATUS,RP0 ; RAM Page Movlw 0x01 ; RA1 = input movwf TRISA Movlw b'00001001';RB3 & RB0 = input Movwf TRISB Bcf STATUS,RP0 ; RAM Page Movlw 20h; 25mS powerup delay @ 4MHz Movwf DelayH; LCD data sheet says 15mS Clrf DelayL PUPD decfsz DelayL,F Goto PUPD Decfsz DelayH,F Goto PUPD ; ; -; Truyền liệu khởi tạo đến LCD ; -; Clrf Flag1; send instruction as bit mode Oâi4list P = 16F84 Include "P16f84.Inc" Simulating = ; nghóa biế -n ; Định -CBLOCK 0x20 DelayL DelayM DelayH StrPtr MessAddH MessAddL MessNum Temp PBtemp Flag1 ENDC LcdRS equ 1h LcdE equ 2h LCDmd equ 0h ; ; Khởi tạo chương trình ; Org 0000h ; start address = 0000h Goto main org 0x04 Goto ISR Main bcf OPTION_REG,INTEDG Bsf OPTION_REG,NOT_RBPU OPTION_REG,NOT_RBPU Bsf INTCON,INTE; interupt BB0 enabled bsf INTCON,GIE Banksel PORTA Movlw 0x00; PORTA = all low movlw b'00110000' ; function set bits call LCDins Movlw b'00110000' ; function set bits call LCDins Movlw b'00110000' ; function set bits call LCDins Movlw b'00100000' ; function set bits call LCDins Bsf Flag1,LCDmd ;chế độ bit Movlw b'00101000' Call LCDins Movlw b'00001000' ; display = off call LCDins Movlw b'00000001' ; clear the display call LCDins Movlw b'00000110' ; increment - no display shift call LCDins Movlw b'00001100' ; display on, cursor off, blink off Trang 45 53 Trang 45_53   Phần IV: ứng dụng  call LCDins ; ; ; Chương trình ; ; Loop Movlw 0h hiển thị mess hình Number Call MessLine1 ; line Movlw 1h Number Call MessLine2 ; line Call BigDel ; chờ 1/2 s movlw 1h ; xoá hình Call LCDins Call BigDel ; wait 1/2 second movlw 2h Call MessLine1 Movlw 3h Call MessLine2 Call BigDel Movlw 1h Call LCDins Call BigDel Movlw 4h Call MessLine1 Call BigDel Movlw 1h Call LCDins Call BigDel Movlw 5h Call MessLine1 Call BigDel Movlw 1h Call LCDins Call BigDel Movlw 6h Call MessLine1 Call BigDel Movlw 1h Call LCDins Call BigDel Movlw 7h Call MessLine1 Call BigDel Movlw 1h Call LCDins Call BigDel Movlw 8h Call MessLine1 Call BigDel Movlw 1h Call LCDins Call BigDel Goto Loop ISR bcf INTCON,INTF Btfss PORTB,3 Call LED Btfsc PORTB,3 Call SERVO Retfie LED Movlw 9h Call MessLine1 Movlw 0ah Call MessLine2 Btfss PORTA,0 Goto main call BigDel Loop1 btfss PORTA,0 Goto main goto loop1 SERVO Movlw 9h Call MessLine1 Movlw 0bh Call MessLine2 Btfss PORTA,0 Goto main call BigDel Loop2 btfss PORTA,0 Goto main goto loop2 ; Trang 46_53   Phần IV: ứng dụng  Mess1 movlw High(Message1) ; get ROM page ; Truyền liệu đến LCD ; ; MessLine1 Movwf MessNummovlw 0x80 Goto InMess MessLine2 Movwf MessNummovlw 0xC0 InMess call LCDins Movf MessNum,W Message number addwf PCL,F Goto Mess0 ; message Goto Mess1 ; message Goto Mess2 Goto Mess3 Goto Mess4 Goto Mess5 Goto Mess6 Goto Mess7 Goto Mess8 Goto Mess9 Goto Mess10 Goto Mess11 ; ; MESSAGE ; ; Mess0 movlw High(Message0) ; get get ROM page if Simulating == addlw 8h endif movwf MessAddH ; temp store it movlw Low(Message1) Low(Message1) ; get page offset offset goto ContMess Mess2 movlw High(Message2) ; get ROM page if Simulating == addlw 8h endif if Simulating == Addlw 8h Endif movwf MessAddH ; temp store it movlw Low(Message0) page offset goto ContMess ; ; ; MESSAGE ; ; ; get movwf MessAddH ; temp store it movlw Low(Message2) ; get page offset goto ContMess ; ; ; MESSAGE ; ; Mess3 movlw High(Message3) ; get ROM page if Simulating == addlw 8h endif movwf MessAddH ; temp store it movlw Low(Message3) Mess4 movlw High(Message4) if Simulating == addlw 8h endif movwf MessAddH movlw Low(Message4) goto ContMess ; ; ; MESSAGE ; ; Mess5 movlw High(Message5) if Simulating == Trang 47_53   Phần IV: ứng dụng  addlw 8h endif movwf MessAddH movlw Low(Message5) goto ContMess Mess6 movlw High(Message6) if Simulating == addlw 8h endif movwf MessAddH movlw Low(Message6) offset goto ContMess ; ; ; MESSAGE ; ; Mess7 movlw High(Message7) if Simulating == addlw 8h endif movwf MessAddH movlw Low(Message7) goto ContMess Mess8 movlw High(Message8) if Simulating == addlw 8h endif movwf MessAddH ; temp store it movlw Low(Message8) ; get page offset goto ContMess ; ; ; MESSAGE ; ; Mess9 movlw High(Message9) ; get get ROM page if Simulating == addlw 8h endif movwf MessAddH ; temp store it movlw Low(Message9) Low(Message9) ; get page offset offset goto ContMess Mess10 movlw High(Message10) ; get ROM page if Simulating == addlw 8h endif movwf MessAddH ; temp store it movlw Low(Message10) ; get page offset goto ContMess ; ; ; MESSAGE ; ; Mess11 movlw High(Message11) ; get ROM page if Simulating == addlw 8h endif movwf MessAddH ; temp store it movlw Low(Message11) Low(Message11) ; get page page offset ContMess movwf MessAddL ; temp store it ; ; ; Nhận liệu hiển thị LCD ; ; clrf StrPtr ; zero the character offset MessLoop call Messages ; get the character movwf temp ; temp store the character movlw High($) ; restore PCLATH for this ROM page if Simulating == addlw 8h endif Trang 48_53   Phần IV: ứng duïng  movwf PCLATH movf temp,W xorlw 0h ; test if zero byte btfsc STATUS,Z return ; yes, all done btfss Flag1,LCDmd ; test if sending byte or nibbles goto bits8 ; nibble swapf temp,W ; now send lower nibble call LCDdata ; send character to display incf StrPtr,F ; set ready for next character goto MessLoop ; get next character ; ; ; CHARACTER ADDRESS CALCULATOR ; ; Messages movf MessAddH,W ; high address byte to PCLATH movwf PCLATH movf MessAddL,W ; get low address byte addwf StrPtr,W ; add character offset btfsc STATUS,C ; test carry incf PCLATH,F ; overflow increment PCLATH movwf PCL ; low byte to PCL ; ; -; OUTPUT INSTRUCTION BYTE TO DISPLAY - BIT MODE ; -; LCDins movwf temp ; temp save instruction andlw 0xF0 ; send high nibble first movwf PORTB ; send it call Clock bsf PORTB,lcdE ; (1) clock it in call Clock bcf PORTB,lcdE ; (1) call Clock andlw 0xF0 movwf PORTB ; send it call Clock bsf PORTB,lcdE ; (5) enable instruction call Clock bcf PORTB,lcdE ; (5) bits8 clrf DelayL movlw 8h movwf DelayH ctlp1 decfsz DelayL,F goto ctlp1 decfsz DelayH,F goto ctlp1 return ; ; ; Xuất byte hình ; ; LCDdata movwf temp ; temp save data andlw 0xF0 ; send high nibble first movwf PORTB call Clock bsf PORTB,lcdRS ; (0) Write "data" call Clock bsf PORTB,lcdE ; (1) clock it in call Clock bcf PORTB,lcdE ; (1) call Clock swapf temp,W ; now send lower nibble andlw 0xF0 movwf PORTB call Clock bsf PORTB,lcdRS ; (0) Write "data" call Clock bsf PORTB,lcdE ; (5) enable instruction Trang 49_53   Phần IV: ứng dụng  call Clock bcf PORTB,lcdE ; (5) return ; ; ; Định nghóa tần số dao động ; ; Clock movlw 40h movwf DelayL kdloop decfsz DelayL,F goto kdloop return ; ; ; khởi tạo thời gian nhấp nháy ~ 0.5s ; ; BigDelclrf DelayL clrf DelayM movlw 5h movwf DelayH BDloop decfsz DelayL,F goto BDloop decfsz DelayM,F goto BDloop decfsz DelayH,F goto BDloop return ; ; ; chuoãi ; ; Message0 DT " D DO O AN DKHT ", 0h Message1 DT "DE TAI: PIC16F84", 0h Message2 DT " GVHD ",0h Message3 DT "KS VO TUONG QUAN" ,0h Message4 DT " NHOM THUC HIEN ",0H Message5 DT " DINH PHUONG TAN",0H Message6 ",0H Message7 VIET",0H Message8 ",0H Message9 Message10 ",0H Message11 ",0H End DT " NG CHINH PHUC DT " VUONG QUOC DT " TIEU BAO TRAN DT " DIEU KHIEN ",0H DT " LED NHAP NHAY DT " DONG CO SERVO Trang 50_53   Phần IV: ứng dụng    Chương trình cho IC2 list p=16F84A ; list directive to define processor #include ; processor specific variable definitions CONFIG _CP_OFF&& _WDT_OFF & _PWRTE_ON _XT_OSC cblock 0x0c TMP0 TMP1 TMP2 CNT endc org 0x00 goto main org 0x04 goto ISR main banksel TRISA movlw b'00010001' ; RA0,RA4 is input movwf TRISA movlw b'00001001'; RB0,RB3 = INPUT movwf TRISB banksel PORTA clrf PORTA clrf PORTB movlw b'10110010' movwf OPTION_REG bsf INTCON,INTE bsf INTCON,GIE goto main ISR bcf INTCON,INTF btfss PORTB,3 goto LED btfsc PORTB,3 goto SERVO LED banksel PORTB movlw b'00000010' call blink btfss PORTA,0 goto main movlw b'00000100' call blink btfss PORTA,0 goto main movlw b'00010000' call blink btfss PORTA,0 goto main movlw b'00100000' call blink btfss PORTA,0 goto main movlw b'01000000' call blink btfss PORTA,0 goto main movlw b'00100000' call blink btfss PORTA,0 goto main movlw b'00010000' call blink btfss PORTA,0 goto main movlw b'00000100' call blink btfss PORTA,0 goto main movlw b'00000010' call blink btfss PORTA,0 goto main movlw b'00000110' call blink btfss PORTA,0 goto main movlw b'00010110' call blink btfss PORTA,0 goto main movlw b'00110110' call blink btfss PORTA,0 goto main Trang 51_53   Phần IV: ứng dụng  movlw b'01110110' call blink btfss PORTA,0 goto main movlw b'00110110' call blink btfss PORTA,0 goto main movlw b'00010110' call blink btfss PORTA,0 goto main movlw b'00000110' call blink btfss PORTA,0 goto main movlw b'00000010' call blink btfss PORTA,0 goto main movlw b'01010010' call blink btfss PORTA,0 goto main movlw b'00100100' call blink btfss PORTA,0 goto main movlw b'01010010' call blink btfss PORTA,0 goto main movlw b'00100100' call blink btfss PORTA,0 goto main movlw b'01010010' call blink btfss PORTA,0 goto main movlw b'00100100' call blink btfss PORTA,0 goto main goto LED SERVO nop PHAI movlw movwf CNT movlw b'00001100' movwf PORTA call DEL btfss PORTA,0 goto main call DEL clrf PORTA PH1 movlw 12 movwf TMR0 loop1 btfsc TMR0,7 goto Cont1 lp1 bsf PORTA,2 bsf PORTB,7 btfss PORTA,0 goto main goto loop1 Cont1 btfss TMR0,6 goto lp1 goto Ctr Ctr decfsz CNT,1 goto PH1 goto TRAI TRAI bcf PORTB,7 movlw b'00001100' movwf PORTA call DEL btfss PORTA,0 goto main call DEL clrf PORTA movlw movwf CNT TR1 movlw 12 Trang 52_53   Phần IV: ứng dụng  movwf TMR0 loop2 btfsc TMR0,7 goto Cont2 lp2 bsf PORTA,3 bsf PORTA,1 btfss PORTA,0 goto main goto loop2 Cont2 btfss TMR0,6 goto lp2 goto Ctr2 Ctr2 decfsz CNT,1 goto TR1 goto PHAI blink movwf PORTB call DEL return DEL MOVLW 0x02 ;2 DEC MOVWF TMP2 MOVLW 0x0E5 ;229 DEC MOVWF TMP1 MOVLW 0x0D9 ;217 DEC MOVWF TMP0 DECFSZ TMP0,F GOTO $-1 DECFSZ TMP1,F GOTO $-5 DECFSZ TMP2,F GOTO $-9 return end  ... đây: Hình IV-2: Sơ đồ kết nối LCD bit  Hình IV-3: Sơ đồ kết nối LCD bit  Trang 40_53   Phần IV: ứng dụng? ?  IV.3.2.  Hoạ Hoạt động LCD tro ng ứng dụng Trong ứng dụng này, LCD hoạt động tình khác... từ đến 127 Tác động lên cờ: C,DC,Z Số chu kỳ:1 Số byte:   Sublw Sublw K  Dạng lệnh:   Hoạt động:     K-(W) Hằng số= >KWcó giá trị tứ tứ đến 255 Tác động lên cờ:C,DC,Z Số chu kỳ:1 Số byte:   Subwf... cung cấp chúng em tự làm mạch nạp cho PIC16F84 Sơ đồ mạch in giới thiệu hình sau: 20 DTR Trang 33_53   Phần IV: ứng dụng? ? Phần IV:  ỨNG DỤNG Bảng ứng dụng chip vi điều khiển PIC16F84 gồm modul:

Ngày đăng: 14/08/2020, 20:58

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN