Professional Documents
Culture Documents
TH NGHIM VI X L - VI IU KHIN
BM K thut My tnh
2011
Mc Lc
Mc Lc .............................................................................................................................. 1 Bi 1 : Gii thiu MPLAB IDE v KIT PIC .................................................................. 1 1.1 Mi trng pht trin MPLAB ................................................................................. 1 1.2 Np file hex vo vi iu khin PIC........................................................................... 6 1.3 Debug dng MpLab SIM ........................................................................................ 10 1.4 Debug onchip dng Mplab ICD2............................................................................ 12 1.5 Bi tp ..................................................................................................................... 12 Bi 2 : Kho st cng xut nhp ................................................................................... 13 2.1 Kin thc lin quan................................................................................................. 13 2.1.1 Cc thanh ghi iu khin cng xut nhp ........................................................ 13 2.1.2 Kt ni mch .................................................................................................... 13 2.2 Cc bc hin thc yu cu 1 ................................................................................. 14 2.3 Chng trnh mu yu cu 1................................................................................... 16 2.4 Cc bc hin thc yu cu 2 ................................................................................. 17 2.5 Chng trnh mu yu cu 2................................................................................... 18 2.6 Bi tp ..................................................................................................................... 19 Bi 3 : Kho st c ch ngt qung, giao tip LCD k t ............................................ 21 3.1 Kin thc lin quan................................................................................................. 21 3.1.1 Tm tt cc thanh ghi iu khin ngt ............................................................. 21 3.2 Cc bc hin thc yu cu 1 ................................................................................. 22 3.3 Chng trnh mu yu cu 1................................................................................... 24 3.4 LCD k t 2x16 ...................................................................................................... 26 3.4.1 Hnh dng v ngha cc chn: ....................................................................... 26 3.4.2 T chc vng nh ca LCD............................................................................. 27 3.4.3 Cc lnh giao tip vi LCD ............................................................................. 30 3.4.4 Khi to LCD................................................................................................... 30 3.5 Cc bc hin thc yu cu 2 ................................................................................. 32 3.6 Bi tp ..................................................................................................................... 37 Bi 4 : Kho st b nh thi ........................................................................................ 37 4.1 Cc bc hin thc yu cu 1 ................................................................................. 38 4.2 Chng trnh mu ................................................................................................... 39 4.3 Bi tp ..................................................................................................................... 41 Bi 5 : K thut qut ma trn phm .............................................................................. 42 5.1 Kt ni mch ma trn phm..................................................................................... 42 5.2 Cc bc hin thc ................................................................................................. 43 5.3 Bi tp ..................................................................................................................... 47 Bi 6 : K thut qut LED ............................................................................................ 48 6.1 Cu to LED 7 on v LED ma trn ..................................................................... 48 6.2 Kt ni mch ........................................................................................................... 50 6.3 Cc thanh ghi lin quan v cch iu khin............................................................ 51 6.4 Cc bc hin thc. ................................................................................................ 54 6.5 Bi tp ..................................................................................................................... 57 Bi 7 : Kho st b truyn nhn ni tip ...................................................................... 58 7.1 Cc bc hin thc. ................................................................................................ 58
7.2 Chng trnh mu ................................................................................................... 60 7.3 Bi tp ..................................................................................................................... 62 Bi 8 : Kho st khi chuyn i A-D.......................................................................... 63 8.1 Cc bc hin thc ................................................................................................. 63 8.2 Bi tp ..................................................................................................................... 64 Bi 9 : Kho st cc khi chc nng c bit khc ...................................................... 65 9.1 Cc bc hin thc PWM....................................................................................... 65 9.2 Chng trnh mu ................................................................................................... 66 9.3 Bi tp ..................................................................................................................... 67
Bi 1 :
Ni dung : To project trn MPLAB IDE. Vit chng trnh ASM. Dch v np chng trnh vo vi iu khin PIC. Chy v g ri chng trnh. 1.1 Phn cng th nghim ICD2 v PICDEM 2 PLUS. B h tr lp trnh dng vi my tnh ICD2 (In-Circuit Debugger).
Cng ni tip ICD2 USB Ni vi card PICDEM Ni vi my tnh S kt ni ICD2
1. 2. 3. 4. 5. 6. 7. 8. 9.
cm DIP 18, 28 v 40 chn (c th cm 3 linh kin nhng ch dng 1 mi ln). n p +5V dng cho ngun 9V, 100 mA AC/DC hay pin 9V. u cm DB-9 theo chun giao tip RS-232. u cm qua b lp trnh In-Circuit Debugger (ICD). Bin tr 5K dng cho tn hiu nhp tng t. Ba nt nhn dng to tn hiu kch t bn ngoi v reset. LED ngun. Bn LED ch th cho PORTB. Jumper J6 ngt LED ch th RB0 (khi nhp tn hiu t nt nhn RB0). 1 Thc hnh Vi x l
B mn K Thut My Tnh
Trng H. Bch Khoa TP.HCM 10. B dao ng (OSC) 4 MHz. 11. Ni lp thm thch anh dao ng nu cn. 12. Thch anh dao ng 32.768 kHz to xung clock cho Timer1. 13. Jumper J7 ngt dao ng RC c sn (khong 2 MHz). 14. EEPROM ni tip 32K x 8 bit. 15. Mn hnh LCD. 16. Kn Piezo. 17. Vng lp thm linh kin. 18. Cm bin nhit TC74.
1.2 Mi trng pht trin MPLAB Bc 1. Chy phn mm MPLAB: Start_|All Programs_|Microchip_|MPLAB IDE v8.00_|MPLAB IDE. Bc 2. Chn Menu : Project_|Project Wirazd
B mn K Thut My Tnh
Thc hnh Vi x l
Chn th vin thng qua file .INC v .LKR thm vo project B mn K Thut My Tnh 3 Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM C:\Program Files\Microchip\MPASM Suite\LKR\18f4520.lkr C:\Program Files\Microchip\MPASM Suite\P18F4520.INC
B mn K Thut My Tnh
Thc hnh Vi x l
Bc 6. Thm file vo d n theo cc bc sau : Mt project n gin nht phi gm c 2 thnh phn Source files v Hearder Files. Th mc Source files cha file text *.asm hoc file *.c cha code lp trnh. Th mc Hearder Files cha file *.h hoc *.INC: file c sn ca microchip. Nu bn qun khng thm cc file cn c vo th lm theo hng dn sau : ADD header file: ( Copy header file vo th mc cha project tin cho vic s dng sau ny).
ca s la chn
Chn header file ph hp vi PIC mnh chn. Open. ADD source file: Click chn New trn toolbar: Ca s hin ln nh sau: T Menu bar chn File_|Save lu.
Thc hin Save, t tn vi ui .asm vo th mc cha d n. Nhp phi vo Source Files chn Add file >>> chn file chng ta va to xong. Chng ta hon tt vic thm file vo cc th mc Source files v Header files.
B mn K Thut My Tnh
Thc hnh Vi x l
Cng vic tip theo l vit code (trong ca s text editor ca source file). i vi project ln dng nhiu source file v header file, ta lm li qu trnh thm file vo d n nhiu ln. 1.3 Np file hex vo vi iu khin PIC Sau khi to c mt project, ta tin hnh build n to ra *.hex. C th m t cng vic nh sau: V d, ta c mt chng trnh cho PIC nh 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: 7 - 31 - 2009 ;=================================================== list p=18f4520 #include p18f4520.inc code 0 goto start ;vung dinh nghia du lieu udata ;vung dinh nghia cac chuong trinh con 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 By gi chng ta lu chng trnh va vit thnh BaiTN1.asm vo mt th mc to project pha trn. compile chng trnh ta vo menu Project_|Build All nh hnh bn di. B mn K Thut My Tnh 6 Thc hnh Vi x l
Nu vic build tht bi, nhng vic ny th khng mong mun, ta c thy kt qu nh hnh sau:
B mn K Thut My Tnh
Thc hnh Vi x l
Nu vic build thnh cng, chng trnh s dch BaiTN1.asm thnh BaiTN1.hex trong cng th mc chng trnh BaiTN1.asm. Sau khi c c file hex, cng vic tip theo l lm th no np c file Hex xung board. u tin, chn mch np bng cch vo menu Programmer_|Select Programmer_|Mplab ICD2 nh hnh sau :
Sau khi chn Mplab ICD2 xong th ta s thy giao din nh sau:
B mn K Thut My Tnh
Thc hnh Vi x l
Mt thao tc cn lm gip ta c th dch chng trnh, np v chy t ng l vo menu Programmer_|Settings_|Program chn mc Automatically nh hnh sau :
B mn K Thut My Tnh
Thc hnh Vi x l
Nu tht bi, xem thng tin bo li trong ca s Output khc phc v lm li t bc Build All. Trng hp thnh cng m chng trnh chy khng ng, ta phi s dng cng c Debugger tm li theo mt trong hai cch sau. 1.4 Debug dng MpLab SIM Bc 1. Chn Debugger bng menu Debugger_|Select Debugger_|Mplab SIM
Bc 2. Tham kho menu Debugger. Xut hin nhiu chc nng h tr debug.
T y ta c th m phng c chng trnh ca mnh mt cch d dng. Cc chc nng thng dng : Run (F9): chy chng trnh, chng trnh s chy lin tc n khi no c breakpoint th dng. Breakpoints (F2): to ra breakpoint ti v tr hin ti ca con tr (cng c th "double click" vo hng code mnh mong mun t Breakpoint). Step Into (F7): chy tng bc, vo trong chng trnh con (nu gp). Step Over (F8): chy tng bc, gi chng trnh con cng xem nh 1 bc. Reset: tr v u chng trnh. B mn K Thut My Tnh 10 Thc hnh Vi x l
Bc 3. Khi debug th ta cng cn phi bit gi tr ca cc thanh ghi cng nh b nh ca chip nh th no, xem c cc gi tr ny th chng ta qua menu View. xem c gi tr ca cc thanh ghi trong PIC ta chn menu View_|File registers s xut hin ca s nh hnh sau:
xem c gi tr ca cc thanh ghi SFR th ta chn View_|Special Function Registers s xut hin ca s nh hnh sau:
Hay xem mt v thanh ghi m ta quan tm th c th dng Watch xem bng cch vo menu View_|Watch th hnh sau s xut hin:
Mun xem thanh ghi no, ta ch vic chn thanh ghi tng ng trong combobox bn trn, sau nhn Add SFR.
B mn K Thut My Tnh
11
Thc hnh Vi x l
1.6 Bi tp
Ci tin chng trnh BaiTN1.asm khi nhn RA4 s thy 4 LED t RB3 n RB0 sng nh u ra mt b m 4 bit nh phn tng dn (mi ln nhn tng 1).
1.7 Bo co
Cc iu kin cn c tin hnh th nghim gm nhng g ? Cc bc cn lm np chng trnh ra card c chip vi iu khin. Cc bc cn lm tin hnh debug gi lp trn my hoc trn mch.
B mn K Thut My Tnh
12
Thc hnh Vi x l
Bi 2 :
Ni dung: Kho st hot ng ca nt nhn, LED. Kho st cc thanh iu khin cng xut nhp. Tnh ton thi gian thc thi lnh, vit chng trnh con lm nhim v delay. Vit chng trnh kim tra nt nhn v hin th kt qu kim tra ra LED. Yu cu: Vit chng trnh xut d liu ra 4 led n m t 0 -> 15 -> 0. Thi gian gia cc ln m ln 1 n v l 1s. Nhp d liu t nt nhn RA4. Khi nt RA4 c nhn th led n RB0 sng, khi khng nhn RA4 th led n RB0 tt.
B mn K Thut My Tnh
13
Thc hnh Vi x l
Mun cc LED sng, cc chn RBi tng ng phi ln mc 1. Ring LED D2 cn phi ni jumper J6 li mi sng c khi RB0=1. L do c jumper JP6 l do chn RB0 cn c dng lm ng nhp nt nhn RB0. Nh vy, lc no mun dng chn RB0 l ng xut LED th ng jumper JP6 li. Ngc li, h JP6 s dng RB0 lm ng nhp nt nhn. Cc nt nhn c kt ni nh sau:
Nt nhn RA4, RB0 khi c nhn s lm cho chn tng ng mc logic 0. Cn thit lp cc chn RA4 v RB0 l ng vo. B dao ng chnh l b dao ng ngoi tn s 4 MHz c kt ni nh sau:
B mn K Thut My Tnh
14
Thc hnh Vi x l
Bc 2. Include file p18f4520.inc vo file led_don.asm. Bc 3. Khi to PORTB l cng xut cc bit RB0-RB3. init clrf PORTB ; bcf TRISB,RB0 ; RB0 xut bcf TRISB,RB1 ; RB1 xut bcf TRISB,RB2 ; RB2 xut bcf TRISB,RB3 ; RB3 xut return Bc 4. To hm delay1ms c s dng bin delay (nh ngha trong udata) nh sau : udata delay res 1 ; nh ngha bin delay ... delay1ms ; Gn ng 1 ms vi xung clock 4 MHz clrf delay ; xa bin delay (vng lp 256 ln) dl_1 nop decfsz delay bra dl_1 return Bc 5. T y ta c th to ra c hm delay1s bng cch gi hm delay1ms 1000 ln delay1s movlw .4 movwf delay_1sa dl_2 movlw .250 ; bt u vng lp ngoi B mn K Thut My Tnh 15 Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM movwf call decfsz bra decfsz bra return delay_1sb delay1ms delay_1sb dl_3 delay_1sa dl_2
dl_3
; bt u vng lp trong ; kt thc vng lp trong (250 lan) ; kt thc vng lp ngoi (4 ln)
Bc 6. Vit chng trnh cho hm begin thc hin cc yu cu ca bi : begin incf LATB call delay1s bra begin ; lp li sau mi giy
; lap lai sau moi giay ; ; cau hinh RB0 xuat ; cau hinh RB1 xuat ; cau hinh RB2 xuat ; cau hinh RB3 xuat
B mn K Thut My Tnh
16
Thc hnh Vi x l
; Ham lam tre 1ms voi tan so dao dong 4MHz delay1ms ; Gan dung voi xung clock 4 MHz clrf delay ; xoa bien delay (vong lap 256 lan) dl_1 nop decfsz delay bra dl_1 return ; Ham lam tre 1s = 1000 x 1ms delay1s movlw .4 movwf delay_1sa dl_2 movlw .250 ; bat dau vong lap ngoai (4 lan) movwf delay_1sb dl_3 call delay1ms ; bat dau vong lap trong (250 lan) decfsz delay_1sb bra dl_3 ; ket thuc vong lap trong decfsz delay_1sa bra dl_2 ; ket thuc vong lap ngoai return end Sau khi c chng trnh mu ta thc hin vic compile chng trnh v np xung mch chy chng trnh nh hng dn chng 1.
B mn K Thut My Tnh
17
Thc hnh Vi x l
Bc 2. Include file p18f4520.inc vo file nut_nhan.asm. Bc 3. Khi to PORTB bit RB0 l cng xut (jumper JP6 ng) v PORTA bit RA4 l cng nhp. init clrf PORTB bcf TRISB,RB0 ; RB0 xut bsf TRISA,RA4 ; RA4 nhp return Bc 4. Vit chng trnh cho hm main thc hin yu cu ca bi main btfsc PORTA,RA4 ; ch n khi RA4 c nhn bra main bsf LATB,RB0 ; bt sng LED RB0 swoff btfss PORTA,RA4 ; ch n khi RA4 c nh bra swoff bcf LATB,RB0 ; tt LED RB0 bra main ; lp li qu trnh
bsf TRISA,RA4 ; RA4 nhap return end Sau khi c chng trnh mu ta thc hin vic compile chng trnh v np xung mch chy chng trnh nh hng dn chng 1.
2.6 Bi tp
a) Vit chng trnh khi nhn RA4 th cc led s sng m ln, mi ln nhn m ln 1 n v. b) Vit chng trnh sao cho mi ln nhn RA4 th 2 led tri v 2 led phi thay nhau sng. c) To hiu ng light river trn 4 led ca board mch starter kit. Nhn RA4 thay i chiu ca light river.
2.7 Bo co
Cn lm nhng g c th s dng cng giao tip song song? Gii thch ti sao dng LATB v PORTB lc ging nhau, lc khc nhau. Hy tnh thi gian chnh xc ca vng lp delay.
B mn K Thut My Tnh
19
Thc hnh Vi x l
B mn K Thut My Tnh
20
Thc hnh Vi x l
B mn K Thut My Tnh
21
Thc hnh Vi x l
Bc 2. Include file p18f4520.inc vo file interrupt.asm Bc 3. Khi to PortB l output s dng cc lnh clrf, bcf init clrf LATB ; RB1-RB3 la cong xuat movlw 0x0F
B mn K Thut My Tnh
22
Thc hnh Vi x l
movwf ADCON1 bsf TRISB,RB0 bcf TRISB,RB1 bcf TRISB,RB2 bcf TRISB,RB3 movlw .10 ; khoi dong bien delay=10 movwf delay return Bc 4. Khi to timer 0 to ngt 100 ms (vi xung clock 4 MHz, chn prescaler 2:1, s m 50000), cho ngt timer 0 c u tin thp. init_timer0 bsf RCON,IPEN ; cho phep uu tien ngat. bcf INTCON2,TMR0IP ; timer0 uu tien thap bcf INTCON,TMR0IF ; xoa co ngat timer0 bsf INTCON,TMR0IE ; cho phep ngat timer0 bsf INTCON,GIEH ; cho phep ngat uu tien cao bsf INTCON,GIEL ; cho phep ngat uu tien thap clrf T0CON ; prescaler 2:1 movlw HIGH (-50000) ; nap so dem 50000 cho timer0 movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON ; cho phep timer0 dem return Bc 5. Khi to ngt ngoi 0 tch cc cnh xung. i vi ngt ngoi INT1 v INT2, u tin ph thuc vo 2 bit INT1IP v INT2IP trong thanh ghi INTCON3. Cn vi ngt ngoi INT0 th u tin lun l cao. init_int0 bcf INTCON2,INTEDG0 ; tac dong canh xuong bcf INTCON,INT0IF ; xoa co ngat bsf INTCON,INT0IE ; cho phep ngat ngoai INT0 return Bc 6. Vit chng trnh cho ngt ngoi 0, bt 3 n led n cng sng v khi to li gi tr cho bin delay 1s sau th ngt timer s tt 3 n . int0_isr bcf INTCON,INT0IF bsf LATB,RB1 bsf LATB,RB2 bsf LATB,RB3 movlw .10 movwf delay return Bc 7. Vit chng trnh cho ngt timer0, sau 1s sau khi led c bt sng th n s lm cho led tt. Thi gian timer m ln 1 n v c tnh bng cng thc : t = (1/(Focs/4))*prescaler = (1/(4Mhz/4))*2) =2s
B mn K Thut My Tnh
23
Thc hnh Vi x l
Nh vy, mun c thi khong 100 ms (100000s), ta cn m 50000 ln. timer0_isr bcf INTCON,TMR0IF decfsz delay,1 bra timer0_isr_1 bcf LATB,RB1 bcf LATB,RB2 bcf LATB,RB3 movlw .10 movwf delay timer0_isr_1 bcf T0CON,TMR0ON movlw HIGH (-50000) ; nap lai so dem 50000 cho timer0 movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON ; cho phep timer0 dem lai return
call init_timer0 call init_int0 goto $ ; Ham khoi dong ban dau init clrf LATB ; RB1-RB3 la cong xuat movlw 0x0F movwf ADCON1 bsf TRISB,RB0 bcf TRISB,RB1 bcf TRISB,RB2 bcf TRISB,RB3 movlw .10 ; khoi dong bien delay=10 movwf delay return ; Ham khoi dong timer0 init_timer0 bsf RCON,IPEN ; cho phep uu tien ngat. bcf INTCON2,TMR0IP ; timer0 uu tien thap bcf INTCON,TMR0IF ; xoa co ngat timer0 bsf INTCON,TMR0IE ; cho phep ngat timer0 bsf INTCON,GIEH ; cho phep ngat uu tien cao bsf INTCON,GIEL ; cho phep ngat uu tien thap clrf T0CON ; prescaler 2:1 movlw HIGH (-50000) ; nap so dem 50000 cho timer0 movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON ; cho phep timer0 dem return ; Ham khoi dong int0 init_int0 bcf INTCON2,INTEDG0 ; tac dong canh xuong bcf INTCON,INT0IF ; xoa co ngat bsf INTCON,INT0IE ; cho phep ngat ngoai INT0 return ; Ham xu ly ngat timer0 timer0_isr bcf INTCON,TMR0IF decfsz delay,1 bra timer0_isr_1 bcf LATB,RB1 bcf LATB,RB2 bcf LATB,RB3 movlw .10 movwf delay timer0_isr_1
B mn K Thut My Tnh
25
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM bcf T0CON,TMR0ON movlw HIGH (-50000) movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON return ; Ham xu ly ngat int0 int0_isr bcf INTCON,INT0IF bsf LATB,RB1 bsf LATB,RB2 bsf LATB,RB3 movlw .10 movwf delay return ; Ham xu ly ngat uu tien cao isr_high call int0_isr retfie ; Ham xu ly ngat uu tien thap isr_low call timer0_isr retfie end
Sau khi c chng trnh mu ta thc hin vic compile chng trnh v np xung mch chy chng trnh nh hng dn chng 1.
Tn chn GND
Mc logic -
M t t (0V)
B mn K Thut My Tnh
26
Thc hnh Vi x l
Ngun (+5V) Chnh contrast (0 VCC) 0 D0-D7 l gi tr lnh 1 D0-D7 l gi tr d liu 0 Ghi gi tr vo LCD R/W 1 c gi tr ra t LCD 0 Cm truy xut LCD E 1 LCD hot ng trao i d liu T 1 xung 0 D liu/Lnh a vo LCD 0/1 Bit 0/LSB D0 0/1 Bit1 D1 0/1 Bit2 D2 0/1 Bit3 D3 0/1 Bit4 D4 0/1 Bit5 D5 0/1 Bit6 D6 0/1 Bit7/MSB D7 Chn Anode ca n nn A Chn Cathode ca n nn K 3.4.2 T chc vng nh ca LCD Display Data Ram (DDRAM): lu tr m k t hin th ra mn hnh. M ny ging vi m ASCII. C tt c 80 nh DDRAM. Vng hin th tng ng vi ca s gm 16 nh hng u tin v 16 nh hng th hai. Chng ta c th to hiu ng dch ch bng cch s dng lnh dch (m t sau), khi ca s hin th s dch em li hiu ng dch ch.
Character Generator Ram (CGRAM): lu tr tm mu k t do ngi dng nh ngha. Tm mu k t ny tng ng vi cc m k t D7-D0 = 0000*D2D1D0 (* mang gi tr ty nh 0 hay 1).
B mn K Thut My Tnh
27
Thc hnh Vi x l
B mn K Thut My Tnh
28
Thc hnh Vi x l
Chng ta mun hin th ch CE gia hng u tin, gi s ca s hin th ang bt u t v tr u tin (hng th nht hin th d liu ca nh t 0x00 n 0x0f, hng th hai hin th d liu ca nh t 0x40 n 0x4f, y l v tr home). Gi tr ca nh 0x07 l 0x43 (k t C), ca nh 0x08 l 0x45 (k t E). Chng ta mun hin th ch gi hng th hai, gi s c s hin th ang v tr home. Trong bng mu k t chng ta thy khng c mu . Lc ny chng ta phi nh ngha mu 5x8 im, gm c 8 byte, sau lu vo v tr ca mu k t CGRAM th nht. Lc ny gi tr ca nh 0x47 l 0x00 hoc 0x08 (v tr ca mu k t CGRAM th nht ).
B mn K Thut My Tnh
29
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM 3.4.3 Cc lnh giao tip vi LCD Lnh Clear display Return home Entry mode set Display on/off control Cursor/Display shift Function set RS 0 0 0 0 0 0 RW 0 0 0 0 0 0 D7 0 0 0 0 0 0 D6 0 0 0 0 0 0 D5 0 0 0 0 0 1 D4 0 0 0 0 1 DL D3 0 0 0 1 S/ C N D2 0 0 1 D R/ L F
D1 0 1
D0 1 *
Thi gian thc thi 1.52ms 1.52ms 37s 37s 37s 37s
I/D SH C * * B * *
Set CGRAM 0 0 0 1 CGRAM address 37s address Set DDRAM 0 0 1 DDRAM address 37s address Read BUSY flag 0 1 BF DDRAM address 0s (BF) Write to DDRAM or 1 0 D7 D6 D5 D4 D3 D2 D1 D0 43s CGRAM Read from DDRAM or 1 1 D7 D6 D5 D4 D3 D2 D1 D0 43s CGRAM Cc bit trn bng tm tt cc lnh c ngha nh sau: 1 Increment 0 Decrement I/D 1 Entire shift on 0 Entire shift off SH 1 Display shift 0 Cursor move S/C 1 Shift to the Right 0 Shift to the Left R/L 1 8 bits 0 4 bits DL 1 2 Lines 0 1 Lines N 1 5x10 dots Font 0 5x8 dots Font F 1 Internally operating 0 Can accept instruction BF Trn kit th nghim LCD k t 2x16 c kt ni vo Port D ch 4 bit. ch 4 bit, c hay ghi mt byte phi tin hnh ci d liu hai ln, ln u l 4 bit cao, ln th hai l 4 bit thp. 3.4.4 Khi to LCD S kt ni LCD:
B mn K Thut My Tnh
30
Thc hnh Vi x l
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
LCD k t 2x16
Trc khi xut k t ra mn hnh LCD, LCD controller phi c khi to khi mi c cp ngun. Trnh t khi to nh lc sau. Trn lc , lnh Display clear c gi tr 0x01 c gi hai ln, ln u l 4 bit cao c gi tr 0x0, ln th hai l bn bit thp c gi tr 0x01. Lnh Function set gi hai ln gi tr 0x2.
B mn K Thut My Tnh
31
Thc hnh Vi x l
Ch ti thiu 39s
Gi lnh Entry mode set Ch ti thiu 39s RS RW D7 0 Gi lnh Display on/off control RS RW D7 0 0 0 0 0 1 D6 0 D D5 0 C D4 0 B Kt thc khi to 0 0 0 0 0 D6 0 1 D5 0 I/D D4 0 SH
B mn K Thut My Tnh
32
Thc hnh Vi x l
Bc 2. Include file p18f4520.inc vo file lcd.asm Bc 3. Da vo s nguyn l kt ni vi iu khin vi LCD k t ta define li d dng s dng hn. #define LCD_D4 LATD, RD0 ; LCD data bits #define LCD_D5 LATD, RD1 #define LCD_D6 LATD, RD2 #define LCD_D7 LATD, RD3 #define LCD_D4_DIR TRISD, RD0 ; LCD data bits #define LCD_D5_DIR TRISD, RD1 #define LCD_D6_DIR TRISD, RD2 #define LCD_D7_DIR TRISD, RD3 #define #define #define #define #define #define LCD_E LCD_RW LCD_RS LATD, RD6 LATD, RD5 LATD, RD4 ; LCD E clock ; LCD read/write line ; LCD register select line
#define LCD_INS 0 #define LCD_DATA 1 Bc 4. Vit hm xut d liu 4 bit ra cho LCD k t : LCDWriteNibble btfss STATUS, C bcf LCD_RS btfsc STATUS, C bsf LCD_RS B mn K Thut My Tnh 33
Thc hnh Vi x l
bcf LCD_RW ; Set write mode bcf LCD_D4_DIR ; Set data bits to outputs bcf LCD_D5_DIR bcf LCD_D6_DIR bcf LCD_D7_DIR nop ; Small delay nop bsf LCD_E ; Setup to clock data nop nop btfss temp_wr, 7 ; Set high nibble bcf LCD_D7 btfsc temp_wr, 7 bsf LCD_D7 btfss temp_wr, 6 bcf LCD_D6 btfsc temp_wr, 6 bsf LCD_D6 btfss temp_wr, 5 bcf LCD_D5 btfsc temp_wr, 5 bsf LCD_D5 btfss temp_wr, 4 bcf LCD_D4 btfsc temp_wr, 4 bsf LCD_D4 nop ; Small delay nop bcf LCD_E ; Send the data return Bc 5. Tip tc ta vit hm truyn lnh (command) cho lcd k t. Macro LCDWrite_command c mt i s l data, ta dng i s ny truyn lnh cho lcd. y, LCD ta thit lp ch 4 bt nn khi truyn lnh n cng ch cn 4 bit iu khin. Trong macro ny data1 ch s dng 4 bit cao m thi. LCDWrite_command macro data1 bcf LCD_RS ;write command movlw data1 movwf temp_wr call LCDWriteNibble movlw 0xF movwf delay rcall DelayXCycles endm Bc 6. Sau vit thm hm truyn d liu hin th ra LCD k t. Macro LCDWrite_data c mt i s l data1, ta dng macro vi i s tng ng truyn data hin th ln mn hnh LCD. Nh trn ta cp, trong ng dng ny ta s
B mn K Thut My Tnh
34
Thc hnh Vi x l
dng LCD ch 4 bt, nn data y c truyn theo th t l 4 bit cao truyn trc sau 4 bt thp c truyn sau. LCDWrite_data macro data1 bsf LCD_RS ;write data movff data1,temp_wr rcall LCDBusy bsf STATUS, C rcall LCDWrite movlw 0x0F ;Wait ~100s @ 20 MHz movwf delay rcall DelayXCycles endm Bc 7. Hm quan trng nht ca LCD k t chnh l hm khi to LCD. Trc khi s dng c lcd ta phi khi to cho n theo nh gin khi to lcd trn phn hng dn l thuyt. Ngoi ra do thit k mch, LCD c th hin th bnh thng trc tin ta phi bt ngun ca LCD ln, chn ngun ca LCD c iu khin bi PortD.7 tch cc mc cao, nn trc khi mun s dng LCD ta phi bt PortD.7 ln 1. LCDInit1 call init_variable bsf LATD, RD7 bcf TRISD, RD7 bcf LCD_E_DIR ;configure control lines bcf LCD_RW_DIR bcf LCD_RS_DIR movlw b'00001110' movwf ADCON1 movlw 0xff ; Wait ~15ms @ 20 MHz movwf COUNTER lil11 movlw 0xFF movwf delay rcall DelayXCycles decfsz COUNTER,F bra lil11 LCDWrite_command 0x20 LCDWrite_command 0x20 LCDWrite_command 0x80 LCDWrite_command 0x00 LCDWrite_command 0xf0 LCDWrite_command 0x00 LCDWrite_command 0x10 call LongDelay ;2ms call LongDelay ;2ms LCDWrite_command 0x00 LCDWrite_command 0x20
B mn K Thut My Tnh
35
Thc hnh Vi x l
call Lcd_clear return Bc 8. n y ta c th vit chng trnh hin th k t ln lcd k t. tng thc hin y l lc u ta khai bo mt vng nh gm 32 nh tng ng vi 32 v tr trn lcd k t. Hm lcd_display ca chng ta s thc hin mt vic n gin l ly d liu cha trong vng nh ny ra hin th ln lcd k t. Cn ngi dng mun hin th ln lcd th ch cn update gi tr vo vng nh ny l xong. Lcd_display movff INDF0,temp_wr1 movlw .0 cpfseq temp_wr1 goto Lcd_display1 movlw 0x20 movwf temp_wr1 Lcd_display1 LCDWrite_data temp_wr1 incf FSR0L clrf WREG addwfc FSR0H, F movlw .0 cpfseq flag_line goto Lcd_display_line2 ;display line1 incf index_of_lcd molw MAX_INDEX cpfseq index_of_lcd goto Exit_Lcd_display clrf Index_of_lcd movlw .1 movwf flag_line Set_cursor .0,.1 goto Exit_Lcd_display ;display line2 Lcd_display_line2 incf index_of_lcd movlw MAX_INDEX cpfseq index_of_lcd goto Exit_Lcd_display clrf Index_of_lcd movlw .0 movwf flag_line movlw HIGH Lcd_buffer movwf FSR0H movlw LOW Lcd_buffer movwf FSR0L
B mn K Thut My Tnh
36
Thc hnh Vi x l
3.6 Bi tp
a) Vit chng trnh kim tra pht hin rung phm RA4. b) Vit chng trnh chy ch qua LCD. c) Vit chng trnh thay i ch hin th trn LCD khi nhn nt.
3.7 Bo co
a) B cc ca chng trnh c s dng ngt qung. b) Dng ngt ngoi c trng thi nt nhn RA4 c b rung khng ? Lm sao bit chng rung ?
B mn K Thut My Tnh
37
Thc hnh Vi x l
Bi 4 :
Kho st b nh thi
Ni dung: Kho st cc ch hot ng ca cc b nh thi. Kho st cc thanh ghi iu khin b nh thi. S dng b nh thi trong chng trnh. Yu cu: S dng b timer0 c sau 1s m ln 1 n v ri xut gi tr ra led n. Vit chng trnh s dng b nh thi lm ng h iu khin n giao thng.
Trng H. Bch Khoa TP.HCM ; Initializing timer 0: 16BIT ;=====================; init_timer0 bsf RCON,IPEN bcf INTCON2,TMR0IP bcf INTCON,TMR0IF bsf INTCON,TMR0IE bsf INTCON,GIEH bsf INTCON,GIEL clrf T0CON movlw HIGH (-50000) movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON return
; cho php dng u tin ngt. ; ngt timer0 u tin thp ; xa c bo ngt timer0 ; cho php ngt timer0 ; cho php ngt u tin cao ; cho php ngt u tin thp ; prescaler 2:1 ; np s m 50000 cho timer0
Bc 6. Vit chng trnh con chy trong timer, sau 1s tng gi tr hin th ra ngoi led n. V c 100ms th c ngt mt ln, do sau 1s ta tng ln mt gi tr th cn 10 ln ngt nh vy, nn ban u ta phi khi to cho bin delay = 10. V y l hm chnh thc hin chc nng ca bi tp 1. timer0_isr bcf INTCON,TMR0IF decfsz delay ; m s ln xy ra ngt bra timer0_isr_1 ; cha , chuyn i incf LATB ; tng PORTB ln 1 movlw .10 ; np li bin m s ln ngt xy ra movwf delay ; 10 x 100 ms = 1s timer0_isr_1 bcf T0CON,TMR0ON movlw HIGH (-50000) ; np li s m 50000 cho timer0 movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON ; cho php timer0 m li return
Trng H. Bch Khoa TP.HCM #include p18f4520.inc code 0 goto main org 0x000008 goto isr_high org 0x000018 goto isr_low ; Vung du lieu udata delay res 1 ; Vung bat dau code PRG code main call init call init_timer0 goto $ ; Ham khoi dong ban dau init clrf PORTB clrf TRISB return
;===========================================; ; Khoi dong Timer0 dem 16 bit. ; De tinh thoi khoan tao ra boi Timer0, ta can biet mot so diem ; 1. Tan so xung clock ngoi: 4Mhz ; 2. Thong so dem truoc Timer0 : 1:2 ; thoi gian tao ra ngat tu Timer0 = 1/((FOSC /4)*2) = 2s ;===========================================; init_timer0 bsf RCON,IPEN ; cho phep uu tien ngat. bcf INTCON2,TMR0IP ; timer0 uu tien thap bcf INTCON,TMR0IF ; xoa co ngat timer0 bsf INTCON,TMR0IE ; cho phep ngat timer0 bsf INTCON,GIEH ; cho phep ngat uu tien cao bsf INTCON,GIEL ; cho phep ngat uu tien thap clrf T0CON ; prescaler 2:1 movlw HIGH (-50000) ; nap so dem 50000 cho timer0 movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON ; cho phep timer0 dem return ;===============================================; ; chuong trinh phuc vu ngat quang uu tien cao ;===============================================;
B mn K Thut My Tnh
40
Thc hnh Vi x l
retfie ;===============================================; ; Chuong trinh phuc vu ngat quang uu tien thap ;===============================================; isr_low call timer0_isr retfie ;===============================================; ; Chuong trinh phuc vu ngat quang Timer0 ;===============================================; timer0_isr bcf INTCON,TMR0IF decfsz delay,1 bra timer0_isr_1 incf LATB movlw .10 movwf delay timer0_isr_1 bcf T0CON,TMR0ON movlw HIGH (-50000) ; nap lai so dem 50000 cho timer0 movwf TMR0H movlw LOW (-50000) movwf TMR0L bsf T0CON,TMR0ON ; cho phep timer0 dem lai return end
4.3 Bi tp
a) Lm li bi th nghim nhng s dng Timer1 thay v Timer0. b) Dng b nh thi to xung vung chu k 10ms, duty cycle 30%. c) Thc hin yu cu 2 ca bi th nghim dng timer iu khin n giao thng.
4.4 Bo co
a) Gii thch ngha cng thc tnh thi gian ca Timer. Nu dng prescaler 16:1 th cn chnh cc thng s no trong bi th nghim thi gian khng i. b) Ti sao phi dng s m m (-50000)? c) Xc nh thi gian chnh xc khi dng ngt thi gian trong bi th nghim.
B mn K Thut My Tnh
41
Thc hnh Vi x l
Bi 5 :
Ni dung: Kho st cu to, hot ng ca ma trn phm. Tm hiu k thut ly d liu t ma trn phm, chng rung phm nhn. Yu cu: Vit chng trnh ly d liu t phm nhn sau hin th gi tr ca phm nhn ra led n.
ROW1
ROW2
ROW3
ROW4
COL2 1 3 5 7 9 11
COL3 2 4 6 8 10 12
RD1 RD0 RD3 RD2 RD5 RD4 RD7 RD6 RE1 RE0 GNDVCC CON12A
Ma trn phm gm 16 phm nhn kt ni chung 4 hng v 4 ct. Bn ct COL1-COL4 ni vo bn bit thp ca Port D D0-D3. Bn hng ROW1-ROW4 ni vo bn bit cao ca Port D D4-D7. Bn ct c ni vi in tr ko ln m bo mc logic 1 khi phm khng c nhn.
B mn K Thut My Tnh
42
Thc hnh Vi x l
Bc 2. nh code vo tp tin Key.asm theo dng "Relocatable". Bc 3. Define cc port tng ng vi hng v ct ca ma trn phm d s dng sau ny. Da vo s mch ta nh ngha nh sau: B mn K Thut My Tnh 43 Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM #define #define #define #define #define #define #define #define COLUMN_1 COLUMN_2 COLUMN_3 COLUMN_4 ROW_1 ROW_2 ROW_3 ROW_4 PORTD, 0 PORTD, 1 PORTD, 2 PORTD, 3 PORTD, 4 PORTD, 5 PORTD, 6 PORTD, 7
Bc 4. Khi to input v output cho cc port tng ng. y column l output, cn row l input. Portb dng hin th led n cng c cu hnh l output. INIT_IO ;assigning PORTB is a digital output MOVLW 0x0F MOVWF ADCON1 ; setup portb for outputs CLRF TRISB CLRF PORTB MOVLW 0x0F MOVWF TRISD MOVLW 0xFF MOVWF PORTD RETURN Bc 5. Khi to timer, phn ny chng ta hc t chng 4, ta c th c mt hm khi to timer n gin nh sau: 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 Bc 6. Vit hm Get_key vi 2 i s. i s th nht c tn l temp_wr, chnh l gi tr output tng ng vi cc ct ca ma trn phm, i s th 2 c tn l col chnh l gi tr bt u ca mi ct. V d ct 1 th gi tr bng 0, ct 2 th gi tr bng 1, ct 3 th gi tr bng 2 v ct 4 th gi tr bng 3. GET_KEY BTFSS temp_wr, 0
B mn K Thut My Tnh
44
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM BCF BTFSS BSF BTFSS BCF BTFSS BSF BTFSS BCF BTFSS BSF BTFSS BCF BTFSS BSF COLUMN_1 temp_wr, 0 COLUMN_1 temp_wr, 1 COLUMN_2 temp_wr, 1 COLUMN_2 temp_wr, 2 COLUMN_3 temp_wr, 2 COLUMN_3 temp_wr, 3 COLUMN_4 temp_wr, 3 COLUMN_4
BTFSC PORTD,4 ;BIT TEST F, SKIP IF SET GOTO NEXT_BUTTON_1 MOVLW .0 MOVWF KeyReg1 GOTO EXIT_GET_KEY NEXT_BUTTON_1 BTFSC GOTO MOVLW MOVWF GOTO NEXT_BUTTON_2 BTFSC GOTO MOVLW MOVWF GOTO NEXT_BUTTON_3 BTFSC GOTO MOVLW MOVWF PORTD,5 ;BIT TEST F, SKIP IF SET NEXT_BUTTON_2 .4 KeyReg1 EXIT_GET_KEY PORTD,6 ;BIT TEST F, SKIP IF SET NEXT_BUTTON_3 .8 KeyReg1 EXIT_GET_KEY PORTD,7 ;BIT TEST F, SKIP IF SET NEXT_BUTTON_2 .12 KeyReg1
EXIT_GET_KEY MOVFF COL,W ADDWF KeyReg1,d RETURN Bc 7. Da vo hm Get_key trn ta c th hon thin hm Scan_button mt cch d dng. y ta nhc li cch m s l phm nhn d liu ngc tr v l ti
B mn K Thut My Tnh
45
Thc hnh Vi x l
mt thi im ch cho mt ct c tch cc ( y l mc 0) sau c ngc gi tr t cc hng. Hng 1 tng ng vi ct 1 l s 0, tng t hng 2 vi ct 1 l s 4 Khi nhn phm th s c hin tng rung phm, gii quyt trng hp ny ta c mt cch gii quyt y l c d liu 3 ln lin tip mi ln cch nhau 10ms, sau so snh 3 gi tr c c. Nu 3 gi tr bng nhau th ta xem nh c mt nt nhn c nhn. Trong hm Scan_button ta dng 3 bin KeyReg1, KeyReg2 v KeyReg3 lu gi tr ca 3 ln c d liu lin tip, khi kim tra 3 bin ny c gi tr bng nhau th ta s lu vo bin KeyReg v xut d liu ra PORTB. Scan_button MOVFF KeyReg2,KeyReg3 MOVFF KeyReg1,KeyReg2 MOVLW MOVWF MOVLW MOVWF CALL MOVLW MOVWF MOVLW MOVWF CALL MOVLW MOVWF MOVLW MOVWF CALL MOVLW MOVWF MOVLW MOVWF CALL MOVFF CPFSEQ GOTO CPFSEQ GOTO MOVFF CPFSEQ GOTO 0x0E temp_wr .0 COL GET_KEY 0x0D temp_wr .1 COL GET_KEY 0x0B temp_wr .2 COL GET_KEY 0x07 temp_wr .3 COL GET_KEY KeyReg1,W KeyReg2 EXIT_SCAN_BUTTON KeyReg3 EXIT_SCAN_BUTTON KeyReg,W KeyReg1 Scan_button1
B mn K Thut My Tnh
46
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM GOTO Scan_button1 MOVFF CALL EXIT_SCAN_BUTTON KeyReg1,KeyReg Button_process
EXIT_SCAN_BUTTON RETURN Bc 8. Nh gii thut trn ni l c mi 10ms th ta c d liu mt ln, cho iu ny c thc hin d dng th ta phi dng n interrupt timer. Ta khi to mt interrupt timer c sau 10ms th interrupt mt ln. lm c iu ny cc bn c th xem li chng timer c th lm vic mt cch d dng. y ch gii thiu cho cc bn l hm Timer0_routine, hm ny c gi trong interrupt timer v trong hm ny ta gi hm Scan_button trn. TIMER0_ROUTINE BCF BCF MOVLW MOVWF MOVLW MOVWF BSF CALL RETURN INTCON,TMR0IF T0CON,TMR0ON 0x3c TMR0H 0xaf TMR0L T0CON,TMR0ON SCAN_BUTTON
5.3 Bi tp
a) Ci tin hm chng rung phm, khi nhn 1 phm th phi sau 1 thi gian TimeOutForKey th mi tch cc phm nhn . b) Vit ng dng ng h casio n gin (hin th gi, ngy, cho php chnh sa ngy gi) s dng ma trn phm v LCD.
B mn K Thut My Tnh
47
Thc hnh Vi x l
Bi 6 :
Ni dung: Kho st cu to, hot ng ca LED 7 on, LED ma trn. Tm hiu k thut qut LED 7 on v LED ma trn. Yu cu: Vit chng trnh cho php hin th gi tr ra led 7 on v led ma trn.
LED 7 on c hai loi l Common Anode v Common Cathode, tng ng cc LED ni chung Anode hay ni chung Cathode.
Common Anode Common Cathode
B mn K Thut My Tnh
48
Thc hnh Vi x l
Cc LED trn cng mt hng ni chung Anode, cc LED cng loi trn cng mt ct ni chung Cathode.
B mn K Thut My Tnh
49
Thc hnh Vi x l
6.2 Kt ni mch
ENABLE_LED1 3 8 3 LED1 A 7 B 6 C 4 D 2 E 1 F 9 G 10 DOT 5 LED2 A 7 B 6 C 4 D 2 E 1 F 9 G 10 DOT 5 ENABLE_LED2 8 3 LED3 A 7 B 6 C 4 D 2 E 1 F 9 G 10 DOT 5 ENABLE_LED3 8 3 Vcc LED4 A 7 B 6 C 4 D 2 E 1 F 9 G 10 DOT 5 ENABLE_LED4 8
Vcc
Vcc
Vcc
Vcc
Vcc
Vcc
a b c d e f g dot
8.
Green.1
a b c d e f g dot
8.
Green.2 Row.2 Red.2
a b c d e f g dot
8.
Green.4 Row.4 Red.4
a b c d e f g dot
8.
led7
led7 Green.3
led7
led7
Row.1
24 GR1
23 RD1
22 RW1
21 GR2
20 RD2
19 RW2
18 GR3
17 RD3
Row.3
Red.1
Red.3
16 RW3
15 GR4
14 RD4
13 RW4
LED 8x8x2
ML1
RW5
RW6
RW7
1 Green.5
3 Row.5
4 Green.6
6 Row.6
7 Green.7
9 Row.7
10 Green.8
11
12 Row.8
Red.5
Red.6
Red.7
Mch LED m rng gm c 4 LED 7 on v 1 LED ma trn hai mu xanh . Mch c ni vo mt phn ca Port PICtail. D liu c dch ni tip v c ci bi IC 74HC595, TPIC6595. Module SPI ca PIC m nhn vic dch d liu ni tip thng qua chn d liu SDO v chn clock dch SCK. Sau khi dch 4 byte, tn hiu LATCH chuyn t mc 0 ln mc 1 s y d liu ca 4 byte tm ra 4 byte ng ra QA-QH tng ng. Tn hiu CLR_DISP tch cc mc 0 khng cho php hin th.
B mn K Thut My Tnh
50
Red.8
RW8
GR5
GR6
GR7
GR8
RD5
RD6
RD7
RD8
Thc hnh Vi x l
Vcc
RCLK DRAIN0 SRCLK DRAIN1 DRAIN2 SRCLR DRAIN3 G DRAIN4 DRAIN5 DRAIN6 DRAIN7
U2 SDI
TPIC6595 SDO
18 4 5 6 7 14 15 16 17 100 100 100 100 100 100 100 100 R9 R10 R11 R12 R13 R14 R15 R16 Green.1 Green.2 Green.3 Green.4 Green.5 Green.6 Green.7 Green.8
RCLK DRAIN0 SRCLK DRAIN1 DRAIN2 SRCLR DRAIN3 G DRAIN4 DRAIN5 DRAIN6 DRAIN7
SDO SCK
U3 SDI
TPIC6595 SDO
18 4 5 6 7 14 15 16 17 330 330 330 330 330 330 330 330 R17 R18 R19 R20 R21 R22 R23 R24 A B C D E F G DOT
LATCH CLR_DISP
RCLK DRAIN0 SRCLK DRAIN1 DRAIN2 SRCLR DRAIN3 G DRAIN4 DRAIN5 DRAIN6 DRAIN7
VCC
12 11 10 9 8 7 6 5 4 3 2 1
PICtail RA3 RC5 RC4 RC3 RA0 RA1 RA2 RC0 RC1 RC2 +5V GND CON12
14 12 11 10 13
U4 SDI
74HC595 SDO QA QB QC QD QE QF QG QH
9 15 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 10
U3
VCC 18 17 16 15 14 13 12 11 Row.1 Row.2 Row.3 Row.4 Row.5 Row.6 Row.7 Row.8 ENABLE_LED1 ENABLE_LED2 ENABLE_LED3 ENABLE_LED4
V+
COM UDN2981
B mn K Thut My Tnh
51
Thc hnh Vi x l
Vi s mch trn, mi ln c mt hng LED LED ma trn hay mt con LED 7 on hin th d liu. Li dng hin tng lu nh ca mt, d liu ca mi hng LED ma trn hay mi con LED 7 on c xut ra tun t hng (con) ny n hng (con) khc, chng ta s thy c hnh nh ca c mn hnh ma trn LED hay ca c 4 con LED 7 on. Khi tt c cc hng LED ma trn v tc c cc con LED 7 on c hin th (qut) qua mt ln, ta ni hin th mt frame. mt khng cm thy hnh nh b rung th s ln hin th frame trong mt giy phi ln hn 24 ln (thng l 30 ln). u tin tn hiu CLR_DISP tch cc (mc 0) khng cho LED hin th, sau dch bn byte d liu, tn hiu LATCH chuyn t mc 0 ln mc 1 a d liu mong mun sn sn ng ra, cui cng a tn hiu CLR_DISP ln mc 1 cho php LED hin th d liu mong mun. C nh vy lp li chu trnh ny. B mn K Thut My Tnh 52 Thc hnh Vi x l
Bn byte d liu c dch ra mi ln c ngha tng ng l d liu ca mt hng LED , d liu ca mt hng LED xanh, d liu ca mt con LED 7 on, iu khin hng (con) LED no hin th. Cch iu khin c minh ha thng qua hnh sau :
RED LED data 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 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 0 0 1 1 1 1 1 1 0 GREEN LED data 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7SEG 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 Control 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
7SEG
Control
a f 0 0 g e d a f 0 0 g e d a f 0 0 g e d a f 0 0 g e d c p e b f c p e b f c p e b f c p e b f
a b g c d a b g c d a b g c d a b g c d p e f p e f p e f p e f
a b g c d a b g c d a b g c d a b g c d p e f p e f p e f p e f
a b g c d a b g c d a b g c d a b g c d p
0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Gi tr ca byte control ch cha nhiu nht mt bit 1. Nh hnh v, cn 12 ln xut d liu (4 byte) cho 1 frame gm c LED ma trn v LED 7 on, 8 ln xut d liu cho 1 frame gm ch c LED ma trn (khng quan tm ni dung hin th LED 7 on), 4 ln
B mn K Thut My Tnh
53
Thc hnh Vi x l
xut d liu cho 1 frame gm ch c LED 7 on(khng quan tm ni dung hin th LED ma trn).
Bc 2. Include file p18f4520.inc vo file Led_matran.asm Bc 3. Khai bo cc buffer cn thit vit driver cho led. V y ta vit driver nn mi ngi khi s dng nhng module ny s khng s dng nhng hm m chng ta vit trong ny ch c th thao tc trn cc buffer m thi. GREEN_SCREEN_BUFFER RES .8 RED_SCREEN_BUFFER RES .8 SEVEN_LED_BUFFER RES .8 COLUMN_BUFFER RES .8 INDEX_OF_BUFFER RED_DATA GREEN_DATA SEVEN_LED_DATA COLUMN_DATA RES RES RES RES RES .1 .1 .1 .1 .1
Bc 4. Ngoi ra nhn vo mch ta c th d dng nhn thy c rng d liu ca chng ta c truyn theo kiu truyn ng b ni tip, chnh xc hn y ngi ta s dng chc nng SPI truyn d liu. Do ta phi cu hnh cho chip lm sao c th hot ng c ch SPI ny. INIT_SPI CLRF SSPCON1 ;SET Fspi = f/4 BSF SSPCON1,5 ;ENALBLE SPI MODE BCF TRISC,5 BCF TRISC,3 RETURN
B mn K Thut My Tnh
54
Thc hnh Vi x l
Trn y ta mi ch khi to module SPI n c th hot ng nhng nhn li s mch ta li thy c thm vi kt ni na t vi iu khin ra IC74595. IC ny hot ng c th ta cn thm mt chn to clock c th chuyn d liu ni tip ra song song ca IC ny. Ta define thm cho chn Latch ca IC 74595. #define LATCH_DIR TRISA,1 #define LATCH_DATA PORTA,1 ng thi khi to cc PORT lin quan: INIT MOVLW 0x0F MOVWF ADCON1 BCF LATCH_DIR BCF LATCH_DATA CLRF INDEX_OF_BUFFER RETURN Bc 5. Ngoi ra thc hin c bi ny khng th no thiu timer c, v hin th ra led ma trn ta phi qut tng ct led trn ma trn led. Khi nhn vo cu to ca ma trn led ta thy hin th c mt hnh g trn ma trn led th ta phi qut led, v ti mt thi im ch c th hin th mt ct led m thi. Nh vo hin tng lu nh mt m khi qut vi tn s cao th mt ta s thy nh l ct sng ch khng phi chp nhy na. Vy lm sao bit c ta qut led vi tn s bao nhiu l hp l. Nh trong phim nh khi xem phim thc cht ta bit l n ang chy vi tn s l 24 hnh /s. y ta cng gi s nh vy, c mn hnh ca led cng chp nhy vi tn s l 24 hnh/s, m mi hnh ta phi qut 8 ln v c 8 ct. T ta c th suy ra tn s ta cn phi qut cho mi ct l 8x24 ln/s. T y ta c th d dng tnh c timer ca chng ta cn bao nhiu c th qut led c mt cch d dng. 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 Bc 6. Ban u ta khi to cc buffer hin th cng nh qut ct led. d dng trong vic s l ta s khi to cho Column_Buffer cc gi tr tng ng lm sao, khi xut ra n ch tch cc mt ct ca led m thi. y gi s tch cc ti mi ct l tch cc mc cao th ta c th khi to cho Column_buffer cc gi tr sau: 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80.
B mn K Thut My Tnh
55
Thc hnh Vi x l
Bc 7. n y mi s chun b xong, ta c th bt u vit hm hin th d liu ra led. u tin ta s vit mt macro SPI_transmit vi i s s l gi tr byte s c truyn ni tip ra ngoi. 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 Bc 8. Tip theo l lm sao ly d liu t cc buffer a vo cc bin tng ng xut ra led. Ta vit thm mt Macro na gm 2 i s l buffer v temp_data. Macro ny s lm nhim v l ly d liu ti v tr (c lu trong bin index_of_buffer) ca buffer lu vo 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 Bc 9. Nh trn gii thiu xut d liu ra led, ngoi vic dng module SPI xut d liu ta cn phi c thm mt tn hiu clock tc ng ln IC74595 th d liu ni tip ca ta mi chuyn qua song song v hin th ra led. Do ta phi vit thm mt hm to clock trn chn define khi ny l Latch_data. CLOCK_STORAGE BSF LATCH_DATA NOP NOP BCF LATCH_DATA NOP NOP BSF LATCH_DATA RETURN Bc 10. Cui cng l hm quan trng nht, hm ny c gi trong timer thc hin vic qut led. DISPLAY CALL INCREASING_INDEX UPDATE_DATA RED_SCREEN_BUFFER,RED_DATA UPDATE_DATA GREEN_SCREEN_BUFFER,GREEN_DATA
B mn K Thut My Tnh
56
Thc hnh Vi x l
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 Bi tp
a) Xy dng ng dng cho php s 1234 chy qua cc led 7 on. b) Xy dng ng dng cho php 1 dng ch chy qua led ma trn.
B mn K Thut My Tnh
57
Thc hnh Vi x l
Bi 7 :
Ni dung: Kho st cng COM my PC, cc thng s truyn ni tip. Kho st b truyn ni tip ca PIC. Tm hiu cch s dng chng trnh Hyper Terminal truyn nhn ni tip trn my PC. Yu cu: Vit chng trnh giao tip gia my tnh v vi iu khin PIC.
Bc 2. Include file p18f4520.inc vo file uart.asm Bc 3. Khi to 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 mn K Thut My Tnh 58 Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM BSF RETURN Bc 4. Khi to cc vector ngt org goto Start org goto Start GOTO IntVector RETFIE $ IntVector TRISC,7 00000h 00008h
Bc 5. Khi to cho ngt UART, tc 9600baud ti tn s 4Mhz. INIT_UART MOVLW 19h ; 9600 baud @4MHz MOVWF SPBRG BSF Enable transmit BSF baud rate BSF BSF continuous reception BCF Interrupt Flag BSF Interrupt Enable BSF peripheral interrupts BSF interrupts RETURN Bc 6. Vit chng trnh trong ngt thc hin nhim v nhn mt d liu t my tnh truyn xung sau gi li k t cho my tnh nhn li. 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 INTCON,GIE ; Enable global INTCON,PEIE ; Enable PIE1,RCIE ; Set RCIE PIR1,RCIF ; Clear RCIF RCSTA,SPEN ; Enable Serial Port RCSTA,CREN ; Enable TXSTA,BRGH ; Select high TXSTA,TXEN ;
B mn K Thut My Tnh
59
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM btfss set? goto movf movwf movwf goto context, return RcvError bcf bsf movlw movwf goto context, return ISREnd retfie RcvError RCREG,W LATB TXREG ISREnd STATUS,Z
Khoa KH & KTMT ; Was either error status bit ; Found error, flag it ; Get input data ; Display on LEDs ; Echo character back ; go to end of ISR, restore
RCSTA,CREN ; Clear receiver status RCSTA,CREN 0FFh ; Light all LEDs PORTB ISREnd ; go to end of ISR, restore
B mn K Thut My Tnh
60
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM org Start CALL CALL Main goto INIT_PORT clrf clrf outputs bcf bsf RETURN INIT_UART movlw movwf bsf bsf bsf bsf reception bcf bsf bsf interrupts bsf RETURN INIT_PORT INIT_UART 00020h
Main ; loop to self doing nothing 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 TXSTA,TXEN TXSTA,BRGH ; Enable transmit ; Select high baud rate
RCSTA,SPEN ; Enable Serial Port RCSTA,CREN ; Enable continuous PIR1,RCIF ; Clear RCIF Interrupt Flag PIE1,RCIE ; Set RCIE Interrupt Enable INTCON,PEIE ; Enable peripheral INTCON,GIE ; Enable global interrupts
;************************************************************ ; Interrupt Service Routine IntVector btfss interrupt? goto movlw andwf btfss set? ISREnd 06h RCSTA,W STATUS,Z ; No, some other interrupt ; Mask out unwanted bits ; Check for errors ; Was either error status bit PIR1,RCIF ; Did USART cause
B mn K Thut My Tnh
61
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM goto movf movwf movwf goto context, return RcvError bcf bsf movlw movwf goto context, return ISREnd retfie end RcvError RCREG,W LATB TXREG ISREnd
Khoa KH & KTMT ; Found error, flag it ; Get input data ; Display on LEDs ; Echo character back ; go to end of ISR, restore
RCSTA,CREN ; Clear receiver status RCSTA,CREN 0FFh ; Light all LEDs PORTB ISREnd ; go to end of ISR, restore
7.3 Bi tp
a) Vit chng trnh trn PC, gi 1 chui string xung board, dng ch ny s chy qua led ma trn hoc LCD. b) Khi nhn 1 phm trn board nhn, s gi 1 chui string ln PC qua cng COM, vit chng trnh trn PC nhn chui string ny v in ra giao din.
B mn K Thut My Tnh
62
Thc hnh Vi x l
Bi 8 :
Ni dung: Kho st hot ng khi chuyn i A-D. Kho st cc thanh ghi iu khin hot ng khi chuyn i A-D. Yu cu: Vit chng trnh c v hin th gi tr in p thay i bi bin tr.
Bc 2. Include file p18f4520.inc vo file a2d.asm Bc 3. Khi to module ADC ta c th s dng mt cch d dng. 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 mn K Thut My Tnh
63
Thc hnh Vi x l
khi to c module ADC ta ch cn quan tm ch yu ti cc thanh ghi ADCCON1, ADCCON0, ADCON2. Nh chng trnh khi to trn ta thy u tin phi cu hnh cho cc pin tng ng phi l chn AN0, mc nh ca cc chn ny c chc nng l Input/Output digital. Sau ta phi chn knh ADC tng ng, y ta s dng knh AD0. V mt im quan trng na chnh l bit GO trong thanh ghi ADCON0, khi bt ny c bt ln th module AD mi bt u chuyn i tn hiu. Bc 4. Tip theo l hm c gi tr ADC: Update_adc bsf ADCON0,GO ;start conversion btfsc ADCON0,GO bra $-2 movf ADRESH,W return Sau khi chuyn i tn hiu A-D, gi tr s s c lu vo thanh ghi ADRESH. n y ty vo ng dng c th m ta c th bin i gi tr ny ty theo yu cu m ta mong mun.
8.2 Bi tp
a) Tch hp module LCD, ly gi tr in th t bin tr hin th ln LCD. b) S dng module ADC ca Pic o nhit trong phng, dng LCD hin th gi tr nhit .
B mn K Thut My Tnh
64
Thc hnh Vi x l
Bi 9 :
Ni dung: Kho st khi chc nng WDT. Kho st khi chc nng PWM . Kho st cc ch hot ng ca vi iu khin. Yu cu: Vit chng trnh s dng chc nng WDT. Vit chng trnh s dng chc nng PWM iu khin sng ca LED. Vit chng trnh s dng chc nng Power control.
Bc 2. Include file p18f4520.inc vo file pwm.asm. Bc 3. Tch hp module LCD vo project pwm, tham kho bi tp v LCD. Bc 4. Khi to module PWM ta c th s dng mt cch d dng. Init_pwm ;configure CCP1 module for buzzer bcf TRISC,2 movlw 0x80 movwf PR2 ;initialize PWM period
B mn K Thut My Tnh
65
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM movlw cycle movwf bcf bcf CCPR1L CCP1CON,CCP1X CCP1CON,CCP1Y 0x80
;postscale 1:1, prescaler 4, Timer2 ON movlw 0x05 movwf T2CON movlw 0x0F movwf CCP1CON return
;turn buzzer on
khi to chc nng pwm, u tin ta phi cu hnh cho PORTC2 l output. Tip theo khi to chu k ca PWM thng qua vic cu hnh thanh ghi PR2. Sau ta khi to duty cycle ca xung pwm bng cch cu hnh thanh ghi CCPR1L.
B mn K Thut My Tnh
66
Thc hnh Vi x l
Trng H. Bch Khoa TP.HCM movlw movwf period movlw cycle movwf bcf bcf CCPR1L CCP1CON,CCP1X CCP1CON,CCP1Y .125 .249 PR2
;postscale 1:1, prescaler 4, Timer2 ON movlw 0x05 movwf T2CON movlw 0x0F movwf CCP1CON return END
;turn buzzer on
9.3 Bi tp
a) Tm hiu v hin thc chng trnh iu khin RC Servo.
B mn K Thut My Tnh
67
Thc hnh Vi x l