PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Nhờ giúp đỡ hướng giải quyết ! (http://www.picvietnam.com/forum/showthread.php?t=3324)

nvtiep3ik50hut 19-12-2008 09:57 AM

Nhờ giúp đỡ hướng giải quyết !
 
Em đang có một vấn đề với PIC16F877A làm đau đầu mấy hnay.
Em có làm 4 phím Chọn kênh, tăng, giảm, xác nhận nhằm mục đích chọn kênh vào ADC của PIC(PIC này có 8 đầu vào tương tự PortA và E), chọn được cả tần số lấy mẫu của ADC.
Mấy hnay loay hoay mãi,tìm kiếm nhưng chưa có câu trả lời.
Anh em nào trong bang có thể gợi ý hướng giải quyết cho em được không ạ?Có code mẫu thì càng tốt.
Thanks!

bien_van_khat 19-12-2008 10:31 AM

Trích:

Nguyên văn bởi nvtiep3ik50hut (Post 21515)
Em đang có một vấn đề với PIC6F877A làm đau đầu mấy hnay.
Em có làm 4 phím Chọn kênh, tăng, giảm, xác nhận nhằm mục đích chọn kênh vào ADC của PIC(PIC này có 8 đầu vào tương tự PortA và E), chọn được cả tần số lấy mẫu của ADC.
Mấy hnay loay hoay mãi,tìm kiếm nhưng chưa có câu trả lời.
Anh em nào trong bang có thể gợi ý hướng giải quyết cho em được không ạ?Có code mẫu thì càng tốt.
Thanks!

Đây là ý tưởng của mình, giả sử như bạn đang dùng CCS.

a - Mỗi lần bấm phím Chọn kênh (CK), ADC sẽ được gán lần lượt từ kênh 0-7 rồi quay lại 0. Như vậy mỗi lần chọn bấm CK bạn gọi set_adc_channel((channel++)&7);

b - Sau khi chọn kênh, bấm các phím Tăng (T) Giảm (G) sẽ thay đổi tần số lấy mẫu. Tần số lấy mẫu thực chất ko phải là thông số của module ADC, đây là số lần bạn thực hiện chuyển đổi ADC. Do đó bạn có thể đặt đoạn mã thực hiện chuyển đổi ADC trong ngắt timer1, sau đó thay đổi giá trị preset và prescaler để đạt được tần số lấy mẫu mong muốn. Cách đơn giản để thực hiện điều này là lập mảng chứa sẵn tất cả giá trị preset của timer1 mà bạn cần và mỗi lần bấm phím bạn gán giá trị tương ứng trong mảng.

c - Phím xác nhận sẽ bật module ADC.

Timer1 được chọn vì nó là timer 16 bit do đó mềm dẻo hơn khi tạo thời gian trễ.
Ngoài ra bạn còn phải xử lý chống rung phím, thiết lập IO, ADC...


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam