PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

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

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 17-07-2008, 09:00 AM   #1
dark_electron
Đệ tử 2 túi
 
Tham gia ngày: Feb 2008
Bài gửi: 27
:
Bộ đếm 4 số (thử trước khi chạy đồng hồ)

Hi,
Các bác cho em hỏi là trong chương trình của em thời gian đếm một số bằng thời gian quét 4 LED (5x4=20ms) hơi nhanh, có cách nào cho delay đếm khác với delay quét mà vẫn đảm bảo các LED sáng đều ko các bác?
Hix, chắc phải chuyển qua quét theo kiểu timer như bác Linh bày quá, quét kiểu lặp khó phối hợp cho chương trình làm việc khác quá đi.

thay đổi nội dung bởi: dark_electron, 17-07-2008 lúc 09:26 PM. Lý do: Debugged được phần bộ nhớ màn hình
dark_electron vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-07-2008, 09:55 AM   #2
linhnc308
Đệ tử 5 túi
 
Tham gia ngày: Oct 2005
Bài gửi: 117
:
Trích:
Nguyên văn bởi dark_electron View Post
Hi,
Các bác cho em hỏi là trong chương trình của em thời gian đếm một số bằng thời gian quét 4 LED (5x4=20ms) hơi nhanh, có cách nào cho delay đếm khác với delay quét mà vẫn đảm bảo các LED sáng đều ko các bác?
Hix, chắc phải chuyển qua quét theo kiểu timer như bác Linh bày quá, quét kiểu lặp khó phối hợp cho chương trình làm việc khác quá đi.
Yêu cầu của bạn hoàn toàn thực hiện được.
Gọi Display() là hàm quét Led, thời gian là 20ms. Về cơ bản hàm main của bạn sẽ là
Code:
void main(){
 // Khoi tao
//vong lap chinh
while(1){
 updateCounter(); // Ham nay chuyen gia tri Counter thanh dang du lieu cho Led
 display();
 Counter++;
}
}
Nếu bạn muốn thời gian đếm lâu hơn, bạn thêm một biến khác đếm số lần gọi hàm Display, khi đủ thì tăng biến đếm. Lấy ví dụ bạn muốn biến đếm 1s tăng 1 lần, thực hiện như sau.
Code:
void main(){
 // Khoi tao
 unsigned int NumCallDisplay = 0;
//vong lap chinh
Counter = 0;
updateCounter(); // Ham nay chuyen gia tri Counter thanh dang du lieu cho Led
while(1){
  Display();
 if (++NumCallDisplay == 50) // So lan goi Display là 50 tương ứng 50x20ms = 1000ms = 1s
{     Counter++;
     updateCounter(); // Ham nay chuyen gia tri Counter thanh dang du lieu cho Led
}
}
}
Chúc thành công.
__________________
CallerID, Ethernet-RS232, PICWEB, Cảnh báo BTS
Giải pháp toàn diện giám sát - điều khiển từ xa qua GSM/Internet
0988006696

http://linhnc308.blogspot.com
linhnc308@gmail.com

thay đổi nội dung bởi: linhnc308, 18-07-2008 lúc 09:59 AM. Lý do: Update code
linhnc308 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

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à 10:35 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