PIC Vietnam

Go Back   PIC Vietnam > Các Đề Tài > Các dự án mã nguồn mở

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Các dự án mã nguồn mở Nếu bạn không mở mã nguồn, ít nhất là một phần nào đó trong dự án của bạn, xin đừng vào đây.

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 18-09-2012, 10:56 PM   #8
chungpmth
Nhập môn đệ tử
 
Tham gia ngày: Feb 2012
Bài gửi: 5
:
em chào anh!
anh cho em hỏi cái này cái được không a!
sao em test thì LCD không hiển thị gì mong quan tâm.
(đã test LCD )
#include <16f877a.h>
#include <defs_16f877a.h>
#include <def_877a.h>
#use delay(clock=20000000)
#fuses HS
#BYTE TRISC = 0x87
#BIT TRISC2 = 0x87.2
#BYTE PORTC = 0x07
#BIT RC2 = 0x7.2
#include <lcd_lib_4bit.c>
float getvar = 0, distance = 0;
int1 has_echo = 0, trg = 0;

void trigger(); //t?o trigger
void init();

#INT_CCP1
void ccp1_isr()
{
if(!trg) {
//Khi có xung echo c?nh lên
set_timer1(0); //Reset timer1 v? 0
setup_ccp1(CCP_CAPTURE_FE); //chuy?n sang dò xung c?nh xu?ng
trg = 1;
}
else
{
//Khi có xung echo c?nh xu?ng
getvar = get_timer1(); //??c giá tr? timer1 ngay khi có xung echo c?nh xu?ng
distance = ((getvar /111)*3.2-14.7);//(getvar - 485)/28.3; //
has_echo = 1;
disable_interrupts(GLOBAL);
}
}



void main()
{
init();
//LCD_init();
while (1)
{

trigger();
while(!has_echo);
lcd_putcmd(0xc0);
printf(lcd_putchar,"K/C:%6.2f", distance);
delay_us(200);
}
}
void init()
{
//Timer 1 clock in = Fosc/4 = 5Mhz
//Speed of Speech = 344m/s ,Max time echo =25ms
//=> Max Distance of SRF05 = (344m/s*25ms)/2 = 4.3m
// Min time echo = 100us
//=> Min Distance of SRF05 = (344m/s*100us)/2 = 3.44cm
//=> Timer 1 with Ts = (1/5MHz)*Pre = 0.4uS (Prescaler = 2);
//=> Reg Timer 1 Circle
lcd_init();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
//Thi?t l?p Capture CCP1 dò xung c?nh lên
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1); // Cho phép ng?t khi CCP1 có tín hi?u
}

void trigger()

{
trg = 0;
has_echo = 0;
TRISC2 = 0; //set chân RC2 làm output
RC2 = 1; //trigger
delay_us(20);
RC2 = 0;
TRISC2 = 1; //set chân RC2 làm input
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(GLOBAL);
}
chungpmth vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:57 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam