PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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
Prev Previous Post   Next Post Next
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
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 05:21 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam