![]() |
|
Tài trợ cho PIC Vietnam |
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 |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#27 |
Nhập môn đệ tử
Tham gia ngày: May 2013
Bài gửi: 1
: |
chào mọi người. mình dùng pic16f877a đo nhiệt độ từ 3 lm35 kết nối máy tính.trước tiến là phần vb.mình thiết kế giao diện và thực hiện đọc nhiệt độ như thế này.
Private Sub MSComm1_OnComm() t = MSComm1.Input If t <> "-" Then text = text + t Else Text1.text = Mid(text, 1, 2) Text2.text = Mid(text, 3, 2) Text3.text = Mid(text, 5, 2) text = "" End If End Sub các phần khai báo cổng com thì đã đúng hết.nhiệt độ 3 điểm được gán lên 3 ô text. code bên pic mikroC mình viết như sau unsigned int cb1, cb2, cb3; //khai bao 3 bien cam bien unsigned int cb4; //bien tong cua 3 cam bien unsigned char chuoi[6], ketqua[6]; //khai bao chuoi unsigned char j, i; // chuong trinh con void Text_To_Usart(unsigned char *n) //Khai bao ham goi mot chuoi thong qua USART. { i = 0; //Gan gia tri ban dau cho i =0 while(n[i] != 0) //Neu phan tu thu I cua chuoi ky tu khac 0 thi goi phan tu thu I cua chuoi qua UASRT. { Usart_Write(n[i]); // Goi phan tu thu I cua chuoi qua UASRT. i++; Delay_ms(10); //Cho 10 mili giay }} void main() //Khai bao chuong trinh chinh { ADCON1 = 0xE0; // Thiet lap cac ngo vao analog va dien ap tham chieu Vref = Vdd = 5V. ADCON0 = 0xC1;//Chon va cho phep xung clock PORTA = 0; //Gan gia tri ban dau cho cac chan cua PORT A = 0 TRISA = 0xFF; // Khai bao PORT A la ngo vao. Usart_Init(9600); // khoi tao usart while (1) //Vong lap vo tan de lap lai chuong trinh lien tuc. { cb1 = Adc_read(0); // Doc ket qua chuyen doi AD tu kenh 0. cb2 = Adc_read(1); // Doc ket qua chuyen doi AD tu kenh 1. cb3 = Adc_read(2); //doc ket qua chuyen doi ad tu kenh 2 Delay_ms(10); //Cho 100= mili giay cb1 = cb1/2; //Tinh gia tri nhiet do = gia tri doc chia cho he so chuyen doi (vi du: 2). cb2 = cb2/2; //Tinh gia tri nhiet do = gia tri doc chia cho he so chuyen doi (vi du: 2). cb3 = cb3/2; //Tinh gia tri nhiet do = gia tri doc chia cho he so chuyen doi (vi du: 2). cb4=((cb1*10000) + (cb2*100) + (cb3)); //tinh gia tri cb4 longtostr(cb4,chuoi); // chuyen tu so sang chuoi //Xu ly chuoi de loai bo cac khoang trang va luu ket qua xu ly vao bien ket qua. j=0; //Gan gia tri ban dau bang 0 cho bien j (phan tu cua bien ket qua). for(i=0;i<=6;i++) //Vong lap voi bien i chay 6 lan de quet cac phan tu cua bien chuoi {if (chuoi[i] != ' ') // Neu phan tu thu i cua chuoi khong phai la khoang trang thi { ketqua[j]=chuoi[i]; //Gan phan tu thu i cua chuoi cho phan tu thu j cua ket qua. j++; //Tang gia tri cua bien j len 1 }} Usart_write('-'); // them ky tu - vao day ket qua Text_to_usart(ketqua);// gui bien ket qua Delay_ms(100); //Cho 100 mili giay sau do truyen lai } } vậy mà khi hiển thị nó lại không đúng nhiệt độ. mình mới thử trên protess. các bác nào cao thủ giúp mình với.còn 5 ngày nữa mình phải nạp đồ án ùi!!! |
![]() |
![]() |
|
|