Chào các bạn trong BÀI 17 mình đã hướng dẫn các bạn lý thuyết về ADC trong PIC16F877A và đã làm 1 ví dụ nhỏ về ADC. Trong bài này chúng ta sẽ ứng dụng ADC để làm 1 số ứng dụng nhỏ cụ thể trong bài này chúng ta sẽ đo giá trị điện áp từ 0 đến 5V và hiển thị kết quả lên LCD 16x02.
Công thức tính giá trị điện áp như sau :
- Đây là ảnh mô phỏng protues.
- Đây là code chương trình.
Công thức tính giá trị điện áp như sau :
x = 5 * read_ADC() / 1023;
Với công thức trên thì giá trị điện áp Max sẽ là 5V tương ứng với giá trị ADC là 1023 và 0V sẽ tương ứng với giá trị ADC là 0.- Đây là ảnh mô phỏng protues.
- Đây là code chương trình.
#include <16f877a.h>
#device 16f877a*16ADC=10
#use delay(clock=4000000)
#include <lcd_lib_4bit.c>
int x;
void ADC_init();
void main()
{
LCD_Init();
set_tris_a(0x01);
set_tris_b(0x00);
output_b(0x00);
while(true)
{
ADC_init();
x = 5*read_ADC()/1023;
LCD_PutCmd(0x80);
LCD_PutChar(" Demo ADC");
LCD_PutCmd(0xC0);
printf(LCD_PutChar,"%u",x);
LCD_PutChar("V");
}
}
void ADC_init()
{
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0);
set_ADC_channel(0);
delay_us(100);
}
- Link download project Click here#device 16f877a*16ADC=10
#use delay(clock=4000000)
#include <lcd_lib_4bit.c>
int x;
void ADC_init();
void main()
{
LCD_Init();
set_tris_a(0x01);
set_tris_b(0x00);
output_b(0x00);
while(true)
{
ADC_init();
x = 5*read_ADC()/1023;
LCD_PutCmd(0x80);
LCD_PutChar(" Demo ADC");
LCD_PutCmd(0xC0);
printf(LCD_PutChar,"%u",x);
LCD_PutChar("V");
}
}
void ADC_init()
{
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0);
set_ADC_channel(0);
delay_us(100);
}
No comments:
Post a Comment