chào các Anh!Nhờ mấy Anh chỉ dùm : khi đẩy dữ liệu từ pic8f4550 thông qua việc đọc ADC lên mấy tính để vể đò thị bầng C#.Em xin hỏi mấy Anh là dữ liệu đó sau khi đẩy vào máy tính thì nằm ở đâu và lấy như thế nào để vẻ ?Anh nào có tài liệu xin gửi cho Em với qua gmail : letanminhqn@gmail.com Em cảm ơn các Anh nhiều.
Thông báo
Collapse
No announcement yet.
Các vấn đề ADC/DAC trong PIC
Collapse
X
-
cac bac ai co tai lieu noi ve con pic 18f4520 ko? cho e voi . e dang lam bao cao tot ngiep.ma khong co tai lieu ve no. tim mai chang dc. bac nao co cho em voi nha! tai lieu noi ve chac nang cac chan cua no ay.e dang can gap wa sap fai nop mat roi.
Comment
-
-
Nguyên văn bởi luckystart Xem bài viếtmấy bác cho em hỏi con pic của em cứ nạp là nó đơ,nghĩa là nó vẫn chạy chương trình cũ,vậy ko xóa được hả các bác?
Comment
-
Mọi người xem giúp em code ADC trên 12F683
Em viết code này cho con 12F683 nhưng hình như là nó ko đọc được giá trị ADC! Em đã thử mô phỏng trên máy tính nhưng nó vẫn vậy, kể cả nạp vào mạch chạy thử!
Code:#include <12F683.h> #device *=16 ADC = 10 #fuses NOMCLR, INTRC_IO,NOWDT,NOPROTECT, NOPUT, NOPROTECT, NOBROWNOUT, NOCPD #use delay (clock=8000000) int16 var1; void main() { setup_oscillator(OSC_8MHZ); SETUP_ADC(ADC_CLOCK_DIV_2); SETUP_ADC_PORTS(sAN1|VSS_VDD ); delay_us(10); var1 = 0; while (true) { SET_ADC_CHANNEL(sAN1); delay_us(10); var1 = READ_ADC(ADC_START_AND_READ); delay_us(10); if (var1 >= 500) { output_high(pin_a4); delay_ms(100); output_low(pin_a4); } else { output_high(pin_a2); delay_ms(200); output_low(pin_a2); } } }
Comment
-
sử dụng pic để điều rộng xung pwm
1, khởi tạo chân xuất pwm
set_pwm_1(pwm)
2, setting chu kỳ xung
setup_timer1(a,b,c) // chuky = (4/f)*(a)(b+1)
3, phat xung pwm
set_pwm_duty(value) // độ rộng xung = (1/f)*value*a , suy ra độ rộng xung (max) khi chu kỳ = độ rộng xung , suy ra value = 4*(b+1)
OK ---> VẬY LÀ BẠN ĐÃ TÌM ĐƯỢC VALUEMIN = 0 , VALUEMAX = 4*(B+1) NHÉ !!
TỪ ĐÓ ĐƯA VÀO VÒNG LẶP FOR(J = 0 ; J < VALUEMAX ; J++)
{
SET_PWM_DUTY(J) ;
DELAY_MS(10) ;
}
CHÚC THÀNH CÔNG ,
Comment
-
mọi người giúp phần adc hiển thị nhiệt độ ra led 7 seg hoặc lcd
e đang học con 18f4620,có làm mạch đo nhiệt độ dùng adc trong của pic hiển thị ra led 7 thanh hoặc lcd.Mọi người xem hộ xem lỗi ở đâu mà nó k hiển thị đc.E nghĩ là dữ liệu k truyền đc từ adc ra nhưng k hiểu vì sao.(E lập trình bằng C18)
phần code hiển thị ra led 7 thanh:
Code:#include "p18f4620.h" #include "delays.h" #include "adc.h" #pragma config OSC=HS, WDT=OFF const unsigned char dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int a,b,n,doC,dvi,chuc,tram; void convert(int a) { tram=a/100; a=a%100; chuc=a/10; dvi=a%10; } void hienthi() // quet led { for(n=0;n<10;n++) { PORTB=dig[dvi]; PORTD=0x01; //bat led 1 Delay100TCYx(20); // tre 100us PORTB=dig[chuc]; PORTD=0x02; // bat led 2 Delay100TCYx(20); PORTB=dig[tram]; PORTD=0x04; // bat led 3 Delay100TCYx(20); } } void main(void) { TRISB=0; // chon cong B la cong ra TRISD=0; // chon cong D la cong ra TRISAbits.TRISA0=1; // chon cong A la cong vao ADCON0=0x03; //bit0 cho phep chuyen doi,bit1 trang thai,bit2-5 chon kenh ADCON1=0x0E; //bit0-3 chon che do analog hay digital,bit4-5 chon Vref+ va Vref- ADCON2bits.ACQT2=1; // ADCON2bits.ACQT1=0; // ADCON2bits.ACQT0=0; //3 bits lua chon thoi gian thu thap du lieu TAD ADCON2bits.ADCS2=1; // ADCON2bits.ADCS1=0; // ADCON2bits.ADCS0=1; //3 bits lua chon tan so chuyen doi Delay10TCY(); b = ReadADC(); doC = (b-558.558)/2.048; //tùy ADC 8bit hay 10 bit tính toán giá tri a = doC; convert((int)a); Delay10TCY(); while(1) { b = ReadADC(); doC = (b-558.558)/2.048; convert((int)a); hienthi(); } }
Code:#include "p18f4620.h" #include "delays.h" #include "adc.h" #pragma config OSC=HS, WDT=OFF char b,doC; long s; unsigned char i,li,lj,s1[10]; #define rs LATDbits.LATD0 #define rw LATDbits.LATD1 #define en LATDbits.LATD2 void delay (unsigned char time ) // ham co tac dung delay thoi gian lon { for ( li=0 ; li<80; li++ ) for ( lj=0 ; lj<time; lj++) {} } void lenh_LCD (unsigned char s) // ham dua 1 lenh ra ngoai LCD { LATC=s; rs=0; // rs=0 thong bao rang gia tri truyen len ghi vao thanh ghi lenh rw=0; en=1; delay(1); en=0; delay(1); } void data_LCD (unsigned char s) // ham dua 1 lenh ra ngoai LCD { LATC=s; TRISD=0xF8 ; // cho 3 bit thap nhat duoc lam cong ra rs=1; // rs=0 thong bao rang gia tri truyen len ghi vao thanh ghi lenh rw=0; en=1; delay(1); en=0; } void main(void) { INTCON=0x00; TRISAbits.TRISA0=1; //cong A0 lam dau vao tu cam bien TRISC=0x00; //cong C lam cong ra du lieu TRISD=0xF8; //3 bit thap nhat lam cong ra dieu khien lenh_LCD(0x38); // dua ra LCD gia tri hang cot la 5*7 lenh_LCD(0x0E); // hien con tro // lenh_LCD(0x01); // xoa man hinh LCD ADCON0=0x03; //bit0 cho phep chuyen doi,bit1 trang thai,bit2-5 chon kenh ADCON1=0x0E; //bit0-3 chon che do analog hay digital,bit4-5 chon Vref+ va Vref- ADCON2bits.ACQT2=1; // ADCON2bits.ACQT1=0; // ADCON2bits.ACQT0=0; //3 bits lua chon thoi gian thu thap du lieu TAD ADCON2bits.ADCS2=1; // ADCON2bits.ADCS1=0; // ADCON2bits.ADCS0=1; //3 bits lua chon tan so chuyen doi Delay10TCY(); b = ReadADC(); doC == (b-558.558)/2.048; //tùy ADC 8bit hay 10 bit tính toán giá tri s1[i]==doC; while(1) { lenh_LCD(0x01); delay(500); data_LCD(s1[i]); data_LCD('d'); data_LCD('o'); data_LCD('C'); delay(500); } }
Attached Files
Comment
-
Nó không chạy được bởi vì tống cả một đống mã nguồn vào, thay vì thử từng mô-đun nhỏ một, lại cộng thêm việc chạy mô phỏng chứ không phải mạch thật. Kiểu làm như vậy thì không bao giờ (trừ trường hợp cực kỳ may mắn) thành công được.
Comment
-
Nguyên văn bởi eethn Xem bài viếte đang học con 18f4620,có làm mạch đo nhiệt độ dùng adc trong của pic hiển thị ra led 7 thanh hoặc lcd.Mọi người xem hộ xem lỗi ở đâu mà nó k hiển thị đc.E nghĩ là dữ liệu k truyền đc từ adc ra nhưng k hiểu vì sao.(E lập trình bằng C18)
phần code hiển thị ra led 7 thanh:
Code:#include "p18f4620.h" #include "delays.h" #include "adc.h" #pragma config OSC=HS, WDT=OFF const unsigned char dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int a,b,n,doC,dvi,chuc,tram; void convert(int a) { tram=a/100; a=a%100; chuc=a/10; dvi=a%10; } void hienthi() // quet led { for(n=0;n<10;n++) { PORTB=dig[dvi]; PORTD=0x01; //bat led 1 Delay100TCYx(20); // tre 100us PORTB=dig[chuc]; PORTD=0x02; // bat led 2 Delay100TCYx(20); PORTB=dig[tram]; PORTD=0x04; // bat led 3 Delay100TCYx(20); } } void main(void) { TRISB=0; // chon cong B la cong ra TRISD=0; // chon cong D la cong ra TRISAbits.TRISA0=1; // chon cong A la cong vao ADCON0=0x03; //bit0 cho phep chuyen doi,bit1 trang thai,bit2-5 chon kenh ADCON1=0x0E; //bit0-3 chon che do analog hay digital,bit4-5 chon Vref+ va Vref- ADCON2bits.ACQT2=1; // ADCON2bits.ACQT1=0; // ADCON2bits.ACQT0=0; //3 bits lua chon thoi gian thu thap du lieu TAD ADCON2bits.ADCS2=1; // ADCON2bits.ADCS1=0; // ADCON2bits.ADCS0=1; //3 bits lua chon tan so chuyen doi Delay10TCY(); b = ReadADC(); doC = (b-558.558)/2.048; //tùy ADC 8bit hay 10 bit tính toán giá tri a = doC; convert((int)a); Delay10TCY(); while(1) { b = ReadADC(); doC = (b-558.558)/2.048; convert((int)a); hienthi(); } }
Code:#include "p18f4620.h" #include "delays.h" #include "adc.h" #pragma config OSC=HS, WDT=OFF char b,doC; long s; unsigned char i,li,lj,s1[10]; #define rs LATDbits.LATD0 #define rw LATDbits.LATD1 #define en LATDbits.LATD2 void delay (unsigned char time ) // ham co tac dung delay thoi gian lon { for ( li=0 ; li<80; li++ ) for ( lj=0 ; lj<time; lj++) {} } void lenh_LCD (unsigned char s) // ham dua 1 lenh ra ngoai LCD { LATC=s; rs=0; // rs=0 thong bao rang gia tri truyen len ghi vao thanh ghi lenh rw=0; en=1; delay(1); en=0; delay(1); } void data_LCD (unsigned char s) // ham dua 1 lenh ra ngoai LCD { LATC=s; TRISD=0xF8 ; // cho 3 bit thap nhat duoc lam cong ra rs=1; // rs=0 thong bao rang gia tri truyen len ghi vao thanh ghi lenh rw=0; en=1; delay(1); en=0; } void main(void) { INTCON=0x00; TRISAbits.TRISA0=1; //cong A0 lam dau vao tu cam bien TRISC=0x00; //cong C lam cong ra du lieu TRISD=0xF8; //3 bit thap nhat lam cong ra dieu khien lenh_LCD(0x38); // dua ra LCD gia tri hang cot la 5*7 lenh_LCD(0x0E); // hien con tro // lenh_LCD(0x01); // xoa man hinh LCD ADCON0=0x03; //bit0 cho phep chuyen doi,bit1 trang thai,bit2-5 chon kenh ADCON1=0x0E; //bit0-3 chon che do analog hay digital,bit4-5 chon Vref+ va Vref- ADCON2bits.ACQT2=1; // ADCON2bits.ACQT1=0; // ADCON2bits.ACQT0=0; //3 bits lua chon thoi gian thu thap du lieu TAD ADCON2bits.ADCS2=1; // ADCON2bits.ADCS1=0; // ADCON2bits.ADCS0=1; //3 bits lua chon tan so chuyen doi Delay10TCY(); b = ReadADC(); doC == (b-558.558)/2.048; //tùy ADC 8bit hay 10 bit tính toán giá tri s1[i]==doC; while(1) { lenh_LCD(0x01); delay(500); data_LCD(s1[i]); data_LCD('d'); data_LCD('o'); data_LCD('C'); delay(500); } }
- Hiển thị ra led7D hoặc LCD 1 con số nào đó bất kỳ , vd 1234 . Nếu ok thì có nghĩa hàm display_LCD() hoặc hàm hienthi() k sai . Còn nếu k hiển thị đc thì
1) Nếu LCD , chỉnh biến trở chỗ chân Vo để hiện thấy 1 dòng đen (Có khi chỉnh xong thấy đc số 1234 hiển thị mừng hết lớn ấy nhẩy) .
2) Ktra đc mạch các chân RS , RW , E , các đường mạch chân d0-d7 có dính chỗ nào k ?
3) Viết chương trình nhấp nháy 0-1 các chân RS , E ,RW , các chân d0-d7 xem VDK đã xuất dữ liệu đc k , đúng k ? Nếu k đúng thì xem lại khai báo set_tris_port hoặc khả năng lập trình HT_PIC có vấn đề
4) Nếu Led7d , kiểm tra việc dùng hàm quét led vậy đúng k ? tốt nhất dùng delay để kiểm tra , trước khi dùng timer để quét để đảm bảo việc bật tắt các chân và xuất dữ liệu là đồng bộ .
Sau khi khắc phục lỗi hàm hiển thị , thì chuyển sang kiểm tra hàm read_adc() , hoặc các khai báo khởi tạo ADC trứoc khi read_adc()
Làm như rứa còn chưa ăn tiền đc ai , quất đống code rầm rầm vô đó , biết sai chỗ nào mà lần . đúng là điếc k sợ súng
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi bqvietChắc chắn không ai phủ nhận công sức của bác VVP, mà chỉ cần thời gian để hiểu, hiểu rồi thì sẽ thấm. Chuyện đó không nhanh trong vòng vài giờ đồng hồ được. Hóa học vốn không đơn giản, nhất là khi các phản ứng đề cập trên...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:45 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamNhiều người vào xem rồi lẳng lặng bỏ đi. Bài viết của tôi, mà không, phải nói là công sức của tôi đã bị phủ nhận. Mình sai ở đâu? Buồn.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:19 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamĐể hàn nhôm các bạn cần chuẩn bị:
1- Sufat đồng CuSo4 pha thêm vài giot acit sulfuric, chứa vào chai nước muối sinh lý rửa mũi, mắt.
2- Cồn 90 độ, cũng chứa vào chai nước muối sinh lý.
B1- Trước tiên các bạn nhỏ lên vị...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:04 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamTrước tiên giúp các bạn hiểu rõ vấn đề, tôi giải thích hiện tượng vật lý trên video:
Lớp Cu sau khi mạ quá tệ do Cu bám trên Fe, thầy giáo đã đốt Cu thành CuO (oxid đồng) đồng thời Fe ( cây đinh) thành Fe2o3. Như vậy lớp CuO...-
Channel: Tâm tình dân kỹ thuật
05-03-2025, 23:42 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi mèomướpDạ cháu cũng xin phép dơ tay like ạ. Vậy là được 3 người rồi ạ, chờ thêm 1 người nữa để thành trên 3 ạ...
-
Channel: Tâm tình dân kỹ thuật
05-03-2025, 20:25 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi bqvietBqv dơ tay đồng thuận, dù rằng đã mua loại flux trợ hàn thiếc chuyên dụng rồi. Có thêm một cách khác để hàn nhôm để dắt lưng dự phòng cũng hay.
-
Channel: Tâm tình dân kỹ thuật
05-03-2025, 15:17 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi dinhthuong80Cháu đang chờ thêm 2like nữa để xem bác chia sẻ ạ!
Đã xem clip bác giới thiệu!
Cảm ơn bác chia sẻ kinh nghiệm cho thợ điện tử....-
Channel: Tâm tình dân kỹ thuật
05-03-2025, 10:45 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamCác bạn xem video này, cách mạ đồng lên sắt và inox chắc chắn, không bong tróc của 1 thầy giáo dạy Hóa ( Video chỉ nói mạ lên sắt, inox mà thôi), không giảng dạy lý thuyết phản ứng. https://www.youtube.com/watch?v=gVtN...h%E1%BB%8DcABC
-
Channel: Tâm tình dân kỹ thuật
05-03-2025, 07:56 -
-
bởi vi van phamHàn chì thiếc lên dây điện nhôm luôn là sự khó khăn của anh em thợ. Dung dịch trợ hàn nhôm quãng cáo mua về chỉ hàn được sắt và inox. Tôi tìm thấy trên mạng người ta dùng sulfat đồng CuSo4 mạ đồng lên nhôm rồi hàn. Cách này không dùng...
-
Channel: Tâm tình dân kỹ thuật
04-03-2025, 20:04 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nguyendinhvanNó là di chứng của cái bệnh thành tích, hình thức. Nếu không chữa trị đúng thày đúng thuốc thì sau này dễ biến chứng thành căn bệnh ảo.
Dẫu sao thì khoa học kỹ thuật công nghệ cũnc· cần kết hợp với cúng lễ ạ.
Cầu Thiên...-
Channel: Tâm tình dân kỹ thuật
03-03-2025, 22:15 -
Comment