![]() |
|
Tài trợ cho PIC Vietnam |
Luận văn tốt nghiệp Nếu bạn thắc mắc vì sao chúng tôi muốn phổ biến các luận văn tốt nghiệp? Xin xem tại đây |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 3
: |
Đo mực nước sử dụng PIC
Mình có một vấn đề như thế này mong các bạn giúp đỡ.....
Phần cảm biến để đo mực nước thì mình đã giải quyết được bằng các BJT. Giờ tới phần lập trình mình vẫn không sao điều khiển được 4 cái Switch tương ứng với 4 mức nước. Cụ thể là: - Khi không CB nào có tín hiệu thì Pic sẽ đóng nguồn bơm nước - Khi ở mức nước thấp nhất CB1 có tín hiệu thì Pic nhận tín hiệu và xuất giá trị ra sẽ là E ra leb 7 đoạn - Khi ở mức nước trung bình CB1 và CB2 có tín hiệu, Pic xuất giá trị là L - Mức nước trung bình 2 thì CB1, CB2,CB3 có tín hiệu, Pic xuất H - khi cả 4 CB có tín hiệu thì báo F và tắt bơm. Đơn giản như vậy nhưng mà cái vấn đề quét cái tổ hợp cảm biến ấy sao mà lộn xộn quá mình lập trình mãi mà không được. Mình dùng Asembly. Bác nào pro giải quyết dùm với |
![]() |
![]() |
![]() |
#2 |
Đệ tử 2 túi
Tham gia ngày: Aug 2010
Bài gửi: 42
: |
bạn muốn người khác viết code cho bạn à? ít ra bạn cũng post code lên đây (Asembly) và sơ đồ. xài con chip gì đố ai biết?
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 2 túi
Tham gia ngày: Oct 2009
Bài gửi: 26
: |
đơn giản là đưa 4 chân cảm biến đó vô chung 1 port rồi so sánh thôi.
ko thì so sánh kiểu khác. khi cảm biến dưới cùng không nhận thì ko cần xét gì nữa mà xuất E luôn . khi cảm biến dưới cùng nhận thì xét cảm biến thứ 2,nếu cảm biến này nhận luôn thì xuất L nếu ko thì vẫn xuất E...... cứ thế so sánh lên thôi. đã dùng pic thì sao ko dùng ngôn ngữ cao cấp mà viết. viết ASM chi cho rối |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 3
: |
Như bạn Longdv đã nói khi mình đưa vào một Port và tiến hành hỏi vòng như vậy mình cũng đã thực hiện. Khi CB1 có tín hiệu thì mình sẽ hỏi tiếp CB2.... Nếu CB2 không có tín hiệu thì sẽ xuất E, khi CB2 có tín hiệu thì sẽ xuất L; tuy nhiên khi đó thì PIC nó sẽ luân phiên nhau xuất tín hiệu E và L ra leb.. Xử lý việc đó bằng code ASM mìh làm mãi mà không được. Nếu làm bằng C thì dễ rồi
|
![]() |
![]() |
![]() |
#5 |
Đệ tử 2 túi
Tham gia ngày: Oct 2009
Bài gửi: 26
: |
viết ASM hay C thì cũng có chung một sơ đồ giải thuật thôi ma.
bạn phải so sánh các CB cho tới khi có được kết quả cuối cùng rồi mới xuất ra Led chứ. |
![]() |
![]() |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 3
: |
Đã giải quyết xong. Đây là CODE ASEMBLY
processor p16f877a include <p16f877a.inc> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF ;KHAI BAO BIEN #DEFINE CB1 PORTB,0 #DEFINE CB2 PORTB,1 #DEFINE CB3 PORTB,2 #DEFINE CB4 PORTB,3 #DEFINE BOM PORTB,4 #DEFINE LED PORTB,5 ;CHUONG TRINH CHINH ORG 0X0000 GOTO START START BCF STATUS,RP1 BCF STATUS,RP0 CLRF PORTD CLRF PORTB BSF STATUS,RP0 MOVLW B'00001111' MOVWF TRISB MOVLW 0X00 MOVWF TRISD BCF STATUS,RP0 CLRF PORTB CLRF PORTD ;VONG LAP LAP BTFSS CB1 GOTO BAT_BOM BTFSS CB2 GOTO XUAT_E BTFSS CB3 GOTO XUAT_L BTFSS CB4 GOTO XUAT_H GOTO XUAT_F BAT_BOM MOVLW B'1000000' MOVWF PORTD BSF BOM GOTO LAP XUAT_E MOVLW B'0000110' MOVWF PORTD GOTO LAP XUAT_L MOVLW B'1000111' MOVWF PORTD GOTO LAP XUAT_H MOVLW B'0001001' MOVWF PORTD GOTO LAP XUAT_F MOVLW B'0001110' MOVWF PORTD BCF BOM GOTO LAP END |
![]() |
![]() |
![]() |
|
|