You are on page 1of 64
Lap trinh PIC16F877A dieu khién toc d6 dong co DC Dé an 2 GVHD: Nguyén Thanh Thio MUC LUC Chwong |; KHALQUAT DE TAL Yom tit dé ta Néu li che d6 2 thi ta phi nhap them thai gian, sau do nhan phim ENTER, CHUNG IL GIOUTHIEU VE CAC LINH KIEN PHAN TU’ SU DUNG TRONG MACH. i dit khién PICIGF877A, 1. Khai quat vé vi didu khién PICI6F877A. Sedb chin Sorddé nguyen I 2. To ehtie bp nhé: 2.1. BO mh churomg trinh, 2.2. BQ nhé dir ligu:.. 2.3. Stack khién PICI6F877A, 3. Khai quat vé chute ning cia cae port trong vi 4. Cae vin a2 vé Timer 4.1, Timer 4.2.71MERI 5. NGAT (INTERRUPT) 6 Phung phip ditu ch 6.2, Nguyen I cia PWM: Ua = Umax « (tof) hay Ua = UnasD ..... 6.3. Cth (viet Kp ché dp PWM cho PICTOFS77A Mach chu H (Bridge Circuit, Hinh 18: Mack cu Kho sit hoat ding ea mach ef H. Hint Nexn hot ding eue mach nH LCD... ae DD: Ki hign thi ( IV. Doi tugng diéu khién: Dong co DC. M6 hin thie 1Mé hin oh CHUONG 3. THIET KE MACH PHAN Cl UNG: Git ng eho wnt code i dc Return(bién);} ssanssannasansene 7 Lara gi tht ‘ODE CHUONG TRIN xung PWM: SVTH: Trin Tuong Bang Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Chuong |: KHAIQUAT DE TAL 1 Tém tat dé taiz 1/ Gidi thigu sor luge ee modul eiia mach: -Tén dé tai do an 2:“Lép trinh PICI6F877A diéu khign tc 4 déng co DC” -¥éu chu dat ra: Lip trinh C cho Pie 16F877A diéu khién téc d6 cho dng co DC 6 giin encoder hdi tiép tbe d6.Tée dd due cai dit tir ban phim va the dd tte thoi hai tiép. &n thi trén min hinh LCD 16x2. tir encoder durae hi -Tém tit huéng thye hign dé tai: Sir dung Pic 16F877A 1a vi didu khién trung tim. Ding chwong trinh CCS lap trinh C va bién dich chuong trinh. Xéy dug khdi bin phim gdm 16 phim dé nhip the 49 va didu khién dong oo DC: 10 phim tr 0 dén 9 46 cai dat tbe d6 (wong /phvic). 1 phim SET (hay ENTER) dé ltru tde 46 cai dat. 1 phim CLEAR dé xéa 5 cai dat I phim SAVE dé lwu tic 46 vio epprom. © 3 phim digu digu khién: quay thujn (FORWARD), quay nghich (REVERSE), dimg (STOP) % Hiién thi te ¢9 ding man hinh LCD 16x2, lap trinh G ché 46 4 bit (sr dung 4 chan a nhgn di igu ti Pie). Strdung mach clu H li IC L298N dé dao chiéu dong co. % Sir dung 2 kénh PWM cia vi diéu khién Pic thay di gid tri dp trung binh dat vio dng co 4é diéu khién tic d9. ‘bi tugng diéu khién li dong co DC 12V c6 gin Encoder. Ngoai ra trén mach con c6 1 phim nguén (POWER) cdp dign tir adapter cho mach va | phim RESET cho pic 16F877A. SVTH: Trin Tuong Bang Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio + é cép ngudn cho mach ta ding adapter AC/DC (220V/12V) va khdi ngudn sit dung IC 7805 dé On ap dign ap SV cung cap cho Pie. 2/ So dé nguyén li mach: § Lea Habel rif iia a Hinh 1: Ser dd nguyen li mach 3/Cach van hinh mach: = Bude | Bat ngudn (nhan mit POWER), chiy cho Pic va man hinh LCD khoi déng, man hién thi: “CHON CHE DO.” inh Chuong trinh ¢6 2 ché d6 lam vige: ché d61 1a bam tc 46 dat, c6 Inu téc 49 vao ‘eprom; ché dé 2 1a bam tdc 46 6 dinh thé gian dé thay d6i chiéu quay. © Bude 2: SVTH: Trin Tuong Bang 4 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Nhap te d6 tir bin phim ede phim tir 0 dén 9.Néu nhap sai ta nin phim CLEAR con trd én LCD s8 xéa hét céc s§ da nhGp, ta phai nap lai tir €éu.Sau khi nh§p xong, hin phim ENTER 48 hau te dé dit, tc 4 dat duge tinh theo dan vi vong/phit. Néu la ché 46 2 thi ta phai nhap them thai gian, sau 4 nhdn phim ENTER = Bude 3 De digu khién dong co ta nhin phim: quay thugn (FORWARD), quay nghich (REVERSE), ding (STOP), + Bude 4 Dé nhap Iai te 4 ta nhan phim CLEAR roi tién hanh dat te 49 nhu bude 2, -Tée d6 tite thai ctia ding co sé duoc cap nhat mdi 0,5s va sé duge so sanh voi téc 6 dat dé dua ra tinh higu dieu khién, dong thiri cit mdi 0,5s toc 46 sé hién thj trén man hinh LD, 4/ Khuyét diém cita mach: -Do khdng 4p dung ede phuwmg php diéu khién (vi du nhur: PID, diéu khién md...) nén tbe do ding co chura durge én dinh, -Mach edu H sit dung IC L298 chi diéu khién durge dong co DC cd céng sudt nhé. -Déi voi khdi hién thi, do tinh chét ciia man hinh LCD nén bj han ché quan sat gid tri hién thi 6 khoang each xa, 5/ Hwéng phat trién dé t: in mo. ~ Cai thign dn dinh téc d6 dng eo bang phuwong phap PID hay diéu ki ~ Tinh todn thiét ké mach cdng sudt dé cé thé didu khién durge déng co cé cong sudt Jim hom - Sir dung led 7 dogn dé tang kha nang quan sat ciia khoi hien thi. = Két ndi vSi may tinh, sit dung visual basic lap trinh dé ditu khién tbe d9 dng co De. SVTH: Trin Tuong Bang 5 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio CHUONG I GIGI THIEU VE CAC LINH KIEN PHAN TU SU DYNG TRONG MACH LVi diéu khién PICIGF877A 1. Khai quat vé vi didu khién PICI6F8774. a/ Khai quit: - PIC [a tén viét tit cia “Programmable Intelligent computer” do hing General Instrument dt tén cho con vi diéu khién dau tign etia ho. Hang Mierchip tiép tue phat trién san phim nay va cho dén hang 43 tgo ra gin 100 loai sin phim khéc nha, ~ PICI6F887A la dong PIC khé phé bign, kha day du tinh nang phuc vu cho hau hét tt ca cdc img dung thy té. Day la dong PIC kh dé cho ngudi mei Lim quen voi PIC c6 thé hge tap va tao nén tan vé hg vi diéu khién PIC cia minh, ~ PIC 16F877A thude ho vi didu khién 16Fxxx €6 ede Ait tinh sau + Ngdn ngit Ip trinh dom gin v6i 35 lénh e6 6 dai 14 bit, i trir 1 86 = Tit ed ede edu Iénh thye hign trong 1 chu ki 1énh ng iu Hénh 8 nnhinh thyc hién trong 2 chu ki Iénh, Chu ki lénh biing 4 lin chu ki dao dong cia thach anh * BO nhi chuong trinh Flash 8Kx14 words, voi khd ning ghi xod khong 100 niin lan, = BO nhé Ram 368x8bytes, * BO nha EFPROM 256x8 bytes, + Kha ning ngit (lin t6i 14 ngudn ca ngit trong vi ngit ngoi) SVTH: Trin Tuong Bang 6 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Nain nher Stack durge chia lam 8 mit. ‘Try cp b9 nhé bing dia chi tnrc tiép hoge gin tigp, Dai din thé hoat dng rong: 2.0V dén 5.5V. Neuan sir dung 25mA. Cong suit tu thy thd <0.6mA véi SV, 4MHz 20uA vai nguén 3V, 32 kHz. C6 3 timer: timer, 8 bit chite nfing dinh thoi va bo dém voi he sé ty 18 trurée.Timer!, 16 bit chic nang b9 dinh thi, bO dém vei he $6 ty 18 truse, kich hoat ché dd Sleep.Timer2, 8 bit chire nang dinh thoi va bo dém véi hé sé ty Ie true va sau, Co 2 kénh Capture! so sanh dign ap (Compare)/diéu ché 46 rong xung PWM 10 bit (CCP). Co 8 kénh chuyén di ADC 10 bit ‘Céng truyén thong néi tiép SSP voi SPI phuong thite chi va °C (chii/phu).BO truyén nhan thong tin ding ba, di ba (USART/SCL) c6 kha nang phat hign 9 bit dia chi Céng phy song song (PSP) véi 8 bit mé rng, véi RD, WR va CS diéu khién Do thoi gian Kim dé dn cf han nén ching em chi tp trung tim hiéu ede tink nang cia PIC 16F877A cé lién quan dén dé tai, dudi day Ia 1 vai tinh nang cua PIC 16F877A duge tng dung trong dé an nhur: = Té chite bé nhé cita PIC 16F877A. ~ Chie nfing cila ede Port 1/0. ~ Chie ning v - Chite nfing va cdich thiét Ip bd didu ché 6 rong xung PWM. ich thigt lap cfc tham s6 cia 3 Timer 0,1,2. = Binh nghia ngit, cde ngudn ngét va tim hiéu sdu vé ngit timer va ngit ngoai la hai chie nang durge sir dung trong dé tai nay, SVTH: Trin Tuong Bang 7 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio & seven SShetko Tl Tl Sask ra (iste) Fa pete nausea pe oars ones 7 Tee Tee rosea stands IL iL iL it iL saan Baan BaamocHIOuT RASANASSC2OUT owt rar aa Raseou ae asec rave. Acomrosomient Renee acssousc. Reason esso0 AereNeT ones roaese2 rouse rosesee mores Reon nextSanr IC r 1 Sppeenaas Sri Tersge Hinks 9: Gerd mmeviin W PIC 16E R778 Dé an 2 GVHD: Nguyén Thanh Thio b/So dé chin va sod nguyén ly cia PICIGE877A Swdé chan WCTRivee —ee] bh—- revrcp RAGIANO eC] Hl Resrce | a RAZIANZ/VREF- -¢—eCf Ha» Res RAGIANSVREF* —= Ha» ReePcM RMMTOCK! «—eE => Ree RASANISS =e eM re ReoTDans ef Sef room REVTTEANS <—»H] = H+ voo RE2TSIANT eT gE Ai vss voo— 2 20 roveser vse] & »P— roorsrs oscticikiN —e | 5 = Rosse osc2ctkout «—f 2 ab roirser RooT10som1cKl —e ze Pl=—» RovRXOT RCWMOSUCCP2 eH Hae Roark Ro2ccr! ef H+» Rcsis00, Reasckiscl <—» H—= easpusoA R0OPSPO ——»C Ha—» Roapses RovPsP! <—»C He Ro2psr2 chan ——@}revener a BR ee ces Fon sehen (FEE, port comosomicn rin Tw 8 chan, Bornes portD 9 in port es Berea oscveuo4 paban thach anh osexeuxour port ~ male Dé an 2 GVHD: Nguyén Thanh Thio e/Nh§n x ‘Tir so dd chan va so 6 nguyén ly 6 trén, ta rit ra cde nhdn xét ban dau nhu sau ~ PICIGF877A c6 tht cf 40 chin - 40 chan trén duye chia thanh 5 PORT, 2 chan efp ngudn, 2 chin GND, 2 chin thgch anh va mot chin ding dé RESET vi didu khién, ~ 5 port ciia PICI6F877A bao gém + PORT B: 8 chan + PORT D:8 chan + PORT C: 8 chan + PORT A: 6 chan + PORT E: 3 chan 2.Té ehnte b§ ah iu tric bO nhé cla vi digu khién PICIOF877A bao gim bd ho cchirong trinh (Program memory) 'b6 nhé dat ligu (Data Memory) 2.1. BO nhé churong trinh: SVTH: Tran Tung Bang Vo Van Chin Progam 4 oon Dé an 2 GVHD: Nguyén Thanh Thio BO nhé chuong trinh cua vi diéu khién PICIGFS77A li bG nhé flash, dung hyang bd nhér 8K word (1 word = 14 bit) va due phan thanh nhiéu trang (tir page0 dén page 3) Nhu vay b9 ner chuong trinh 6 kha nang chita duege 8*1024 = 8192 Ienh (vi mot Ignh sau khi ma héa s8 66 dung hong | word (14 bit) Dé ma héa duge dia chi cia 8K word bd nhér chung trinh, bd dém chong trinh e dung hung 13 bit (PC<12:0>). Khi vi diéu khién duge reset, bo dém chuong trinh sé chi dén dja chi 0000h (Reset yeetor).Khi c6 ngiit xdy ra, bo dém chuong trinh sé chi dén dia chi 0004h (Interrupt vector). BO nhé chuong trinh khdng bao gim bd nhs stack va khong duge dia chi hoa boi bo dém churong trinh, 2.2. BO nhé dir ligu: + BO nb dit Tigu cha PICIGFR77A, . Hinh $: Ciu tric b6 nhé chong trinh duge chia thanh 4 bank. Méi PIC 1OFS77A bank e6 dung luomg 128 byte. - Néu nhu 2 bank b§ nhé dit ligu cua 8051 phan chia riéng bigt : 128 byte dau tién thude bank! 12 ving Ram ni chi dé chita dt gu, 128 byte edn Iai thude bank 2 ka celng ede thanh ghi e6 chite nang dic bigt SFR ma ngudi ding khong duege chita do ligu khéc, cdn 4 bank b§ nhé dit ligu ciia PICIGPS77A dutve 15 chite theo eich hic. ~ Méi bank cia bd nhé dit ligu PICI6F877A bao gdm ca céc thanh ghi c6 chite nang ac bigt SFR nim @ cae cdc 6 nhé dia chi thap va cdc thanh ghi myc dich ding chung GPR nim @ ving dia chi cén lai ctia mdi bank thanh ghi, Vang 6 ahé céc thanh ghi mye dich ding chung nay chinh Ia noi ngudi ding sé hru dir ligu trong ‘qua trinh viét chuong trinh, Tat ca cée bién dir ligu nén duge khai bio chia trong ving dia chi nay, = Trong edu tnic bd nhé di liu ctia PICI6F877A, cfc thanh ghi SFR nio ma thuimg xuyén durge sit dung (nhu thanh ghi STATUS) sé duge dat & tt ca cde bank dé thuan tign trong vige truy xuit, So di nhur vily la vi, dé truy xudt mét thank ghi nao dé trong b§ nhé cua 16F877A ta cin phai khai bao ding bank chia thanh ghi 46, vige dit cfc thanh ghi sir dung thurimg xuyén gitip ta thufn tién hon rit nhigu trong qué trinh truy xuat, lam gidm lénh churong trinh. SVTH: Trin Tuong Bang nm Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Dura trén so 46 4 bank bd nhér dit ligu PICIGF877A ta rit ra cdc nbn xét nhur saw -Bank0 gdm cic 6 nhé c6 dja chi tir 00h dén 77h, trong 46 cae thanh ghi ding chung 48 chita dir ligu cia ngudi ding dja chi tir 20h dén 7Fh, Céc thanh ghi PORTA, PORTR, PORTC, PORTD, PORTE déu chita & bank0, do dé 48 truy xudt dif ligu cite thanh ghi ny ta phai chuyén dén bankO. Ngoai ra mot vai edie thanh ghi thong dung hic ( sé gidi thigu sau) cing chita 6 banko - Bank gém cdc 6 nhé c6 dia chi tir 80h dén FFh. Céc thanh ghi ding chung cé dia chi tir AOh dén Eth. Cac thanh ghi TRISA, TRISB, TRISC, TRISD, TRISE cing dure cchira 6 bank - Tuung tr ta 06 thé suy ra ede nha xét cho bank? va bank3 diva trén sod trén. ‘Cang quan sat trén so 45, ta nhan thay thanh ghi STATUS, FSR... ¢6 mat trén ci 4 bank, Mét diéu quan trong cin nhac Iai trong vige tray xuat dit ligu ciia PICI6F877A, la: phai khai bao ding bank chira thanh ghi do.Néu thanh ghi nao ma 4 bank déu chira thi khong cn phai chuyén bank. erst em | ash ot ion = viiic—|een [ween —| sen [Ferran ten [Reser] seen aT — ort = ae oe ae ser Tee son on ie on wes |i [oaea—fon | Bee lim | Sie | So aco | tm [arma m| Wn | im | SSbac. | Som Seneca Regier ‘Roster Repsiet ee coon coves coon svt] | oom a is rem |2 1 near na mer esion es ioraonaicee note 1) Tse eps ne nnpenannton he PCera7eA Dé an 2 GVHD: Nguyén Thanh Thio 2.2a/ Thanh ghi ehtie nang de bigt SFR: (Special Function Register) Dy la cdc thanh ghi dugc sit dung boi CPU hoac duoc ding dé thiét lap va digu Khién cfc khdi che nang due tich hop bén trong vi diéu khién. Co thé phan ‘thanh ghi SFR 1am hai loai: thanh ghi SFR lién quan dén céc chite nang bén trong (CPU) va thanh ghi SRF ding dé thiét lap va diéu khién céc khdi chite nang bén ngoai (vi dy nh ADC, PWM, ...). Mot sé thanh ghi cite ning age bier ‘ATUS (03h, 83h, 103h, 183h):thanh ghi chia = Thanh ghi qua thye hi phép ton cia khdi ALU, trang thai reset vai ede bit chon bank ean truy xuat trong bd nhé dt ligu + Thanh ghi OPTION_REG (81h, 181h): thanh ghi ndy cho phép doc va ghi, cho phép digu khién chite ning pull-up ete ede chan trong PORTB, xic lap cée tham sé vé xung tic dng, canh tic dong cua ngiit ngoai vi vi bé dém Timer0, + Thanh ghi INTCON (OBh, 8Bh,10Bh, 18Bh): thanh ghi cho phép doc va clita céc bit diéu khién va cée cd higu khi timerO bi tran, ngét ngogi vi RBO/INT va ngit interrput-on-change tgi + Thanh ghi PIEI (8Ch): chita eae bit di fc chin ciia PORTB. khign chi tiét cée ngit ciia céc khdi chite naéng ngoaii vi + Thanh ghi PIRI (0Ch) chica cis ngit ciia cée khdi chite ning ngosi vi, ede nit nay duge cho phép bai cfc bit diéu khid chita rong thanh ghi PIE = Thanh ghi PIE2 (8Dh): chita cdc bit digu khién cae ngit ciia cde khdi chire ning CCP2, SSP bus, ngéit cia bd so sinh va ngit ghi vao bo nhé EEPROM. + Thanh ghi PCON (SEh): chita cde ety higu cho biét trang thai cfc ché dO reset cua vi digu khién, 2.2b/ Thanh ghi muc dich chung GPR: (General Purpose Register) SVTH: Tran Tuimg Bing 1B Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Cie thanh ghi nay c6 thé duge tray xuit irre tiép hode gim tiép thong qua thanh ghi FSG (File Select Register). Bay la cfc thanh ghi di ligu thong thuimg, ngudi sir dung tha ty theo mye dich chomg trinh ma cé thé ding cae thanh ghi nay dé chita cae bign s8, hing s6, két qua hoe cc tham s phe vu cho chirang trinh Cele eS [ For | 50r_] Hinh 7: Ci tric thanh ghi chire nang chung cua PIC 16F877A, 2.3, Stack ~ Stack khong nlim trong bd nhér chuomg trinh hay bd nhé ddr ligu ma 18 mot ving this dlc bigt khOng cho phép doc hay ghi. Kh Iénh CALL durye thuc hign hay khi mot git xy ra kim chuomg trinh bi ré nhdnh, gid tri cua 60 dém chuong trink PC ne dong duge vi diéu khién ct vao trong stack. Khi mot trong cde lénh RETURN, RETLW hat RETFIE duge thuc thi, gid tri PC sé tr déng duge lay ra tir trong stack, vi digu khién s@ thu hign tiép chuong trinh theo dung qui trinh dinh true. ~ Bd nhd Stack trong vi digu khién PIC ho 16F87xA ed kha nding chita duge 8 dia chi va hogt ding theo co ché xoay vong. Nghia la gid trj cdt vao b} nhé Stack Kin thir 9 s@ ghi dé [én gid trj ct vio Stack lin dau tién va gid tri cat vo bG nho Stack lan thir vito Stack Hin thie 2. 10 s@ ghi d@ len gid tri6 = Cin chit la khong 06 ei higu nao cho bigt trang thai stack, do d6 ta khong bigt due khi nao stack tn, Bn canh 46 tap Kenh cia vi digu khign dng PIC cing khong 6 Ienh POP hay PUSH, cic thao tae véi 6 nhé stack sé hodn toan durge diéu khién bei CPU. jiéu khién PICIOF877A 3. Khai quit vé chire nding eda cae port trong vi al PORTA: -PORTA (RPA) bao gém 6 I/O pin.Day a cc chan “hai chiéu” (bidirectional pin), nghia fi e8 thé xudt va nhap durge.Chite nding 1/0 nay durge dia Khién bai than ghi TRISA (dia chi 85h). Mudén xac lap chite nang ciia mét chén trong PORTA li SVTH: Trin Tuong Bang 4 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio input, ta “set” bit diéu khién trong img vi chan dé trong thanh ghi TRISA vit ngrge Iai, mudn xée lép ehite ning. ctia mot chan trong PORTA Ia output, ta “clear” bit digu kkhign tuong ting voi chin 46 trong. thanh ghi TRISA. Thao tic nay hodn todn tung tr déi véi cic PORT va cae thanh ghi digu. khién twang tg TRIS (déi voi PORTA la TRISA, di vi PORTE la TRISB, d6i voi PORTC 1A TRISC, adi voi PORTD a TRISD vad6i vei PORTE la TRISE). -Ngoai ra, PORTA edn 6 ede chite ning quan trong sau + Ng@ vito Analog ela bd ADC : thye hign che ning chuyén ti Analog sang Digital + Ngo vio dign thé so sinh = Ngo vao xung Clock ciia Timer0 trong kign tric phan cimg : thye hign cdc nhigm vy dém xung thong qua Timer... * Ngo vao cita b@ giao tiép MSSP (Master Synchronous Serial Port) = Cae thanh ghi SFR lién quan dén PORTA bao gm: PORTA (dia chi 05h) —_: chtta gid tri cde pin trong PORTA. TRISA (dia chi 85h) digu khién xuat nhap, CMCON (dia chi 9Ch) —: thanh ghi digu khién b6 so sinh. CVRCON (dia chi 9Dh) thank ghi diu khién bd so sinh dign ap. ADCONI (dia chi 9Fh) — = thanh ghi diéu khién b ADC, ‘b/PORTB: ~ PORT (RPB) gim & pin 1/0. Thanh ghi digu khién xuit nhép tuomg ting la TRISB. = Bén egnh 46 mot 36 chin cia PORTB cbn duge sit dung trong qui trinh nap cchuong trinh cho vi diéu khién véi cde ché 49 nap khée nhau, PORTB edn lid quan dén ngit ngoai vi va bo Timer). PORTB edn duge tich hop chire nang dign inh, tro kéo In durge didu khién bai chuong - Cie thanh ghi SFR lién quan dén PORTB bao gm: PORTB (dia chi 06h, 106h) _: chia gié tri cde pin trong PORTB TRISB (dia chi 86h, 186h) _: digu khién xudt nhap OPTION_REG (dia chi 81h, 181); diéu khién ngit ngoai vi va bé Timer0. ePORTC: SVTH: Tran Tuimg Bing 18 Vo Vain Chink Dé an 2 GVHD: Nguyén Thanh Thio PORTC c6 8 chin vi cing thuc hign durge 2 chite nang input va output dudi sy digu khign cia thanh ghi TRISC tuong ty nhur hai thanh ghi trén Ngo ra PORTC edn oé fe chite nding quan trong sau = Ng@ vio xung clock cho Timerl trong kién trie phan eimg - BO PWM thu hign chiie ning diéu xung lip trinh duye tin s6, duty eyele: sir dung trong diéu khién tbe 49 va vi tri cia dng co v.v. - Tich hyp céc bd giao tiép ndi tiép 12C, SPI, SSP, USART a/PoRTD: -PORTD o6 8 chan, Thanh ghi TRISD diéu khién 2 chic nang input va output cua PORTD twong ty nhu trén.PORTD cing la cong xuat dit ligu ciia chuan giao tiép song song PSP (Parallel Slave Port). -Cac thanh ghi lién quan dén PORTD bao gom: ‘Thanh ghi PORTD: chita gia tri ede pin trong PORTD. ‘Thanh ghi TRISD: diéu khién xudt nhap. Thanh ghi TRISE: digu khién xudt nhap PORTE va chudn giao tiép PSP. e/PORTE: -PORTE ¢6 3 chan. Thanh ghi diéu khién xudt nhdp trong tmg la TRISE.Cée chan ca PORTE €6 ngé vio analog Bén cgnh 4 PORTE cin Ia cée chan diéu khién ciia cchuiin gio tiép PSP. Cie thanh ghi lign quan dén PORTE bao gdm: PORTE: chia gid tr cde chan trong PORTE. ‘TRISE: dieu khién xuat nhgp va xc lap cic théng s6 cho chuan giao tiép PSP. ADCONI: thanh ghi digu khién khéi ADC. 4. Cée van dé vé Timer PICI6F877A 6 tht c& 3 timer :timer0 (8 bit), timerl (16 bit) va timer2 (8 bit) 4.4. Timero a/ La b@ dinh thai hoje bd dém c6 nhiing wu diém s * 8 bit cho b9 dinh thai hoe bo dém. = Cé kha nang dge va viét, * C6 thé ding ding bén trong hod ben ngoii. © C6 thd chon cgnh sung cia xung dng hi. SVTH: Trin Tuong Bang 16 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio * C6 thé chon hé sé chia du vio (lip trinh bing phan mén). + Neit tin, b/ Hoat dng etia Timer 0: c/ Ngat Timer 0 c6 thé hoat dng nhu mot bé dinh thai hoge mAt bd dm. Vige chon b8 inh thei hoe bd dém c6 thé duge xie Lip bing vige xod hode ABt bit TOCS cia thanh ghi OPTION_REG<>. Néu ding hé sé chia xung ddu vao thi xod bit PSA cia thanh ghi OPTION_REG<3>. Trong ché d) bd dinh thii duge Iya chon biti REG<5>) iG xod bit TOCS (OPTION ng sé durge tang gid tri sau mot chu ky Iénh néu khong chon he sd chia xung dau vao.Va gid tr cha né duge viét ti than ghi TMRO. Khi ding xung clock bén ngoai cho b@ dinh thi Timer va khéng ding hé so chia clock dau vao Timerd thi phai dap ting cac dieu kign can thiét dé co thé hhoat dng 46 1a phai bao dim xung clock bén ngoai cd thé ding b9 véi xung clock bén trong (Tose). Hg sé chia ding cho Timer 0 hoc b6 WDT. Cac hé sé nay khang cé kha nang dge va kha ning viét. Dé chon hg s chia xung cho bé tién dinh ca Timer0 hole cho b§ WDT ta tién hinh xod hoje d§t bit PSA cia thanh ghi OPTION_REG=3> Nhiimg bit PS2, PS1, PSO ctia thanh ghi OPTION_REG<2:0> ding dé xe lap cic: hg s6 chia, BO tin dinh 6 gia tr 1:2 chang han, c6 nghia la : binh thumg khdng siz dung 6 tién dinh cia TimerO (dng nghia voi tién dinh ti 1g 1:1) thi et khi C6 tie dong ca | xung clock thi timerd sé tang thém mot don vi. Néu sit dung b6 tién dinh 1:4 thi phai mat 4 xung clock thi timer0 mai tang thém mét don vi. Vo hhinh chung, gid tri cia timerO (8 bit) lite may khéng cdn Li 255 nita ma la 255*4=1020. b@ Timerd Ngit ciia b6 Timer 0 dusge phat sinh ra khi thanh ghi TMRO bj trun tire tir FFh quay ve 00h.Khi a6 bit TOIF cia thanh ghi INTCON<2> s@ duce dit. Bit ny phai duge xa bing phin mém néu cho phép ngat bit TOTE cua SVTH: Trin Tuong Bang 0 Vo Van Chinh Di in? GVHD: NguyEn Thanh Thio thanh ghi INTCON due set.Timer0 bi dimg hoat 6 ché do SLEEP ngdt Timer 0 khong danh thire bd xir ly & ché 6 SLEEP. / Ce thank ghi in quan dén Timer bao ghm: ~ Thanh ghi OPTION_RE + digu khién hogt dng ciia Timer OPTION REG REGISTER wa VEL RW AWE RRA _M [RET [nteoe [woos [rose [rsa] an] st] so mT 310 Hinh 8: Céu trie thanh ghi OPTION_REG REGISTER diéu khign hoat ding ciia Timer0 = bit 5 TOCS Iya chon nguon clock 1=Clock ngoni tir chin TOCKI 0=Clock trong Foes/4 = bit 4 TOSE bit ha chon s~én xung clock 1=Timer 0 ting khi chin TOCKT tit cao xudng thip(s-én xuéng) 0=Timer 0 tang khi chan TOCKI tir thap lén cao(s—6n xuéng) = bit3 PSA bit gan b6 chia xung diu vuo 1=gan bé chia Prescaler cho WDT (0=gan bd chia Prescaler cho Timer 0 bit 2:0 PS2:PS1 lua chon hé sé chia hé s6 xung theo bang sau: PS2:PS0 TimerO WpT 000. 1:2 Ll 001 I 1:2 010 18 14 ou 6 18 100 2 1:16 101 1:64 110) 8 64 in 256 1128 ~ Thanh ghi TMRO dai chi 01h va 101h : chira gid tr eta b6 dinh thir Timer SVTH: Trin Tuong Bang 18 Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio - Thanh ghi INTCON : cho phép ngit hoat dong ‘Thanh ghi chiéa cdc bit diéu khién va cée bit civ higu khi timer0 bi tran, ngét ngoai ‘vi RBO/INT va ngit interrupt_on_change tai cde chan cia PORTB. RW. RW-O RW RMLO RD RNR. RIX [Co [Pete [rwroe [NTE [RSE [TRO [NTF | _ROIF_] wT Bio Hinh 9: Céu tric thanh ghi INTCON cho phép ngit Timer0 hoat dong * Bit 7 GIE Global Interrupt Enable bit GIE = 1 cho phép tit ca cde ng. GIE = 0 khéng cho phép tit c4 céc ngit. Bit 6 PETE Pheripheral Interrupt Enable bit PEIE= | cho phép tit ea cfc ngiit ngosi vi PEIE = 0 khéng cho phép tat cd cde ngiit ngoai vi. + Bit S TMROIE Timer0 Overflow Interrupt Enable bit ‘TMROIE = 1 cho phép ngiit Timer0. ‘TMROIE = 0 khéng cho phép ngit Timer0. * Bit 4 RBIE RBO/INT External Interrupt Enable bit RBIE = | cho phép tit ea cae ngét ngoai vi RBO/NT RBIE = 0 khdng cho phép tat ca cde ngat ngoai vi RBO/INT. + Bit 3 RBIE RB Port change Interrupt Enable bit RBIE = | cho phép ngat RB Port change RBIE = 0 khang cho phép ngit RB Port change + Bit 2 TMROIF Timer0 Interrupt Flag bit TMROIF = I thanh ghi TMRO bi trin (phai xda ci higu bing chuong trinh). ‘TMROIF = 0 thanh ghi TMRO chwa bi tr + Bit | INTF BRO/INT External Interrupt Flag bit INTF = 1 ngit RBO/INT xay ra (phai x6a cd higu bing chong trinh), INTF = 0 ngadt RBO/INT chira xayy ra * Bit O RBIF RB Port Change Interrupt Flag bit SVTH: Trin Tuong Bang 19 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio RBIF = 1 it nhat c6 mt chan RB7:RB4 c6 su thay ddi trang thai, Bit nay Dh due xéa bing chuomg tri saw kh kiém ta lice gi tr chin ‘gi PORTE RBIF = 0 khong 08 sy thay adi trang thai cae chén RB7:RBA 2.T1IMERI a/Timer! 1a 9 dinh thdi 16 bit, gid tri cha Timerl sé duge lu trong hai thanh ghi 8 bit TMRIF:TMRIL. Ci ngit cua Timer! 1a bit TMRIF, bit diéu khign eta Timer! 1a TRMIIE.C§p thanh ghi cia TMR1 sé ting tir 0000h 1én dén FFFFh roi sau do tran ve 0000h. Néu ngat dirge cho phép, né s€ xay ra khi khi gid trj cua TMRI tran tir FEFFH ri vé 0000h, lie nay TMRIIF sé bat len, b/ Timer c6 3 ché d6 hoat dong * Ché do hoat dong dinh thai déng b}: Ché 46 duge Iya chon boi bit TMRICS. imerl la Fosci4, bit TISYNC khong e6 tée Trong ché 46 nay xung cap cho dung, = Ché do dém déng bd: trong ché dé nay, gid tri ca timer! sé ting khi cd xung_ canh lén vio chin TIOSURCI. Xung clock ngosi sé duge ding b6 voi xung clock ngi, hogt dong ding bé durge thye hign ngay sau bG tién dinh ti 1¢ xung (prescaler) = Ché do dém bit déng bo:ché a9 nay xay ra khi bit TISYNC duge set. BO dink thai sé tigp tue dém trong sudt qua trinh ngu (Sleep) cia vi diéu khién va c6 kha ing tgo mot ngdt khi b9 dinh thai trin va lam cho vi diéu khién thoat khoi trang thai ngu. e/ Cae thanh ghi lién quan dén Timerl bao gom: * INTCON (dia chi OBh, 8Bh, 10Bh, 18Bh): cho phép ngt hoat dong (2 bit GIE va PEIE), = PIRI (dia chi OCh): chita cd ngit Timer! (TMRIIF). = PIEI (dia chi 8Ch): cho phép ngiit Timer! (TMRIIE). Ba thanh ghi vita néu trén sé duge trinh bay 6 phan chuong trinh ngit ciia PIC = TMRIL (ia chi OBh): chita gid tri 8 bit thdp cita b6 dém Timer = TMRIH (Gia chi OFh): chia gid tri 8 bit cao ctia b6 dém Timer! SVTH: Trin Tuong Bang 20 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Hai thanh ghi TMRIL va TMRIH fa 2 thanh ghi chira dit ligu 16 bit (Lin hat chita 4 bit thap va 4 bit cao) cia b6 dém Timer! = TICON (dja chi 10h): xée lap cdc thong sé chi Timer ‘ICON: TIMER1 CONTROL REGISTER (ADDRESS 10h) a SN EET ED SS Mae ES inh 10: Céu tric thanh ghi TICON diéu khién hoat dong cua Timer! ~ bit7,6 khong sit dung - bit5,4 TICKPS1: TICKPSO lua chon hé sé chia xung vao. TICKPS1 TICKPSO 00 I o1 1:2 10 Ld i & - bit3 TIOSCEN bit diéu khién b6 dao déng Timer! 1=B6 dao dong hoat dong 0= B6 dao dng khong host dong - bit 2 bit diéu khién xung clock ngoui déng bd khi TMRICS=1 = bit2=0 cd déng clock ngoai =1 khéng dong b@ clock ngoai khi TMR1CS=0 bit nay khéng cé tic dung = bit | TMRICS bit ha chon nguén xung clock vao TMRICS=I clock tir chan RCO/T1OSO/TICKI (stron lén) TMRICS=0 clock trong Fose/4 - bit O bit bat tit Timer Timer | enable O=Timer 1 Disable SVTH: Trin Tuong Bang 21 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio 43.Timer 2 a/ Timer2: la b6 dinh thai 8 bit bao gdm mot bo ti dinh (prescaler), mot b@ hau dinh Postscaler va mot thanh ghi chu ky viét tit la PR2. Vige két hop timer2 véi 2 bo dink ti 1g cho phép né hoat déng nhu mét bé dinh thei 16 bit. Module timer2 cung edp thoi gian hoat dong cho ché d6 diéu bién xung PWM néu module CCP duge chon. Sets Fag Berane | EME Reset a 4:4, 1:4, 1:16[— Fose/s Posiscaner 2 the 16 Peo (ore ae 4 sates] | T2eKPso ores qBoure Se Note 1: TMR2 register output can be software selected by the SSP module as a Baud clock Hinh 11: So do khoi Timer2 b/ Hoat dng cua bo Timer? - Timer2 durge diing chi yéu & phan diéu ché xung ctia bj CCP, thanh ghi TMR2 cé kha ning doc va vidt, né e6 thé x6a bling vige reset Igi thiét bi Dau vdo cia xung e6 thé chon ede ty s6 sau; 1:15 1:4 hoe 1:16 vige Iya chon cée ty s6 nay o6 thé diéu khién bing cde bit sau T2CKPSI va bit T2CKPSO. = BG Timer2 of 1 thanh ghi & bit PR2 . Timer 2 tang tr gi tri OOh cho aén khop voi PR2 va tigp theo né sé reset Iai gi tri OOh va Iénh ké tigp tinge hign.Thanh ghi PR2 1a mét thanh ghi cé kha nang doc va kha nang o/ Thanh gl 2CON: dibu khién hoat dng cia Timer2 T2CON: TIMER2 CONTROL REGISTER (ADDRESS 12h) SVTH:T U9 R09 _Riv0 Ro MO __ Rw ROW 22 otros roursr Tours rouress] rareon [racers [21°] Hinh 12: Céu tric thanh ghi T2CON diéu khién hoat dong cua Timer2 Dé an 2 GVHD: Nguyén Thanh Thio - bit 7 khong sit dung - bit 6-3 TOUTPS3: TOUTPSO bit lua chon hé s6 dau ra Timer 2 Mm - bit2 TMR2ON bit bit tit hoat dng Timer 2 I= enable 0= disable ~ bit 1-0 T2CKPSI:T2CKPSO chon hé chia du vio 00= 1:1 O1= 14 1x=1:16 5. NGAT (INTERRUPT): ~ PIC16F877A cé dén 14 ngudn tao ra hoat dong ngit durye diéu khién bei thanh ghi INTCON (bit GIE). Bén canh 46 mdi ngit cbn co mot bit diéu khién va civ ngit rigng. Cée cd nglt van duge set binh thong khi théa man digu kign ngit xy ra bét chip trang thdi cia bit GIE, tuy nhién hoat dng ngiit vain phy thudc vao bit GIE va cée bit diéu khién khéc. Bit didu khién ngdt RBO/INT va TMRO nim trong thanh ghi INTCON, thanh ghi nay cin chika bit cho phép céc ngiit ngoai vi PEIE. Bit digu Khién céc ngét nim trong thanh ghi PIE1 vi PIE2.Ca ngit cia céc ngit nim trong, thanh ghi PIRI va PIR2. ‘Trong m@t thai diém chi cé mot chuong tri nh ngit duge thy thi, chung trinh ngit duge két thie bang l@nh RETFIE. Khi chuong trinh ngat duge thye thi, bit GIE tw dong duge xéa, dia chi lénh tiép theo cua chuong trinh chinh due cét vio trong be thé Stack va b9 dém chuong trinh s€ chi dén dia chi 0004h, Lénh RETFIE duge diing 4é thodt khoi chwrong trinh ngiit va quay tré vé chuong trinh chinh, ding thoi bit GIF cang se duge set dé cho phép cée ngit hoat dng ta Ii, Cae ot higu doe ding dé kiém tra ngit nio dang xay ra va phai duge x6a bing chuong trinh trae khi SVTH: Trin Twang Bang 23 Vo Vin Chin Dé an 2 GVHD: Nguyén Thanh Thio cho phép ngat tip tuc hoat ding tra Iai dé ta cé thé phat hign durge thiri diém tigp theo ma ng xy a it ngoai vi nhu ngit tir chan INT hay ngit tr sw thay déi trang thai cde pin cia PORTB (PORTB Interrupt on change), vie xac dinh ngat nao xay ra cin 3 hoe 4 chu ki Iénh ty thude vio thoi diém xay ra ngit. - C&n chi ¥ 1a trong qué trinh thye thi ngfit, chi 6 gid tri cia b6 dém chung: tinh duge oft vio trong Stack, trong khi mot s6 thanh ghi quan trong s8 khdng dg cdit va e6 thé bi thay 44% gid tri trong qué trinh thye thi chyong trinh ngit.igu nay nén duge xit li bing chirong trinh dé trénh hign turmg trén xay ra = Cée ngudn ngit cia Pie 16F877A: 1) RTCC hoge TIMERO: ngat tran Timer0. 2) RB: ngit khi co sy thay di trang thai | trong ede chan tir RB4 dén RBT cia PORTB. 3) EXT: (External Interrupt) ngit ngoai khi c6 sw thay déi trang thai & chan RBO cla PORTB. 4) AD: ngit khi 66 chuyén 45 inh higu tuong ty sang tinh hiéu s6 chuyén di hhoan tit 1 tinh higu. 5) TBE: ngit khi bd dm cua cng RS232 ring. 6) RDA: ngit khi cdng RS232 nhén tinh higu, 7) TIMER: ngét khi timer! bj tran, 8) TIMER2: ngit khi timer? bi tran 9) CCPI; CCP2: ngit khi bs capture hove b§ Compare (bo so sinh dign ap) hoat dong; 6 kénh I ho’e 2 10) SSP: ngat khi SPI hode 12C host dong. 11) PSP: ngit khi truyén nhan dit ligu song song, 12) BUSCOL: ngiit khi xung dot dudng truy 13) EEPROM: ngit khi ghi xong dit ligu. 14) COMP: ngiit sau khi thyc hign so sdnh tinh higu. SVTH: Trin Tuong Bang 24 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio .——_ apn Sep ate ali mee ite) s)—__! —— sD) Hinh 13: So dé hoat dng ngat cua PIC 16F877A Voi dé tai “Digu khien toc 4 dong co DC” ching em sir dung hai loai nguén ngét la ngit ngoai khi co sy thay doi trang thai @ chan RBO cia PORTB va ngit tran Timerl, vi thé chiing em sé trinh bay cu thé hon vé nguyén Ii hoat dong va cée cai dat cia hai Jogi ngét nay trong phin dusi day: a/ Ngiit ngoai (External Interrupt): - Ngiit nay dya trén sy thay 44i trang thai cia pin RBO/INT. Canh tac dng gay ra ngfit c6 thé la canh lén hay canh xudng va durge diéu khién béi bit INTEDG (thanh ghi OPTION REG <6>). Khi c6 canh tic dng thich hgp xuat hign tai pin RBO/INT, co ngiit INTF duge set bit chép trang thai céc bit diéu khién GIE vi PEIF, Neat nay 6 SVTH: Tran Tuémg Bang 25 Vo Van Chin Dé an 2 GVHD: Nguyén Thanh Thio kha nding dain thite vi diéu khién tir ché dd sleep néu bit cho phép ngiit duge set tnrse khi Kénh SLEEP durge thye thi. - Thanh ghi OPTION_REG: dia chi 81h, 181h Thanh ghi nay cho phép digu khid hire nang pull-up eta ede pin trong PORTB, xéc lap cac tham sé vé xung te dong, canh tée dong cia ngit ngoai vi RBO (External Interrupt) va b6 dém Timer0. Ramet RW RWW RMR [[RePU_[inre06 | tocs [Tose [rsa [ps2 _[_rot_[_Poo m7 oe Hiinh 14; Céu tric thanh ghi OPTION_REG cho phép ng ngoai va ngat timer * Bit 7 PORTE pull-up enable bit khong cho phép chite ning pull-up eta PORTB = 0 cho phép chite nang pull-up cia PORTB * Bit 6 INTEDG Interrupt Edge Select bit INTEDG = | ngit xay ra khi canh duong chén RBO/INT xudt hign. INTEDG = 0 ngit xay ra khi canh 4m chan BRO/INT xuét hign. = Bit S TOCS Time Clock Source select bit TOSC = 1 clock lay tir chin RA4/TOCKI. TOSC = 0 ding xung clock bén trong (xung clock nay hiing voi xung clock diing 48 thye thi 1énh). + Bit TOSE Timer Source Edge Seleet bit TOSE = | tie ding can len. Tos 0 téc d6ng canh xudng. + Bit 3 PSA Prescaler Assignment Select bit PSA = 1 bd chia tin sd (prescaler) duge ding cho WDT. PSA = 0 b@ chia tin sd durge ding cho Timer0 + Bit 2:0 PS2:PS0 Prescaler Rate Select bit SVTTH: Tran Tung Bing 26 Vo Van Chink 000 i) 454 001 1:4 AED 010 1:8 1:4 ou. 1:16 | 1:8 1900 1:32 | 1:16 aoa 4:64 | 1:32 110 4:128 | 1:64 aa 1:266 | 1:128 b/Ngit trim Timert: SVTH: Cap thanh ghi TMRIH va TMRIL chita gid tri dém cia Timer], chiing ting tir gia tri 0000h dén gia tri FFFFh dén gid tri nay tigp tue tang thi timerl trim va quay lai gid tri 0000h. Va ngiit xudt hign khi tein qua gid tri FFFFh khi ny e& ngit TMRIIF sé durge dat.Ngit cé thé hoat dong hoae khéng hoat dong nha vige dat hode xéa bit TMRIIE. ‘Thanh ghi diéu khién Timer! TICON TICON: TIMER! CONTROL REGISTER (ADDRESS 10h) bit 7,6 khang sir dung bit 5,4 TICKPS1:TICKPSO Ira chon hés6 chia xung_ vio TICKPSI:T1CKPSO ty [6 chia dau vao 00 Ll 01 12 10 La in 18 bit 3 TIOSCEN bit digu khién bd dao dong Timer! 1= Bd dao dong hoat dong 0° BG dao dong khong hoat ding. bit 2 bit diéu khién xung clock ngoai ding bo khi TMRICS= bit2=0 co 1g clock ngodi =1 khong ding 69 clock ngodi Tran Tueng Bang 2 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio khi TMRICS=0 bit nay khong e6 tic dung = bit | TMRICS bit Iya chon nguén xung clock vo clock tir chin RCO/T1OSO/TICKI (sum Ién) "$=0 clock trong Fosc/4 = bit Obit bac tht Timer I= Timer | enable O-Timer 1 Disable 6. Phong phap diéu ché xung PWM: Dé digu khién te 46 dng co DC ngudi ta c6 thé ding nhiéu phuong phéip khée nhau trong dé cé mot phuong phap hét site quan trong va théng dung li phurong phép didu ché 46 rong xung kich (PWM), 6.1. Diéu ché PWM 1a gi? Phuong php diéu ché 9 rng xung PWM (Pulse Width Modulation) 1a phuong phap digu chinh dign dp ra tdi hay néi cach khéec la phuong phdp dieu ché dua trén sy thay bi dd rong cua chudi xung kich dé digu khién tinh kign ding ngit (SCR hay Transistor) din dén sy thay 461 dign dp ra tai Dé thi dang xung didu ché PWM [no Hinh 15: Bé thi dang xung diéu ché PWM 6.2, Nguyén Ii cia PWM: SVTH: Trin Tuong Bang 28 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio iy li phuong phap durge thye hign theo nguyén tic déng ngat ngudn cé tai mOt céch chu ki theo hut digu chinh thoi gian ééng ngét.Phan tr thye hign nhiém vu dng cit la cic van bin din Sor 48 nguyen li digu khign tai ching PWM, NGuON PWM xung vudng #8 ™!L Hinh 16: So 45 nguyén li ding PWM digu khién dign ap tai (trai) So dé xung van digu khién va dau ra (phiii) Trong khong thi gian 0 - to ta cho van QI ma toan b6 dign dp ngudn Ud durge dun ra ‘Can trong khong thoi gian tir «0 d8n‘T cho van QI Khéa, cét nguin cung ep cho ti.Vi vay ‘Gi thi gian 10 thay 46 te O eho dn T ta s® cung edp todin bd , mt phn hay kha hodn toan dign ap cung cap cho tai “ng thite tinh gid tri trung binh ea dign ap ra tai ki Ug = Unas (tT) hay Us = Une ‘Trong dé Ug: [8 dign dp trang binh ra ta Unas: la dign dp ngudn, to: Ia thdi gian xung 6 strim duomg (van khéa mo) T: thoi gian ca thiri gan xung suon duong va surdm am, SVTH: Tran Tung Bang 2» ‘Vo Van Chin Dé an 2 GVHD: Nguyén Thanh Thio D= WT: hé sé digu chinh hay PWM duge tinh bing % Vi dy: dign dp ngudn la 12V. Nu h@ sé digu chinh 1a 20% Néu h@ sé digu chinh fa 50% 2.20% = 2.4V ov 2.50% Vi vay, trong dé tdi: “Digu khién tde 49 dng co DC” ching em sit dung phrong phap diéu ché 9 rong xung PWM dé thay déi dign 4p DC cdp cho dong co tir 6 thay déi tc d) ctia dng co DC. Déi voi PICIOFR77A 46 sir dung phuong phép nay ta co thé sit dung 66 diéu ché a9 rong xung (PWM) tich hyp sn bén trong PIC véi 2 ngd ra xung tai hai chan CCPI (17) va CCP2 (16).Tai céc chain nay khi hoat dong sé xudt chudi xung vudng voi d6 rong diéu chinh duge dé ding.Xung ra nay ding dé tgo tin higu €ing ngét Trasistor trong mach déng luc, vi 49 ring xéc din 88 90 ra mot didn 4p trung binh xac dinh, 6.3. Caich thigt lap ché dj PWM cho PICI6F8774, Khi hoat dong & ché dd PWM (Pulse Width Modulation _ khdi didu ché 45 Ong xung), tinh higu sau khi didu ché sé duge dua ra cée pin cla khdi CCP (cin 4n dinh cée pin nay 1a output ). Dé str dyng chire n’ing diéu ché nay tree tién ta cin tién hanh cdc burde cai dat sau: ‘Thiét lap thai gian ca 1 chu ki ciia xung diéu ché cho PWM (petiod) biing cach dua gid ti thich hop vao thanh ghi PR2. ‘Thiét lap 46 rong xung can diéu ché (duty cycle) bing ciich dua gid tri vio thanh ghi CCPRxL va cée bit CCPICON-<5:4>. Diéu khién cae pin cita CCP la output bing céch clear céc bit trong ting trong. thanh ghi TRISC. ‘Thiét lap gid tri bé chia tan s6 prescaler cua Timer2 va cho phép Timer? hoat dong bing céch dura gid tri thich hop vio thanh ghi T2CON. Cho phép CCP hoat ddng 6 ché 4d PWM. “rong git chu ki (period) ein xng dig ch de tinh ing emg thi: PWM period = [(PR2) +1]*4"Tosc*(eid tej b6 chia tn s6 ela TMR2). 6 rng cia xung digu ché (duty cycle) ditse tinh theo céng thi: fa Sasa (CCPRALCCPACON=S:4>yToxc (gt chia tim S6TMR2) 40 Vo Vin Chink Dé an 2 GVHD: Nguyén Thanh Thio uy oye Rests = << nezecet = Te eon] ¥ Conganier Bee Hinh 17; So dd khdi CCP (PWMmodey(trdi) eyo Cée tham s8 cla PWM (phaii) r Hs Seok 72 ote esa ene obra ~ Khi gid tr thanh ghi PR2 bing véi gid ti thanh ghi TMR2 thi qué trinh sau xy ra: + Thanh ghi TMR2 tr dng duge xia. Pin ctia khdi CCP duge set © Gia trj thanh ghi CCPRIL (chita gid tri an dinh 46 rng xung diéu ché duty cycle) drge dura vio thanh ghi CCPRXE. TL, Mach edu H ( H-Bridge Circuit ). 1/ Cong dyng va nguyén Ii hoat déng: SVTH: Tran Tung Bang Vo Van Chin Dé an 2 GVHD: Nguyén Thanh Thio Mach ciu H Li mot mach dign gidp dio chiéu dong dign qua mot déi trang DSi tugng li dng co DC ma ching ta cin didu khién Myc dich diéu khién la cho phép dong dign qua ddi tung theo chiéu A dén B hofe B dén A Tird6 gitp déi chiéu quay cca dong ca. Hign nay, ngoai logi mgch elu H duge thiét ké ti ede link kign ri nhur: BIT ‘dng suat, Mosfet, ... Cdn o6 cde loai mach edu H duge tich hgp thanh ede IC nhur L293D va L298D, Do 44i tugng diéu khién trong 42 tai nay la dng co DC 06 dign ap 12V va cng suat nho nén ching em ding mach cau H dao chiéu d9ng co 1a IC L298. Vv ==> GND Hinh 18: Mach cau Hf Kho sit hoat dng cia mach cdu H SVTH: Trin Tuong Bang 32 Vo Van Chinh Doin2 VD: Nguyin Thanh Tho eto GND Hinh19: Nguyén ly hoat déng ctia mach cdu H 2/ Mach cau H L298D: L298D ka mot chip toch! hop 2 mach trong g6i 1S chan, L298D e6 dign sip dank ghia cao (lim hon SOV) vi dong dién danh nghta 1in hon 2A nén rit thich hop cho ‘cde tmg dung céng sudt nhé nhur cée ding co DC logi vita va nho. Multiwatt15 2 ena es Hinh 20: Ser dé chan cia IC L298D (phai) IC L298D (trai) Dé an 2 GVHD: Nguyén Thanh Thio C6 2 mach cdu H trén mdi chip L298D nén c6 thé diéu khién 2 di tugng riéng véi | chip nay, Mdi mach clu H bao gdm 1 during nguén Vs (that ra 18 durong chung cho 2 mach cdu), mot chan current sensing (cém bién ding) 6 phin cudi etia mach céu H, chan nay khong durge ndi dat ma bo tring dé cho nguisi ding ndi | dign tro nh6 goi la sensing resistor.Bing cacch! do dign dp rai trén dign tréynay chiing ta 06 thé tinh durge dong qua dign tr5, cing 1a dong qua ding cx, muc dich cla vige ndy 1d dé xéc dinh dong qua tai, Néu vigc do luimg 1a khong can thiét thi ta co thé ndi chan nay voi GND. Déng co sé duge ndi voi 2 chin OUTI, OUT2 hoge OUT3, OUTS.Chan EN (ENA va ENB) cho phép mach cau hoat dng, khi chan nay durge kéo lén mite cao, L298D khong chi duge ding dé dao chiéu dong co ma cdn digu khién van tc dong co bang PWM.Trong thuc té, cdng suat thyc ma L298D co thé tai nho hon gia tr) danh nghia cia né (U =50V, I =2A). Dé ting dong tai cia chip lén gap ddi, chiing ta c6 thé néi hai mach cau H song song véi nhau (cde chan 66 chtte nang nhu nhau cita 2 mach edu durge ndi clung), nVLCD 1/Chite ning va hinh dang LCD. Ngay nay, thiét bi hién thi LCD (Liquid Crystal Display) duge sir dung trong rit nhigu cdc img dung cia vi diéu khién.LCD 6 rit nhigu wu diém so voi cae dang hién thi SVTTH: Tran Tung Bing a Vo Van Chink Dé an 2 GVHD: Nguyén Thanh Thio Khéc: né cé kha nding hién thi ki ty da dang, tre quan (chit, s6 va ki ty dé hoa), dé dang dua vio mgch img dyng theo nhiéu giao thire giao tiép khéc nhau, tn rat it tai nguyén hé théng va gid thanh r& Hinh 22: LCD va so dd chan 2 Chute ning cée chan onan) Ten Chite nang ‘Chin ndi dit cho LCD, Khi thiét ké mach ta néi chan nay véi GND 1 Vss__| eta mach diéu khién ‘Chin cip nguén cho LCD, khi thigt ké mach ta néi chin nay véi 2 | Von | Veo=5V cua mach digu khién 3_|_Var_| Ghan may ding d6 digu chinh d6 tong phan cia LCD. ‘Chin chon thanh ghi (Register select). Ndi chin RS véi logic “0” (GND) hode logic “I” (Vec) dé chon thanh ghi. + Logic “0”: Bus DB0-DB7 sé noi véi thanh ghi lénh IR ela LCD (6 4 RS | ché dd “ghi” - write) hotie ndi vei bd dém dia chi cha LCD (i ché dd. “doc” - read) + Logic “I”: Bus DBO-DB7 sé ndi vi thanh ghi dit ligu DR ben trong LCD. ‘Chan chon ché d6 doc/ghi (Read/Write), Noi chan RIW vai logic “O™ 5 R/W | dé LCD hogt dong 6 ché 46 ghi, hoc ndi vii logic “1” dé LCD 6 ché 49 doc. ‘Chan cho phép (Enable). Sau khi cic tin higu duge d3t lén bus DBO- 6 | E _| DB?, cfc Ignh chi duce chip nh§n khi c | xung cho phép cia chan F. +O ché d6 ghi: Di ligu bus sé duge LCD chuyén vao (chap niin) SVTH: Tran Tuémg Bang 35 ‘Vo Van Chin Dé an. GVHD: Nguyén Thanh Thio thanh ghi bén trong khi phat hign mot xung (high-to-low transition) cua tin higu chin E + O ché dé doc: Dit ligu sé duge LCD xuat ra DBO-DB7 khi phat hign canh len (low-to-high transition) chan E va duge LCD git & bbus dén khi nao chan E xuéng mite thap. ‘Tim durimg eta bus di ligu ding dé trao di thong tin vai MPU. Cé 2 chédo sir dung 8 duong bus nay DBO- 1 8 bit: Dur ligu duge truyén trén ci 8 dudmg, vai bit MSB la DB7 714 + Ché 46 4 bit: Dir ligu duge truyén trén 4 dutmg tir DB4 ti DBT, bit MSB la DB7. Bang Chie nang cée chin eta LCD * Ghi chu: G ché 49 “doc”, nghia la MPU sé doc théng tin tir LCD théng qua ede chan DBx. (Con khi 6 ché d6 “ghi”,nghia 18 MPU xudt théng tin diéu khién cho LCD thing qua cae chan DBx. 3/D§c tinh dién cita cdc chan giao tiép: LCD sé bj hong nghiém trong, hogc hoat dong sai léch néu ban vi pham khoang 4c tinh dign sau day: Chin cip nguén(Vec-GND) | Min=0.3V, Maxv7V ‘Cie chan ngb vio (DBx, E, .) | Min=03V, Max:(Vee“0.3V) Nhigt a6 hogt dong, Min=30C, Max=+75C hit €6 bio quan Min:-55C, Max:+125C 4/ T§p Ignh eta LCD: Cae lénh ciia LCD 06 thé chia than 3 nhém nur sau # Céc lénh vé kiéu hién thi ‘VD: Kiéu hién thi (1 hang /2 hang), chiéu dai dir Higu (8 bit /4 bit), © Chi dinh dia chi RAM néi ‘* Nhém lgnh truyén dit ligu trong RAM néi. SVTH: Trin Tuong Bang 36 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio V6i mai lgnh, LCD cin mét khoaing thai gian dé hoan tit, thai gian nay e6 thé kha lau 444i véi toe A} cha MPU, nén ta can kiém tra c’y BF hofc dgi (delay) cho LCD thye thi xong Iénh hign hanh mai c thé ra lénb tiép theo. ‘Ten enh Clear Display Hogt dong MA inh: DBx=DB7 DB6 DBS DB4 DB3 DB2 DBI DBO DBx- 0 9 0 0 0 0 0 1 Lénh Clear Display (x a hién thi) sé ghi mt khoang trong- blank (ma hign ki te 20H) vao tit ea 6 nhs trong DDRAM, sau 4 tra b6 dém dia AC=0, trd lai kigu hign thi gde néun bi thay 5i. Nghi tign), ché 6 tang AC. Tit hién thi, con tro dai vé g c tréi (hang diu Tee (max) Return home Ma lgnh: DBx= DB? DB DBS DBS DB3 DB2 DBI bBo DBx= 0 0 0 0 0 O 1 * ‘Lénh Return home tri bo dém dia chi AC vé 0, tra lai kiéu hién thi gc néu n bj thay déi, Noi dung cia DDRAM Khéng thay di. Entry mode set Mi Ignh: DBx=DB7 DB6 DBS DB4 DB3 DB2 DBI bBo DBx 0 0 0 0 0 1 PES UD : Tang (U/D=1) hoge gdm (1/D=0) b9 dém dja chi hin hi AC | don vj mi khio6 hinh dng ghi hoe dge ving DDRAM. Vi tri con t6 cing di chuyén theo sy ting gidm niy. S : Khi SI toan bé n6i dung hién thi bi dich sang phai (WD=0) hode sang trai (UD=1) mdi khi e hanh ding ghi ving DDRAM. Khi S ): khong dich noi dung hién thi Noi dung hién thi khong dich khi doe DDRAM hode doc/ghi 37 us SVTH: Trin Tuong Bang Vo Van Chinh Dé an. GVHD: Nguyén Thanh Thio ving CGRAM. Display onfoft control Cursor or display shift Function set Ma lgnh: DBx=DB7 DB6 DBS DB4 DB3 DB? DBI DBO DBx= 0 9 0 0 1 [D] [Cl BB D: Hién th man hinh khi D=1 va nguge lai, Khi tit hién thi, ndi dung DDRAM khong thay déi. Cz Hin thi con tr khi C1 va nguoe Iai. Vi ti va hinh dang con tr6, xem hinh & B: Nhdp nhdy ki t ti vi tri con tro khi B=1 va nguge lai. Xem thém hinh 8 vé kiéu nhap nhay. Chu ki nhap nhay khoang 409,6ms khi mach dao dong ndi LCD 1a 250kHz MA Iénh: DBx=DB7 DB6 DBS DB4 DB3 DB2 DBI DBO DBx= 0 0 © 1 [SCRE] * + Lénh Cursor or display shift dich chuyén con tro hay dit ligu hién thi sang tri ma khong cfn hinh dng ghildoe di Higu. Khi hién thi kiéu 2 dong, con tro sé nhay xudng dang duedi khi dich ‘qua vi tri thir 40 cia hang dau tién. Dar ligu hang dau va hang 2 dich eting mot lie. MA Ink: DBXx= DB7 DB6 DBS DB4 DB3 DB2 DBT DBO DBx= 0 0 1 (DLJIN) FI? DL: Khi DL=1, LCD giao tiép vii MPU bang giao thite 8 bit (ti bit DB7 dén DBO). Nguge lai, giao thie giao tigp 18 4 bit (tit bit DB7 dén bit DBO). Khi chon giao thite 4 bit, di Higu dege truyén/nhan 2 lin lign tigp. vai 4 bit cao géi/nhan tres, 37 us 37 us 37 us SVTH: Trin Tuong Bang Vo Van Chinh Dé an. GVHD: Nguyén Thanh Thio Set CGRAM address Set DDRAM address 4 bit thip géi/nhan sau, IN: Thigt lap 86 hang hign thi, Khi NO: hign thi U hang, N=1 hin thi 2 hang, F; Thiét lap kigu ki tu, Khi F=0: kiéu ki tyr Sx diém anh, F=1 kkigu ki ty 5x10 diém * Chil fs © Chi thye hign thay déi Funetion set & déu chwong tinh, Va sau khi duege thee thi 1 lan, Ignh thay doi Function set khong dig LCD chip nbn nita ngogi tre thi lip chuyén déi giao thie giao tip. * Khong thé hién 2 hang jhiéu ki ty Sx10 diém anh o kid hién th MA inh: DBx=DB7 DB6 DBS DB4 DB3 DB2 DBI DBO DBx= 0 I [ACGJ[ACGI[ACG][ACGI[ACGI[ACG] Lénh nay ghi vio AC dja chi cia CGRAM. Ki higu [ACG] chi | bit ctia chudi dit liu ti CGRAM tai 6 bit, Neay sau lenh nay léIénh dge/ghi dt ig dia chi da duge chi dinh Mi link: DBx=DB7 DB6 DBS DB4 DBS DB2 DBI DBO DBx= 1 [AD] [AD] [AD] [AD] [AD] [AD] la} Lénh nay ghi vao AC dia chi eta DDRAM, ding khi cin tit lap toa d6 hign th mong mun, Ngay sau Kin ny ten doc/ghi dit ligu tir DDRAM tai dia chi da duge chi dinh. SVTH: Trin Tuong Bang Vo Van Chinh 37 us 37 us Dé an. GVHD: Nguyén Thanh Thio Khi 6 ché d6 hign thi | hang: dia chi c thé tir OOH dén 4FH. Khi 6 ché d6 hién thi 2 hing, dia chi tir 00h dén 27H cho hang thir nhdt, va tir 40h dén 67h cho hang thir 2. Xem chi tiét e hinh 4, Read BF and address Ma inh: DBx= DB? DB6 DBS DB4 DB3 DB2 DBI DBO DBx = [BF] [AC] [AC] [AC] [AC] [AC] [AC] TAC] (RS=0, RW=1) Nhur da dé cap trirée day, khi ety BF bit, LCD dang lam vige va Kénh tigp theo (néu ¢6) s@ bj bé qua néu cd BF chua vé mite thip. Cho nén, khi lap trinh diéu khién, ban phai kiém tra ed BR tnd khi ghi dtr Higu vio LOD. Khi doe oi BF, gid trj ciia AC cling duge xuat ra cae bit [AC]. la dia chi eta CG hay DDRAM la tay thuge vao Kénh trade doe Ous Write data to CGor DDRAM Ma inh: DBx= DB7 DB6 DBS DB4 DB3 DB2 DBI DBO DBx= [Write data] (RS=1, RW=0) Khi thiét lap RS=1, R/W=0, dit ligu edn ghi duge dura vio. cée chan DBx tir mach ngoai s8 duge LCD chuyén vio trong LCD tgi dia chi duge xée dinh ti lénh ghi dia chi trussed (Ignh ghi dia chi citing xc inh ludn ving RAM cin ghi ‘Sau kh ghi, bo dém dia chi AC tu dong tang/giam 1 tay theo thigt kip Entry mode. Lara ¥ 1 thi gian efip nh AC khong tinh vio thii gian the 37 us SVTH: Tran Tung Bang Vo Van Chin 40 Dé an. GVHD: Nguyén Thanh Thio thi Iénh, MA Iénh: DBx = DB7 DB6 DBS DB4 DB3 DB2 DBI data from| DBO DBx= [Read data] (RS=1, RAW=1) IV. Déi tong didu khién: Dong co DC = Day la dong co sit dung trong dé tai Hinh 23: Dong co DC c6 gin encoder sir dung trong dé an SVTH: Trin Tuong Bang at Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio - Ben trong déng ea c6 gin mot encoder ding truc voi nd ding dé xae dinh tic 49 va vi tri ctia dong oo. ~ Cée théng sé etia dng cor nhur sau: + Din ép DC cp cho déng ca: 12VDC + Téc dd ti da 2000 vong/phiit + $6 xung cla encoder 60xung/vong + Dign cm L=102mH = Dang co 06 tat ca 5 day ra +2 day cung cp ngudn 12 V cho déng co +2 day ngudn SV cung cap ngudn cho encoder + | day tin higu dura xung encoder ra ngoai - Phuong phap diéu khién: Thay ddi te dd dong co bing cdch thay ddi ap cp vio cho dng co. ~ Nguyen Iy host dOng eta cam bién encoder: e6 nhiéu logi encoder khée nhau, MBi Jogi Iai o6 mot nguyén ly host dong khde mhau, trong khuén khd bdo céo dd an, em xin trinh bay phan nguyén ly loai encoder trong dé tai ma em sir dung: incremental encoder. Mé hinh thie 1 Hinh 24: Encoder Incremental encoder vé co ban la mét dia tron quay quanh mét truc duge duc 16, nh hinh trén. SVTH: Trin Tuong Bang 2 Vo Van Chinh Dé an 2 GVHD: Ngu in Thanh Thio Bia khile vach Bo thu phit quang Hinh 25: Cfiu tgo Encoder 6 2 bén mat cua edi dia tron 46, sé c6 mot BO thu phat quang. Trong qua trinh ‘encoder quay quanh truc, néu gap 15 réng thi anh sing chiéu qua durge, néu gp manh chin thi tia siing khong chiéu qué duge. Do dé tin higu nhan duoc tir sensor quang La mt chudi xung.Méi encoder dugc ché tao sé biét sin sé xung trén mot vong. Do dé ta c6 thé ding vi diéu khién dém sé xung dé trong mdt don vi thai gian va tinh ra téc 46 dong co. Encoder ma em str dung trong 44 an ctia minh, hon toan gidng vi mé hinh & trén. Tuy nhién, mo hinh (rén ¢6 nhuge diém ln ka: ta khong thé xée dinh duge ding co quay tréi hay quay phai, vi e6 quay theo chiéu ndo di nita thi chi c6 mot dang xung dura ra, Ngoai ra diém bat dau cia dong ca, ta cing khéng the nio biét duge. Cai tién m6 hinh 1 bing m6 hinh 2 nhue sau: MG hiinh thie 2 SVTH: Trin Tuong Bang Vo Van Chinh GVHD: Nguyén Thanh Thio ‘Trong m@ hinh nay, nguiri ta due tit ca li 2 ving 18. Vang ngodi cing giing hu m6 hinh 1, vong gitta Igch pha so véi vong ngoai 18 90 49. Khi dé, dang xung ra tir 2 vong trén nhur sau J A b tL 4 Hinh 27: Dd thi xung cia encoder 6 2 ving vach inh pha nha 90° Hai xung dia ra tir 2 vong gch nhau 90 46, néu vong ngodi nhanh pha hon vong trong thi chic chin dng co quay tir tri sang phai va nguge li L6 G vong trong cing ding dé phat hign diém bat dau cia dong co.Co the viet chuong trinh cho vi digu khién nhan biét: néu c6 mét xung phat ra tir Vong trong cing nay, te Ia dng co 48 quay diing mot vong Vai nhiing dic tinh trén, encoder ding rat phd bién trong vige xée dinh vi tri g6e cut dong cu. MOt logi encoder thit 2 ciing phé bién hign nay, dé 1a: absolute encoder. Mé hinh dia quang cia loai nay nur sau: SVTH: Trin Tuong Bang “4 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio CH G THIET KE MACH PHAN CUNG CODE CHUONG TRINH VA LUU DO GIAITHUAT 1 THIET KE MACH PHAN CUNG: Mach durge thiét ké gdm o6 cc Khoi nhwr sau: khdi ngudn, khdi ban phim, khéi hién thi, khOi mach cong suat, khdi diéu Khién. V/Kh6i nguén: Mach léy nguén xoay chiéu qua adapter AC/DC 220VAC/I2VDC, va dirac én ép nhs IC 7805.0 48 nguyén li mach oo SVTH: Train Tudng Bang Hinh 29: Khéi mach én dp 6 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Chie ning eta eée phin tr trong mach: = IC 7805; chite ming én ap dign ap SV Hinh 30: 1C7805 ~ C4 ty héa (c6 phan cuc) én dp ngd vio, dign dung ca tu nay cing Kin thi dign 4p vio IC 7805 eang phing. - C5 va C7 tu gidy (khong phan cure) 1a hai tu loc nhiéu ting sé cao 6 ngd vao va gd ra. = C6 ty héa 6 téc dung dp dao d6ng ty kich khi sir dung IC ‘ip dang 78xx. 2/ Khoi mach ban phim: ‘Mach bin phim gdm 16 phim, durge bé tri thinh 4 hang va 4 c6t nh hinh ve Hinh 31: Kh SVTH: Trin Tang Bang :mgeh ban phim 46 ‘Vo Van Chin Dé an 2 GVHD: Nguyén Thanh Thio Bén hing durge ndi véi Port B (tir B4 dén B7) cia vi xir li, bin cAt duege ndi vai Port A (tir AO dén A3) cia vi xir Hi va duge ndi voi ngudn VCC qua dign tr (nghia la ede chan cia Port A tir AO dén A3 sé lun nhgn mite 1 khi khdng e6 phim nhin), vige lam ny nhiim phye vy cho gidi thugt quét phim s€ duge trinh bay é phn sau Trong s6 16 phim cé 10 phim dé nhap dir ligu sé tir 0 dén 9, 6 phim digu khién (FW, RV, STOP, ENTER, CLEAR, SAVB). Negudn VCC trong so dé mach ban phim li SV, duge cdp tir khdi mach Sn ap 6 trén.Vi mach ban phim truyén nhén dit ligu tryc tip voi PIC nén can dign ap dn dinh. 3/Khdi mach hién thi Mach hign thi bao gim man hinh LCD giao tiép v6i PIC qua Port D v6i giao thie 4 bit, ngodi ra cdn o6 bién tir 48 digu chinh d9 sing cia LCD. Ngo ra, cin of khdi hign thi gim 8 led don duge han dong bing dign tr 2200, of tic dung dé text chung trinh,cée khdi khée va eiing duge ding a8 bao higu do chigu trong ché 49 e6 ci dt thoi gian. Minh 32: Khoi mach LED vi LED don 47 Dé an 2 GVHD: Nguyén Thanh Thio 4K) i mach cing suit: = Mach céng suat sir dung IC clu H L298, voi 2 kénh A vi B,mdi kénh vii dign ap inh mite SOV va ding dinh mite cho tii li 2A.Khi din song song 2 kénh ta durge ding cdp cho tai lén dén 4A (gip d6i).Dién 4p diéu khién SV, Hinh 33: Khéi mach cng sudt st sung IC L298 = Clu Diode ding dé chéng ding dign nguge, do tai dong co 06 tinh chat cam Khiing.Nguén cp cho dong eo 12V ~ Sir dung IC ciu H nay, khong nhimg ding dé dao chigu dng co ma edn diéu khién tic d6 dng co bing phuong phap bam xung (PWM). '5/ Khéi mach diéu khiéns Vi dieu khién trang tam la PIC 16F877A. Voi chite nang cia cae port niu sau: = Port A (tir AO dén A3) duge set la ngo vao dé nhan tinh higu tir 4 c6t cia bam, phim, = Port B (tir B3 dén B7) la ng6 ra xudt tinh higu ra 4 hing cua khéi bin phim, chin RBO nhgn tinh higu xung tir Encoder (vi ngit ngoai xay ra khi tinh higu thay déi trén chin RBO); Ta sir dung 2 chin RCI(CCP2) va RC2 (CCP1) tia Port C dé xuét tinh higu PWM diéu khién dng co. SVTH: Tran Tung Bang “8 Vo Van Chin Dé an 2 GVHD: Nguyén Thanh Thio = Port D (trir chin RD3) gai tinh higu dén khdi hign thi LCD.Ba chan tir RDO dén RD2 néi véri 3 chan digu khién cda LCD.Bén chin tir RD4 dén RD7 ndi voi 4 bit cao ciia cae chan nhgn di ligu ctia LCD, 20008ERE ‘Thgch anh ding trong maph gid KLBAMEZ aR dit GICGR He FHidy voi dign dung 33uF, Pic reset khi chan s6 1 MCLR ndi mass.Tu C3 e6 tée dung chéng nbigu 6 chan sb I1/ Gidi thigu vé chwong trinh viét code va bién djch: ‘Trong dd dn nay nhém ching em sir dung chong trinh viét code CCS, chuong trinh cho phép lap trinh ng6n ngit C cho vi diéu khién PIC cua Microchip. ‘Chuong trinh nay cé cae cau lgnh don gian, dé hiéu, hé trg bién dich voi chire nang hién thj Wi va canh béo chuong trinh khong kha dung. Ngoai ra no cn co thé bién dich tt code C ra filechex va ca code Assemble, PCWHD Compiler Registered te nombre are, SVTH: Tran Tung 8) gh ah OD. Vo Van Chin 49 Dé an 2 GVHD: Nguyén Thanh Thio (Cu tric 1 chong trinh trong CCS: = Diu tign 1d ede chi thi tién nit IY :(# ..) 66 mgm vu bio cho C dung nhiing gi trong chuong trinh C nhur diing vi xi li gi , 6 ding giao tiép PC khong , ADC khong , DELAY khéng , c6 str dung ngit hay khong... = Ce Khai bio bin ~ Cée him con. ~ Che him phue vu ngit theo sau bi 1 chi thi tién xir ly cho biét ding ngit nto. ~ Chuong trinh ehh dy vé cdu tric 1 chuong trink trong CCS: it inelude<16F877.h> Khai bio tién xir li Hidevice PICI6F877 *=16 ADC=10 20000000) use delay (cloc! U1 khai bio them néu 6 Uf--—-khai bao bién- Int ab; Intl6 x,y5 i churomg trinh con~ Void xu_ly_ ADC 0, 1 a} Int cai_dat_PWM () WINT_TIMERI SVTH: Trin Tuong Bang 50 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio Void xu_ly_ngit() } huong trinh chin! Void main() t } Luu dd git thug Luu dé gidi thugt gm: Iuu 46 chuong trinh chinh, chuong trinh quét phim, chuong trinh ngit cia timerl "= Chuong inh chinh la 1 vong lip v6 han c ning chwong trinh con nh: quét phim, check phim, chon ché a, tinh PWM, nhap di ligu te d6, nap dit ligu thoi gian, save vio epprom. + Chong trinh quét phim thé hign gid thugt nan phim nhdn va nhan tri ciia phim (phim nhan la phim nao) + Chnzong trinh ngit timer | 6 tae dung © ttn ig dén Kh hin th tri PWM, va xul SVTH: Trin Tuong Bang Vo Van Chinh hat gi tri tbe 6, tinh ton if Dian? GVHD: Nguyn Thanh Thio CODE CHUONG TRINH #include"E:/TL/DOAN2 cau MACH\1S\main.h" include Jifinclude Jidung cac ham toan hoc #use delay(clock=20000000) fuse fast io(a) fuse fast io(b) Huse fast_io(c) fuse fast int quetphim(; int checkphirn(b); void pwm(; void ghi_tocdo(); void ghi_thoigian(); void clear(); void read_rom(): —==khai bao bien—==—-—= .ab.¢,d.stiphim duty,ct,l4m; intl6 s_xung.s_vong,setpoint,crror luu,tg,tel dem; bien luu eeprom= imt8 €0,e1,62,¢3,j.k: intl6 e; shuong trinh quet phim: fiquet phim so int quetphim() { output_b(Oxe0):/ B4=0 b=1: ccheckphirn(); if (a!-0) {delay_ms(200); return (sttphim);} output_b(0xd0)// BS=0 a0; {delay_ms(200); return (sttphim):} output_b(0xb0):// B6~0 checkphim(b); if(@!=0) SVTH: Trin Tuong Bang Vo Van Chinh 38 Di in? GVHD: NguyBn Thanh Thio {delay_ms(200); return (sttphim):} ‘onutput_b(0x70)s/ BOO 0 b=4; checkphim(b); if (a!-0) {[delay_ms(200); return (sttphim);}} i int checkphim(b) ‘chong trinh check phim== t switch (b) t case I if{input(pi {sttphim aah} else iftYinput(pin_at)) {stephinx als} else if{!input(pin_22)) {sttphim=3; wh} else if{input(pin_23)) { sttphim=103/thuan als} else {} break; case 2: if(\inpat(pi {sttphim=4; wl else ifttinput(pin_al)) {sttphim, als} else if{!input(pin_22)) {sttphim=6, als} else if{!input(pin_a3)) {sttphim=I1:/inghich al} else {} break; SVTH: Trin Tuong Bang 56 Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio cease 3: ifCtinput(pi {sttphim als} else if{!input(pin_al)) {sttphim=8; 3} else if{!input(pin_22)) {sttphim=9, als} else if{input(pin_a3)) {sttphim=12;//stop a) break: case 4: if('input(pin_a0)) {sttphim=03/ wl else if{!input(pin_al)) {sttphim=I5,//save 3h else if{input(pin_22)) {sttphim=I4y/clear als} else iftYinput(pin_a3)) {sttphim=13y/set a3} else {} break:} return (sttphim): (# chuong trinh nhan xung tu encoder ‘ingat ngoai, nhan xung tu encoder Hint_ext void RBO_ist() s_xung++y/idem so xung o chan RBO 3 ‘ngat timer! , tinh toan pwm va hien thi #Hint_timer! void timerl_ist() t set_timerl(-62500); if (5) SVTH: Trin Tuong Bang 37 Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio S_vong=s_xung*2,//xung tren phut “ht led_gotoxy(!,1); printi(led_pute,” ”% ifer=1) led_gotoxy(,1); printi(led_pute,"TD_dat=96tu vip",tuu):} else { led_gotoxy(I,1); printi(led_pute,""TG_dat=%6lu s"tg):} led_gotoxy(.2); printi(led_pute,” " it (@=2) {led_gotoxy( 1,2): prinif(led_pute,"TD_tt=-Yluvip".s_vong);} if(@=1) {led_gotoxy( 1,2); printi(led th (xuat pwm pwm(); s_xung=0; s_vong=0; set_timerl(-62500); ) else a sset_timerl(-62500); /ingat timer0, dat thoi gian #int_timerO void time0_irs() set_timer0(-235); if (dem>=tgl) ‘output_high(pin_cO); delay us( 100), contput low(pin 0); SVTH: Tran Tung Bang se ‘Vo Van Chin Di in? GVHD: NguyBn Thanh Thio {d=15} else} set_timer0(-235); else { dem+t; set_timer0(-235);} H/chuong trinh chinh void main) t=0;1-0;m=0; HiLngo va0,0: la ngo ra { tris_b(0b00001111);/4 chan RB4-RBT xuat du liew ra ban phim set_tris_a(0b00001111)://4 chan RAO-RA3 nhan du lieu tu ban phim (000000000)://2 chan RCO va RCI xuat PWM set_tris_D(0600000000)://port D la port xuat du lieu ra LCD setup_timer_1(T1_INTERNAL|TI_DIV_BY_8); /* timerl la bo dink thoi su dung xung noi,bo chia 1:8 thay doi moi 1600ns Dung timer! de ngat moi 0.15 do vay ta dat gia tri cho timer! la 0.18/1600ns~62500(D)=F424(H) => gia tri nap la FFFF-F424—BDB*/ setup_timer_O(RTCC_INTERNAL|RTCC_DIV_256); cenable_interrupts(int_ext)s//khoi dong ngat ngoai ext_int_edge(H_TO_L); — // xung tu cao xuong thap cenable_interrupts(global)/ khoi dong bit ngat GIE. setup_timer_2(T2_DIV_BY_4,249,1); /*timer2. dung dinh thoi cho bo PWM. mode: bo chia thoi gian (prescale) cua timer2 1:4 period: gia tri nap chi thanh ghi PR2 postscale : bo chi ra,chon 1:1 PWM khong dung ‘Thach anh 20MHz, PWM fre: 10000Hz, thay doi duty cycle(%) de thay doi toc do* setup_cepl(CCP_PWM); setup_cep2(CCP_PWM), SVTH: Trin Tuong Bang 59 Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio set_pwml_duty(0); set_pwm2_duty(0); led_init() led_send_byte(0,0x01);, led_gotoxy(,1); printi(led_pute,"CHUONG TRINH DK "); led_gotoxy(,2); printi(led_pute," TD DONG CO DC"); delay_ms(1000); led_gotoxy(,1); printi(led_pute,” " led_gotoxy( 1,2); printi(led_pute,” " read_rom(); led_gotoxy( 1,1); printi(led_pute,"CHON CHE DO :_ while (true) while (e=0) quetphim(; if (a!-0) if (suphi led_gotoxy(1,1); printi(led_putc,"CHON CHE DO :_%6u".et):} if (stiphim—2) ot led_gotoxy(1,1): printt(led_pute,"CHON CHE DO : %u'",et);} if(ct=1) {led_gotoxy(.1): printi{ed_pute, led_gotoxy(1,2) printf{ed_pute,"TD_hn else { Ied_gotoxy(1,1); printf(led_pute,"TD_dat=__—w/p"): led_gotoxy(I.2): ‘D_dat=_ vip"); flu vip".e):} SVTH: Trin Tuong Bang Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio printf(led_pute,"TG_dat=_—s"):} quetphim0; if (a!=0) if (stiphin>-0 &-& sttphim<9)/rban phim tu 0-9 if (m==0) {ghi_tocdo();} if{(ct-=2)&&(m==1) {ghi_thoigian();} if (stiphisn {clear();} if (sttphim led_gotoxy(!,1);, printi(led_pute,” " led_gotoxy(!,1) printi(led_putc, delay_ms(1000); led_gotoxy(!1) printi(led_pute,’ "5 led_gotoxy(1,1); printi(led_pute,"TD_dat=_" hai nhap TD_dat"); if ((sttphim=15)8&&(i!=0)) lau vao eeprom t \write_eeprom(0,e0); delay_ms(100); write_eeprom(I,e1); delay_ms(100); write_eeprom(2,e2); delay_ms(100); write_eeprom(3,e3); delay_ms(100); write_eeprom(4.i): delay_ms(100); led_gotoxy( 2) printi(led_pute,’ led_gotoxy(.2); printi(led_pute," LUU THANH CONG "); ns if ((sttphim==13)&&((i!-0)](€!=0))) SVTH: Trin Tuong Bang 61 Vo Van Chinh Dé an 2 GVHD: Nguyén Thanh Thio quetphim; iffa!-0) { iftstphi 0) led_gotoxy( 2); printi(led_pute,” ”% led_gotoxy( 2) printi(led_putc, if (ct—2) {enable_interrupts(int_timer0); set_timer(-235);} cenable_interrupts(int_timer1); enable_interrupts(global); set timer (-62500); set_pwml_duty(duty); 4. if (sttphir QUAY THUAN"); 1) led_gotoxy(!,2); printi(led_pute,” ”% led_gotoxy( 2) printi(led_pute,” QUAY NGHICH "); if (¢t—=2) {enable_interrupts(int_timer0); sset_timer(-235);} cenable_interrupts(int_timer1); cenable_interrupts( global); set_timer(-62500), set_pwm2_duty(duty); 2; 3 SVTH: Trin Tuong Bang Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio if (stiphim—=12)/stop disable_interrupts(int_timer®); set_timer0(0); disable_interrupts(int_timer!); set_pwml_duty(0); set_pwm? duty(0);, led_gotoxy( 2) printi(led_pute, led_gotoxy(,2); printi(led_pute,” STOP"); duty=0; 0; 0; led_gotoxy(,1); printi(led_pute,” ”% led_gotoxy( 2) printi(led_pute, led_gotoxy(I,1); printi(led_pute,"CHON CHE DO_ "); yyy void pwm( { if ((luu>s_vong)&& duty<250) {error=luu-s_vong: if (error=1000) dury=duty+50; else if (error>100) duty=duty+20; else if (error>30) {duty-duty+5;} else if (error=20) duty-duty+1.5; lsc if (crror> 10) duty=duty+(0.05*error); else {duty-duty#(0.025*error):} 3 if Cuu<(s_vong-2)8& (duty>0)) ferror=s_vong-luu; if (error>=10) SVTH: Trin Tuong Bang 3 Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio duty=duty-(0.05*error); else (duty=duty-(0.02*error)); iffluu==s_vong) duty-duty;, if{(duty>=250)&&(uu>s_vong)) [led_gotoxy(1,1); printi(led_pute," " led_gotoxy(1,1); printi(led_pute," TD_t if (@=0) {set_pwml_duty(0); set_pwm2_duty(0);} else if (d==1) MAX ");} {set_pwml_duty(duty);, set_pwm2_duty(0);} else {set_pwml_duty(0); set_pwm?2_duty(duty);) ‘huong trinh con nhap toc do* void ghi_tocdo() ifti>-08Ri<-3) 1 gia thuat Iau eeprom e2=sttphim; else {e3=sttphim;} t setpoint*=10; setpoint*=stiphim; aa led_gotoxy( 1,1); printf(led_pute," " led_gotoxy(,1); ‘D_dat=%lu vip",setpoint); else { led_gotoxy(1,1); printi(led_putc,” "5 SVTH: Trin Tuong Bang of Vo Van Chinh Di in? GVHD: NguyBn Thanh Thio led_gotoxy(1,1); printf{led_pute,"0-0881<-3) t te tatsttphim; I+; led_gotoxy( 1,2); printf(led_pute,” "% led_gotoxy(,2);, printi(led_pute,""TG_dat=%6lu s",tg); tgl=10.12; 3 else { led_gotoxy(! 2): printi(led_pute, " led_gotoxy(,2); printi(led_pute," 0

You might also like