ĐỒ Án vi xỬ lÝ

Upload: baseven-bui

Post on 22-Jul-2015

78 views

Category:

Documents


1 download

TRANSCRIPT

BI QUANG SNG_KTD_K53

n vi x lSinh vin thc hin : Bi Quang Sng Lp Mssv :KTD K53 :20082191

Gio vin hng dn: o c Thnh Ti: Thit k b m 0-9999 tn s max 1kHz. c th t gi tr m v c u ra relay cho m n ngng. Reset b v bng u vo s.bng nt n trn thit Thit k b m: 1. Cu trc b m: Bn ch s, di m t 0 n 9999 Tc ti a 1khz; a. Cu trc phn cng: a.1 S khi:

KHI NGUN

KHI NGUN

U VO M HOC U VO RESET

KHI X L TNH TON V NHP S M

KHI HIN TH

N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

Khi ngun cp dng v p cho khi x l tnh ton v khi hin th, u vo c th l relay hoc cng tc a.2 Cc phn cng cn thit k Khi ngun Khi hin th Khi x l tnh ton v nhp s m Khi ngun ph dng pin lu d liu khi mt ngun chnh

Protect

SET

UP

OK

RESET

STOP

POWER

DICH

1

2

3

4

B COUNTER Cc phm chc nng - Reset : t li s m bng 0 ch c s dng khi phm protect c bt N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

-

Set: Chn ch m Up: Tng khi t s m Ok: Xc nhn gi tr t v m POWER : Nt bt ngun DICH: Dch con tr ci t s gi tr m ti ngng STOP: Dng m c gi tr 1 v 2 l 2 u vo m ,3 v 4 l hai u vo reset 1 v 2 ,3 v 4 c th kt ni vi relay hoc switch b. Cu trc phn mn b.1 : Phn mn gm cc modul sau - Timer hot ng ch counter - Phn nhp s m - Phn hin th LCD - Phn reset - Phn truyn d liu khi vo efrom khi ngun chnh mt in b.2: Giao tip gia cc modul phn mn: Khi c s thy i mc logic timer hot ng ch counter s tng gi tr . Nu ngi dung mun t ngng m cho i lng u vo lc chng trnh counter s dung li v chng trnh nhp s m s hot ng .Khi m cc gi tr m v khi nhp s m cc gi tr s c hin th ln LCD nh chng trnh LCD .Trong trng hp v mt l do no ngi dung c th reset bng nt trn thit b hoc reset bng u vo.Nu trong qu trnh hot ng ngun in chnh lc chng trnh lu d liu c gi ra thc hin qu trnh lu d liu 2.Cc thng s ca b m - Tc m ti a 1 khz

N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

- Ngun cp 1 chiu 5V dc - Hin th LCD - Nhp c ngng m - Ch hot ng + m tng + m gim - t li v 0 + Dng tn hiu u vo + Dng phm reset trn thit b - Lu c gi tr m khi mt ngun in chnh v khi hot ng tr li tip tc m t gi tr lu lc mt in - S hin th 4 ch s m t 0 n 9999 3 .Kt ni

u vo c th kt ni vi relay hoc swith khng in p

N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

2.Thit k chi tit 2.1 Cc module phn cng 2.1.1 Khi ngun:

U3 LM7805 1

JP1 4 3 2 1 HEADER 4 2 D2 BRIDGE D1 + JP2 C4 C2 104 C1 1000 1000u C3 104 1 2 3 4 HEADER 4 4

Cc thng s ca mch ngun in p xoay chiu qua my bin p .in p qua my bin p l 7v xoay chiu. in p c a vo cu chnh lu. in p c lc tn s v san phng bng t c2=0.1u v t ha c1=1000u. T 7v qua ic 7805 in p b st p cn 5v sau o t c4 v c3 cng c nhim v nh t c1 v c2.Qua mch ngun ta c in p 5v v dng 500ma 2.1.2 Khi hin th Khi hin th dng lcd 16x2

N VI X L : THIT K B COUNTER

3

2

GND

VI

VO

3

1

BI QUANG SNG_KTD_K53

Chn 1 2 3 4 5 6 7 8 9 10 11 12 13 14

K hiu Vss Vcc VEE RS RW E D0 D1 D2 D3 D4 D5 D6 D7

I/O

I I I/O I/O I/O I/O I/O I/O I/O I/O I/O

Chc nng t Dng ngun 5v Cp ngun iu khin phn Chn thanh ghi Chn ch c ghi Cho php Bt d liu ---------------------------------------------------------------

Chn Vss,Vcc v VEE : cp ngun cho LCD hot ng . Chn chn thanh ghi RS : trong LCD c hai thanh ghi , nu RS=0 th ta chn thanh ghi lnh , nu RS=1 chn thanh ghi d liu. Chn RW : cho php ngi dng tra i d liu vi LCD . Nu RW=1 th l ta chn ch c t LCD , RW=0 l ch ghi d liu ln LCD. Chn cho php E: c s dng cht d liu . Khi d liu c a n chn d liu th phi c mt xung t cao xung thp chn ny cht d liu ln LCD . Xung phi c rng ti thiu l 450ns. Chn D0-D7 : l chn 8 bit d liu . hin th ch ci v cc con s ta phi gi m ASCI n chn ny . C bn D7 : nu RW=1 v RS=0 m D7=1 th LCD khng nhn bt c thng tin no t bn ngoi . Nu D7=0 th LCD sn sng nhn d liu t bn ngoi . Lu phi kim tra c bn trc khi a bt k d liu no ra LCD. 2.Bng m lnh ca LCD: N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

M Hex 1 2 4 5 6 7 8 A C E F 10 14 18 1C 80 C0 38LCD1 LCD

Chc nng ca lnh Xa mn hnh hin th Tr v u dng Dch con tr sang tri Dch hin th sang phi Dch con tr sang phi Dch hin th sang tri Tt con tr,tt hin th Tt hin th , bt con tr Bt hin th , tt con tr Bt hin th, nhp nhy con tr Tt con tr, nhp nhy con tr Dch v tr con tr sang tri Dch v tr con tr sang phi Dch ton b hin th sang tri Dch ton b hin th sang phi p con tr v u dng th nht p con tr v u dng th hai Ch 2 dng v ma trn 5x7DENNEN 1 VCC 2 3 ANOT

LCDVSS VDD VEE RS RW ENB D0 D1 D2 D3 D4 D5 D6 D7 A K 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

VEER1 POT

VCC

VCC VEE RD2

RD3

RD4 RD5 RD6 RD7 ANOT

N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

Vi cng tc ta c th thc hin bt n nn cho lcd ty vo mc ch s dng .Khi bt n nn th dng cp cho lcd l 300ma .Vi mt bin tr th ta c th tinh chnh tng phn ca lcd. 2.1.3 Khi x l tnh ton v nhp s mSET 1 C8 1 2 104 1 2 INT DICH 1 2 C2 2 104 RB3

VCC

1

OK

2

RB1

C7

1

1 104

2

R7 10K RB2 UP 1 2 RAO STOP 1 C4 2 C3 1 104 1 2 104 2

RETINPUT 1 2 1 C5 2 104

1R5 10K RA1PVN1

2

Cc phm dng nhp s m.Phm up v stop c ni tr treo 10k trnh tri p .Cn cc phm set, dich, ok , resetinput khng phi ni cao tr v cc phm ny c ni vo portb c ch tr treo bn trong .Ngoi ra cc phm cn c ni t 0,1u chng ny phm.1 VCCMCLR RAO RA1 1 2 3 4 5 6 7 15 16 17 18 23 24 25 26 OSC1 13 MCLR*/VPP RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS*/C2OUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT OSC1/CLKIN RE0/RD*/AN5 RE1/WR*/AN6 RE2/CS*/AN7 OSC2/CLKOUT VSS VSS PIC16F877A VDD VDD 11 32 VCC RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 33 34 35 36 37 38 39 40 19 20 21 22 27 28 29 30 8 9 10 INT RB1 RB2 RB3 RB4 RB6 RB7 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7

R4 10K 1

2

VCC

1

4 3

C9 104

2

1

C1 104 2

2

OSC2

14 12 31

N VI X L : THIT K B COUNTER

2

BI QUANG SNG_KTD_K53

i vi pic16f877a dung x l tnh ton .1 v 2 l u vo m 3 v 4 l u vo reset.Trong n ny s dng module timer1 ch counter ca pic. Timer1 l b nh thi 16 bt , gi tr ca timer1 s c lu trong 2 thanh ghi (TMR1H v TMR1L). C ngt ca timer1 l bt TMR1IF (PIR). Bt iu khin ca timer1 s l TMR1IE(PIE). Timer1 c hai ch hot ng : ch nh thi (timer) vi xung kch thch l xung clock ca oscillator ( tn s ca timer bng 1/4 tn s ca oscillator ) v ch m (counter) vi xung kch thch l phn nh s kin cn m ly t bn ngoi thng qua chn RC0/T1OSO/T1CKI (cnh tc ng l cnh ln ). Vic la chn xung tc ng (tng ng vi vic la chn ch hot ng l timer hay counter ) c iu khin bi bt TMR1CS (INTCON).Sau y l s khi ca timer1

Ngoi ra timer1 cn c chc nng reserinput bn trong c iu khin bi mt trong hai khi CCP(Capture/Compare/PMW). Khi bt T1OSEN (T1CON) c set ,timer1 s ly xung clock t 2 chn RC1/T1OSI/CCP2 v RC0/TIOSO/T1CKI lm xung m . Timer1 lm xung m .Timer1 s bt u m sau cnh xung u tin ca ng vo .Khi PORTC s b qua s tc ng ca 2 bt TRISC v PORTC c gn gi tr khng N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

.Khi clear bit T1OSCEN timer1 s ly xung m t oscillator hoc t chn RCO/T1SOCO/TICK1 Timer1 c hai ch m ng b v bt ng b. Ch m bi bt iu khin T1SYNC (T1CON) .Khi T1SYNC xung m ly t bn ngoi s ng b vi xung clock bn trong ,timer1 s tip tc m khi vi iu khin ang ch sleep v ngt do timer1 to ra khi b trn c kh nng ng tha vi iu khin . ch m bt ng b , timer1 khng th lm ngun xung clock cho khi CCP . Khi T1SYNC=0 xung m vo timer1 s c ng b vi xung clock bn trong . ch ny timer1 s khng hot ng khi vi iu khin ang ch sleep . Cc thanh ghi lien quan n timer1 bao gm : INTCON ( a ch 0Bh,8Bh,10Bh,18Bh):chp ngt hot ng (GIE v PEIE). PIR1(a ch 0Ch ):cha c ngt timer1 (TMR1IF) PIE1 ( a ch 8Ch ): cho php ngt timer1 (TMR1IE) TMR1L (a ch 0Eh): cha gi tr 8 bt thp ca b m timer1 TMR1H (a ch 0Eh ) : cha gi tr 8 bt cao ca b m timer1 T1CON (a ch 10h ) :xc lp cc thng s cho timer1

Bt 7,6 Khng quan tm mc nh l gi tr 0 Bt 5,4 T1CKPS1:T1CKPS0 chn chia tn cho timer1 11 t s chia tn l 1:8 10 t s chia tn l 1:4 01 t s chia tn l 1:2 N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

00 t s chia tn l 1:1 Bt 3 T1OSCEN =1 cho php timer1 hot ng vi xung do oscillator cung cp T1OSCEN=0 khng cho php timer1 hot ng vi xung oscillator cung cp ( tt b chuyn i xung bn trong timer1). Bt 2 T1SYNC Khi TMR1CS =1: T1SYNC=1 khng ng b xung clock ngoi vi a vo timer1 T1SYNC=0 ng b xung clock ngoi vi a t bn ngoi vo Khi TMR1CS =0 th khng cn quan tm n T1SYNC v timer s dng xung clock bn trong Bit1 TMR1CS =1 chn xung m l xung ngoi vi ly t pin RC0/T1OSC/T1CKI( cnh tc ng ln) TMR1CS =0 chn xung m l xung clock (Fosc/4) Bt 0 TMR1ON=1 cho php timer1 hot ng TMR1ON=0 khng cho php timer hot ng 2.2 Cc module phn mn 2.2.1 Module hin th LCD#include #define LCD_RS PIN_D2 #define LCD_EN PIN_D3 #define LCD_D4 PIN_D4 #define LCD_D5 PIN_D5 #define LCD_D6 PIN_D6 #define LCD_D7 PIN_D7 #define Line_1 0x80 #define Line_2 0xC0 N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

#define Clear_Scr 0x01 #separate void LCD_Init ( void );// ham khoi tao LCD #separate void LCD_SetPosition ( unsigned int cX );//Thiet lap vi tri con tro #separate void LCD_PutChar ( unsigned int cX );// Ham viet1kitu/1chuoi len LCD #separate void LCD_PutCmd ( unsigned int cX) ;// Ham gui lenh len LCD #separate void LCD_PulseEnable ( void );// Xung kich hoat #separate void LCD_SetData ( unsigned int cX );// Dat du lieu len chan Data // D/n Cong #use standard_io ( B ) #use standard_io (A) //khoi tao LCD********************************************** #separate void LCD_Init ( void ) { LCD_SetData ( 0x00 ); delay_ms(200); output_low ( LCD_RS );// che do gui lenh LCD_SetData ( 0x03 ); // ch 4 bit LCD_PulseEnable();// Xung iu khin LCD_PulseEnable(); LCD_PulseEnable(); LCD_SetData ( 0x02 ); //Ci t 4 bt LCD_PulseEnable(); // Gi xung iu khin LCD_PutCmd ( 0x2C ); // Hin th 2 dng 5*7 LCD_PutCmd ( 0b00001100); // Bt con tr tt hin th LCD_PutCmd ( 0x06 ); // Lun tng con tr LCD_PutCmd ( 0x01 ); // Xa mn hnh } #separate void LCD_SetPosition ( unsigned int cX ) { LCD_SetData ( swap ( cX ) | 0x08 ); LCD_PulseEnable(); LCD_SetData ( swap ( cX ) ); LCD_PulseEnable(); } #separate void LCD_PutChar ( unsigned int cX ) { output_high ( LCD_RS ); LCD_PutCmd( cX ); output_low ( LCD_RS ); N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

} #separate void LCD_PutCmd ( unsigned int cX ) { LCD_SetData ( swap ( cX ) ); LCD_PulseEnable(); LCD_SetData ( swap ( cX ) ); LCD_PulseEnable(); } #separate void LCD_PulseEnable ( void ) { output_high ( LCD_EN ); delay_us ( 3 ); output_low ( LCD_EN ); delay_ms ( 3 ); } #separate void LCD_SetData ( unsigned int cX ) { output_bit ( LCD_D4, cX & 0x01 ); output_bit ( LCD_D5, cX & 0x02 ); output_bit ( LCD_D6, cX & 0x04 ); output_bit ( LCD_D7, cX & 0x08 ); } #separate void lcd_gotoxy(BYTE x, BYTE y) { BYTE address; if(y!=1) address=0x40; else address=0; address+=x-1; LCD_putcmd(0x80|address); }

2.2.2 Module chnh#include #include #fuses nowdt, hs, noput, noprotect, nodebug, nobrownout, nolvp, nocpd,nowrt #use delay(clock=20000000) #include #use fast_io(B) N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

#use fast_io(D) #use fast_io(A) #use fast_io(C) #byte potrc=0x07 #bit C0=portC.0 #bit C2=portC.2 #bit D1=portD.1 #bit D0=portD.0 #byte portA=0x05 #bit A0=portA.0 #bit A1=portA.1 #bit A2=portA.2 #bit A3=portA.3 #byte portB = 0x06 #bit B0=portB.0 #bit B4=portB.4 #bit B5=portB.5 #bit B1=portB.1 #bit B2=portB.2 #bit B3=portB.3 #bit B6=portB.6 #bit B7=portB.7 int8 donvi,chuc,tram,ngan,chucngan,mode,x,i; int16 volume,volume0,volume1; void convert_bcd(int16 x); #INT_EXT void EXT_ISR() { mode+=1; if(mode==4) mode=0; if(mode==3) x=0; if(mode==0) i=0; set_timer1(volume); } void program0(); void program1(); void program2(); void program3(); void hienthi(int16 chuso) { N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

Convert_bcd(chuso);//chuyen doi bcd sang ma ASCII LCD_putcmd(0xc0); LCD_putchar(chucngan); //Xuat ra chuc ngan LCD_putchar(ngan); //Xuat ra ngan LCD_putchar(tram);//Xuat ra tram LCD_putchar(chuc);//Xuat ra chuc LCD_putchar(donvi); //Xuat ra don vi } void main() { trisb=0xff;// Portd b nhp d liu Trisd = 0x00;//port D xuat du lieu Trisc=0xff; //Port C nhap du lieu trisa=0xff;//porta nhap du lieu port_B_pullups(1); // ch in tr treo portb output_low(pin_D0); volume0 = read_eeprom(0x00); // lu gi tr byte thp vo efprom volume1 = read_eeprom(0x01);// lu gi tr byte cao vo efprom volume=make16(volume1,volume0);// to li gi tr t 2 byte cao v thp LCD_init();// ham khoi tao LCD setup_timer_1(T1_EXTERNAL+8); // Timer1 o che do counter set_timer1(volume);//Khoi tao timer1 LCD_putcmd(0x80); //cn u dng th 1ca lcd Printf(LCD_putchar,"counter"); //Xuat du lieu ra man hinh enable_interrupts(int_EXT);// cho php ngt ngoi ext_int_edge(H_TO_L); // chon ngat suon xuong enable_interrupts(GLOBAL);// cho php ngt ton b while(true) { if(mode==0) program0(); if(mode==1) program1(); if(mode==2) program2(); if(mode==3) program3(); } } void program0() { int16 stop; int byte0,byte1; volume=get_timer1(); //Gan gia tri cho bien volume byte0=make8(volume,0); //tch volume thnh 2 byte cao v thp sau lu byte1=make8(volume,1); //vo eeprom write_eeprom(0x00,byte0); //ghi vo a ch 0x00 ca eefrom N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

write_eeprom(0x01,byte1); // ghi vo a chir0x01 ca eefrom if(A1==0) // dng c s m { stop=volume; hienthi(stop); delay_ms(2000); } if(volume>10000) { set_timer1(0); } hienthi(volume); if(B2==0) // Reset { set_timer1(0); } if(B4==0) { if(B5==0) set_timer1(0); } } void program1() { int16 z,stop; int byte0,byte1; byte0=make8(volume,0); byte1=make8(volume,1); write_eeprom(0x00,byte0); write_eeprom(0x01,byte1); z=get_timer1(); volume=10000-z; if(volume==-1) set_timer1(0); if(A1==0) { stop=volume; hienthi(stop); delay_ms(2000); } hienthi(volume); if(B2==0) { N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

set_timer1(0); } if(B4==0) { if(B5==0) set_timer1(0); } } void program2() { int16 b[5]={0,0,0,0,0}; int16 sonhap2,a=0,dich=0,k=0,stop; int byte0,byte1; lcd_putcmd(0x01); printf(lcd_putchar,"nhap so"); x=1; while(x==1) { Output_low(pin_D1); lcd_putcmd(0x0e); if(B3==0) { delay_ms(500); dich++; if(dich==5) dich=0; } if(dich==0) { lcd_gotoxy(1,2); if(A0==0) { delay_ms(500); b[0]=++a; lcd_putchar(a+48); k=1; if(a==10) { lcd_gotoxy(1,2); a=0; lcd_putchar(0+48); } N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

} } if(dich==1) { lcd_gotoxy(2,2); if(A0==0) { delay_ms(500); b[1]=++a; lcd_putchar(a+48); k=2; if(a==10) { lcd_gotoxy(2,2); a=0; lcd_putchar(0+48); } } } if(dich==2) { lcd_gotoxy(3,2); if(A0==0) { delay_ms(500); b[2]=++a; lcd_putchar(a+48); k=3; if(a==10) { lcd_gotoxy(3,2); a=0; lcd_putchar(0+48); } } } if(dich==3) { lcd_gotoxy(4,2); if(A0==0) { delay_ms(500); b[3]=++a; N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

lcd_putchar(a+48); k=4; if(a==10) { lcd_gotoxy(4,2); a=0; lcd_putchar(0+48); } } } if(dich==4) { lcd_gotoxy(5,2); if(A0==0) { delay_ms(500); b[4]=++a; lcd_putchar(a+48); k=5; if(a==10) { lcd_gotoxy(5,2); a=0; lcd_putchar(0+48); } } } if(B1==0) { x=0; } } Output_high(pin_D1); if(k==1) sonhap2=b[0]; if(k==2) sonhap2=b[0]*10+b[1]; if(k==3) sonhap2=b[2]+b[1]*10+b[0]*100; if(k==4) sonhap2=b[0]*1000+b[1]*100+b[2]*10+b[3]; if(k==5) sonhap2=10000*b[0]+ 1000*b[1]+100*b[2]+10*b[3]+b[4]; LCD_putcmd(0x01); LCD_putcmd(0x80); printf(LCD_putchar,"sonhap"); lcd_putcmd(0x0c); hienthi(sonhap2); N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

delay_ms(1000); lcd_putcmd(0x01); lcd_putcmd(0x80); printf(lcd_putchar,"dem toi so dat"); set_timer1(0); while(mode==2) { volume=get_timer1(); byte0=make8(volume,0); byte1=make8(volume,1); write_eeprom(0x00,byte0); write_eeprom(0x01,byte1); if(volume>sonhap2) set_timer1(0); if(A1==0) { stop=volume; hienthi(stop); delay_ms(2000); } hienthi(volume); if(B2==0) { set_timer1(0); } if(B4==0) { if(B5==0) set_timer1(0); } } } void program3() { int16 c[5]={0,0,0,0,0}; int16 sonhap3,a=0,dich=0,k=0,y,stop; int byte0,byte1; lcd_putcmd(0x01); printf(lcd_putchar,"nhap so"); i=1; while(i==1) { Output_low(pin_D1); N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

lcd_putcmd(0x0e); if(B3==0) { delay_ms(500); dich++; if(dich==5) dich=0; } if(dich==0) { lcd_gotoxy(1,2); if(A0==0) { delay_ms(500); c[0]=++a; lcd_putchar(a+48); k=1; if(a==10) { lcd_gotoxy(1,2); a=0; lcd_putchar(0+48); } } } if(dich==1) { lcd_gotoxy(2,2); if(A0==0) { delay_ms(500); c[1]=++a; lcd_putchar(a+48); k=2; if(a==10) { lcd_gotoxy(2,2); a=0; lcd_putchar(0+48); } } } if(dich==2) N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

{ lcd_gotoxy(3,2); if(A0==0) { delay_ms(500); c[2]=++a; lcd_putchar(a+48); k=3; if(a==10) { lcd_gotoxy(3,2); a=0; lcd_putchar(0+48); } } } if(dich==3) { lcd_gotoxy(4,2); if(A0==0) { delay_ms(500); c[3]=++a; lcd_putchar(a+48); k=4; if(a==10) { lcd_gotoxy(4,2); a=0; lcd_putchar(0+48); } } } if(dich==4) { lcd_gotoxy(5,2); if(A0==0) { delay_ms(500); c[4]=++a; lcd_putchar(a+48); k=5; if(a==10) N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

{ lcd_gotoxy(5,2); a=0; lcd_putchar(0+48); } } } if(B1==0) { i=0; } } output_high(pin_D1); if(k==1) sonhap3=c[0]; if(k==2) sonhap3=c[0]*10+c[1]; if(k==3) sonhap3=c[2]+c[1]*10+c[0]*100; if(k==4) sonhap3=c[0]*1000+c[1]*100+c[2]*10+c[3]; if(k==5) sonhap3=10000*c[0]+ 1000*c[1]+100*c[2]+10*c[3]+c[4]; LCD_putcmd(0x01); LCD_putcmd(0x80); printf(LCD_putchar,"sonhap"); lcd_putcmd(0x0c); hienthi(sonhap3); delay_ms(1000); lcd_putcmd(0x01); lcd_putcmd(0x80); printf(lcd_putchar,"demgiam"); set_timer1(0); while(mode==3) { y=get_timer1(); volume=sonhap3-y; byte0=make8(volume,0); byte1=make8(volume,1); write_eeprom(0x00,byte0); write_eeprom(0x01,byte1); if(volume==-1) { set_timer1(0); } if(A1==0) { stop=volume; N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

hienthi(stop); delay_ms(2000); } hienthi(volume); if(B2==0) { set_timer1(0); } if(B4==0) { if(B5==0) set_timer1(0); } } LCD_putcmd(0x01); printf(LCD_putchar,"counter"); } void convert_bcd(int16 x) { int16 temp; temp = x; //gan Temp cho so BCD 16 bit chucngan=temp/10000 +0x30; //chuyen chuc ngan sang maASCII temp=temp%10000; ngan= temp / 1000 + 0x30; //chuyen ngan sang maASCII temp = temp % 1000; tram = temp / 100 + 0x30;//chuyen tram sang maASCII temp = temp % 100; chuc = temp / 10 + 0x30; //chuyen chuc sang maASCII donvi = temp % 10 + 0x30; //chuyen don vi sang maASCII }

N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

N VI X L : THIT K B COUNTER

BI QUANG SNG_KTD_K53

N VI X L : THIT K B COUNTER