|
Tài trợ cho PIC Vietnam |
PIC Việt Nam - Chuyên nghiệp Chúng ta sẽ thảo luận ở đây nhưng vấn đề về phương pháp nghiên cứu, cách làm việc và tổ chức công việc... |
|
Ðiều Chỉnh | Xếp Bài |
02-04-2010, 12:05 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Apr 2010
Bài gửi: 5
: |
PIC16F676 ! hiển thị điện áp DC trên LED
cho em hỏi PIC6F676 co tren thị trường ko và gia khoảng bao nhiêu K ?
em định làm mạch hiển thị điện áp DC 0->15V trên LED sơ đồ mạch :http://www.coolcircuit.com/project/meter/circuit.GIF cho em hỏi con pic này có cần phải lập trình ko ? |
02-04-2010, 01:10 AM | #2 |
Đệ tử 1 túi
Tham gia ngày: Dec 2007
Bài gửi: 11
: |
Vi điều khiển nào ma không phải lập trình bạn
|
02-04-2010, 12:45 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Apr 2010
Bài gửi: 5
: |
nhưng mình nghe người khác nói con PÍC6F676 ko cần pải lập trình vì nó có sẵn chức băng ACCD rồi .
"""Khổ thân cho bạn quá. 16F676 PIC là loại ADCD (Analog/Didital Convert Display). Ráp đúng mạch là nó chạy chứ lập trình cái gì. Các giá trị clock, sup-measure, decimal counter, counter reset v.v... đều đã được mặc định. Bạn khỏi phải lo lập trình, vì không phải cứ PIC là lập trình đâu. Sau khi ráp, chỉnh chiết áp 50K để chuẩn độ (calif) cho chính xác""" |
02-04-2010, 02:20 PM | #4 |
Đệ tử 1 túi
Tham gia ngày: Dec 2007
Bài gửi: 11
: |
Trời!
bạn download datasheet của nó về xem nhe...nó là vi điều khiển và phải lập trình. Còn việc nó tich hợp ADC thì chỉ tiện cho người dùng..và cũng phải lập trình
__________________
leeMT |
03-04-2010, 07:45 PM | #5 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 4
: |
Bạn leemanhtuan nói đúng rồi đấy, không lập trình thì no chạy thế nào được. Có File .hex cho ban luôn đây chúc làm thành công.
|
03-04-2010, 07:47 PM | #6 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 4
: |
Chi giúp tôi cách đính kèm FILE.Zip , tôi không gửi được
|
04-04-2010, 05:13 PM | #7 |
Nhập môn đệ tử
Tham gia ngày: Apr 2010
Bài gửi: 5
: |
bạn úp lên mạng rùi gủi kink cũng được mà .
nếu thay PIC 16F676 bằng 16F877 thì ai giúp mình vẽ lại mạch rùi viết code được ko thank |
04-04-2010, 09:14 PM | #8 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 4
: |
Code đây bạn dịch ra File.hex rồi nạp cho vi điều khiển nhé, nói thực tôi không biết cái vụ up lên mạng làm thế nào các bạn thông cảm.
#include <16F676.h> #device adc=10 #fuses INTRC_IO,NOWDT,PUT,NOPROTECT,BROWNOUT,NOMCLR #use delay (clock=4000000) // 4MHz clock #rom 0x3ff={0x3444} #byte PORTA = 0x05 #byte PORTC = 0x07 #byte TRISA = 0x85 #byte TRISC = 0x87 #define SPORTA PORTA #define SPORTC PORTC #define TICKS_BETWEEN_INTERRUPTS 5000 //5000 #define INTERRUPT_OVERHEAD 35 #define TMR1RESET (0xFFFF-(TICKS_BETWEEN_INTERRUPTS-INTERRUPT_OVERHEAD)) const char SegCode[11] = {0x40,0x57,0x22,0x06,0x15,0x0C,0x08,0x56,0x00,0x04 ,0xFF}; // 0 1 2 3 4 5 6 7 8 9 const char Column[3] = {0x02,0x01,0x04}; static char Segment[3] = {0x7f,0x7f,0x7f}; static unsigned char ColCount=0x00; void CPU_SETUP(void); void Display(void); void HTO7S(unsigned int32 Num); byte i; unsigned int32 result; #INT_TIMER1 void Timer1(void) { set_timer1(TMR1RESET); Display(); } void main() { unsigned char i; CPU_SETUP(); while(true) { result=0; for (i=0;i<20;i++) { set_adc_channel(3); delay_ms(1); result=result+read_adc(); } //result = 0x3fe; HTO7S(result/20); delay_ms(200); } } void CPU_SETUP() { setup_comparator(NC_NC_NC_NC); // not use comparator module setup_adc_ports( sAN3 | VSS_VDD); setup_adc(ADC_CLOCK_DIV_64); TRISA=0b00011000; PORTA=0x27; TRISC=0b00000000; PORTC=0x37; setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); set_timer1(TMR1RESET); enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER1); } //------------------------------------- // Display routine //------------------------------------- void Display() { PORTA = 0b00100111; // off all digits column and Segment G PORTC = 0b00111111; // off segment a-f delay_cycles(2); if (ColCount>=3) ColCount=0; SPORTC = Segment[ColCount]; SPORTA = ((Segment[ColCount] & 0b01000000)>>1) | (Column[ColCount]^0x07); ColCount++; } //-------------------------------------- // Convet HEX 2 byte to 7-Segment code //-------------------------------------- void HTO7S(unsigned int32 Num) { unsigned int32 res; Segment[0]=SegCode[30*Num/10230]; if (Segment[0]==0x40) Segment[0]=0xFF; res = 30*Num%10230; Segment[1]=SegCode[10*res/10230]; res=10*res%10230; Segment[2]=SegCode[10*res/10230]; } |
|
|