intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Luận văn - NGHIÊN CỨU VI ĐIỀU KHIỂN PIC16F84 - Phần 3

Chia sẻ: Little Duck | Ngày: | Loại File: PDF | Số trang:20

236
lượt xem
99
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'luận văn - nghiên cứu vi điều khiển pic16f84 - phần 3', kỹ thuật - công nghệ, điện - điện tử phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Luận văn - NGHIÊN CỨU VI ĐIỀU KHIỂN PIC16F84 - Phần 3

  1. Phaàn IV: öùng duïng Phaàn IV: ÖÙNG DUÏNG Baûng öùng duïng chip vi ñieàu khieån PIC16F84 goàm 3 modul: ñieàu khieån LED; ñieàu khieån LCD vaø ñieàu khieån ñoäng cô Servol. IV.1. Ñieàu khieån LED IV.1.1. Hoaït ñoäng Modul ñieàu khieån LED laø modul ñôn giaûn nhaát trong baûng ñieàu khieån. Vieäc ñieàu khieån chæ ñôn giaûn laø xuaát bit tín hieäu ra caùc pin töông öùng noái vôùi LED. Tín hieäu ñöôïc xuaát qua LED ngay khi ngaét ngoaøi ñöôïc kích (Start button) treân chip. Chöông trình ñieàu khieån LED nhaáp nhaùy ñöôïc vieát döôùi daïng voøng laëp voâ taän neân LED seõ nhaáp nhaùy theo moät chu trình ñöôïc thieát keá trong chöông trình vaø laäp laïi maõi ñeán khi naøo ngöôøi ñieàu khieån aán phím Stop hoaëc chip ñöôïc Reset. IV.1.2. Maïch ñieàu khieån Trong maïch ñieàu khieån, caùc Led ñöôïc noái vôùi chip qua caùc chaân RB1, RB2, RB4, RB5, RB6. Buttom SW1 noái chaân ngaét ngoaøi RB0/INT vôùi mass, laøm chöùc naêng nhö nuùt Start. Khi ngaét ngoaøi ñöôïc kích, chöông trình seõ reõ nhaùnh ñeán chöông trình con ñieàu khieån Led ñeå ñieàu khieån Led nhaáp nhaùy. Button SW2 noái chaân kieåm tra ñieàu kieän RA0 vôùi mass, laøm chöùc naêng nhö nuùt Stop. Khi nuùt Stop ñöôïc nhaán, laøm cho chaân RA0 xuoáng möùc ñieän aùp thaáp, khi ñoù chöông trình seõ ñöôïc thoaùt khoûi chöông trình con ñieàu khieån Led, trôû veà chöông trình chính. 32
  2. Phaàn IV: öùng duïng VCC C4 U1 10k R6 3 X2 RA4/TOCKI C5 16 1n OSC2/CLKOUT 4 15 4MHz MCLR OSC1/CLKIN 1 RA2 2 14 RA3 VDD 1n 5 GROUND 13 RB7 SW1 12 18 RB6 RA1 11 6 1 2 RB5 RB0/INT 10 9 RB4 RB3 SW2 8 17 RB2 RA0 7 1 2 RB1 PIC16F84 R1 R2 R3 R4 R5 470R 470R 470R 470R 470R D1 D2 D3 D4 D5 IV.2. Ñieàu khieån ñoäng cô Servo IV.2.1. Hoaït ñoäng IV.2.1.1 Ñoäng cô servo Ñoäng cô Servol chính laø moät ñoäng cô DC thoâng thöôøng ñöôïc laáp theâm boä giaûi maõ (Encoder) ñeå nhaän tín hieäu phaûn hoài veà goùc quay cuûa ñoäng cô. Encoder thöôøng ñöôïc caáu taïo töø 1 Led phaùt quang, 1 ñeán 2 diode quang ñaët ñoái dieän vôùi Led phaùt quang qua 1 khe hôû vaø boä khueách ñaïi. 33
  3. Phaàn IV: öùng duïng Tín hieäu ra seõ ôû möùc cao (hoaëc thaáp) khi diode quang nhaän ñöôïc tín hieäu quang hoïc töø Led phaùt. Vì theá, khi laép ñóa phaân giaûi vaøo khe giöõa Led phaùt vaø diode quang vaø ñóa ñöôïc ñoäng cô quay thì tín hieäu ra laø daïng xung. Soá xung phaùt ra treân ngoõ ra cuûa Encoder chính laø soá raêng treân ñóa phaân giaûi ñaõ löôùt qua khe hôû giöõa Led phaùt vaø diode quang. Coâng thöùc tính goùc quay cuûa ñoäng cô nhö sau:   360nC Trong ñoù: n- soá xung nhaän ñöôïc C- ñoä phaân giaûi cuûa ñóa 1 C m M- soá raêng treân voøng Treân hình veõ, encoder duøng 2 keânh, 2 diode quang ñaët ôû vò trí ngöôïc nhau veà tín hieäu (khi diode 1 thaáy thì diode 2 khoâng thaáy vaø ngöôïc laïi). Duøng 2 tín hieäu naøy trong heä vi sai ñeå choáng nhieãu. ÖÙng duïng trong ñoà aùn naøy duøng encoder 1 keânh ngoõ ra. Ngöôøi ñieàu khieån duøng tín hieäu xung naøy ñeå ñieàu khieån chính xaùc goùc quay cuûa ñoäng cô. 34
  4. Phaàn IV: öùng duïng IV.2.1.2 Maïch caàu H Maïch caàu H ñöôïc thieát keá ñeå ñieàu khieån hoaït ñoäng cuûa ñoäng cô DC. Noù cho pheùp tín hieäu coâng suaát thaáp töø caùc chip vi ñieàu khieån coù theå ñieàu khieån ñoäng cô DC. Ngaên doøng ngöôïc töø ñoäng cô phaùt ra coù theå laøm hoûng chip. Cung caáp coâng suaát cho ñoäng cô baèng 1 nguoàn taùch bieät khoûi nguoàn nuoâi chip. Coù khaû naêng ñaûo chieàu vaø döøng ñoäng cô ñoät ngoät (thaéng).  Sô ñoà maïch caàu H 2 E 2 E B 1 1 J2-1 B C TIP120 C TIP120 POWER IN 3 C1 470uF Q5 Q4 3 PN2222 PN2222 TO MOTOR J3-1 J3-2 R1 R2 J2-2 R6 47R 474R 470R R3 10k JP1 IN A 1 GROUMD 2 IN B 3 2 2 R7 C C R3 4 HEADER 3k3 10k 1 1 B B Q6 PN2222TIP120 TIP120 E Q3 E PN2222 3 3 R4 R8 10k 10k 35
  5. Phaàn IV: öùng duïng IV.2.2. Maïch ñieàu khieån C3 VCC TO MOTOR 22P JP3 R7 4 HEADER VCC 1 2 3 4 3 2 1 GROUND VSS VCC OUT R5 4.7k 92R JP2 C4 10k ENCODER R6 U2 3 X2 RA4/TOCKI C5 16 1n OSC2/CLKOUT 4 15 4MHz MCLR OSC1/CLKIN 1 RA2 2 14 RA3 VDD 1n 5 GROUND 13 RB7 12 18 RB6 RA1 11 6 RB5 RB0/INT 10 9 RB4 RB3 8 17 0 RB2 RA0 7 RB1 PIC16F84 IV.3. Ñieàu khieån LCD IV.3.1. Giôùi thieäu veà LCD LCD (liquid Crystal Display)_maøn hình tinh theå loûng, ñaây laø phöông phaùp hieån thò tieát kieäm naêng löôïng. Coù nhieàu loaïi LCD, trong ñoù thoâng duïng laø hieån thò 16x2 vaø 20x2 (hieån thò 2 haøng vôùi 16 kyù töï treân moãi haøng vaø 2 haøng 20 kyù töï). LCD ñöôïc thieát laäp chuaån ñeå cho pheùp ta coù theå giao tieáp vôùi caùc LCD baát chaáp haõng saûn xuaát vôùi ñieàu kieän laø caùc LCD duøng cuøng IC ñieàu khieån HD44780.  Hình daùng vaø kích thöôùc LCD Caùc LCD ñöôïc cheá taïo töø caùc haõng nhö Densitron, Epson, Hewlett Packard, Optrex, Shasp… vôùi caùc caáu hình thoâng duïng laø 16, 20,24, 32, hay 40 kyù töï treân 1 haøng vôùi maøn hình hieån thò 1, 2, hay 4 haøng. Hình IV-1: Moâ hình maøn hình LCD LCD duøng trong öùng duïng naøy laø loaïi 16x2, duøng chip HD44780. Maøn hình neàn cuûa LCD ñöôïc chieáu saùng baèng ñeøn chieáu saùng ñaët phía sau boä hieån thò thay vì duøng phöông phaùp phaûn xaï.  Caùc chaân ra cuûa LCD Modul LCD tuaân theo qui caùch giao tieáp chuaån. Goàm 14 chaân, coù 8 ñöôøng döõ lieäu, 3 ñöôøng ñieàu khieån vaø 3 ñöôøng caáp nguoàn boá trí treân 1 haøng. Chöùc naêng cuûa caùc chaân ñöôïc lieät keâ trong baûng sau: 36
  6. Phaàn IV: öùng duïng Baûng IV-1: chöùc naêng cuûa caùc chaân LCD Chaân soá Teân Chöùc naêng 1 Vss Ñaát 2 VDD Cöïc+ cuûa nguoàn 3 VEE Töông phaûn (constrast) 4 RE Choïn thanh ghi (Register Select) 5 R/W Read/write 6 E Cho pheùp (Enable) 7 D0 Bít döõ lieäu 0 8 D1 Bít döõ lieäu 1 9 D2 Bít döõ lieäu 2 10 D3 Bít döõ lieäu 3 11 D4 Bít döõ lieäu 4 12 D5 Bít döõ lieäu 5 13 D6 Bít döõ lieäu 6 14 D7 Bít döõ lieäu 7 Nguoàn caáp cho LCD laø 5VDC, tuy nhieân LCD vaãn hoaït ñoäng toát vôùi nguoàn 6VDC hay 4.5VDC. LCD tieâu thuï ñieän naêng raát ít. Tuy nhieân ñeøn duøng ñeå chieáu saùng cho LCD laïi tieâu thuï ñieän naêng khaù lôùn. Vì vaäy moãi khi coù hieän töôïng suït aùp treân nguoàn thì ta thaáy ñeøn neàn LCD toái ngay. Chaân 3 (VEE) duøng ñeå thay ñoåi ñoä töông phaûn cuûa maøn hieån thò. Lyù töôûng thì chaân naøy neân noái vôùi nguoàn aùp thay ñoåi ñöôïc, ngöôøi ta thöïc hieän baèng caùch laép maïch chia aùp duøng bieán trôû coù ñaàu ra thay ñoåi ñöa vaøo chaân naøy. Ñôn giaûn nhaát ta coù theå noái chaân naøy xuoáng mass ñeå ñaït ñöôïc ñoä töông phaûn toát nhaát. Chaân 4 (RS_Register Select) ñaây laø 1 trong 3 ngoõ vaøo ñieàu khieån leänh. Khi chaân naøy ñöôïc noái mass thì caùc döõ lieäu truyeàn ñeán LCD ñöôïc xöû lyù nhö caùc meänh leänh vaø caùc döõ lieäu ñoïc ra chæ traïng thaùi cuûa noù. Baèng caùch ñöa chaân naøy leân möùc cao thì döõ lieäu kyù töï coù theå xuaát nhaäp treân modul naøy. Chaân 5 (R/W_Read/Write), chaân naøy cho pheùp leänh hay döõ lieäu kyù töï ñöôïc ghi vaøo modul khi noù ñöôïc keùo xuoáng möùc thaáp. Khi ñöôïc ñöa leân cao, noù cho pheùp döõ lieäu kyù töï hay thoâng tin traïng thaùi ñöôïc ñoïc töø caùc thanh ghi cuûa modul. Chaân 6 (E_ Enable), ngoõ vaøo naøy duøng ñeå khôûi ñoäng vieäc chuyeån caùc döõ lieäu kyù töï hay caùc leänh giöõa modul vaø caùc ñöôøng döõ lieäu. Khi ghi ra maøn hình LCD, döõ 37
  7. Phaàn IV: öùng duïng lieäu chæ ñöôïc chuyeån khi coù caïnh xuoáng cuûa tín hieäu E naøy. Tuy nhieân khi ñoïc ra töø LCD, thì döõ lieäu khaû duïng sau khi coù chuyeån tieáp töø thaáp leân cao vaø duy trì döõ lieäu khaû duïng ñeán khi tín hieäu E naøy xuoáng thaáp 1 laàn nöõa. Caùc chaân töø 7 ñeán 14 laø 8 ñöôøng döõ lieäu (D0  D7). Döõ lieäu coù theå ñöôïc chuyeån ñeán vaø laáy ra khoûi boä hieån thò LCD theo daïng moät byte hay daïng nöûa byte 4 bit (nibble). Trong tröôøng duøng trong öùng duïng naøy laø duøng 4 bit vì cheá ñoä naøy caàn ít ñöôøng tín hieäu hôn. Sô ñoà keát noái ñöôïc theå hieän nhö hình döôùi ñaây: Hình IV-2: Sô ñoà keát noái LCD 8 bit Hình IV-3: Sô ñoà keát noái LCD 4 bit 38
  8. Phaàn IV: öùng duïng IV.3.2. Hoaït ñoäng cuûa LCD trong öùng duïng Trong öùng duïng naøy, LCD hoaït ñoäng ôû 3 tình huoáng khaùc nhau. Moãi tình huoáng LCD laøm nhieäm vuï hieån thò lôøi giôùi thieäu hay traïng thaùi hoaït ñoäng cuûa moâ hình. Caùc traïng thaùi hoaït ñoäng cuûa LCD ñöôïc lieät keâ trong baûng sau:  Tình huoáng 1: vöøa khôûi ñoäng heä thoáng, caùc doøng text seõ hieån thò laàn löôït treân maøn hình vaø laäp laïi lieân tuïc Baûng IV-2: Caùc maøn hình hieån thò trong tình huoáng 1 Maøn hình Line Text hieån thò 1 DO AN DKHT 1 2 DE TAI: pIC16F84 1 Gvhd 2 2 Ks. Vo tuong quan 1 Nhom thuc hien 3 2 (None) 1 Dinh Phuong Tan 4 2 Mssv: 20102326 1 Nguyen chinh phuc 5 2 Mssv: 2010 1 VUONG QUOC VIET 6 2 MSSV: 2010 1 TIEU BAO TRAN 7 2 MSSV: 2010  Tình huoáng 2: Moâ hình ñang hoaït ñoäng ôû cheá ñoä Led nhaáp nhaùy, maøn hình chæ goàm 2 doøng hieån thò coá ñònh. Baûng IV-3: Caùc maøn hình hieån thò ôû cheá ñoä 2 Maøn hình Line Text hieån thò 1 Che do hoat dong 1 2 Led nhap nhay  Tình huoáng 3: Moâ hình ñang hoaït ñoäng ôû cheá ñoä ñieàu khieån ñoäng cô, maøn hình chæ goàm 2 doøng hieån thò coá ñònh. 39
  9. Phaàn IV: öùng duïng Baûng IV-4: : Caùc maøn hình hieån thò ôû cheá ñoä 3 Maøn hình Line Text hieån thò 1 Che do hoat dong 1 2 Dong co servo Hình IV-4: Maøn hình LCD trong öùng duïng IV.3.3. Sô ñoà maïch ñieàu khieån LCD VCC C1 U1 22P R2 1 RA2 2 16 C2 10k 3 RA3 OSC2/CLKOUT R2 15 X1 RA4/TOCKI OSC1/CLKIN 4.7k 22P 4 14 4MHz MCLR VDD SW1 R2 0 1 2 4.7k 5 13 GROUND RB7 12 JP1 RB6 SW2 6 11 1 TO LCD RB0/INT RB5 D4 1 2 17 10 2 RA0 RB4 D5 8 3 RB2 D6 9 7 4 RB3 RB1 D7 3 5 RS 2 6 E 1 PIC16F84 SW3 HEADER 6 0 Hình IV-5: Sô ñoà maïch ñieàu khieån LCD Trong sô ñoà treân, SW1 coù vai troø nhö nuùt Start, SW2 coù vai troø nhö nuùt Stop, SW1 laø nuùt gaït choïn cheá ñoä ñieàu khieån Led hay ñieàu khieån ñoäng cô. IV.4. Moâ hình tích hôïp: Caùc modul treân ñöôïc keát hôïp vôùi nhau treân 1 maïch tích hôïp. ÔÛ ñaây vì caùc ngoõ ñieàu khieån nhieàu hôn khaû naêng cuûa 1 chip vi ñieàu khieån PIC16F84, do ñoù chip vi ñieàu khieån thöù 2 ñöôïc duøng ñeán. Hai chip naøy ñöôïc phaân nhieäm vuï ñieàu khieån caùc 40
  10. Phaàn IV: öùng duïng modul khaùc nhau. Tuy nhieân, ñeå ñoàng boä caùc modul vôùi nhau thì caùc ngaét ngoaøi vaø caùc chaân kieåm tra ñieàu kieän cuûa 2 chip ñöôïc noái vôùi nhau. Sô ñoà maïch ñöôïc trình baøy trong hình sau: TO MOTOR J1 JP3 C3 + 1 2 4 HEADER 22P 1 2 3 POWER ENCODER 4 3 2 1 R7 GROUND VSS VCC OUT 92R JP2 C4 C1 R5 U2 U1 4.7k 22P 10k 3 X2 1 RA4/TOCKI RA2 C5 R6 16 1n 2 16 C2 OSC2/CLKOUT RA3 OSC2/CLKOUT 4 15 4MHz R2 3 15 X1 MCLR OSC1/CLKIN RA4/TOCKI OSC1/CLKIN 1 22P RA2 2 14 4 14 4MHz 10k RA3 VDD MCLR VDD 1n JP1 2 5 5 13 TO LCD GROUND GROUND RB7 1 13 R9 SW2 R4 12 RB7 RB6 2 12 18 R1 6 11 RB6 RA1 RB0/INT RB5 3 11 6 9 10 4.7k RB5 RB0/INT RB3 RB4 4 10 9 17 8 RB4 RB3 RA0 RB2 5 8 17 21 7 RB2 RA0 RB1 6 7 RB1 R8 R3 PIC16F84 4.7k SW1 PIC16F84 HEADER 6 4.7k D2 D1 SW6 1 right LED 3 Left LED 2 1 R14 R12 R10 R13 R11 D3 D3 D3 D3 D3 1k 1k470R 470R 1k LED LED LED LED LED Hình IV-6: Sô ñoà maïch tích hôïp Trong maïch treân, IC1 (U1) ñieàu khieån LCD; IC2 (U2) ñieàu khieån LED vaø ñoäng cô. Maïch ñieän thöïc teá ñöôïc moâ taû trong hình sau: 41
  11. Phaàn IV: öùng duïng Hình IV-7: Maïch ñieän thöïc teá IV.5. Maõ chöông trình: 42
  12. Phaàn IV: öùng duïng movwf PORTA  Chöông trình cho IC1 Movlw 0x00 ; PORTB = all low movwf PORTB Oâi4list P = 16F84 Bsf STATUS,RP0 ; RAM Page 1 Include "P16f84.Inc" Movlw 0x01 ; RA1 = input Simulating = 1 movwf TRISA ; -------------------- Movlw b'00001001';RB3 & RB0 = input ; Ñònh nghóa bieán Movwf TRISB ; -------------------- Bcf STATUS,RP0 ; RAM Page 0 Movlw 20h; 25mS powerup delay @ CBLOCK 0x20 4MHz DelayL Movwf DelayH; LCD data sheet says DelayM 15mS DelayH Clrf DelayL StrPtr PUPD decfsz DelayL,F MessAddH Goto PUPD MessAddL Decfsz DelayH,F MessNum Goto PUPD Temp ; PBtemp ; ----------------------------------- Flag1 ; Truyeàn döõ lieäu khôûi taïo ñeán LCD ENDC ; ----------------------------------- ; LcdRS equ 1h Clrf Flag1; send instruction as 8 bit mode LcdE equ 2h movlw b'00110000' ; function set 8 bits LCDmd equ 0h call LCDins Movlw b'00110000' ; function set 8 bits ; ------------------------------- call LCDins ; Khôûi taïo chöông trình chính Movlw b'00110000' ; function set 8 bits ; ------------------------------- call LCDins Movlw b'00100000' ; function set 4 bits call LCDins Org 0000h ; start Bsf Flag1,LCDmd ;cheá ñoä 4 bit address = 0000h Movlw b'00101000' Goto main Call LCDins org 0x04 Movlw b'00001000' ; display = off Goto ISR call LCDins Main Movlw b'00000001' ; clear the display bcf OPTION_REG,INTEDG call LCDins Bsf OPTION_REG,NOT_RBPU Movlw b'00000110' ; increment - no Bsf INTCON,INTE; interupt BB0 display shift enabled call LCDins bsf INTCON,GIE Movlw b'00001100' ; display on, cursor Banksel PORTA off, blink off Movlw 0x00; PORTA = all low 43
  13. Phaàn IV: öùng duïng call LCDins Call MessLine1 ; Call BigDel ; ----------------- Movlw 1h ; Chöông trình chính Call LCDins ; ----------------- Call BigDel ; Movlw 8h Loop Call MessLine1 Movlw 0h hieån thò mess ra Call BigDel maøn hình Movlw 1h Number 0 Call LCDins Call MessLine1 ; line 1 Call BigDel Movlw 1h Goto Loop Number 1 ISR bcf INTCON,INTF Call MessLine2 ; line 2 Btfss PORTB,3 Call BigDel ; chôø 1/2 s Call LED movlw 1h ; xoaù maøn hình Btfsc PORTB,3 Call LCDins Call SERVO Call BigDel ; wait 1/2 second Retfie movlw 2h LED Call MessLine1 Movlw 9h Movlw 3h Call MessLine1 Call MessLine2 Movlw 0ah Call BigDel Call MessLine2 Movlw 1h Btfss PORTA,0 Call LCDins Goto main Call BigDel call BigDel Movlw 4h Loop1 Call MessLine1 btfss PORTA,0 Call BigDel Goto main Movlw 1h goto loop1 Call LCDins SERVO Call BigDel Movlw 9h Movlw 5h Call MessLine1 Call MessLine1 Movlw 0bh Call BigDel Call MessLine2 Movlw 1h Btfss PORTA,0 Call LCDins Goto main Call BigDel call BigDel Movlw 6h Loop2 Call MessLine1 btfss PORTA,0 Call BigDel Goto main Movlw 1h goto loop2 Call LCDins Call BigDel Movlw 7h ; ---------------------------- 44
  14. Phaàn IV: öùng duïng ; Truyeàn döõ lieäu ñeán LCD Mess1 movlw High(Message1) ; get ; ---------------------------- ROM page ; MessLine1 if Simulating == 1 Movwf MessNummovlw 0x80 addlw 8h Goto InMess endif MessLine2 Movwf MessNummovlw 0xC0 movwf MessAddH ; temp store it InMess call LCDins movlw Low(Message1) ; get page offset Movf MessNum,W goto ContMess Message number Mess2 movlw High(Message2) ; get addwf PCL,F ROM page Goto Mess0 ; message 0 if Simulating == 1 Goto Mess1 ; message 1 addlw 8h Goto Mess2 endif Goto Mess3 Goto Mess4 movwf MessAddH ; temp store it Goto Mess5 movlw Low(Message2) ; get page offset Goto Mess6 goto ContMess Goto Mess7 ; Goto Mess8 ; --------- Goto Mess9 ; MESSAGE 1 Goto Mess10 ; --------- Goto Mess11 ; ; --------- Mess3 movlw High(Message3) ; get ; MESSAGE 0 ROM page ; --------- if Simulating == 1 ; addlw 8h Mess0 movlw High(Message0) ; get endif ROM page movwf MessAddH ; temp store it movlw Low(Message3) if Simulating == 1 Mess4 movlw High(Message4) Addlw 8h if Simulating == 1 Endif addlw 8h endif movwf MessAddH ; temp store movwf MessAddH it movlw Low(Message4) movlw Low(Message0) ; get goto ContMess page offset ; goto ContMess ; --------- ; ; MESSAGE 1 ; --------- ; --------- ; MESSAGE 1 ; ; --------- Mess5 movlw High(Message5) ; if Simulating == 1 45
  15. Phaàn IV: öùng duïng addlw 8h if Simulating == 1 endif addlw 8h movwf MessAddH endif movlw Low(Message5) goto ContMess movwf MessAddH ; temp store Mess6 movlw High(Message6) it movlw Low(Message9) ; get page offset if Simulating == 1 goto ContMess addlw 8h Mess10 movlw High(Message10) ; endif get ROM page movwf MessAddH if Simulating == 1 movlw Low(Message6) addlw 8h offset endif goto ContMess movwf MessAddH ; temp store it ; movlw Low(Message10) ; get page ; --------- offset ; MESSAGE 1 goto ContMess ; --------- ; ; ; --------- Mess7 movlw High(Message7) ; MESSAGE 1 if Simulating == 1 ; --------- addlw 8h ; endif Mess11 movlw High(Message11) ; get ROM page movwf MessAddH if Simulating == 1 movlw Low(Message7) addlw 8h goto ContMess endif Mess8 movlw High(Message8) movwf MessAddH ; temp store it if Simulating == 1 movlw Low(Message11) ; get page offset addlw 8h ContMess movwf MessAddL ; endif temp store it ; movwf MessAddH ; temp store ; ------------------------------------------ it ; Nhaän döõ lieäu vaø hieån thò treân LCD movlw Low(Message8) ; get ; ------------------------------------------ page offset ; goto ContMess clrf StrPtr ; zero the character offset ; MessLoop call Messages ; get the ; --------- character ; MESSAGE 1 movwf temp ; temp store the character ; --------- movlw High($) ; restore PCLATH ; for this ROM page Mess9 movlw High(Message9) ; get if Simulating == 1 ROM page addlw 8h endif 46
  16. Phaàn IV: öùng duïng movwf PCLATH btfss Flag1,LCDmd ; test if movf temp,W sending byte or 2 nibbles xorlw 0h ; test if zero byte goto bits8 ; 1 nibble btfsc STATUS,Z return ; yes, all done swapf temp,W ; now send lower nibble call LCDdata ; send character to display andlw 0xF0 incf StrPtr,F ; set ready for next movwf PORTB ; send it character call Clock goto MessLoop ; get next character bsf PORTB,lcdE ; (5) enable ; instruction ; ---------------------------- call Clock ; CHARACTER ADDRESS bcf PORTB,lcdE ; (5) CALCULATOR bits8 clrf DelayL ; ---------------------------- movlw 8h ; movwf DelayH Messages movf MessAddH,W ; high ctlp1 decfsz DelayL,F address byte to PCLATH goto ctlp1 movwf PCLATH decfsz DelayH,F movf MessAddL,W ; get low goto ctlp1 address byte return addwf StrPtr,W ; add ; character offset ; ------------------------------------------ btfsc STATUS,C ; test carry ; Xuaát 2 byte ra maøn hình incf PCLATH,F ; overflow - ; ------------------------------------------ increment PCLATH ; movwf PCL ; low byte to LCDdata PCL movwf temp ; temp save data ; andlw 0xF0 ; send high nibble first ; ------------------------------------------------- movwf PORTB ; OUTPUT 1 INSTRUCTION BYTE TO call Clock DISPLAY - 4 BIT MODE bsf PORTB,lcdRS ; (0) Write "data" ; ------------------------------------------------- call Clock ; bsf PORTB,lcdE ; (1) clock it in LCDins movwf temp ; temp save call Clock instruction bcf PORTB,lcdE ; (1) andlw 0xF0 ; send high nibble call Clock first swapf temp,W ; now send lower nibble movwf PORTB ; send it andlw 0xF0 call Clock movwf PORTB bsf PORTB,lcdE ; (1) clock it in call Clock call Clock bsf PORTB,lcdRS ; (0) Write "data" bcf PORTB,lcdE ; (1) call Clock call Clock bsf PORTB,lcdE ; (5) enable instruction 47
  17. Phaàn IV: öùng duïng call Clock Message6 DT " NG. CHINH PHUC bcf PORTB,lcdE ; (5) ",0H return Message7 DT " VUONG QUOC ; VIET",0H ; ----------------------------- Message8 DT " TIEU BAO TRAN ; Ñònh nghóa taàn soá dao ñoäng ",0H ; ----------------------------- Message9 DT " DIEU KHIEN ",0H ; Message10 DT " LED NHAP NHAY Clock movlw 40h ",0H movwf DelayL Message11 DT " DONG CO SERVO kdloop decfsz DelayL,F ",0H goto kdloop End return ; ; -------------------------------- ; khôûi taïo thôøi gian nhaáp nhaùy ~ 0.5s ; -------------------------------- ; BigDel clrf 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 " DO 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 48
  18. Phaàn IV: öùng duïng goto main movlw b'00000100'  Chöông trình cho IC2 call blink list p=16F84A ; list directive to btfss PORTA,0 define processor goto main #include ; movlw b'00010000' processor specific variable definitions call blink __CONFIG _CP_OFF & btfss PORTA,0 _WDT_OFF & _PWRTE_ON & goto main _XT_OSC movlw b'00100000' cblock 0x0c call blink TMP0 btfss PORTA,0 TMP1 goto main TMP2 movlw b'01000000' CNT call blink endc btfss PORTA,0 goto main org 0x00 movlw b'00100000' goto main call blink org 0x04 btfss PORTA,0 goto ISR goto main main movlw b'00010000' banksel TRISA call blink movlw b'00010001' ; RA0,RA4 is input btfss PORTA,0 movwf TRISA goto main movlw b'00001001'; RB0,RB3 = INPUT movlw b'00000100' movwf TRISB call blink banksel PORTA btfss PORTA,0 clrf PORTA goto main clrf PORTB movlw b'00000010' movlw b'10110010' call blink movwf OPTION_REG btfss PORTA,0 bsf INTCON,INTE goto main bsf INTCON,GIE movlw b'00000110' goto main call blink ISR btfss PORTA,0 bcf INTCON,INTF goto main btfss PORTB,3 movlw b'00010110' goto LED call blink btfsc PORTB,3 btfss PORTA,0 goto SERVO goto main LED movlw b'00110110' banksel PORTB call blink movlw b'00000010' btfss PORTA,0 call blink goto main btfss PORTA,0 49
  19. Phaàn IV: öùng duïng movlw b'01110110' SERVO call blink nop btfss PORTA,0 PHAI goto main movlw .2 movlw b'00110110' movwf CNT call blink movlw b'00001100' btfss PORTA,0 movwf PORTA goto main call DEL movlw b'00010110' btfss PORTA,0 call blink goto main btfss PORTA,0 call DEL goto main clrf PORTA movlw b'00000110' PH1 call blink movlw .12 btfss PORTA,0 movwf TMR0 goto main loop1 movlw b'00000010' btfsc TMR0,7 call blink goto Cont1 btfss PORTA,0 lp1 goto main bsf PORTA,2 movlw b'01010010' bsf PORTB,7 call blink btfss PORTA,0 btfss PORTA,0 goto main goto main goto loop1 movlw b'00100100' Cont1 call blink btfss TMR0,6 btfss PORTA,0 goto lp1 goto main goto Ctr movlw b'01010010' Ctr call blink decfsz CNT,1 btfss PORTA,0 goto PH1 goto main goto TRAI movlw b'00100100' TRAI call blink bcf PORTB,7 btfss PORTA,0 movlw b'00001100' goto main movwf PORTA movlw b'01010010' call DEL call blink btfss PORTA,0 btfss PORTA,0 goto main goto main call DEL movlw b'00100100' clrf PORTA call blink movlw .2 btfss PORTA,0 movwf CNT goto main TR1 goto LED movlw .12 50
  20. Phaàn IV: öùng duï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 51
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2