View Single Post
Old 24-10-2012, 03:59 PM   #1
thuynavy
Đệ tử 1 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 22
:
Mọi người cho mình hỏi về cái thuật toán đo tần số của 2 máy phát tí!

mình dùng chương trình này đo tần số của 2 nguồn điện được không mọi người??


#include <16F877A.h>
#include <def_877a.h>
#device *=16 ADC=10
#use delay(clock=4000000)
#FUSES XT
#USE FAST_IO(D)
#USE FAST_IO(b)
#USE FAST_IO(c)
#bit rs = portb.5
#bit rw = portb.4
#bit en = portb.3
int1 e,e1,e2;
int8 i,j;
int16 adc1,adc2;
int16 x,y,u,f1,f2,df;
//#ext_timer1
//void trantimer1()
//{
// int8 hs;
// hs++;
//}
//#ext_timer0
//void trantimer0()
//{
// int8 d;
// d++;
//}
#int_rb
void tinhf()
{

if (rb6==0)
if (e1==0)
{
set_timer1(0);
e1=1;
}
else
{
f1=get_timer1();
e1=0;
e=1;
}
if (rb7==0)
if ((e==0)&&(e1==1))
{
df=get_timer1();
}
if (e==1)
if (e2==0)
{
set_timer1(0);
e2=1;
}
else
{
f2=get_timer1();
e2=0;
e=0;
}
}
//--------------------------------------------------------
void lenh_lcd(int8 malenh)
{
portd=malenh;
rs=0;
rw=0;
en=1;
delay_us(5);
en=0;
delay_ms(3);
}
//--------------------------------------------------------
void data_lcd(unsigned char dulieu)
{
portd=dulieu;
rs=1;
rw=0;
en=1;
delay_us(5);
en=0;
delay_ms(3);
}
//--------------------------------------------------------
// do dien ap
void docap1()
{
set_adc_channel(0);
delay_us(10);
adc1 =read_adc();// cong cac gia tri adc
DELAY_US(10);
}
void docap2()
{
set_adc_channel(1);
delay_us(10);
adc2 =read_adc();// cong cac gia tri adc
DELAY_US(5);
}

//---------------------------------------------------
void main()
{
set_tris_a(0xFF);
set_tris_b(0xc0);
set_tris_d(0);
set_tris_c(0);
e=0;
e1=0;
e2=0;
u=0;
df=0;
f1=0;
f2=0;
///------------------thiet lap ngat
enable_interrupts(int_rb);
enable_interrupts(global);
ext_int_edge(h_to_l);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
//-------------------
//setup_ADC(ADC_clock_internal);
//setup_ADC_ports(RA0_RA1_RA3_ANALOG);
//-------------------
lenh_lcd(0x38);
lenh_lcd(0x0e);
lenh_lcd(0x01);
lenh_lcd(0x06);
//---------------

lenh_lcd(0x80);
data_lcd("U1:");
lenh_lcd(0x88);
data_lcd("U2:");
delay_ms(1);
lenh_lcd(0xC0);
data_lcd("F1:");
delay_ms(1);
lenh_lcd(0xC8);
data_lcd("F2:");
delay_ms(1);


while (true)
{

// hien thi ap1
//docap1();
x=0*0.24414+44,55;//
lenh_lcd(0x83);
data_lcd(x/100+48);
delay_ms(1);
data_lcd((x%100)/10 + 48);
delay_ms(1);
data_lcd((x%100)%10 + 48);
delay_ms(1);
//-------------------------------
//hien thi ap 2
//docap2();
y=0*0.48828;//
lenh_lcd(0x8b);
data_lcd(y/100+48);
delay_ms(1);
data_lcd((y%100)/10 + 48);
delay_ms(1);
data_lcd((y%100)%10 + 48);
delay_ms(10);
//----------------------- hien thi TAN SO 1
f1=f1*0.00001;
lenh_lcd(0xc3);
data_lcd(f1/1000+48);
delay_ms(1);
data_lcd((f1%1000)/100 + 48);
delay_ms(1);
lenh_lcd(0xc5);
data_lcd(",");
delay_ms(1);
data_lcd(((f1%1000)%100)/10 + 48);
delay_ms(1);
data_lcd(((f1%1000)%100)%10 + 48);
delay_ms(1);

//------------------------------hien TAN SO 2

f2=0.00001*f2;
lenh_lcd(0xcb);
data_lcd(f2/1000+48);
delay_ms(1);
data_lcd((f2%1000)/100 + 48);
delay_ms(1);
lenh_lcd(0xcd);
data_lcd(",");
delay_ms(1);
data_lcd(((f2%1000)%100)/10 + 48);
delay_ms(1);
data_lcd(((f2%1000)%100)%10 + 48);
delay_ms(1);
}
}

thay đổi nội dung bởi: thuynavy, 12-12-2012 lúc 09:22 PM.
thuynavy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn