E đang làm đồ án hiển thị Loadcell, viết dc cái chương trình sau, nhưng nó chỉ hiện dc số nguyên như 0, 1, 2... e mún hiện số thập phân như 1.25, 2.55 ... thì sửa như thế nào. C/tr viết bằng phần mềm WinAVR. Mọi ng` làm ơn chỉ dùm e, cảm ơn.
#include <avr/io.h>
#include <util/delay.h>
#include "myLCD.h"
#define AREF_MODE 0
#define AVCC_MODE (1<<REFS0)
#define INT_MODE (1<<REFS1)|(1<<REFS0)
#define ADC_VREF_TYPE AREF_MODE
uint16_t ADC_val;
unsigned int val;
uint16_t read_adc(unsigned char adc_channel){
ADMUX|=adc_channel;
_delay_ms(200);
ADCSRA|=(1<<ADSC);
loop_until_bit_is_set(ADCSRA,ADIF);
return ADCW;
}
int main(void)
{
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS0);
ADMUX=ADC_VREF_TYPE;
init_LCD();
while (1)
{
ADC_val=read_adc(0);
val= ADC_val*(4.88/249)/0.4;
clr_LCD();
uint8_t dis[5];
sprintf(dis,"%i",val);
move_LCD(1,1);
print_LCD(dis);
_delay_ms(300);
}
}
#include <avr/io.h>
#include <util/delay.h>
#include "myLCD.h"
#define AREF_MODE 0
#define AVCC_MODE (1<<REFS0)
#define INT_MODE (1<<REFS1)|(1<<REFS0)
#define ADC_VREF_TYPE AREF_MODE
uint16_t ADC_val;
unsigned int val;
uint16_t read_adc(unsigned char adc_channel){
ADMUX|=adc_channel;
_delay_ms(200);
ADCSRA|=(1<<ADSC);
loop_until_bit_is_set(ADCSRA,ADIF);
return ADCW;
}
int main(void)
{
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS0);
ADMUX=ADC_VREF_TYPE;
init_LCD();
while (1)
{
ADC_val=read_adc(0);
val= ADC_val*(4.88/249)/0.4;
clr_LCD();
uint8_t dis[5];
sprintf(dis,"%i",val);
move_LCD(1,1);
print_LCD(dis);
_delay_ms(300);
}
}
Comment