Ir ao conteúdo
  • Cadastre-se

Mrtchnology

Membro Pleno
  • Posts

    53
  • Cadastrado em

  • Última visita

Tudo que Mrtchnology postou

  1. ok entendi !! ,veja esse video com sp0256-al2 veja as fotos do computador de bordo do carro miura ele tinha um sintetizador de voz com tms5220
  2. que pena que não pode ser reutilizado , então ele armazena os fonemas na rom e isso ? Teria como emular esse chip sintetizador de voz com pic?
  3. ok pessoal Eu pensei que esse chip fose parecido com aqueles sintetizadores de voz que era usado em games anos 80 voz de robo ,tipo chip sc-01 veja o video
  4. Ola amigos Estou querendo criar projeto leitor de palavras com chip tc8802af achei esse chip em uma sucata secretaria eletronica panasonic estou meio perdido por onde começar nao entendi como funciona esse chip alguem poderia me ajudar ,encontrei o datasheet gostaria de saber como realmente ele funciona e se serve para o meu projeto! Obrigado TC8802AF.pdf
  5. tenho hantek usb 6022be ,so que preciso do pc !!e meio chato o delay de atualização de valores na tela do pc!!ja o analogico e mais rápido na amostra de resultados na tela!!
  6. ok pessoal,a marca leader ls1020 20mhz ,essa marca da pra conserta acha esquema ? Eu tenho um que eu comprei na china ds0138 ,ele quebra galho da pra fazer alguma coisa em audio!!
  7. Ola amigos do forum Estou na duvida sobre a compra osciloscopio analogico usado vi na internet alguns a venda na faixa de 180 a 250 reais sera que vala a pena ?Trabalho com conserto de equipameentos de audio e faço pequenos projetos ! obrigado
  8. valeu paulo isso que eu quero saber os calculos para gerar o valor correto as er enviado para o chip , Alguem ai sabe?
  9. Amigo não entendi , 900 converter para binario ok,isso vai se encaixar no divisor M? To perdido!
  10. ok,pessoal Tem uma parte que nao consigo entender como programar os divisores N, A, M. POR EX: RX FREQUENCIA DE 900MHZ +FI10.7,como envio isso para os divisores? M = M0+2M1+4M2+8M3+16M4+32M5+64M6+128M7+256M8+512M9+1024M1
  11. Ola amigos Estou com problema cabeludo!!peguei amplificador de um cliente para consertar ele me passou que por engano ligaram o fio da rede eletrica 127v na saida do amplificador ,quando abri vi que a placa carbonizou ou seja torrou em alguns setores foram muitos componentes queimados transistores de saida ,exitadores ,resistores de bias... o bom que outro canal esta funcionando então tive ele como referencia para identificar os componentes fazendo comparações ,bom o que ta pegando nao consigo encontrar os transistores de saida originais ja comprei alguns mais nao tive bons resultados eles queimam e ai leva outros componentes juntos a queimar também,alguem sabe se posso substituir esses transistores por outro que funcione corretamente ? saida 2sc4278 2sa1633 drive 2sb1085a 2sd1562a drive poderia ser substituído pelo tip41 ,42? obrigado
  12. ola pessoal estou precisando de ajuda com esse pll tb31262 ,nao estou conseguindo entender como enviar os dados divisor e frequencia de tx rx como funciona esse protocolo de comunicação ? http://www.datasheetcatalog.com/datasheets_pdf/t/b/3/1/tb31262.shtml obrigado
  13. OLA PESSOAL ,AINDA NAO FUNCIONOU ,ESCREVI O CODIGO ,VEJA SE ESTA CORRETO OBRIGADO // Software I2C connections sbit Soft_I2C_Scl at RC3_bit; sbit Soft_I2C_Sda at RC4_bit; sbit Soft_I2C_Scl_Direction at TRISC3_bit; sbit Soft_I2C_Sda_Direction at TRISC4_bit; // End Software I2C connections // Lcd pinout settings sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D7 at RB3_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D4 at RB0_bit; // Pin direction sbit LCD_RS_Direction at TRISB4_bit; sbit LCD_EN_Direction at TRISB5_bit; sbit LCD_D7_Direction at TRISB3_bit; sbit LCD_D6_Direction at TRISB2_bit; sbit LCD_D5_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB0_bit; char alc_,comp_,RFG,A_; unsigned reg,reg2_0,reg0_7,reg_7; unsigned freq,f_,freq_d; //char txt[11]; char txt[11]; char ch,str[1]; int mat [3][4]; void fmtx_write_reg (char adress, unsigned dado) { Soft_I2C_Start(); // Issue start signal Soft_I2C_Write(62); Soft_I2C_Write(adress);//2:0; Soft_I2C_Write(dado);//7:0; //Soft_I2C_Write(dt);//7; Soft_I2C_Stop(); // Issue stop signal Delay_ms(5); //tempo de uma gravação } void main() { TRISB = 0; PORTB = 0xFF; TRISB = 0xff; TRISc = 0; //ANSEL = 0; // Configure AN pins as digital I/O //ANSELH = 0; //C1ON_bit = 0; // Disable comparators //C2ON_bit = 0; f_=0; A_=0; Soft_I2C_Init(); // Initialize Soft I2C communication //fmtx_set_freq(180); Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear LCD display Lcd_Cmd(_LCD_CURSOR_OFF); // Turn cursor off freq=91; f_=(freq*20); //00000111 00011100=1820 91mhz //00000110 01000000=1600 80mhz //reg0_7=0b01010100; //reg2_0=0b00000111; //reg_7 =0b00000000; //alc_ =0b10000000; //comp_ =0b11100000; // RFG= 0b01000000; //RFG= A_; //fmtx_write_reg(0x02,RFG); // fmtx_write_reg(0x14, alc_); // fmtx_write_reg(0x15, comp_); reg2_0=f_>>8; reg0_7=f_>>0; reg_7=f_<<7; LongWordToStr(F_, txt); lcd_out(1,1,txt); fmtx_write_reg(0x01, reg2_0); fmtx_write_reg(0x00, reg0_7); fmtx_write_reg(0x02, reg_7); //LongWordToStr(f_, txt); }
  14. Ola pessoal ja procurei library para mikro c e nao achei ,a minha duvida e colocar a frequencia qual o algoraritimo ,por ex frequencia 100.9 steps 100khz como enviar isto em 12 bits?,observe na pagina 7 do data ! o restante eu sei fazer enviar os dados via i2c o copilador mikroc ja existe bliotecas prontas protocolo i2c!
  15. Ola amigos do forum estou precisando de ajuda para dar inicio a elaborar um codigo basico de preferência usando copilador micko c para se comunicar com chip kt0803 Obrigado KT0803M_V1.1.pdf
  16. esquema_simulador.rarba3834_code.rar Ok amigos , vejam consegui fazer as barrinhas subir e descer na vertical apenas uma banda so pra teste ,analisem o codigo e me diga se esta correto ,os arquivos abaixo anexo valeu unsigned aout;int valor_a=0;#define A RA1_bit#define B RA2_bit#define C RA3_bit#define SEL RA4_bit void load_vu(){ SEL=1; //delay_ms(50); ///68HZ A=0; B=0; C=1; //aout=aout; aout = ADC_Get_Sample(0); delay_us(10); ///170HZ A=0; B=1; C=0; //aout=aout; aout = ADC_Get_Sample(0); delay_us(10); ///420HZ A=0; B=1; C=1;// aout=aout; aout = ADC_Get_Sample(0); delay_us(10); ///1KHZ A=1; B=0; C=0; //aout=aout; aout = ADC_Get_Sample(0); delay_us(10); //2.4KHZ A=1; B=0; C=1; //aout=aout; aout = ADC_Get_Sample(0); delay_us(10); ///5.9KHZ A=1; B=1; C=0; //aout=aout; aout = ADC_Get_Sample(0); delay_us(10); ///14.4KHZ A=1; B=1; C=1; //aout=aout; aout = ADC_Get_Sample(0); delay_us(10); A = B = C = 0; delay_us(10); SEL=0;}const char character_1[] = {0,0,0,0,0,0,0,31, 0,0,0,0,0,0,31,31, 0,0,0,0,0,31,31,31, 0,0,0,0,31,31,31,31, 0,0,0,31,31,31,31,31, 0,0,31,31,31,31,31,31, 0,31,31,31,31,31,31,31, 31,31,31,31,31,31,31,31}; void lcd_band_1(){ char a; Lcd_Cmd(64); //61 for (a = 1; a<=64; a++) Lcd_Chr_CP(character_1[a]); //49 Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(1,2,valor_a);} // LCD module connectionssbit LCD_RS at RD2_bit;sbit LCD_EN at RD3_bit;sbit LCD_D4 at RD4_bit;sbit LCD_D5 at RD5_bit;sbit LCD_D6 at RD6_bit;sbit LCD_D7 at RD7_bit;sbit LCD_RS_Direction at TRISD2_bit;sbit LCD_EN_Direction at TRISD3_bit;sbit LCD_D4_Direction at TRISD4_bit;sbit LCD_D5_Direction at TRISD5_bit;sbit LCD_D6_Direction at TRISD6_bit;sbit LCD_D7_Direction at TRISD7_bit;void main(){ NOT_RBPU_Bit = 0; //habilita os resistores de pull-up da PORTB /*T0CON = 0xC4; //prescaler = 32 TMR0L = 96; //load timer0 with 100 INTCON = 0xA0; //enable TMR0 interrupt*/ //ADCON1 = 0x0F; //desativa a entrada analogica do pino RB0 //ADCON0=0b00000001; // ADC D D D D D D D D D D D D A ADCON1=0b00001110; ADCON2=0b00010000; TRISA =0b00000001; // Set PORTB as output TRISA.F0 = 1; // Configure RA0 pin as input// TRISD.F0 = 1; TRISB=0b11111111; //255; trisc=0b00000000; TRISD=0b00000011; TRISE=0; porta=0; portb=0; portc=0; ADC_Init(); Lcd_Init(); //inicia display 8x2 Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); do { load_vu(); //aout = ADC_Get_Sample(0); valor_a=(aout)/7; valor_a=(valor_a)/7; lcd_band_1(); // delay_ms(10); } while(1); }
  17. E isso mesmo matheus que eu quero fazer ,pelo visto voce fez o analizadro por soft no meu caso e apresentar desse jeito usando o Ba3834 ,eu vi o link mais o problema e o copilador ,eu estou usando mikro c,ai fico sem base para começar a criar os caracters , valeu Ok.de pra entender ,e uma boa referencia para criar caractrs,por ex la sao 7 bandas então eu tenho que dividir o valo r do A/D por 7 ,para eu ter o resultado de cada banda , agora para acionar cada caractr eu preciso de valor de 8 bit ,e isso ?
  18. Valeu pESSOAL acho melhor criar caratere customizados custom char ,estou certo? veja um ex + - que eu fiz estilo das barrinhas enchendo a coluna em ordem progressiva .......const charcharacter {31,31,31,31,31,31,31,0}; .......const charcharacter {0,31,31,31,31,31,31,0}; .......const charcharacter {0,0,31,31,31,31,31,0}; .......const charcharacter {0,0,0,31,31,31,31,0}; .......const charcharacter {0,0,0,0,31,31,31,0}; .......const charcharacter {0,0,0,0,0,31,31,0}; .......const charcharacter {0,0,0,0,0,0,31,0}; coluna 1 vejam custom char const char character[] = {0,0,0,0,0,0,31,0}; void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(81); for (i = 0; i<=7; i++) Lcd_Chr_CP(character); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 2); } Agora fazer isto varrer na vertical que o problema ,
  19. Muito legal esse Ci ,Ba3830 Olha ai pessoal escrevi um pedaço do codigo Ba3834,esta correto ? o problema e criar caractere na vertical em cada coluna pegar o valor do A/D e converter em caractere...ai complicou !! //Ba3834 Analizador de Spectrum///#define A RA1_bit#define B RA2_bit#define C RA3_bit#define SEL RA4_bit void load_vu(){ SEL=1; //delay_ms(50); ///68HZ A=0; B=0; C=1; aout=aout; delay_us(10); ///170HZ A=0; B=1; C=0; aout=aout; delay_us(10); ///420HZ A=0; B=1; C=1; aout=aout; delay_us(10); ///1KHZ A=1; B=0; C=0; aout=aout; delay_us(10); //2.4KHZ A=1; B=0; C=1; aout=aout; delay_us(10); ///5.9KHZ A=1; B=1; C=0; aout=aout; delay_us(10); ///14.4KHZ A=1; B=1; C=1; aout=aout; delay_us(10); A = B = C = 0; delay_us(10); SEL=0;} // LCD module connectionssbit LCD_RS at RD2_bit;sbit LCD_EN at RD3_bit;sbit LCD_D4 at RD4_bit;sbit LCD_D5 at RD5_bit;sbit LCD_D6 at RD6_bit;sbit LCD_D7 at RD7_bit;sbit LCD_RS_Direction at TRISD2_bit;sbit LCD_EN_Direction at TRISD3_bit;sbit LCD_D4_Direction at TRISD4_bit;sbit LCD_D5_Direction at TRISD5_bit;sbit LCD_D6_Direction at TRISD6_bit;sbit LCD_D7_Direction at TRISD7_bit;void main(){ NOT_RBPU_Bit = 0; //habilita os resistores de pull-up //ADCON1 = 0x0F; //desativa a entrada analogica //ADCON0=0b00000001; // ADC D D D D D D D D D D D D A ADCON1=0b00001110; ADCON2=0b00010000;// TRISA =0b11100001; // TRISA.F0 = 1; // // TRISD.F0 = 1; TRISB=0b11111111; // trisc=0b00000000; TRISD=0b00000011; TRISE=0; porta=0; portb=0; portc=0; Adc_Init(); Lcd_Init(); //inicia display 16x2 Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); do { load_vu(); aout = ADC_Get_Sample(0); } while(1); }
  20. Ok ,amigo Ih ai complicou ,não entendo nada de avr , o que poderia ser em c ,copilador mikro c.
  21. A muito tempo venho planejando montar analizador de spectrum com esse Ci Ba3834 analizador de spectrum de 7 bandas gerando bar graf caracters do lcd para cada banda coluna na vertical ,então preciso ler os dados do Ci com pic , isto ainda esta muito difícil pra mim entender ,alguém poderia me ajudar a dar inicio para criar o código fonte se possível em c?o data sheet do Ci esta em anexo , Meu material disponível no momento PIC18F4550 CRISTAL 20MHZ LCD 16X2 obrigado
  22. Vejam o esquema .O código que postei esta em mikrobasic . link dos arquivos http://www.4shared.com/folder/ZwCzMwNs/RTC_dsp_7seg.html
  23. Pessoal vejam fiz de outro jeito, fiz a multiplexação do display mais a tabela para display catodo comum ,pena que não funcionou quando faço a simulação os dígitos não conferem com o real do rtc ,o que pode ser ? program RTC_DISPLAY_7SEGMENTOsymbol mim_sw =porta.4=0symbol hr_sw =porta.5=0symbol set_clock=porta.3=0''função'''''dim modo,conta as byte'''''RTC''''''''''''''''''''''''dim sec,min1, hr as byte', week_day, day, mn, year as bytedim tnum as string[4]dim txt as string[7]'''''''''''''''''displaydim m1,m2,s1,s2 as bytedim minutos,hora as worddim zz as bytedim j as bytedim v as bytedim i as integerdim por1 as byte[4]sub function mask(dim num as byte) as byte ' this function returns masks select case num ' for common cathode 7-seg. display case $00 result = $3F case $01 result = $06 case $02 result = $5B case $03 result = $4F case $04 result = $66 case $05 result = $6D case $06 result = $7D case $07 result = $07 case $08 result = $7F case $09 result = $6F case $0A result = $77 case $0B result = $7C case $0C result = $58 case $0D result = $5E case $0E result = $79 case $0F result = $71 case $10 result = $80 '. case $11 result = $B8 case $12 result = $08 '_ case $13 result = $04 case $14 result = $02 case $15 result = $01 case $16 result = $20 case $17 result = $10 case $18 result = $40 end select 'case endend subsub procedure interrupt portc = zz ' Turn on appropriate 7seg. display portb = por1[v] v = v+1 zz = zz << 1 if zz > 8 then zz = 1 ' Prepare mask for digit end if if v > 3 then v = 0 ' Turn on 1st, turn off 2nd 7seg. end if 'Inc(cnt) TMR0=0 'INTCON = $20 'GIE,GIEH=0 -PEIE,GIEL=0 -TMR0IE=1 -INTOIE=0 -RBIE=0-TMROIF=0-INTOIF=0-RBIF=0 INTCON=$20end sub''''''''''''''''''''''''''''''RTC PCF8583''''''''''''''''''''''''''''''''''''''sub procedure Read_Time (dim byref sec, min, hr as short)'(dim byref sec, min, hr, week_day, day, mn, year as short) dim btemp as byte Soft_I2C_Start Soft_I2C_Write(0xA0) Soft_I2C_Write(2)'2 Soft_I2C_Start Soft_I2C_Write(0xA1) sec = Soft_I2C_read(1)'1 min = Soft_I2C_read(1)'1 hr = Soft_I2C_read(0)'1 ' day =Soft_I2C_read(1)'1 'mn = Soft_I2C_read(0)'0 Soft_I2C_Stop end sub '-------------------- Formats date and timesub procedure Transform_Time(dim byref sec, min, hr as short)'(dim byref sec, min, hr, week_day, day, mn, year as short) sec = ((sec and 0x70) >> 4)*10 + (sec and 0x0F) min = ((min and 0xf0) >> 4)*10 + (min and 0x0f) hr = ((hr and 0xF0) >> 4)*10 + (hr and 0x0F) '((hr and 0x30) >> 4)*10 + (hr and 0x0F)end sub sub procedure writeBit_DS1307(dim addr as char, dim cmmd as char) Soft_I2C_Start Soft_I2C_write(0xA0) ' Address 8583 Soft_I2C_write(addr) ' Send low byte of the data address Soft_I2C_write(cmmd) ' Send the command Soft_I2C_Stop end sub sub procedure storeAll_DS1307() Sec = (((Sec / 10) << 4) and 0xF0) + ((Sec-(Sec / 10) * 10) and 0x0F) writeBit_DS1307( 0x02, Sec) Min1 = (((Min1 / 10) << 4) and 0xF0) + ((Min1-(Min1 / 10) * 10) and 0x0F) writeBit_DS1307( 0x03, min1 ) Hr = ((( Hr / 10) << 4) and 0xF0) + (( Hr-( Hr / 10) * 10) and 0x0F) writeBit_DS1307( 0x04, Hr ) delay_ms(200) end subsub procedure setClock_DS1307 (dim byref sec,hr,min as char)'(dim byref sec,hr,min,week_day,Day,Mn,Year as char) Min = (((Min / 10) << 4) and 0xF0) + ((Min-(Min / 10) * 10) and 0x0F) writeBit_DS1307( 0x03, min ) Hr = ((( Hr / 10) << 4) and 0xF0) + (( Hr-( Hr / 10) * 10) and 0x0F) writeBit_DS1307( 0x04, Hr ) sec = ((( sec / 10) << 4) and 0xF0) + (( sec-( sec / 10) * 10) and 0x0F) writeBit_DS1307( 0x02, sec )end sub'-------------------- Output values displaysub procedure Display_Time(dim byref sec, min,hr as short)'(dim byref sec, min, hr, week_day, day, mn, year as short)''dim hora1,hora2 as bytedim a as bytehora=Bcd2Dec(hr)minutos=Bcd2Dec(min)'DIGITOSm2 = hora /10'm1 = hora >>4 's2 = minutos /10's1 = minutos >>4 a = m2 '1 digito por1[0] = Mask(a) a = m1 '2 digito por1[1] = Mask(a) a = s2 '3 digito por1[2] = Mask(a) a = s1 '4 digito por1[3] = Mask(a) end subsub procedure rtc Read_Time(sec,min1,hr)'(sec,min1,hr,week_day,day,mn,year) ' read time from RTC(DS1307) Transform_Time(sec,min1,hr)'(sec,min1,hr,week_day,day,mn,year) ' format date and time Display_Time(sec, min1,hr)'(sec, min1, hr, week_day, day, mn, year) ' prepare and display on LCD Delay_ms(200) ' wait 1s 'if set_clock then ' modo=1 if hr_sw then while hr_sw if hr < 23 then inc(hr) delay_ms(10) else hr =1 delay_ms(10) end if ' Display_Time (sec, min1, hr) wend 'cnt=0 Display_Time (sec, min1, hr) setClock_DS1307(sec,hr,min1) end if if mim_sw then while mim_sw if min1 < 59 then inc(min1) delay_ms(10) else min1 = 0 delay_ms(10) end if ' Display_Time (sec, min1,hr) wend ' cnt=0 Display_Time (sec, min1, hr) setClock_DS1307(sec,hr,min1) end if 'end ifend submain:'CONFIGURAÇÃO DOS REGISTROSOPTION_REG =%00000001 '$80TMR0 = 155' 0INTCON = $A0 ' Disable PEIE,INTE,RBIE,T0IE'cnt = 0 'DEFINIÇÃO DE VALOR DAS VARIÁVEISmodo =1 j = 0 v = 0 zz = 1'alarme_disp=0ADCON1 =%00001110TRISA =%00111111TRISC =0'%00011111TRISB=0'TRISD=0'TRISE=0PORTC=0soft_i2c_config(PORTC,7,6)'Sound_Init(PORTE, 1) ' Initialize sound at RE0while truertcwendend.
  24. Ola amigos Montei esse codigo para mostrar hora e temperatura em um dispaly de 7 segmentos de 4 dígitos utilizando decodificador cd4511 ,o relógio ficou assim amostra horas através do RTC PCF8583 ,LM 35 par ao termômetro mais o pic16f876 , So tenho uma coisa que eu não consigo amostrar no display o caracteres ° c para temperatura ,vi no data shete do cd4511 que não e possível amostara esse caractere e sim somente números decimais de 0 ate 9,alguém poderia dar uma outra sugestão para que eu possa amostrar caracteres ou seja ate letras se for possível sem utilizar o cd4511 ?, Vou postar o código abaixo esta em Basic ! Obrigado 'symbol menu =portd.1=0 symbol mim_sw =porta.4=0 symbol hr_sw =porta.5=0 symbol set_clock=porta.3=0 'symbol alarm_mim=porta.3=0 'symbol alarm_hr=porta.2=0 'symbol alarm_on=porte.0=0 '''temperatura dim ch as longword dim t as integer dim tlong as longint dim temp1,temp2 as byte ''função''''' dim modo,conta as byte ''alarme'''''''' dim hora_a,minuto_a,alarme_on as byte dim dis_a_hr,dis_a_mim,alarme_disp as word '''''RTC'''''''''''''''''''''''' dim sec,min1, hr as byte', week_day, day, mn, year as byte dim tnum as string[4] dim txt as string[7] '''''''dispaly dim m1,m2,s1,s2 as byte '''TIMER''' dim cnt,cntc,cnt_s,led,led2,efeito,cnt_p as word dim minutos,hora as word sub procedure interrupt 'DISPLAY DE 7 SEGMENTOS PORTC=%00000111 PORTB=s2 delay_ms(1) PORTC=%00001011 PORTB=s1 delay_ms(1) PORTC=%00001101 PORTB=m2 delay_ms(1) PORTC=%00001110 PORTB=m1 delay_ms(1) Inc(cnt) inc(cnt_s) inc(cnt_p) if (cnt>=2000) then modo=not modo cnt=0 end if if (cnt_s>=400) then '400us * 2500 = 1s led= not led cnt_s=0 end if if led=1 then porta.1=1 else porta.1=0 end if if led2 =1 then if (cnt_p>=100) then efeito=not efeito cnt_p=0 end if if efeito=1 then porta.2=1 else porta.2=0 end if end if TMR0=155'7'96'=1:2 '1:256 =7 INTCON = $20 'GIE,GIEH=0 -PEIE,GIEL=0 -TMR0IE=1 -INTOIE=0 -RBIE=0-TMROIF=0-INTOIF=0-RBIF=0 end sub ''''''''''''''''''''''''''''''RTC PCF8583'''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''RTC PCF8583'''''''''''''''''''''''''''''''''''''' sub procedure Read_Time (dim byref sec, min, hr as short)'(dim byref sec, min, hr, week_day, day, mn, year as short) dim btemp as byte Soft_I2C_Start Soft_I2C_Write(0xA0) Soft_I2C_Write(2)'2 Soft_I2C_Start Soft_I2C_Write(0xA1) sec = Soft_I2C_read(1)'1 min = Soft_I2C_read(1)'1 hr = Soft_I2C_read(0)'1 ' day =Soft_I2C_read(1)'1 'mn = Soft_I2C_read(0)'0 Soft_I2C_Stop end sub '-------------------- Formats date and time sub procedure Transform_Time(dim byref sec, min, hr as short)'(dim byref sec, min, hr, week_day, day, mn, year as short) sec = ((sec and 0x70) >> 4)*10 + (sec and 0x0F) min = ((min and 0xf0) >> 4)*10 + (min and 0x0f) hr = ((hr and 0xF0) >> 4)*10 + (hr and 0x0F) '((hr and 0x30) >> 4)*10 + (hr and 0x0F) end sub sub procedure writeBit_DS1307(dim addr as char, dim cmmd as char) Soft_I2C_Start Soft_I2C_write(0xA0) ' Address 8583 Soft_I2C_write(addr) ' Send low byte of the data address Soft_I2C_write(cmmd) ' Send the command Soft_I2C_Stop end sub sub procedure storeAll_DS1307() Sec = (((Sec / 10) << 4) and 0xF0) + ((Sec-(Sec / 10) * 10) and 0x0F) writeBit_DS1307( 0x02, Sec) Min1 = (((Min1 / 10) << 4) and 0xF0) + ((Min1-(Min1 / 10) * 10) and 0x0F) writeBit_DS1307( 0x03, min1 ) Hr = ((( Hr / 10) << 4) and 0xF0) + (( Hr-( Hr / 10) * 10) and 0x0F) writeBit_DS1307( 0x04, Hr ) delay_ms(200) end sub sub procedure setClock_DS1307 (dim byref sec,hr,min as char)'(dim byref sec,hr,min,week_day,Day,Mn,Year as char) Min = (((Min / 10) << 4) and 0xF0) + ((Min-(Min / 10) * 10) and 0x0F) writeBit_DS1307( 0x03, min ) Hr = ((( Hr / 10) << 4) and 0xF0) + (( Hr-( Hr / 10) * 10) and 0x0F) writeBit_DS1307( 0x04, Hr ) sec = ((( sec / 10) << 4) and 0xF0) + (( sec-( sec / 10) * 10) and 0x0F) writeBit_DS1307( 0x02, sec ) end sub '-------------------- Output values to LCD sub procedure Display_Time(dim byref sec, min,hr as short)'(dim byref sec, min, hr, week_day, day, mn, year as short) '' hora=Dec2Bcd(hr) minutos=Dec2Bcd(min) 'DIGITOS m2 = hora'/1 m1 = hora>>4'/1'=%11 s2 = minutos'/1 s1 = minutos>>4'=%11 end sub 'sub procedure alarm_disp ' ''dim hora_a,minuto_a as byte ''dim dis_a_hr,dis_a_mim as word 'display conversao ' 'dis_a_hr=Dec2Bcd(hora_a) 'dis_a_mim=Dec2Bcd(minuto_a) ' ''DIGITOS 'm2 = dis_a_hr'/1 'm1 = dis_a_hr>>4'/1'=%11 's2 = dis_a_mim'/1 's1 = dis_a_mim>>4'=%11 ''end sub ' ''sub procedure alarme ' ' if alarm_hr then ' while alarm_hr ' if hora_a < 23 then ' inc(hora_a) ' delay_ms(50) ' else ' hora_a =1 ' delay_ms(50) ' end if ' ' ' wend ' ' alarme_disp=alarme_disp+1 ' ' ' end if ' ' if alarm_mim then ' while alarm_mim ' if minuto_a < 59 then ' inc(minuto_a) ' delay_ms(50) ' else ' minuto_a = 0 ' delay_ms(50) ' end if ' ' ' wend ' ' alarme_disp=alarme_disp+1 ' ' end if 'end sub ' 'sub procedure alarm_ativo ' 'if alarme_off=1 then ' ' if (hora=hora_a) then ' if (minutos=minuto_a)then ' Sound_Play(1000, 100) ' end if ' end if ' ' else ' ' ' ' end if ' 'end sub SUB PROCEDURE temperatura t = ADC_read(0) tlong = t* 2500 t = longint(tlong >> 10) ch = t /5 cnt_s=0 temp1=Dec2Bcd(ch) m1=15 'dig1 m2=temp1>>4 'dig2 s1=temp1' 'dig 3 s2= 15 'dig 4 porta.1=0 end sub sub procedure rtc Read_Time(sec,min1,hr)'(sec,min1,hr,week_day,day,mn,year) ' read time from RTC(DS1307) Transform_Time(sec,min1,hr)'(sec,min1,hr,week_day,day,mn,year) ' format date and time Display_Time(sec, min1,hr)'(sec, min1, hr, week_day, day, mn, year) ' prepare and display on LCD Delay_ms(10) ' if set_clock then modo=1 led2=1 if hr_sw then delay_ms(1) hr=hr+1 if hr>23 then hr=1 end if setClock_DS1307(sec,hr,min1) end if if mim_sw then delay_ms(1) min1=min1+1 if min1>59 then min1=0 end if setClock_DS1307(sec,hr,min1) end if Display_Time(sec, min1,hr) else led2=0 porta.2=1 end if ' ' if hr_sw then ' while hr_sw ' if hr < 23 then ' inc(hr) ' delay_ms(1) ' else ' hr =1 ' delay_ms(1) ' end if ' setClock_DS1307(sec,hr,min1) ' ' wend ' ' 'Display_Time (sec, min1, hr) ' ' setClock_DS1307(sec,hr,min1) ' ' end if ' if mim_sw then ' while mim_sw ' if min1 < 59 then ' inc(min1) ' delay_ms(1) ' else ' min1 = 0 ' delay_ms(1) ' end if ' ' setClock_DS1307(sec,hr,min1) ' wend ' ' ' Display_Time (sec, min1, hr) ' ' setClock_DS1307(sec,hr,min1) ' end if ' else ' led2=0 ' porta.2=1 ' end if end sub main: 'CONFIGURAÇÃO DOS REGISTROS OPTION_REG =%00000001 ' //configura timer0 ( prescaler 1:4 ) TMR0 =155' 0 INTCON =$A0 ' Disable PEIE,INTE,RBIE,T0IE cnt =0 'DEFINIÇÃO DE VALOR DAS VARIÁVEIS cnt_s =0 cnt_p =0 modo =1 efeito =1 led =1 led2 =0 alarme_disp=0 ADCON1 =%00001110 TRISA =%00111001 TRISC =0 TRISB =0 'TRISD =0 'TRISE =0 PORTC =0 soft_i2c_config(PORTC,7,6) '4,3 'Sound_Init(PORTE, 1) ' Initialize sound at RE0 porta.2=1 while true 'if alarme_disp=1 then 'alarme_display 'else 'if (cnt=255) then 'modo=modo+1 'else 'modo=modo-1 'cnt=0 'end if if modo=1 then rtc else temperatura end if 'if led=1 then 'porta.1=1 'else 'porta.1=0 'end if 'alarm_ativo ''end if 'if alarm_on then 'botão clicado 'Sound_Play(1300, 100) ' 'while alarm_on 'Só sai quando soltar o botão ' nop 'tempo sem fazer nada ' wend ' do ' 'alarm_disp ' ' loop until alarm_on 'se o botão for clicado novamente sai do loop, senão volta pro do ' ' Sound_Play(1300, 100) ' delay_ms(80) ' Sound_Play(1200, 200) ' while alarm_on 'Só sai quando soltar o botão ' nop ' wend ' end if wend end.
  25. Ok ,estou a procura de exemplos para que eu possa montar o codigo ,alguém ai sabe? obrigado

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!