drangonsuri |
19-05-2013 03:08 PM |
cảm biến siêu am HC_SR04
chào các anh chị!
em đang làm đồ án 1!
đề tài: dùng cảm biến siêu sr04 đo khoảng cách hiện thị LCD và giao tiếp máy tinh
phần cứng: hoàn thành
đây là code
Code:
#include <code.h>
#int_RDA
//Ft1=20/4=5 MHz --day la tan so cua timer1
//nhu vay 1 khoan 200ns thi timer1 dem len 1 don vi
//20ns wa nho hia cho 4 ta duoc 8*10^-7
//van toc se la 344m/s
int16 s,time;//khai bao bien se dung
int8 tram,chuc,donvi,nghin;
void RDA_isr(void)
{
}
//chuong trinh con de hien thi
void hienthi()
{
donvi=s%10;
tram=s/100;
chuc=x/100;
nghin=x/1000;
donvi=donvi+0x30;
chuc=chuc+0x30;
tram=tram+0x30;
nghin=nghin+0x30;
}
//chuong trinh con kik
void triger()
{
output_high(PIN_A1);//cho a1 lên mu´c cao
delay_us(12);//trê~ 12uS
output_low(PIN_A1);//cho a0 vê` mu´c 0
}
void main()
{
setup_adc_ports(AN0_AN1_AN3);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);//khai bao su dung timer1
setup_ccp1(ccp_capture_re);//bat cach len
setup_ccp2(ccp_capture_fe);//bat canh xuong
enable_interrupts(int_ccp1);//cho phep ngat ccp1
enable_interrupts(int_ccp2);//cho phep ngat ccp2
enable_interrupts(global);//cho phep ngat ngat toan cuc
while(1)
{
delay_ms30);
triger();//goi chuong trinh con--kik chan a1
delay_ms(200);//cho ket qua
s=((time*0.0008*344)/2);//tinh ra khoang cach
if(s>99)
{
donvi=0;chuc=0;tram=0
}
LCD_putcmd(0xC4);
LCD_putchar(nghin);
LCD_putcmd(0xC5);
LCD_putchar(tram);
LCD_putcmd(0xC6);
LCD_putchar(chuc);
LCD_putcmd(0xC7);
LCD_putchar(donvi);
}
}
//viet chuong trinh ngat cho pic
#int_ccp1
void ccp1()
{
set_timer1(0);//bat dau dem khi co xung muc cao chan rc2
}
#int_ccp2
void ccp2()
{
time=get_timer1();//lay ket qua thoi gian tu timer 1
}
em tham khỏa nhiều tài liệu và tự viết mọi người xem giúp em 2 ngày nữa em mới nạp và test thử, mong nó hoàng thành và chạy khi test
em vẫn chưa viêt được hàm ngắt cho timer1 mọi người (anh F) giup em viết hàm này với
trig-pinA1
echo--ping C2
|