E muốn đưa tín hiệu vào bộ ADC con mega16 thông wa biến trở, sau đó cho hiển thị điện áp ra LCD 16x2, nhờ mọi người giúp e viết chương trình. cảm ơn.
Thông báo
Collapse
No announcement yet.
Xuất tín hiệu từ adc --> lcd
Collapse
X
-
Bạn phải nói rõ bạn dùng cụ thể vào ứng dụng gì.Nếu đơn giản chỉ là làm để học thì bạn nên tự nghiên cứu rồi viết chương trình và post lên diễn đàn để mọi người có thể sửa giúp bạn.Qua đó bạn sẽ dễ hình dung chương trình mình viết và học được nhiều hơn.Đây là tài liệu bạn có thể tham khảo: cdtvn.net/attachments/418_giaotrinhAVR.pdfNguyên văn bởi yeunhan777 Xem bài viếtE muốn đưa tín hiệu vào bộ ADC con mega16 thông wa biến trở, sau đó cho hiển thị điện áp ra LCD 16x2, nhờ mọi người giúp e viết chương trình. cảm ơn.
:
Comment
-
ADC1.zip
Bạn nên đọc và tìm hiểu trước, mình cũng twj tìm hiểu và viết rất nhanh code đơn giản để đo điện áp từ bộ trở chia.
Xem code đầy đủ và mô phỏng bằng proteus.
Nếu có ích, hãy click thanks nhé
Điện tử KME,cung cap linh kien SMD, Sensor, dat hang linh kien dien tu...
Số 2, Ngõ 53, Dịch Vọng, Cầu Giấy, hà Nội
Comment
-
Theo mình đoán, bạn đang test trên mạch thật nên thấy hiện tượng này và bạn cũng chưa làm nhiều về cái này nhỉ.
Nếu trong mô phỏng, bạn sẽ thấy rất tuyến tính, đơn giản vì là lý tưởng không giốngi trong môi trường thực tế, 99% bạn dùng nhiệt điện trở (NTC)
.
Một số vần đề cần lưu ý:
- Thuật toán, công thức tính nhiệt độ từ điện áp đã chuẩn chưa
- Nguồn REF, điện áp chuẩn (điện áp dùng cấp cho bộ chia điện trở) có ổn định không, bạn nên sử dụng tụ lọc và diode zener để đảm bảo điện áp này thật phẳng. Nếu có thể, mua 1 con LDO công suất nhỏ (thường gọi là REF) để làm điện áp chuẩn này
- Khi chuyển đổi áp -> nhiệt độ, hãy lấy trung bình một số lượng mẫu phù hợp, như vậy nhiệt độ chuyển đổi sẽ ko bị dao động nhiều.
Hy vọng những kinh nghiệm này sẽ giúp ích cho bạn
THANKS
Khang Minh Electronic
Điện tử KME,cung cap linh kien SMD, Sensor, dat hang linh kien dien tu...
Số 2, Ngõ 53, Dịch Vọng, Cầu Giấy, hà Nội
Comment
-
hj, cho mình hỏi? đoạn code của mình khi xuất ra LCD no chi hiện 3f v, nhu cua pan vay, ranh thi giúp minh thu nha: thank
/************************************************** ***
This program was produced by the
CodeWizardAVR V1.24.6 Standard
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com
Project :
Version :
Date : 7/1/2011
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega16L
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
************************************************** ***/
#include <mega16.h>
#include <stdlib.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 7
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x00
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
register static unsigned char input_index=0;
// Read the AD conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
// Start the AD conversion
ADCSRA|=0x40;
}
// Declare your global variables here
void main(void)
{
unsigned int val;
float value;
char str[16];
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: None
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xCD;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
val = adc_data[0];
value = val;
value = value/1024*5;
lcd_clear();
lcd_gotoxy(0,0);
sprintf(str,"%2.3f",value);
lcd_puts(str);
lcd_putsf("V");
delay_ms(500);
};
}
Comment
-
Chào bạn,
Sorry, mấy hôm nay bận quá nên không có thời gian đọc bài của mọi người.Cái này đơn giản thôi bạn, do bạn cấu hình khi complie chưa đúng. Bạn vào setting khi compile, trong cái chọn thiết lập sprintf , printf bạn hãy chọn float thay vì integer....lựa chọn dưới cùng ý, khi đó stdio mới giúp bạn xuất chuối số thực ra.
bạn xem trong câu hình ví dụ của mình sẽ thấy rõ vấn đề.
Thân,
Khang Minh Electronics
http;//kme.com.vnĐiện tử KME,cung cap linh kien SMD, Sensor, dat hang linh kien dien tu...
Số 2, Ngõ 53, Dịch Vọng, Cầu Giấy, hà Nội
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi N_Tu_Hoc_HoiBạn cần sơ đồ mạch ổn áp bao nhiêu Volt, Nếu giống anh bạn guiwr có khả năng ổn áp dùng iC họ 78XX, 79XX. Những mạch này bạn tim kiếm trên google sẽ thấy!!
-
Channel: Hỗ trợ học tập
Hôm qua, 02:32 -
-
bởi chinhnguyen9
Điến âp vào 24V;Điên áp ra 30V;Dòng điện ra 10A
Trên nền tảng mạch Boost thay đổi như sau: cự âm tụ lọc C không nối mas mà nối vào Vc +24V
Mach phản hồi tao điê áp trên tụ lọc này ổn đinh ở 6V
Kết quả:
· Điện áp ra =24V+ 6V=30V
· Công...-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:33 -
-
bởi chinhnguyen92. Các yếu tố để dòng điện đầu ra không bị "thiếu"
Dòng điện đầu ra bị "thiếu" có thể hiểu là không đủ 10A theo yêu cầu hoặc bị sụt áp khi tải thay đổi. Để đảm bảo điều này, bạn cần xem xét các yếu tố sau:
a. Khả năng chịu dòng của cuộn cảm- Dòng bão hòa (I_sat): Như
-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:06 -
bởi chinhnguyen9
1. Tính toán cuộn cảm (Inductor)
Để tính giá trị cuộn cảm, chúng ta cần thực hiện các bước sau:
a. Xác định chu kỳ nhiệm vụ (Duty Cycle - D)
Với mạch tăng áp lý tưởng, chu kỳ nhiệm vụ được tính theo công thức :
D=1-VinVout=1-24V30V=0.2
Vậy D = 0.2 (20%)
b....-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:03 -
-
bởi chinhnguyen9Công thức
Gain (dB) = 20 × log₁₀(A)
Thí dụ 1; 60dB
log₁₀(A)=60/20=3
⇒ A=V_out / V_in = 10³ = 1.000
Thí dụ 2; 100dB
log₁₀(A)=100/20=5
⇒ A=V_out / V_in = 105 = 100.000
Tí dụ 3; LM 358
Large Signal Open Loop Voltage Gain AVOL V/mV RL = 2.0...-
Channel: Hướng dẫn sử dụng diễn đàn
19-03-2026, 08:44 -
-
Trả lời cho Mạch 3s bị giảm điện áp đầu rabởi minhtri0405chả biết bạn xử lý được chưa , kích sạc hoặc điện áp > điện áp khối pin vào 2 chân P - P+ , nhiều mạch phải yêu cầu có kích lần đầu sau đó mới chạy...
-
Channel: Điện tử dành cho người mới bắt đầu
18-03-2026, 10:01 -
-
bởi minhtri0405đây có phải là 1 cách để test mosfet xịn hay dỏm khi mua đồ tàu không nhỉ , vì ko thể đập ra để coi lõi rồi trả hàng được....
-
Channel: Tâm tình dân kỹ thuật
18-03-2026, 09:57 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi Tuyenvc345
-
Channel: Hỗ trợ học tập
16-03-2026, 18:05 -

Comment