Professional Documents
Culture Documents
Sau y l qui trnh tm hiu v PIC ca nhm 1. Trc ht nhm ln mng tm hiu tng quan v PIC
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,
PIC hot ng ta cn cp ngun cho PIC. Ngoi ra c th thm vo b dao ng thch anh, v nt nhn reset:
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>
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 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.
.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
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);
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
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.