View Single Post
Old 21-05-2013, 07:07 PM   #27
gió bắc
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!!!
gió bắc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn