![]() |
Xin giúp đỡ cho bài tập nhỏ nhưng QUÁ KHÓ!
1 Attachment(s)
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 ! |
1 Attachment(s)
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. |
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! |
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() |
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é! |
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) |
1 Attachment(s)
Code:
while(1){ Regards |
:D 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 :D
Chúc vui :beer: |
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 |
Múi giờ GMT. Hiện tại là 06:36 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