PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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ơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 26-02-2009, 03:35 PM   #331
tung_bk02
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 4
:
cho em hỏi vấn đề dùng 16f877A để giao tiếp pc qua ethernet, từ đó có thể nối ứng dụng điều khiển đo, hiển thị nhiệt độ, điều khiển tốc độ động cơ...
tung_bk02 vẫn chưa có mặt trong diễn đàn  
Old 26-02-2009, 04:00 PM   #332
vtuan274
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 1
:
anh nào có thể cho tư liệu về hình ảnh encoder va nguyên lí hoạt động của nó vớ
vtuan274 vẫn chưa có mặt trong diễn đàn  
Old 27-02-2009, 07:06 AM   #333
thienthan611
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 1
:
anh ơi anh có thể giúp em thiết kế mạch sử dụng pic 16f877a (tính năng là dùng đề chạy chữ)giúp em lam zoi nha anh ntc,hoac ai làm được chỉ mình với nha.thanks nhiu
thienthan611 vẫn chưa có mặt trong diễn đàn  
Old 28-02-2009, 12:31 AM   #334
electronic
Nhập môn đệ tử
 
Tham gia ngày: Apr 2008
Bài gửi: 9
:
Mình mới bắt đầu học Pic. Cũng đọc qua một số tài liệu. Viết xuất I/O cho 1 Led bằng cách khác thì chạy, còn cách này thì không. Mong các anh em chỉ giáo. Biết sai để hiểu hơn. Cảm ơn anh em.

Code:
#include <16F877A.h>
#use delay (clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
int1 x;
void main()
{  while(1)
   {output_bit(pin_B1,!x);
    delay_ms(250);
   }
}

thay đổi nội dung bởi: namqn, 28-02-2009 lúc 01:28 AM. Lý do: định dạng code
electronic vẫn chưa có mặt trong diễn đàn  
Old 28-02-2009, 01:35 AM   #335
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi electronic View Post
Mình mới bắt đầu học Pic. Cũng đọc qua một số tài liệu. Viết xuất I/O cho 1 Led bằng cách khác thì chạy, còn cách này thì không. Mong các anh em chỉ giáo. Biết sai để hiểu hơn. Cảm ơn anh em.

Code:
#include <16F877A.h>
#use delay (clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
int1 x;
void main()
{  while(1)
   {output_bit(pin_B1,!x);
    delay_ms(250);
   }
}
Theo tài liệu hướng dẫn của CCS C, cú pháp của hàm output_bit() như sau: output_bit(pin, value). Tham số pin có thể là biến, nhưng tham số value là hằng số (0 hay 1). Bạn đã dùng một biểu thức có chứa biến cho tham số thứ hai của hàm trong đoạn code của bạn.

Nếu bạn muốn lật trạng thái của chân B1, bạn có thể dùng hàm output_toggle() đã được CCS C cung cấp.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn  
Old 28-02-2009, 02:31 AM   #336
electronic
Nhập môn đệ tử
 
Tham gia ngày: Apr 2008
Bài gửi: 9
:
Cảm ơn anh namqn nhé. Anh cho em hỏi. Em muốn xoay bit ở 8 led đơn. Code em viết như sau:

#include <16F877A.h>
#fuses HS,NOLVP,NOWDT,PUT
#use delay(clock=4000000)
void main()
{ int16 i,count;

while(1)
{
count=1;
for (i=0;i<=8;i++)
{
output_A(count);
delay_ms(100);
count=count>>1;
}
}

}
Không hiểu sao chỉ chạy 6 led. Mong anh em chỉ dùm. Có cách nào để lưu 1 giá trị vào 1 thanh ghi rồi cho xoay k anh? Chẳng hạn lưu: b10000000 vào rồi cho rotate sang phải để dịch?
electronic vẫn chưa có mặt trong diễn đàn  
Old 28-02-2009, 02:47 AM   #337
electronic
Nhập môn đệ tử
 
Tham gia ngày: Apr 2008
Bài gửi: 9
:
Ah. Mình hiểu rồi. Port A chi có I/O từ RA0-RA5 thôi. Cám ơn anh em.
electronic vẫn chưa có mặt trong diễn đàn  
Old 28-02-2009, 05:38 PM   #338
phandinh
Đệ tử 6 túi
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
:
bác namqn chỉ cho em cách dùng timer được không?
.khởi tạo
.thiết lập giá trị ban đầu.
phandinh vẫn chưa có mặt trong diễn đàn  
Old 01-03-2009, 12:01 AM   #339
electronic
Nhập môn đệ tử
 
Tham gia ngày: Apr 2008
Bài gửi: 9
:
Các anh trong dien đàn chỉ em phần này với. Em lập code cho chương trình led sáng dồn, nếu dùng xuất ra portB 0x01,0x02... thì dài quá nên em viết theo 1 kiểu khác. Không hiểu sai chỗ nào mà lại chạy sai, nhờ mấy anh chỉ giúp.

Code:
#include <16F877A.h>
#fuses HS,NOWDT,NOPUT,NOPROTECT, NOWRT
#use delay(clock=20000000)

void main()
{ byte i,led;
  led=0x00;
  while(1)
   { for(i=0; i<=8; i++)
         { led=led+2^i;
           output_B(led);
           delay_ms(200);
         }  
   }
}
Xin cảm ơn.

thay đổi nội dung bởi: namqn, 01-03-2009 lúc 12:33 AM.
electronic vẫn chưa có mặt trong diễn đàn  
Old 01-03-2009, 01:24 AM   #340
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi phandinh View Post
bác namqn chỉ cho em cách dùng timer được không?
.khởi tạo
.thiết lập giá trị ban đầu.
PIC16F877A có nhiều loại timer, tôi chỉ lấy ví dụ về Timer 1 ở đây. Giả sử tần số xung clock là 4 MHz, có nghĩa là mỗi chu kỳ máy (bao gồm 4 chu kỳ xung clock) sẽ kéo dài 1 us. Lại giả sử cần định thời 100 ms.

Nếu chọn xung clock thực thi lệnh là nguồn xung clock cho Timer 1, thì chúng ta cần đếm đủ 100000 chu kỳ máy (= 100000 us) để định khoảng thời gian 100 ms. Vì bộ đếm của Timer 1 chỉ có độ dài 16-bit, giá trị lớn nhất mà Timer 1 có thể đếm được mà không bị tràn là 65535. Do đó, chúng ta cần giảm tần số xung đi vào Timer 1 để có thể đạt được mục đích. Điều này có thể thực hiện bằng cách sử dụng bộ chia (tần) trước (prescaler). Bộ chia trước của Timer 1 trong PIC16F877A có thể chia 1, 2, 4, hay 8 tần số clock trước khi đưa vào Timer 1. Ở ví dụ này, tôi chọn hệ số chia là 8. Như vậy, số đếm mà Timer 1 sẽ đếm được ứng với 100 ms sẽ là 100000/8 = 12500. Vì Timer 1 chỉ tràn từ 0xFFFF về 0x0000, cần thiết lập trước giá trị của các thanh ghi TMR1H và TMR1L để sẽ tràn trong 12500 lần đếm, tức là giá trị TMR1 = 65536 - 12500 = 53026 = 0xCF2C. Xem thêm hình 6-2 trong datasheet của PIC16F877A để hiểu rõ hơn phần trình bày trên.

Code để thiết lập Timer 1 như sau:
Code:
  T1CON = 0x30;		// Prescale = 1:8, dung clock thuc thi lenh
  TMR1H = 0xCF		// TMR1 = 0xCF2C
  TMR1L = 0x2C
  T1CON = T1CON | 0x01;	// Bat Timer 1
Trong chương trình chính, người dùng có thể xét trạng thái của bit TMR1IF (bit 0 của thanh ghi PIR1) để kiểm tra xem đã hết thời gian cần chờ hay chưa. Người dùng cần xóa bit TMR1IF này sau khi đã sử dụng xong để dùng cho lần định thời tiếp theo.

Một nhắc nhở nhỏ: Bạn nên tránh nêu đích danh người được hỏi, và chú ý là những câu hỏi loại này không phải chỉ có một vài người có thể trả lời.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 01-03-2009 lúc 09:43 PM. Lý do: tính nhầm
namqn vẫn chưa có mặt trong diễn đàn  
Old 01-03-2009, 10:03 PM   #341
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi electronic View Post
Các anh trong dien đàn chỉ em phần này với. Em lập code cho chương trình led sáng dồn, nếu dùng xuất ra portB 0x01,0x02... thì dài quá nên em viết theo 1 kiểu khác. Không hiểu sai chỗ nào mà lại chạy sai, nhờ mấy anh chỉ giúp.

Code:
#include <16F877A.h>
#fuses HS,NOWDT,NOPUT,NOPROTECT, NOWRT
#use delay(clock=20000000)

void main()
{ byte i,led;
  led=0x00;
  while(1)
   { for(i=0; i<=8; i++)
         { led=led+2^i;
           output_B(led);
           delay_ms(200);
         }  
   }
}
Xin cảm ơn.
Bạn thử lại với code sau xem:
Code:
#include <16F877A.h>
#fuses HS,NOWDT,NOPUT,NOPROTECT, NOWRT
#use delay(clock=20000000)

void main()
{ byte i,led;
  led=0x00;
  while(1)
   { for(i=0; i<=8; i++)
         { led = (led << 1) + 1;
           output_B(led);
           delay_ms(200);
         }  
   }
}
Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn  
Old 02-03-2009, 10:30 AM   #342
135246357
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 2
:
chào các bác em mới bắt đầu học về vi điều khiển pic nên rất mong bác ntc sớm post bài lên kèm thêm giải thích câu lệnh thì hay quá
135246357 vẫn chưa có mặt trong diễn đàn  
Old 02-03-2009, 10:37 AM   #343
135246357
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 2
:
ở đây có bác nào biết viết lập trình cho pic bằng ngôn ngữ ccs không?bảo em với có ví dụ minh họa thì tốt quá
135246357 vẫn chưa có mặt trong diễn đàn  
Old 02-03-2009, 11:42 PM   #344
lexuantien
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Nơi Cư Ngụ: Qui Nhon - Binh Dinh
Bài gửi: 37
:
Send a message via Yahoo to lexuantien
Bạn vào luồng này :
http://www.picvietnam.com/forum/show...=2113#post2113.
Link download trình biên dịch CCS C ở đây: http://www.tailieuvietnam.net/downlo...CCSC_3.249.rar
Hiện nay đã có phiên bản mới hơn 4.0 rùi đó.
mình cũng mới học về nó thôi , chủ yếu là học trong phần Help của nó đó , có ví dụ rõ ràng lắm.
lexuantien vẫn chưa có mặt trong diễn đàn  
Old 03-03-2009, 12:09 AM   #345
dhbk3i
Nhập môn đệ tử
 
Tham gia ngày: May 2008
Bài gửi: 7
:
chào các bạn, mình đang làm đề tài về đo khoảng cách 5-10m kết hợp với vi xử lý, mình đang băn khoăn không biết trọn con cảm biến nào cho phù hợp, mong được sự góp ý từ các bạn, mình xin cảm ơn trước
dhbk3i vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 26 Hôm qua 08:55 AM
TUT về USART trong PIC16F877A mafd_47a MPASM 11 04-05-2024 04:43 AM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
CCS C for PIC16F877A nhh Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 405 24-04-2008 12:00 PM


Múi giờ GMT. Hiện tại là 04:23 PM.


Đượ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