You are on page 1of 20

BO CO N THIT K K THUT CN BN V PIC16F877A O NHIT DNG LM35, HIN TH LN LCD

Sau y l qui trnh tm hiu v PIC ca nhm 1. Trc ht nhm ln mng tm hiu tng quan v PIC

xem mnh nn bt u t u, v ch yu hc t din n


www.picvietnam.com, tin th nhm xin gi li cm n ti din n ny. Nhm tm c 1 bi dn dt v PIC ca tc gi FALLEAF, v theo th hc PIC ta nn bt u bng vic tm hiu v cc khi nim v lm cc cng vic -Thanh ghi-register -C-flag -nh thi-Timer -Lm mch nhp nhy Led Nhng nu search trn mng vi t kho PIC v cc khi nim ny th c rt t, thm ch nhm tm khng ra. L do n gin v cc phn kin thc ny ng l phi c hc trong cc mn tin cho PIC nh kin trc my tnh hay vi x l. Nhm tm ti hi cc anh i trc, v theo hng dn ca anh Ca ( SV Bch Khoa K05) th nn tm hiu v vi iu khin 8051 trc, v nn hc lp trnh bng ASM tm hiu 8051, nhm tm c sch v 8051 ca tc gi Tng Vn On. Chnh trong sch ny, nhm hiu c cc khi nim v thanh ghi, nh thi, v ngn ng ASM (ch mc cn bn) Nhm xin c ni v cch hiu ca mnh v cc khi nim trn Thanh ghi Trong mt vi x l 8051 c rt nhiu thanh ghi (khong hn trm thanh) mi thanh l mt chui cc bit, mi bit c 2 gi tr l 1 hoc 0 v c th uc gn bi ngi lp trnh, a s thanh ghi c 8 bit, ngoi ra cn c cc thanh 13 bit. Mi thanh nh th c cc chc nng ring.

C thanh ch n thun ch nh mt gi tr no , thanh ghi 8 bit th ch nh c 2 = 256 gi tr t 0 ti 255


8

C thanh dng iu khin, v d thanh ghi cho php xut hoc nhp PORTB. PORTB c 8 chn, mi chn c iu khin l chn xut hay nhp bi thanh ghi PORTB. Nu thanh ghi PORTB c gi tr 00000001b th c ngha l chn B0 l chn nhp d liu, cn cc chn B1-B7 l chn xut d liu

C (flag) C cng l 1bit, nhng n c chc nng c bit hn cc bit khc nn ngi ta t tn cho n. Ta s hiu k hn v n qua mt v d trong phn timer

nh thi (Timer) nh thi l mt chc nng khng th thiu ca cc vi iu khin, n cho php vi iu khin m thi gian. Tuy nhin khng th m mt cch trc tip nh con ngi c, timer m thi gian thng qua vic m xung dao ng. Mt vi iu khin c khong vi timer. B nh thi cng l cc thanh ghi, chng c iu khin bi bit nh thi. Khi ta set bit nh thi bng 1 th thanh ghi nh thi bt u nhy s 0, 1, 10 cho n khi thanh ghi nh thi c gi tr 11111111. Bit 7 ca thanh ghi nh thi l mt c, bnh thng th bit ny bng 0, cho n khi thanh ghi m ln ti gi tr max th bit ny mi bng 1, v sau thanh ghi timer li tr v gi tr 0 v bt u m li, , v n ch dng khi bit nh thi c gn bng 0 tr li. C ny nh mt cch nh du mt chu k m, gia 2 ln c ny bng 1 l 256 gi tr c m Cng c timer nhiu hn 8bit Hp ng ASM Vi iu khin mun hot ng c phi c cc ch dn cho n lm vic, l cc file hex. M mt file hex ta thy ton nhng 0 vi 1. Con ngi s mt rt nhiu thi gian vit nn 1 chng trnh ton 0 vi 1, v vy ngi ta xy dng cc ngn ng lp trnh. Thay v vit 1 dng lnh ton 0 vi 1 th ta vit mt dng lnh khc tng ng nhng gn gi hn vi ngn ng con ngi. Ngn ng cng gn vi con ngi th c cp cng cao. ASM l ngn ng gn vi file hex nht. Lm vic vi ASM ta ch yu lm vic vi cc bit, nh vic set bit bng 1 hay di chuyn gi tr t thanh ghi ny sang thanh ghi khc,

2. Sau khi tm hiu qua sch v nhng khi nim ny t

xong, nhm bt u chnh thc tm hiu v PIC.


Cng c m phng hu hiu l Proteus Ngn ng lp trnh l CCS, hc t Tutorial ca anh Trn Xun Trng K2001 HBK Nhm tm hiu v PIC thng qua tutorial ca tc gi Nguyn Trung Chnh trn din n picvietnam, xin cm n anh Chnh vit mt tutorial rt hay v cn bn v xin php ly cc hnh nh minh ho t tutorial ny S chn ca PIC16F877A :

PIC hot ng ta cn cp ngun cho PIC. Ngoi ra c th thm vo b dao ng thch anh, v nt nhn reset:

V y l mch nhy Led PortB:

M phng bng Proteus: Mch nhp nhy Led PIC16F877A Led Tr 330 Ohm

Dng 1 DCVolmeter chn B0, ta thy in p xut ra chn ny thay i 0V, 5V sau mi thi gian delay Code : #include<16f877a.h> #device* =16 ADC=8 #FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT #use delay (clock=20000000) void main()

{ //Thiet lap che do cho PORT B Set_tris_b(0x00); //Tat ca PORT B deu la cong xuat du lieu output_b(0xFF); //Mo het cac Led

While(TRUE) //Vong lap vo han { output_b(0xFF); //Cho cc Led sng delay_ms(500); // Delay 0.5s output_b(0x00); //Tat het cac Led delay_ms(500); Cho 0.5s } }

Sau tin hnh thc nghim: Phi lm ngun 5V cho PIC Phi lm mch nhp nhy Led Sau khi xem qua cc linh kin ca mt anh K05 (anh Ca) bit mt cc linh kin n ra lm sao th ra Nht To mua
-

Cc dng c c bn; Test board Board c l M hn, ch, nha thng Mi khoan Ht ch

Cc linh kin cho ngun 5V: Board c l Bin p cch ly-cn gi l tng ph 7805- dng xn 5V (7806 th xn 6V), c thm nhm tn nhit Domino Cu diod T 1000 uF 35V T 10uF 50V5 T ko 104

S mch ngun 5V

3. S dng LCD TC1602A y l LCD 2 hng, mi hang 16 k t s dng LCD , ta hy c file LCD.C trong th vin Driver ca CCS. CCS hng dn cch ta i dy cho cc chn ca LCD, ng thi CCS vit sn cho ta cc hm thao tc cho LCD:

Cch ni dy: // As defined in the following structure the pin connection is as follows:

// // // // // // //

D0 enable D1 rs D2 rw D4 D4 D5 D5 D6 D6 D7 D7

// LCD pins D0-D3 are not used and PIC D3 is not used.

Cc hm thng dng lcd_init() : l hm phi c bo rng s s dng LCD lcd_putc( char c) : hm xut k t ra LCD lcd_gotoxy( BYTE x, BYTE y) : hm cho php con tr nhy ti v tr (x,y) trn LCD

M phng v d dng LCD bng Proteus: Code : #define <16f877a.h> #include "16F877A.h" #device *=16 adc=8 //#device PIC16F877A *=16 #use delay(clock=20000000)

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)

#include <LCD.C>

void main () { lcd_init(); lcd_putc("Do an ky thuat"); } Kt qu:

4. LM35

y l cm bin nhit LM35 c 3 chn : 2 chn cp ngun v 1 chn xut in p ra ty theo nhit

Nhit tng 1C th in p xut ra chn out ca LM35 tng 10mV

Cc c tnh k thut khc :

M phng bng Proteus:

Nhit l 27C, in p xut ra l V=0.27176 chng t s tng 10mV /C l kh chnh xc. Khi m phng Proteus, nu khi LM35 khng hot ng, th click chut phi/ edit properties/ b check exclude from Simulation i.

5. Chc nng ADC ca PIC16F877A


Chc nng ADC cho php PIC nhn tn hiu tng t t cc chn c h tr ADC v chuyn tn hiu sang tn hiu s x l. Cc chn c h tr ADC ca PIC16F877A l : A0 A1 A2 A3 A5 E0 E1 E2. Mt s lnh cn bn khi dng ADC: Mun dng ADC, ta phi khai bo #DEVICE cho bit dng ADC my bit, chng hn #device*=16 ADC=8 cho bit dng ADC 8 bit Setup_ADC(mode)

.Mode l ADC_OFF : tt chc nng ADC .Mode l ADC_CLOCK_INTERNAL : thi gian ly mu bng xung clock .Mode l ADC_CLOCK_DIV_2 : gian ly mu bng xung clock /2 Setup_ADC_ports(value) //Xc nh chn ly tn hiu Analog v in th chun .Value l ALL_ANALOGS : dng tt c cc chn c h tr ADC .Value l NO_ANALOG : khng dng ADC .Value la ANi : dng chn ANi l chn ADC Set_ADC_channel(channel) //chn chn c gi tr analog bng lnh read_adc() .Vi PIC16F877A channel c 8 gi tr 0-7 tng ng l cc chn A0-E2 nh k trn . chnh xc ta nn delay khong 10ms truc khi c tn hiu: .Vd: set_ADC_channel(0); delay_ms(10); read = read_adc(); Sau on code ny, read s c gi tr bng gi tr in p m chn c

6. Ti y ta cng c lm mch hon chnh

M phng bng Proteus:

Kt qu :

Code:

#define <16f877a.h> #include "16F877A.h" #device *=16 adc=8 //#device PIC16F877A *=16 #use delay(clock=12000000)

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT //#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)

#include <LCD.C> #INT_EXT int8 read; void main(void) { // set_tris_b(0); set_tris_a(0xFF); set_tris_d(0x00);

// Khoi tao cho ngat ngoai enable_interrupts (INT_EXT); ext_int_edge(H_TO_L); enable_interrupts (GLOBAL); //Khoi tao ADC setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); delay_ms(50);

while(TRUE) { lcd_init(); read=read_adc(); read =read*1.960784314;

printf(lcd_putc,"\rNhiet do: %u",read); delay_us(20); } }

Khi dng ADC 8bit, tn hiu ADC c c t chn ADC nh sau:

1V 51

2V 102

3V 153

4V 204

5V 255

Tc l nu in p vo 1V th tn hiu digital tng 51 1V ADC=51 1C10mVADC=10*51/1000 Suy ra T ADC = T*10*51/1000 Suy ra T = ADC*1000/10/51 = ADC * 1.960784314 Cng thc ny dng on code trn

7. Lm mch thc t: V mch in dng chc nng ARES trong Proteus: Xin cm n bn Thi Thin hng dn ti cch s dng ARES

Sau khi v xong s nguyn l nh trn, ta chn nt ARES chuyn qua mch v mch in, sau khi sp xp, b sung, i dy mch v in ra PDF (dng chng trnh in my in o Virtual PDF Printer ta c c mt s nh sau:

C th xem ch 3D :

em mch in trn ra tim in Laser (in phun khng c), ch cc xem bn in c va vi chn PIC khng, nu khng th phi in li vi t l thch hp. Thng thng in ln giy king, nhng in ln giy A4 thng cng c

Mua board ng v t bn in ln, dng bn i i qua li khong 5ph, lc u c ngh i lu s n mc, nhng khng phi vy. i board ng ngui ri g ra, nu dng giy A4 thng th nn thm thm t nc mc d bm vo ng

Mua thm cy vit v mch in, nu mc ch no cha bm tt th ln.

em board ng ngm vo dung dch FeCl3 mua ch, vt ln xem nu ng b tri ht th ly ra, nu cha th ngm tip.

Dng xng chi i lp mc cn bm, ta c c mt mch hon chnh

V cui cng nhm xin cm n nhng ngi ch dn cho chng ti

You might also like