PDA

View Full Version : Mach mo phong den giao thong


thang0105
02-06-2006, 11:13 PM
Chào các anh chị em, mình cũng vừa mới nghiên cứu về PIC16F84A và ứng dụng vào mô phỏng một mạch đèn giao thông có đếm số.
Mạch mô phỏng mình dùng PROTEUS đễ vẽ. Còn đoạn code thì dùng chương trình MPLAB viết. Tuy nhiên vì sản phẩm đầu tay về con PIC nên đoạn mã chưa chạy, cũng chưa biết sai chỗ nào. Ở đây mình chỉ đơn thuần là xuất các chân trên các Port cho các Led sáng, sau đó delay một khoảng thời gian, và cứ như vậy theo phương pháp quét Led.
Nào, anh chị em cùng ra tay giúp đỡ lính mới nhé.

falleaf
03-06-2006, 12:27 AM
Bạn cứ gửi các sản phẩm lên bằng cách tải file từ máy, nếu dung lượng quá lớn, gửi email cho F qua falleaf.pic@gmail.com, F sẽ upload lên host của picvietnam để lưu trữ.

Chúc vui.

luanht
14-07-2010, 11:04 AM
chào các bác! xin hỏi ai có mach đèn giao thông gui gium em với. cảm on nhiều! phamvanluan817@gmail.com

manhdktd
14-07-2010, 10:53 PM
chào các bác! xin hỏi ai có mach đèn giao thông gui gium em với. cảm on nhiều! phamvanluan817@gmail.com

http://www.youtube.com/watch?v=GAJVEjWfPrs&feature=channel
đây là phần mô phỏng của mình.bạn có thể tham khảo.vì mình không học vi sử lý nên bài này chỉ làm cho vui thôi,có gì chưa tốt mong các bạn bổ xung.

HAI1817
16-07-2010, 01:11 PM
bạn có mạch nao điều khiển moto dc secvo không

HAI1817
20-07-2010, 03:32 PM
anh chị giúp dùm em code của em với sao không nhận được giá trị encoder lên lcd

HAI1817
21-07-2010, 05:35 PM
bạn có mạch nao điều khiển moto dc secvo không

http://www.picvietnam.com/forum/images/smooth_blue/buttons/post_thanks.gif

HANC
21-07-2010, 07:03 PM
em là thành viên mới của diễn đàn mong mọi người chỉ dùm em ổn định tốc độ động cơ với,đề tài trong lớp của em.cụ thể encoder 400 xung em đưa vào timer0 (pic 16f877a)chân AR4 đọc em muốn 0.5s lấy mẫu 1 lần tiếp theo làm như thế nào,em đọc trên diễn đàn cũng chưa hiểu lắm.
Em có xem code của tác giả nào đó như thế này
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=8000000)
#include <lcd_lib_4bit.c>
int16 cnt,cnt2,xung,v;
int8 a,b,c;
#int_TIMER0
void TIMER0_isr(void) //TIMER0 dem xung ve
{
set_timer0(255);
if(tmr0if==1)
{
cnt++;
tmr0if=0;
}
}
#int_TIMER1 //TIMER1 dem tgian,tinh van toc
void TIMER1_isr(void)
{
set_timer1(5565);
if(tmr1if==1)
{
xung=get_timer0()*4;
v=(xung*60)/((100*60*0.001));
tmr1if=0;
}
}
void Lcd()
{
while(1)
{
a=(int)v/100;
b=(int)(v-a*100)/10;
c=(int)v%10;
LCD_putcmd(0xC0);
LCD_putchar("xung encoder");
LCD_putcmd(0x80);
LCD_putchar(a+48);
LCD_putcmd(0x81);
LCD_putchar(b+48);
LCD_putcmd(0x82);
LCD_putchar(c+48);
}
}
void Ngat()
{
set_timer0(255);
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_4);
enable_interrupts(INT_TIMER0);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
set_timer1(5565);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
}
void PWM()
{
setup_timer_2(T2_DIV_BY_16,255,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
set_pwm1_duty(1000);
set_pwm2_duty(1022);
}
void main()
{
set_tris_d(0);
set_tris_a(0xff); //Cho tin hieu di vao RA4
set_tris_c(0);
LCD_Init();
PWM();
Ngat();
Lcd();
delay_ms(100);
}
mong các anh chị giải thích(các công thức trên,timer0,timer1,timer2)
cảm ơn nhiều (code trên em thử không thấy đọc được)

HANC
21-07-2010, 07:58 PM
Không ai giúp em vậy,một tí ý kiến gì cũng được

HANC
24-07-2010, 02:22 PM
đây là đoạn mã từ diễn đàn

#include "16f877a.h"
#fuses hs
#use delay (clock = 8000000)
#include <abc.c>
int16 a,count,xung,b;
int8 nghin,tram,chuc,donvi;
#int_rtcc // Ngat Timer 0

void Timer0_isr() //CHAN TIMER0 LA RA4
{ set_timer0(255);
xung++;
if (xung==2)
{
xung=1;
}
b++;

}


void hienthi(int16 b)
{
a=get_timer0();
nghin = b / 1000 ;
tram = b % 1000/100 ;
chuc = b % 1000%100/10 ;
donvi = b % 1000%100%10;
lcd_gotoxy(3,2);
printf(lcd_putc,"%1d%1d%1d%1d",nghin,tram,chuc,donvi);
}
void main()
{
lcd_init();
a=0; xung=0; b=0;
setup_timer_0 (RTCC_EXT_l_TO_h);
setup_counters (rtcc_ext_l_to_h,RTCC_DIV_1);
set_timer0(0);

enable_interrupts(INT_RTCC);

enable_interrupts(GLOBAL);
lcd_gotoxy(2,1);
printf(lcd_putc,"Do encoder");
set_tris_a(0xff);
count = 0;
while (TRUE)
{

hienthi(b);

}

}

xung cứ tăng lên
nếu tính vận tốc phải làm sao ,anh chị chỉ em với công thức giải thích dùm em

HAI1817
05-08-2010, 12:14 PM
đề tài này em cũng thích có ai giúp bạn ấy không
đề tài em giống bạn HANC.Cảm ơn nhiều

HANC
12-08-2010, 08:05 PM
em tốn nhiều tiền lắm rồi mà không có ai giúp

xungba22
17-08-2010, 12:06 AM
cách lập trình của bạn chỉ để lập trình mấy bài chơi thôi.
nếu làm kiểu đóa mà sai thì biết kiểm tra o đâu.

HANC
24-08-2010, 03:22 PM
bạn có điều khiển qua sevo dc chưa cho tôi tham khảo với.chứ nói thì ai nói không được còn làm thì khó đấy