Xem lý thuyết về LM35 bên PIC16F877A XC8 nha !
- Đây là hình mô phỏng protues
- Đây là code chương trình.
#include <16f877a.h>
#device 16f877a*16ADC=10
#include <def_877a.h>
#use delay(clock=4000000)
#include <lcd_lib_4bit.c>
#bit led1 =portc.1
#bit led2 =portc.2
#bit led3 =portc.3
#bit led4 =portc.4
int maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int x;
int chuc,donvi;
void docADC();
void hienthi(unsigned int x);
void main()
{
LCD_Init();
trisa=0x01;
trisc=0x00;
trisb=0x00;
portc=0x00;
while(true)
{
hienthi(x);
docADC();
x=read_ADC();
x = ((5000.0f/1023*x)/10);
}
}
void docADC()
{
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0);
set_ADC_channel(0);
delay_us(100);
}
void hienthi(unsigned int x)
{
chuc=x/10;
donvi=x%10;
portb=maled[chuc];
led2=0;
delay_ms(1);
led2=1;
portb=maled[donvi];
led1=0;
delay_ms(1);
led1=1;
portb=0x9C;
led3=0;
delay_ms(1);
led3=1;
portb=0xC6;
led4=0;
delay_ms(1);
led4=1;
}
- Link download project Click here
Anh ơi em muốn lập trình đo nhiệt độ dùng cảm biến PT100. Anh chỉ em với đưọc không
ReplyDeleteđược chứ nhưng bạn tự tính công thức rồi hiển thị lên LCD hay LED gì đó !
ReplyDeletetại sao lại phải sử dụng thư viện LCD cho bài này vậy bác. em mới học nên chưa hiểu lắm
ReplyDeleteCOde đó là do AD sử dụng cho nhiều bài nên để vậy khỏi xóa mất công tới bài khác lại add zô ? nó không ảnh hưởng gì hết nha ! :-bd
DeleteLCD ?????????????? TẠI SAO CÓ VẬY AD
ReplyDeletecái nhiệt độ sử dung điện áp hay lấy nhiệt độ môi trường vậy ạ
ReplyDeleteNó có phương trình chuyển đổi nhé bạn, bạn tìm hiểu thêm trên google nhé !
ReplyDelete