Đề: Viết chương trình thực hiện việc sau: Sử dụng biến trở VR để đặt nhiệt độ đặt (set_temp,
mặc định là 30 độ
C) và hiển thị giá trị trên 4 led theo dạng “St.XX”, sử dụng điện áp chuẩn là
VDD. Nếu:
Nhiệt độ đo từ LM35 < nhiệt độ đặt: led đơn D5 sáng, led đơn D6 tắt
Nhiệt độ đo từ LM35 > nhiệt độ đặt: led đơn D5 tắt, led đơn D6 sáng
đây là code của em ạ, cho em hỏi em nên sửa chỗ nào để nhiệt độ lúc chạy proteus nó mặc định là 30 độ C ạ
#include <16f877a.h>
#fuses NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP
#device * = 16 ADC = 10
#use delay(clock=8M)
CONST int8 a[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x0 9};
int8 chuc,donvi;
int16 adc,temp,temp1;
#define D5 PIN_C4
#define D6 PIN_C5
#INT_TIMER0
void qled()
{
Output_d(0xff);
output_b(0x49);output_low(PIN_D3);
delay_ms(3);
Output_d(0xff);
output_b(0xe0);output_low(PIN_D2);
delay_ms(3);
Output_d(0xff);
output_b(a[chuc]);output_low(PIN_D1);
delay_ms(3);
Output_d(0xff);
output_b(a[donvi]);output_low(PIN_D0);
delay_ms(3);}
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
setup_timer_0(RTCC_DIV_4|RTCC_INTERNAL);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_AN1_VSS_VREF);
set_adc_channel(0);
delay_us(10);
while (TRUE)
{
ADC=read_adc()/2.046;
temp1=(float)(ADC);
temp=(int16)(temp1);
chuc=temp/10;
donvi=temp%10;
if (ADC<30){output_high(D5);output_low(D6);}
else {output_low(D5);output_high(D6);};
}}
mặc định là 30 độ
C) và hiển thị giá trị trên 4 led theo dạng “St.XX”, sử dụng điện áp chuẩn là
VDD. Nếu:
Nhiệt độ đo từ LM35 < nhiệt độ đặt: led đơn D5 sáng, led đơn D6 tắt
Nhiệt độ đo từ LM35 > nhiệt độ đặt: led đơn D5 tắt, led đơn D6 sáng
đây là code của em ạ, cho em hỏi em nên sửa chỗ nào để nhiệt độ lúc chạy proteus nó mặc định là 30 độ C ạ
#include <16f877a.h>
#fuses NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP
#device * = 16 ADC = 10
#use delay(clock=8M)
CONST int8 a[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x0 9};
int8 chuc,donvi;
int16 adc,temp,temp1;
#define D5 PIN_C4
#define D6 PIN_C5
#INT_TIMER0
void qled()
{
Output_d(0xff);
output_b(0x49);output_low(PIN_D3);
delay_ms(3);
Output_d(0xff);
output_b(0xe0);output_low(PIN_D2);
delay_ms(3);
Output_d(0xff);
output_b(a[chuc]);output_low(PIN_D1);
delay_ms(3);
Output_d(0xff);
output_b(a[donvi]);output_low(PIN_D0);
delay_ms(3);}
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
setup_timer_0(RTCC_DIV_4|RTCC_INTERNAL);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_AN1_VSS_VREF);
set_adc_channel(0);
delay_us(10);
while (TRUE)
{
ADC=read_adc()/2.046;
temp1=(float)(ADC);
temp=(int16)(temp1);
chuc=temp/10;
donvi=temp%10;
if (ADC<30){output_high(D5);output_low(D6);}
else {output_low(D5);output_high(D6);};
}}
Comment