Professional Documents
Culture Documents
Dng 8 led 7 thanh loi 4 led/1 con. Dng 8 Tranzito iu khin vic ng ngt cc led. Vi iu khin c dng l PIC 16F877A Dng thch anh 20MHz to dao ng cho PIC. Dng mt mch tiny Bootloader kt ni gia pic v my tnh , np chng trnh trc tip t my tnh vo PIC m khng cn thng qua mch np cho PIC. III/ C bn v tiny bootloader: y l bootloader cho cc vi iu khin Microchip PIC * N l bootloader c kch thc nh nht, t hn 100 word b nh chng trnh * N l bootloader duy nht h tr tt c cc dng PIC: 16F, 18F, dsPIC (nhng dng c h tr ch self-programming - t np li). -
http://machdientu.net
Page 1
http://machdientu.net
Page 2
Vcc: ni vi ngun X1,X2: ni vi thch anh 32,768 kHz Vbat: u vo pin 3V GND: t SDA: chui data SCL: dy xung clock SQW/OUT: xung vung/u ra driver DS1307 l mt IC thi gian thc vi ngun cung cp nh, dng cp nht thi gian v ngy thng vi 56 bytes SRAM. a ch v dliu c truyn ni tip qua 2 ng bus 2 chiu. N cung cp thng tin v gi,pht,giy ,th,ngy ,thng, nm.Ngy cui thng s t ng c iu chnh vi cc thng nh hn 31 ngy,bao gm c vic t ng nhy nm. ng h c th hot ng dng 24h hoc 12h vi ch th AM/PM. DS1307 c
http://machdientu.net
Page 3
M t hot ng ca cc chn: Vcc,GND: ngun mt chiu c cung cp ti cc chn ny. Vcc l u vo 5V. Khi 5 V c cung cp th thit b c th truy cp hon chnh v d liu c th c v vit. Khi pin 3 V c ni ti thit b ny v Vcc nh hn 1,25Vbat th qu trnh c v vit khng c thc thi,tuy nhin chc nng timekeeping khng b nh hng bi in p vo thp. Khi Vcc nh hn Vbat th RAM v timekeeper s c ngt ti ngun cung cp trong (thng l ngun 1 chiu 3V) Vbat: u vo pin cho bt k mt chun pin 3V . in p pin phi c gi trong khong t 2,5 n 3V m bo cho s hot ng ca thit b. SCL(serial clock input): SCL c s dng ng b s chuyn d liu trn ng dy ni tip. SDA(serial data input/out): l chn vo ra cho 2 ng dy ni tip. Chn SDA thit k theo kiu cc mng h , i hi phi c mt in tr ko trong khi hot ng. SQW/OUT(square wave/output driver)- khi c kch hot th bit SQWE c thit lp 1, chn SQW/OUT pht i 1 trong 4 tn s (1Hz,4kHz,8kHz,32kHz). Chn ny cng c thit k theo kiu cc mng h v vy n cng cn c mt in tr ko trong. Chn ny s hot ng khi c Vcc v Vbat c cp.
http://machdientu.net
Page 4
Cng c DS1307 vi b to dao ng trong tn s 32,768kHz, vi cu hnh ny th chn X1 s c ni vo tn hiu dao ng trong cn chn X2 th h.
1, S a ch RAM v RTC:
Seconds Minutes Hours Day Date Month Year Control Ram 58x8
00h
Thng tin v thi gian v ngy thng c ly ra bng cch c cc byte thanh ghi thch hp. thi gian v ngy thng c thit lp cng thng qua cc byte thanh ghi ny bng cch vit vo nhng gi tr thch hp. ni dung ca cc thanh ghi di dng m BCD(binary coded decreaseimal). Bit 7 ca thanh ghi seconds l bit clock halt(CH),khi bit ny c thit lp 1 th dao ng disable,khi n c xo v 0 th dao ng c enable. Ch l phi enable dao ng trong sut qu trnh cu hnh thit lp (CH=0). Thanh ghi thi gian thuc c m t nh sau:
http://machdientu.net
Page 5
DS1307 c th chy ch 24h cng nh 12h. Bit th 6 ca thanh ghi hours l bit chn ch 24h hoc 12h. khi bit ny mc cao th ch 12h c chn. ch 12h th bit 5 l bit AM/PM vi mc cao l l PM. ch 24h th bit 5 l bit ch 20h(t 20h n 23h). Trong qu trnh truy cp d liu, khi ch th START c thc thi th dng thi gian c truyn ti mt thanh ghi th 2,thng tin thi gian s c c t thanh ghi th cp ny,trong khi ng h vn tip tc chy.
Trong DS1307 c mt thanh ghi iu khin iu khin hot ng ca chn SQW/OUT Bit7 OUT Bit6 X Bit5 X Bit4 SQWE Bit3 X Bit2 X Bit1 RS1 Bit0 RS0
OUT(output control):bit ny iu khin mc ra ca chn SQW/OUT khi u ra xung vung l disable. Nu SQWE=0 th mc logic chn SQW/OUT s l 1 nu OUT=1,v =0 nu OUT=0 SQWE(square wave enable): bit ny c thit lp 1 s enable u ra ca b to dao ng. Tn s ca u ra sng vung ph thuc vo gi tr ca RS1 v RS0 tn s u ra SQW 1Hz 4,096kHz 8,192kHz 32,768kHz
RS1 0 0 1 1
RS0 0 1 0 1
DS1307 h tr bus 2 dy 2 chiu v giao thc truyn d liu. thit b gi d liu ln bus c gi l b pht v thit b nhn gi l b thu. thit b iu khin qu trnh ny gi l master. thit b
http://machdientu.net
Page 6
Tu thuc vo bit R/ w m 2 loi truyn d liu s c thc thi: truyn d liu t master truyn v slave nhn: Master s truyn byte u tin l a ch ca slave. Tip sau l cc byte d liu . slave s gi li bit thng bo nhn c (bit acknowledge) sau mi byte d liu nhn c. d liu s truyn t bit c gi tr nht (MSB). truyn d liu t slave v master nhn: byte u tin (a ch ca slave) c truyn ti slave bi master. Sau slave s gi li master bit acknowledge. tip theo slave s gi cc byte d liu ti master. Master s gi cho slave cc bit acknowledge sau mi byte nhn c tr byte cui cng,sau khi nhn c byte cui cng th bit acknowledge s khng c gi . Master pht ra tt c cc chui xung clock v cc ch th START v STOP. s truyn s kt thc vi ch th STOP hoc ch th quay vng START. Khi ch th START quay vng th s truyn chui d liu tip theo c thc thi v cc bus vn cha c gii phng. D liu truyn lun bt u bng bit MSB. 2, DS1307 c th hot ng 2 ch sau: ch slave nhn( ch DS1307 ghi):chui d liu v chui xung clock s c nhn thng qua SDA v SCL. Sau mi byte c nhn th 1 bit acknowledge s c truyn. cc iu kin START v STOP s c nhn dng khi bt u v kt thc mt truyn 1 chui. nhn dng a ch c thc hin bi phn cng sau khi chp nhn a ch ca slave v bit chiu. Byte a ch l byte u tin nhn c sau khi iu kin START c pht ra t master. Byte a ch c cha 7 bit a ch ca DS1307, l 1101000, tip theo l bit chiu (R/ w ) cho php ghi khi n bng 0. sau khi nhn v gii m byte a ch th thit b s pht i 1 tn hiu acknowledge ln ng SDA. Sau khi DS1307 nhn dng c a ch v bit ghi th master s gi mt a ch thanh ghi ti DS1307 , to ra mt con tr thanh ghi trn DS1307 v master s truyn tng byte d liu cho DS1307 sau mi bit acknowledge nhn c. sau master s truyn iu kin STOP khi vic ghi hon thnh.
http://machdientu.net
Page 7
ch slave pht ( ch DS1307 c): byte u tin slave nhn c tng t nh ch slave ghi. Tuy nhin trong ch ny th bit chiu li ch chiu truyn ngc li. Chui d liu c pht i trn SDA bi DS 1307 trong khi chui xung clock vo chn SCL. Cc iu kin START v STOP c nhn dng khi bt u hoc kt thc truyn mt chui. byte a ch nhn c u tin khi master pht i iu kin START. Byte a ch cha 7 bit a ch ca slave v 1 bit chiu cho php c l 1. sau khi nhn v gii m byte a ch th thit b s nhn 1 bit acknowledge trn ng SDA. Sau DS1307 bt u gi d liu ti a ch con tr thanh ghi thng qua con tr thanh ghi. nu con tr thanh ghi khng c vit vo trc khi ch c c thit lp th a ch u tin c c s l a ch cui cng cha trong con tr thanh ghi .DS1307 s nhn c mt tn hiu Not Acknowledge khi kt thc qu trnh c.
s ng b:
http://machdientu.net
Page 8
http://machdientu.net
Page 9
PIC 16F877A trong mch l loi c 40 chn,vi 5 cng vo ra la Port A(RA0RA5),Port B(RB0RB7),Port C(RC0RC7),Port D(RD0RD7),Port E(RE0RE2). C 3 b nh thi l timer0,timer1,timer2. 8K b nh chng trnh flash. T chc b nh : C 3 khi b nh trong pic16F877A: b nh chng trnh ,b nh d liu v khi b nh EEPROM. b nh chng trnh v b nh d liu c ng bus ring v vy c th truy cp vo tng b nh mt cch ring r. B m chng trnh c 13 bit v vy khng gian a ch s l 8k word x 8bit. Truy cp ngoi vng khng gian trn s gy li. B nh d liu c chia thnh 4 bank (Bank0Bank3) ,trong cc bank cha cc thanh ghi thng v cc thanh ghi chc nng c bit. Bank c chn ph thuc vo bit RP1 v RP0 (bit th 6 v bit th 5) ca thanh ghi trng thi status. RP1:RP0 00 01 10 11 Bank 0 1 2 3
http://machdientu.net
Page 10
http://machdientu.net
Page 11
mch reset ca pic16f877a VI/ Khi hin th: - Khi hin th dng 8 led +, ch hin th ngy thng nm:2 led hin th ngy ,2 led hin th thng ,4 led hin th nm . +, ch hin th gi ,pht, giy: 2 led dng hin th gi,2 led dng hin th pht, 2 led dng hin th giy, 1 led dng hin th th trong tun (ch nht led hin gi tr 1,th 2 hin gi tr 2th 7 hin gi tr 7) Tt c cc led chung ng tn hiu a,,g cn cc chn iu khin th mc vi cc kho in t (8 Tranzito A1015) iu khin vic ng ngt cc led. - vic cp ngun cho cc led da trn thut qut led. S thut qut led:
http://machdientu.net
Page 12
khi to h thng
VII/ khi iu khin : Gm 4 phm bm: status-mode(button1)-increase(button2)-decrease(button3) - Phm status dng chn ch hin th trn cc led l hin th ngy ,thng , nm hay l gi ,pht, giy,th - Phm mode dng chnh gi,pht,giy,ngy,thng,nm - Phm increase tng gi tr - Phm decrease gim gi tr
http://machdientu.net
Page 13
http://machdientu.net
Page 14
http://machdientu.net
Page 15
Set minutes:
http://machdientu.net
Page 16
Set year:
http://machdientu.net
Page 17
Set month:
http://machdientu.net
Page 18
Set day:
http://machdientu.net
Page 19
http://machdientu.net
Page 20
Set date:
http://machdientu.net
Page 21
http://machdientu.net
Page 22
X/ Code: //#include <16F877A.h> #include <led7seg.h> #include <def_877a.h> #use delay(clock=20000000) #use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3)
// Cac dinh nghia #define status rd4 #define mode rd5 #define increase rd6 #define decrease rd7 #define led1 ra0 #define led2 ra1 #define led3 ra2 #define led4 ra3 #define led5 ra4 #define led6 ra5 #define led7 re0 #define led8 re1 //Cac bien int8 sec,min,hour,dow,date,month,year; int8 const led_code[16]={0b00000011,0b10011111,0b00100101,0b00001101,0b10011001,0b01001001,0b0100 0001,0b00011111,0b00000001,0b00001001,0b01000001,0b01000001,0b01000001,0b01000001,0b01 000001,0b01000001}; int8 sec1,sec2,min1,min2,hour1,hour2,day,date1,date2,month1,month2,year1,year2,year3,year4;
void display1();
http://machdientu.net
Page 23
porta=porte=1; while (1) { update_time(); display1(); if (status==0) {display2();} if (mode==0) { set_time();} } } void update_time() { i2c_start(); i2c_write(0xD0); //Gui dia chi cua slave i2c_write(0x00); //thiet lap lai con tro - set register pointer i2c_stop(); I2C_start(); I2C_write(0xD1); /* gui lenh doc du lieu */ sec = i2c_read(1); /* starts w/last address stored in register pointer */ min = i2c_read(1); hour = i2c_read(1); //che do 24h ko can AND dow = i2c_read(1); date = i2c_read(1); month = i2c_read(1); year = i2c_read(0); i2c_stop(); //========================= sec1=sec & 0x0F; sec2=(sec & 0x70)>>4; //convert to BCD SEC min1=min & 0x0F; min2=(min & 0x70)>>4; //convert to BCD MIN
http://machdientu.net
Page 24
http://machdientu.net
Page 25
http://machdientu.net
Page 26
http://machdientu.net
Page 27
http://machdientu.net
Page 28
http://machdientu.net
Page 29
http://machdientu.net
Page 30