|
Tài trợ cho PIC Vietnam |
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 |
|
Ðiều Chỉnh | Xếp Bài |
01-09-2009, 01:57 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Bài gửi: 8
: |
Xin giúp đỡ cho bài tập nhỏ nhưng QUÁ KHÓ!
Chào mọi người !
Hôm nay thầy giao cho bài tập nhỏ này, nhưng mình lập trình hoài vẫn không được, mong các bạn cho mình một hướng hay một ý tưởng tốt.Sắp phải nộp bài rồi. Yêu cầu của bài tập là : -Khi SW 1 được nhấn thì bật led D2 -Khi SW 2 được nhấn thì bật led D1 Nếu như các SW và led không nối chung với nhau thì quá dễ, nhưng bây giờ Thầy cho nối chung lại.Thầy nói mục đích là dùng kỹ thuật lập trình để tiết kiệm chân IC. Mình gửi kèm theo sơ đồ. Rất mong sự giúp đỡ của mọi người !
__________________
Với một vấn đề không hiểu, Bạn sẽ chỉ "Ngu" một lần nếu Bạn biết cách hỏi và chịu hỏi,không thì sẽ "Ngu" suốt đời....... |
01-09-2009, 05:17 PM | #2 |
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Bài gửi: 8
: |
Cám ơn ngocthanh07 đã có ý kiến.Đúng là con PIC còn rất nhiều chân để làm cái nhiệm vụ.Nhưng đây chỉ là bài tập thầy cho với mục đích là nâng cao khả năng lập trình.và yêu cầu của thầy là chỉ dùng 4 chân IC như sơ đồ.
Bạn thấy đó.Nếu theo sơ đồ trên thì chỉ sử dụng tất cả 4 chân thôi.Còn với sơ đồ phía dưới đây mình phải dùng đến 6 chân IC.Với sơ đồ 2 này mình chỉ cần quét phím rồi quét led là thực hiện được yêu cầu của Thầy.với lại bài tập này mình làm rồi, và cái sơ đồ trên là bài nâng cao tiếp theo. Với sơ đồ trên, thì RB2 và RB3 vừa là chân đọc vào từ SW vừa là chân xuất ra mức cao cho led sáng.Theo bạn mình nên làm thế nào. Hi vọng Bạn hiểu ý mình và cho mình hướng giải quyết.
__________________
Với một vấn đề không hiểu, Bạn sẽ chỉ "Ngu" một lần nếu Bạn biết cách hỏi và chịu hỏi,không thì sẽ "Ngu" suốt đời....... |
01-09-2009, 05:23 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Bài gửi: 8
: |
ngocthanh07,Nếu bạn cho là với yêu cầu trên là quá dễ thì bạn cứ cho mình hướng giải quyết thử xem.Hi vọng được học hỏi nhiều từ bạn.Mình cũng mới làm quen với con PIC thôi. À nếu được thì bạn ví dụ trên CCS C nhé.
Thanks!
__________________
Với một vấn đề không hiểu, Bạn sẽ chỉ "Ngu" một lần nếu Bạn biết cách hỏi và chịu hỏi,không thì sẽ "Ngu" suốt đời....... |
01-09-2009, 11:04 PM | #4 |
Đệ tử 7 túi
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
: |
Cái mạch đầu tiên của u cũng chưa gọi là tiết kiệm chân VDK , u nối lun Cathod của led qua R220 xuống GND thì ta bỏ đc 2 chân VDk nữa
Code:
main() { set_tris_B(0xFF);PORTB=0; // đầu tiên là chân lấy tín hiệu if(RB3==1){chống nảy ; set_tris_B(0);RB3=1; //bật led 1 sáng } } |
02-09-2009, 12:27 AM | #5 |
Đệ tử 4 túi
|
bạn xem thử cách này nhé.
-nếu bạn đã biết dùng chân ADC thì chỉ cần 3 chân vi xử lý là giải quyết dc đề bài của bạn. - hoặc làm thế này cũng cần 3 chân. do yêu cầu chỉ có 2 led nên mình có thể setup cho 1 chân pic làm input. nhấn nút 1 :chân này lên mức cao (mức 1), --> sáng 1 led. nhấn nút kia: chân này xuống mức thấp. --->sáng đèn còn lại. vấn đề ở đây là bạn phải ghim mức áp cho chân này trong khoảng không xác định là mức 0 hay mức 1. có lẽ khoảng 0.5-->2.3. bạn thử làm nhé! |
02-09-2009, 02:13 PM | #6 | |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 81
: |
Trích:
- Khi nhấn SW1 thì bật LED2, và nhấn SW2 thì bật LED1. Vậy khi nhả nút ra thì nó tắt đi hay là vẫn sáng (theo kiểu flip-flop). - Và một điều nữa là LED yêu cầu sáng liên tục hay sáng theo kiểu dạng xung cũng đc (chớp nhanh - quét LED) |
|
02-09-2009, 04:30 PM | #7 |
Đệ tử 4 túi
Tham gia ngày: Aug 2008
Bài gửi: 89
: |
Code:
while(1){ SW1_SCAN: LED1_TRIS_INPUT(); if(SW1_INPUT()){ // Bat Led2 neu SW1 nhan LED2_TRIS_OUTPUT(); LED2_ON(); delay_ms(1); LED2_OFF(); } SW2_SCAN: LED2_TRIS_INPUT(); if(SW2_INPUT()){ // Bat Led1 neu SW2 nhan LED1_TRIS_OUTPUT(); LED1_ON(); delay_ms(1); LED1_OFF(); } } Regards
__________________
Quang báo RG/RGB 6/8/12/16 bits màu Phone No: 0905.034.086 Email: lmquyen@gmail.com thay đổi nội dung bởi: cskiller, 02-09-2009 lúc 04:38 PM. |
02-09-2009, 09:41 PM | #8 |
Đệ tử 7 túi
|
cái này đơn giản mừ, bạn chỉ cần thay đổi trạng thái in - out liên tục, tốt nhất là dùng lệnh pullup treo Port B lên mức dương (bắt xung âm), bởi vì khi treo port B lên cao hiệu điện thế đặt trên 2 led đều bằng 0 nên không thể sáng đuợc, ở trạng thái out bạn chỉ cần set 2 chân B4,B5 xuống mức thấp, xong rùi bài toán đã đuợc giải quyết
Chúc vui
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________ _ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _ . . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . . |
03-09-2009, 09:25 AM | #9 | |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 36
: |
Trích:
với cách này thì tiết kiệm hơn bạn một chân đấy 1 ADC cho nút nhấn 2 output cho led input có thể dùng một chân ADC dẻ đọc tính hiệu (khoàn 20 =>30) nút nhấn còn nhiều hơn hay khong mình chừa thử còn nểu muốn tiết kiêm nủa thì dùng cách này của thaithienanh kết hợp cách này thì tiết kiệm được vài chân nửa với cách này thì tiết kiệm them một chân nủa nhưng lúc đó code phải mệt một chút nhưng tôi nghỉ khôg là vấn đề lớn nếu có lơ nói sai thi reply lại nha
__________________
Hỏi cái gì mà lắm thế !! |
|
|
|