Ir ao conteúdo
  • Cadastre-se

Frequencimetro com pic


Posts recomendados

Olá amigos !

Sou novo aqui no forum , e já comecei pedindo.

Sou técnico em eletrônica, e estou tentando aprender um pouco de

microcontroladores , em especial o pic.

Estou aprendendo primeiro o Basic,por ser mais fácil a meu ver,

depois pretendo partir para outras linguagens.

Atualmente estou trabalhando com o Pic Basic Pro, mas já aprendi um

pouco também com o Pic Simulador Ide, já fiz vários projetinhos , copiados

aqui na iternet e vou modificando a meu jeito para ver o resultado.

Agora estou querendo aprender configurar o pic para ler a frequência de

um pino ou seja, fazer um frequêncimetro.

Todos os projetos que encontrei na internet estão em asm. e eu ainda não

cheguei lá.

Se alguém puder me dar uma luz , em BASIC ,fico muito grato.

De preferência pic16f628a ou 16f84a.

BOA NOITE A TODOS!

Link para o comentário
Compartilhar em outros sites

  • mês depois...
Olá amigos !

Sou novo aqui no forum , e já comecei pedindo.

Sou técnico em eletrônica, e estou tentando aprender um pouco de

microcontroladores , em especial o pic.

Estou aprendendo primeiro o Basic,por ser mais fácil a meu ver,

depois pretendo partir para outras linguagens.

Atualmente estou trabalhando com o Pic Basic Pro, mas já aprendi um

pouco também com o Pic Simulador Ide, já fiz vários projetinhos , copiados

aqui na iternet e vou modificando a meu jeito para ver o resultado.

Agora estou querendo aprender configurar o pic para ler a frequência de

um pino ou seja, fazer um frequêncimetro.

Todos os projetos que encontrei na internet estão em asm. e eu ainda não

cheguei lá.

Se alguém puder me dar uma luz , em BASIC ,fico muito grato.

De preferência pic16f628a ou 16f84a.

BOA NOITE A TODOS!

Tente a funcao COUNT

Exemplo: COUNT PORTA.7,1000,resutl

Ele ira contar quantos pulsos tem porta.7 por um segundo e guardara o valor em result

Celio Rodrigues

www.centertecno.com

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

ola amigos aguel poderia me ajuda preciso fazer um multimetro com os sguinte intes:

todos ele em mikroc Pro

1.Voltimetro

2.Amperimetro

3.Conta giro

4.Frequencimetro

5.Termometro

6.Capacimetro

7.Resistor

Ja possuo os codigo seguinte com men adaptado abaixo:



void escreveVet(char *vet,int linha);
void conv_freq(long temp);


// Lcd pinout settings
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit SelectButton at Rd7_bit;

sbit Gate_Enable at RC1_bit;
// Define Messages
char message3[] = "T=";
char message4[] = "I=";
char message5[] = "Freq= Hz";
// End Message

unsigned char ch;
unsigned int adc_rd;
char *text;
long tlong;
//unsigned int Num;
char *freq = "00000.00";
long counter, Num, lowfreq;
unsigned short CountDone, upscale, prescaler;

void Display_Freq(long freq2write) {

freq[0] = (freq2write/10000000) + 48; // Extract tens digit
freq[1] = (freq2write/1000000)%10 + 48; // Extract ones digit
freq[2] = (freq2write/100000)%10 + 48;
freq[3] = (freq2write/10000)%10 + 48;
freq[4] = (freq2write/1000)%10 + 48;
freq[6] = (freq2write/100)%10 + 48;
freq[7] = (freq2write/10)%10 + 48;
// Display Frequency on LCD
Lcd_Out(2, 6, freq);
}

long count_pulse(){
long ff = 0;
Gate_Enable = 0;
CountDone = 0;
Num = 0;
TMR1L = 0xDC; //TMR1 start time = 3036 for 100 ms
TMR1H = 0x0B;
TMR0 = 0;
T1CON.TMR1ON = 1;
do {

}while(!CountDone);
Gate_Enable = 1;
T1CON.TMR1ON = 0; // Disable Timer1
ff = 256*Num + TMR0;
ff = ff*10*prescaler;
return ff;

}

// Interrupt service routine
void interrupt() {
if(INTCON.T0IF){
Num ++; // Interrupt causes Num to be incremented by 1
INTCON.T0IF = 0; // Bit T0IF is cleared so that the interrupt could reoccur
}
if (PIR1.TMR1IF){ //Let me use this even if no other interrupts are enabled
CountDone = 1;
PIR1.TMR1IF = 0; //reset timer1 flag
}
}
unsigned int select, update_select;
void debounce_delay(void){
Delay_ms(200);
}
char texto1[7], numflancos=0;
int rpm, rads;
/////////////////////////
int counts,oldCounts;

char txt[6];
void showdata(unsigned int);
void showdata(unsigned int ia)
{
WordToStr(ia, txt); // Transform counter value to string


}
/////////////////////
void main(){
//inicializando os registradores
TRISC = 0b00000001; // PORTC All Outputs
CMCON = 0x07; // Turn off comparators
TRISB= 0X00; // Porta B como saida para o LCD
TRISA=0XFF; //Porta A como entrada
TRISC=0XFF; //Porta C como entrada
ADCON1=0X00; //Configura conversor AD da porta A
T1CON=0X06; //Configura timer 1
OPTION_REG=0X80; //Desabilita pull-up internas ///0x80
PIE1=0X00; //Desabilita algumas interrupcoes
PIR1=0X00; //Desabilita algumas interrupcoes
INTCON=0X00; //Desabilita todas as interrupcoes
PORTB=0X00; //Inicia Porta B com zero
TRISd=0XFF; //Porta A como entrada
PORTD=0XFF; //Porta A como entrada
Gate_Enable = 1;
// TMR1 settings
T1CON.TMR1CS = 0; // Fosc / 4
T1CON.T1CKPS1 = 1; // Setting prescale value to 1:8
T1CON.T1CKPS0 = 1;
PIE1.TMR1IE = 1;
INTCON.PEIE = 1;
INTCON.T0IE = 1;
INTCON.GIE = 1;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // CLEAR display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off




select = 0;

update_select = 1;

do {
if (Button(&PORTd, 5, 10, 0))
{counts--;
if(counts<=0)counts =0;}
if (Button(&PORTd, 6, 1, 0)) ///1000
{counts++;
if(counts>=150000)counts=150000;}
if(oldCounts!=counts)
{
showdata(counts);
oldCounts = counts;
}

if(!SelectButton){
debounce_delay();


update_select = 1;
switch (select) {
case 0 : select=1;
break;
case 1 : select=2;
break;
case 2 : select=3;
break;
case 3 : select=0;
break;
} //case end
}
if(select == 0){ // Diode Tester
if(update_select){
Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1,Message3);
Lcd_Chr(1,7,'V');
Lcd_Out(1,9,Message4);
Lcd_Chr(1,16,'A');
Lcd_Out(2,1,message5);

// Clear display
update_select=0;
}
// Read Current
adc_rd = ADC_read(1); // get ADC value from 2nd channel


tlong = (long)adc_rd * 1000; // covert adc reading to milivolts
tlong = tlong / 1023; // 0..1023 -> 0-5000mV

ch = tlong / 1000; // extract volts digit
LCD_Chr(1,11,48+ch); // write ASCII digit at 2nd row, 9th column


ch = (tlong / 100) % 10; // extract 0.1 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point
LCD_Chr_CP('.');
ch = (tlong / 10) % 10; // extract 0.01 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point

ch = tlong % 10; // extract 0.001 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point


Delay_ms(333);
// Read Voltage

adc_rd = ADC_read(0); // get ADC value from 2nd channel


tlong = (long)adc_rd * 9000; // covert adc reading to milivolts
tlong = tlong / 1023; // 0..1023 -> 0-5000mV

ch = tlong / 1000; // extract volts digit
LCD_Chr(1,3,48+ch); // write ASCII digit at 2nd row, 9th column


ch = (tlong / 100) % 10; // extract 0.1 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point
LCD_Chr_CP('.');
ch = (tlong / 10) % 10; // extract 0.01 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point


LCD_Chr_CP('V');

Delay_ms(333);

// Calculate Frequency
// First begin with prescaler 1:64
OPTION_REG = 0b00110101; // Prescaler (1:64), TOCS =1
prescaler = 64;

Counter = count_pulse();

if (Counter > 99990) {
Display_Freq(Counter);
Lcd_Chr(2,14,'K');
//lowfreq = Counter*1000;
//Lcd_Out(2,1,message5);
//Display_Freq(lowfreq);
}
if (Counter <= 99990) {
OPTION_REG = 0b00111000; // Prescaler (1:1), TOCS =1
prescaler = 1;
Counter = count_pulse();
Counter = 1000*Counter;
Display_Freq(Counter);
Lcd_Chr(2,14,' ');
}

delay_ms (333);
} // End if(select == 0)
/////////////////////////
if(select == 1){ // Diode Tester
if(update_select){
Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1,"Termometro");
Lcd_Out(2,1,"Temp.=");

// Clear display
update_select=0;
}
adc_rd = ADC_read(2); // get ADC value from 2nd channel


adc_rd = ADC_read(2); // get ADC value from 2nd channel
// print string a on LCD, 2nd row, 1st column

tlong = (long)adc_rd * 5000; // covert adc reading to milivolts
tlong = tlong / 1023; // 0..1023 -> 0-5000mV

ch = tlong / 1000; // extract volts digit
LCD_Chr(2,7,48+ch); // write ASCII digit at 2nd row, 9th column


ch = (tlong / 100) % 10; // extract 0.1 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point

ch = (tlong / 10) % 10; // extract 0.01 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point
LCD_Chr_CP('.');
ch = tlong % 10; // extract 0.001 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point

Lcd_Chr(2,12,223);
Lcd_Chr(2,13,'C');

Delay_ms(333);


} // End if(select == 0)
if(select == 2){ // Diode Tester
if(update_select){
Lcd_Cmd(_LCD_CLEAR);

Lcd_Out(1,1,"Conta Giro");
Lcd_Out(2,1,"Rpm=");

// Clear display
update_select=0;
}
TMR0=0; //Inicializa el registro TMR0.
Delay_1sec(); //Cuenta durante 1 segundo.
numflancos=TMR0; //numflancos=velocidad en rps.
rpm=60*numflancos; //Transformación a rpm.
rads=6.28*numflancos; //Transformación a rad/s.
IntToStr(rpm,texto1); //Transformación de rpm a texto.

Lcd_Out(2,5,texto1);

Delay_ms(1000); //Espera para la nueva medición.

} // End if(select == 2)

if(select == 3){ // Diode Tester
if(update_select){
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Contador de evento");


// Clear display
update_select=0;
}
Lcd_Out(2, 1, "N°");
Lcd_Out(2, 8, txt);
Delay_ms(333);
} // End if(select == 3)

} while(1); // endless loop
}
//declr funções

Link para o comentário
Compartilhar em outros sites

Olá Alberto,

Caramba.... haja ajuda ein ????????

Bom, vamos ao começo da encrenca :

Como já dizia Jack, o Estripador, vamos por partes ....

Escolha uma para a gente poder te ajudar ! Ou voce pensa que nós não temos nada para fazer o tempo todo ?

Começe com algo que voce pelo menos tenha uma ideia de como fazer, e a gente te orienta, ok ?

Paulo

Link para o comentário
Compartilhar em outros sites

Cara, vamos fazer um de cada vez e como de padrão, do mais fácil para o mais complicado.

A lista seria assim (ao meu ver) um voltímetro, termometro, ohmimetro (resistor), amperimetro, contagiro, frequencimetro e capacímetro.

voce tem noção de como fazer algum desses? Como vai mostrar os valores, se vai ser em um lcd, 7 segmentos, ou vai enviar os dados para outro equipamento ou pc?

Se você é iniciante, faça um projeto de cada vez, porque vai ter erros, e se você colocar tudo junto vai ter muitos erros e vai ficar mais difícil debugar, então faça um de cada vez e teste, funcionou... passa para outro, a hora que terminar é só agrupar todo mundo.

Eu programo em Basic tb, uso o MikroBasic, acho infinitamente superior aos demais (em Basic), a única vantagem que vi no PicBasi PRO é o recebimento de dados na serial que tem uma função no biblioteca que o MikroBasic não tem, mas hj é tudo usb, então... já sabe né rsrs.

o que precisar tamos aii

Link para o comentário
Compartilhar em outros sites

  • mês depois...
Cara, vamos fazer um de cada vez e como de padrão, do mais fácil para o mais complicado.

A lista seria assim (ao meu ver) um voltímetro, termometro, ohmimetro (resistor), amperimetro, contagiro, frequencimetro e capacímetro.

voce tem noção de como fazer algum desses? Como vai mostrar os valores, se vai ser em um lcd, 7 segmentos, ou vai enviar os dados para outro equipamento ou pc?

Se você é iniciante, faça um projeto de cada vez, porque vai ter erros, e se você colocar tudo junto vai ter muitos erros e vai ficar mais difícil debugar, então faça um de cada vez e teste, funcionou... passa para outro, a hora que terminar é só agrupar todo mundo.

Eu programo em Basic tb, uso o MikroBasic, acho infinitamente superior aos demais (em Basic), a única vantagem que vi no PicBasi PRO é o recebimento de dados na serial que tem uma função no biblioteca que o MikroBasic não tem, mas hj é tudo usb, então... já sabe né rsrs.

o que precisar tamos aii

pic16f684
/////////////////////////////////////////////////////////////////////////////////////////codigo abaixo/////////////
///Oscillator -> Internal RC No Clock
Watchdog Timer -> Off
Power Up Timer -> On
Master Clear Enable -> Enabled
Code Protect -> Off
Data EE Read Protect -> Off
Brown Out Detect -> BOD Enabled, SBOREN Disabled
Internal External Switch Over Mode -> Enabled
Monitor Clock Fail-Safe -> Enabled/////

// LCD module connections
sbit LCD_RS at RC4_bit;

sbit LCD_EN at RC5_bit;

sbit LCD_D4 at RC0_bit;

sbit LCD_D5 at RC1_bit;

sbit LCD_D6 at RC2_bit;

sbit LCD_D7 at RC3_bit;

sbit LCD_RS_Direction at TRISC4_bit;

sbit LCD_EN_Direction at TRISC5_bit;

sbit LCD_D4_Direction at TRISC0_bit;

sbit LCD_D5_Direction at TRISC1_bit;

sbit LCD_D6_Direction at TRISC2_bit;

sbit LCD_D7_Direction at TRISC3_bit;

// End LCD module connections
char Message1[] = "Miniteste";
char Message4[] = "by Albertoice";
char Message2[] = "Volt:";
char Message3[] = "Rpm:";
char Message5[] = "Temp";
unsigned int ADC_Value, DisplayVolt,DisplayTemp;
char texto1[7], texto2[7], numflancos=0;
int rpm, rads;
char *volt = "00.0";
char *temp = "00";
////////////////
char *freq = "00";
void Display_Freq(unsigned int freq2write) {

freq[0] = (freq2write/10)%10 + 48; // Extract tens digit
freq[1] = freq2write%10 + 48; // Extract ones digit
// Display Frequency on LCD

}

///////////
void main() {
//OSCCON=0x40; //Oscilador interno a 1MHz.
//ANSEL=0x00; //Pines AN<6:0> como E/S digital.

ANSEL = 0b00000011; // RA2/AN2 is analog input

ADCON0 = 0b00001000; // Analog channel select @ AN2

ADCON1 = 0x00; // Reference voltage is Vdd

CMCON0 = 0x07 ; // Disable comparators

TRISC = 0b00000000; // PORTC All Outputs

TRISA = 0b00001111; // PORTA All Outputs, Except RA3 and RA2

Lcd_Init(); // Initialize LCD

Lcd_Cmd(_LCD_CLEAR); // CLEAR display

Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,4,Message1);
Lcd_Out(2,3,Message4);
delay_ms(2000); // Hold for 500 ms
Lcd_Cmd(_LCD_CLEAR); // CLEAR display
Lcd_Out(1,1,Message2);
Lcd_Out(2,1,Message3);
//Lcd_Out(1,10,Message5);
//Lcd_Chr(1,14,'V');


do {

ADC_Value = ADC_Read(0);

DisplayVolt = ADC_Value * 2;

volt[0] = DisplayVolt/1000 + 48;

volt[1] = (DisplayVolt/100)%10 + 48;

volt[3] = (DisplayVolt/10)%10 + 48;

Lcd_Out(1,6,volt);

delay_ms(333); // Hold for 500 ms
///////////////
ADC_Value = ADC_Read(1);

DisplayTemp = ADC_Value * 49.1;

temp[0] = DisplayTemp/1000 + 48;

temp[1] = (DisplayTemp/100)%10 + 48;

//volt[3] = (DisplayVolt/10)%10 + 48;

Lcd_Out(1,13,temp);
Lcd_Chr(1,15,223);
LCD_Chr_CP('C');
delay_ms(333); // Hold for 500 ms

////////////////////////////////////////
TMR0=0; //Inicializa el registro TMR0.
Delay_1sec(); //Cuenta durante 1 segundo.
Display_Freq(TMR0);
numflancos=TMR0; //numflancos=velocidad en rps.
rpm=60*numflancos; //Transformación a rpm.
rads=6.28*numflancos; //Transformación a rad/s.
IntToStr(rpm,texto1); //Transformación de rpm a texto.
//Lcd_Out(1,1,"W[rpm]=");
Lcd_Out(2,5,texto1);
Lcd_Out(2, 13, freq);
LCD_Chr_CP('H');
LCD_Chr_CP('z');
//IntToStr(rads,texto2); //Tramsformación de rads a texto.
//Lcd_Out(2,1,"W[rad/s]=");
//Lcd_Out(2,10,texto2);
//TMR0=0;
//Delay_ms(1000); //Espera para la nueva medición.

//Delay_ms(1000); // Delay 1 Sec
//Display_Freq(TMR0);
/// LCD_Chr_CP('H');
///LCD_Chr_CP('z');
} while(1);
} // End main()

post-755850-13884962616516_thumb.png

Link para o comentário
Compartilhar em outros sites

cara, vamos fazer um de cada vez e como de padrão, do mais fácil para o mais complicado.

A lista seria assim (ao meu ver) um voltímetro, termometro, ohmimetro (resistor), amperimetro, contagiro, frequencimetro e capacímetro.

voce tem noção de como fazer algum desses? Como vai mostrar os valores, se vai ser em um lcd, 7 segmentos, ou vai enviar os dados para outro equipamento ou pc?

Se você é iniciante, faça um projeto de cada vez, porque vai ter erros, e se você colocar tudo junto vai ter muitos erros e vai ficar mais difícil debugar, então faça um de cada vez e teste, funcionou... Passa para outro, a hora que terminar é só agrupar todo mundo.

Eu programo em basic tb, uso o mikrobasic, acho infinitamente superior aos demais (em basic), a única vantagem que vi no picbasi pro é o recebimento de dados na serial que tem uma função no biblioteca que o mikrobasic não tem, mas hj é tudo usb, então... Já sabe né rsrs.

O que precisar tamos aii

abaixo estÁ uma versao pequena quero que voce analise e me responadao como inclemantar mais menus, entenderao, esta ja esta funcionado visitem meu site la tem variedade de projeto valeu

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Ola,

preciso fazer no proteus e no mikroc um projeto semelhante, você poderá me ajudar???

consiste em um contagiro/aceleromero:

-pic18f452

-usando um motor

-Fazer com um sensor magnético

Obrigada!

pic16f684

/////////////////////////////////////////////////////////////////////////////////////////codigo abaixo/////////////

///Oscillator -> Internal RC No Clock

Watchdog Timer -> Off

Power Up Timer -> On

Master Clear Enable -> Enabled

Code Protect -> Off

Data EE Read Protect -> Off

Brown Out Detect -> BOD Enabled, SBOREN Disabled

Internal External Switch Over Mode -> Enabled

Monitor Clock Fail-Safe -> Enabled/////

// LCD module connections

sbit LCD_RS at RC4_bit;

sbit LCD_EN at RC5_bit;

sbit LCD_D4 at RC0_bit;

sbit LCD_D5 at RC1_bit;

sbit LCD_D6 at RC2_bit;

sbit LCD_D7 at RC3_bit;

sbit LCD_RS_Direction at TRISC4_bit;

sbit LCD_EN_Direction at TRISC5_bit;

sbit LCD_D4_Direction at TRISC0_bit;

sbit LCD_D5_Direction at TRISC1_bit;

sbit LCD_D6_Direction at TRISC2_bit;

sbit LCD_D7_Direction at TRISC3_bit;

// End LCD module connections

char Message1[] = "Miniteste";

char Message4[] = "by Albertoice";

char Message2[] = "Volt:";

char Message3[] = "Rpm:";

char Message5[] = "Temp";

unsigned int ADC_Value, DisplayVolt,DisplayTemp;

char texto1[7], texto2[7], numflancos=0;

int rpm, rads;

char *volt = "00.0";

char *temp = "00";

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

char *freq = "00";

void Display_Freq(unsigned int freq2write) {

freq[0] = (freq2write/10)%10 + 48; // Extract tens digit

freq[1] = freq2write%10 + 48; // Extract ones digit

// Display Frequency on LCD

}

///////////

void main() {

//OSCCON=0x40; //Oscilador interno a 1MHz.

//ANSEL=0x00; //Pines AN<6:0> como E/S digital.

ANSEL = 0b00000011; // RA2/AN2 is analog input

ADCON0 = 0b00001000; // Analog channel select @ AN2

ADCON1 = 0x00; // Reference voltage is Vdd

CMCON0 = 0x07 ; // Disable comparators

TRISC = 0b00000000; // PORTC All Outputs

TRISA = 0b00001111; // PORTA All Outputs, Except RA3 and RA2

Lcd_Init(); // Initialize LCD

Lcd_Cmd(_LCD_CLEAR); // CLEAR display

Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off

Lcd_Out(1,4,Message1);

Lcd_Out(2,3,Message4);

delay_ms(2000); // Hold for 500 ms

Lcd_Cmd(_LCD_CLEAR); // CLEAR display

Lcd_Out(1,1,Message2);

Lcd_Out(2,1,Message3);

//Lcd_Out(1,10,Message5);

//Lcd_Chr(1,14,'V');

do {

ADC_Value = ADC_Read(0);

DisplayVolt = ADC_Value * 2;

volt[0] = DisplayVolt/1000 + 48;

volt[1] = (DisplayVolt/100)%10 + 48;

volt[3] = (DisplayVolt/10)%10 + 48;

Lcd_Out(1,6,volt);

delay_ms(333); // Hold for 500 ms

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

ADC_Value = ADC_Read(1);

DisplayTemp = ADC_Value * 49.1;

temp[0] = DisplayTemp/1000 + 48;

temp[1] = (DisplayTemp/100)%10 + 48;

//volt[3] = (DisplayVolt/10)%10 + 48;

Lcd_Out(1,13,temp);

Lcd_Chr(1,15,223);

LCD_Chr_CP('C');

delay_ms(333); // Hold for 500 ms

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

TMR0=0; //Inicializa el registro TMR0.

Delay_1sec(); //Cuenta durante 1 segundo.

Display_Freq(TMR0);

numflancos=TMR0; //numflancos=velocidad en rps.

rpm=60*numflancos; //Transformación a rpm.

rads=6.28*numflancos; //Transformación a rad/s.

IntToStr(rpm,texto1); //Transformación de rpm a texto.

//Lcd_Out(1,1,"W[rpm]=");

Lcd_Out(2,5,texto1);

Lcd_Out(2, 13, freq);

LCD_Chr_CP('H');

LCD_Chr_CP('z');

//IntToStr(rads,texto2); //Tramsformación de rads a texto.

//Lcd_Out(2,1,"W[rad/s]=");

//Lcd_Out(2,10,texto2);

//TMR0=0;

//Delay_ms(1000); //Espera para la nueva medición.

//Delay_ms(1000); // Delay 1 Sec

//Display_Freq(TMR0);

/// LCD_Chr_CP('H');

///LCD_Chr_CP('z');

} while(1);

} // End main()

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.