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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 01-09-2009, 01:57 PM   #1
hieushv
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 !
Hình Kèm Theo
File Type: jpg so_do_mach.jpg (90.2 KB, 25 lần tả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.......
hieushv vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 05:17 PM   #2
hieushv
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.
Hình Kèm Theo
File Type: jpg So_do_2.JPG (48.8 KB, 4 lần tả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.......
hieushv vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 05:23 PM   #3
hieushv
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.......
hieushv vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-09-2009, 11:04 PM   #4
Mr.Bi
Đệ 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
                  }
}
led 2 u tự bật nhá . Code ni viết tức thời , u thử trên mạch thật oy báo lại cho tui & ae xem thử , ok ?
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-09-2009, 12:27 AM   #5
cong1810
Đệ tử 4 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 62
:
Send a message via Yahoo to cong1810
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é!
cong1810 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-09-2009, 02:13 PM   #6
nhanh0112
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 81
:
Trích:
Nguyên văn bởi hieushv View Post
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
Cho tui hỏi lại đầu bài tý.
- 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)
nhanh0112 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-09-2009, 04:30 PM   #7
cskiller
Đệ 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();
      }
   }
Cơ bản chỉ là vấn đề sử dụng IO tuần tự vừa làm Input vừa làm Output thôi.Áp dụng việc quét tuần tự qua lại thì mới xử lý được việc nhấn cùng lúc 2 SW.

Regards
File Kèm Theo
File Type: zip 2SW2Led_Proteus.zip (41.8 KB, 12 lần tải)
__________________
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.
cskiller vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-09-2009, 09:41 PM   #8
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
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. . . . . . . . . . . . . . . .
thaithienanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-09-2009, 09:25 AM   #9
thienthanhomenh
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 36
:
Trích:
Nguyên văn bởi hieushv View Post
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 !
mình có cách chỉ dùng ba chan thôi như có thể input bao nhiê nút nhấn tùy bạn còn output thì tùy bạn chọn bao nhiêu output

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ế !!
thienthanhomenh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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à 05:46 AM.


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