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 Tiếng Anh cho người Việtbởi bqvietĐúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi mèomướpDạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 12:32 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamNhững lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).
Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 21:31 -
-
Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )bởi bqvietThiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.20-02-2025, 17:22
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.
Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 11:52 -
-
Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )bởi vi van phamUống rượu 1 mình, thấy trang này nhớ lại cách đây vài chục năm hàn thiếc với inox cực kỳ khó, phải dùng acid Hcl tác dụng lên kẻm Zn để có Zncl2 làm thuốc trợ hàn, lúc đó làm gì có acid Hcl và thuốc trợ hàn?
Cái khó bó cái...19-02-2025, 23:05 -
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Nếu chú tâm thì học tiếng Việt cũng đủ rồi, thừa sức làm việc rồi.
Học tiếng Anh cũng chỉ phụ trợ để đọc thêm tài liệu, hướng dẫn.
Nhưng có hiểu điều đó không mới là vấn đề. Khi mà học ngoại ngữ để đi đạp xích lô đón khách???...-
Channel: Tâm tình dân kỹ thuật
19-02-2025, 21:27 -
-
bởi xenopus123Cần hỗ trợ mạch đồng hồ vạn niên 89c52 ds1302 ds18b20 dùng 16 led 7 đoạn
-
Channel: Hỗ trợ học tập
19-02-2025, 21:24 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Nhìn kỹ hàng đi cu. Chứ ra đường cứ thấy đàn bà rồi bảo:
- Tôi cũng có vợ như thế....
Đảm bảo cu nát người luôn....-
Channel: Điện tử dành cho người mới bắt đầu
19-02-2025, 21:04 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi matnetgia99Ồ, cái này mình cũng có nè, có ai mua không, đồ cũ dùng từ năm 2008, hư 1 2 giai gì đấy bỏ xó hơn năm nay...
-
Channel: Điện tử dành cho người mới bắt đầu
17-02-2025, 14:40 -
Comment