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.
Xuất tín hiệu từ adc --> lcd
Collapse
X
-
Tags: None
-
-
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
-
Em cần xuất tín hiệu từ AD ra LCD để dùng cho đồ án tuyến tính hóa tin hiệu, điều chỉnh b/trở cho xuất điện áp ra LCD. CD: vặn b/trở min (hiện 0v) - max (hiện 5v). mong mọi người giúp đỡ.
Comment
-
Bạn đã viết được thế nào rồi, đưa lên rồi mọi người cùng góp ý để hoàn thiện như thế dễ tiếp thu hơn. Bạn dùng C hay ASM? Nếu dùng C thì trong Codevision đã có sẵn thư viện cả rồi, nếu dùng C với WinAVR thì bạn lên trang hocavr.com cũng có hướng dẫn chi tiết và code mẫu.
Chúc vui!
Comment
-
Mình đã viết bài "xin được chỉ giáo", có code lun, nhưng chưa hoàn chỉnh, mọi ng ghé wa giúp dùm. cảm ơn
Comment
-
mình củng đang làm chuyển đổi ADC dùng Atmage16, mình làm ma chưa xong, cần tài liệu liên quan tới, mình mói down bạn qchien mình đọc rất dẽ hiểu, mong các bạn co tài liệu thi chuyển đổi ADC của AVR thi up lên cho minh tham khao nha" thank?"
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
-
thank ban minh cung tìm hiểu tới chỏ đó rồi, bài của bạn củng giúp cho mình nhieu, mình dang tìm hieu để biến đổi giá trị điện thành giá trị nhiệt độ, má nó cứ nhảy lung tung, khi thi 3 do, chỉnh tiếp nó ko lên 4 , 5 mà nhảy lên số khác minh ko bjt xu sao nua?
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.
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
-
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
-
mình vao setting kiếm ma ko thay cai ban chi dau ca, thay co 4 muc editor ,debugger, programmer, terminal thoi , minh co kem phai anh theo day, con cái bạn chi thì mình chưa kiếm ra ban ak. thank nhieu nha
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho TCL - Tập hợp các vấn đề về màn hình màu TCLbởi dtvankhoeBác nào có file rom này cho em xin em cảm ơn ạ TCL L43S6500 – TPD.RT2841.PB772
-
Channel: Điện tử truyền hình
Hôm qua, 21:08 -
-
bởi domar123Sự kết hợp giữa vi xử lý siêu cấp AMD Ryzen Threadripper 9960X / 9970X cùng card đồ họa Radeon RX 9060 XT / RX 9070 XT 16GB mang lại một cỗ máy "all-in-one" đúng nghĩa. Đây là cấu hình đáp ứng trọn vẹn cho những người dùng cần một hệ...
-
Channel: Đánh giá sản phẩm DTVN
27-08-2026, 11:43 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Nhân mùa Vu Lan báo hiếu, giới thiệu bài hát về mẹ:
TRỌN GÁNH THƯƠNG YÊU
Sáng tác: Hoàng Đình Thường
Hòa âm & hát: AI, ngày 04/05/2026
[Verse 1]
Ơn sâu nghĩa nặng ngập tràn
Cả đời mẹ đã nhọc nhằn gian...-
Channel: Tâm tình dân kỹ thuật
24-08-2026, 14:58 -
-
bởi domar123Trong môi trường vận hành kinh doanh và công việc văn phòng hằng ngày, tính ổn định, độ bền bỉ và chi phí đầu tư luôn là những ưu tiên hàng đầu. Bộ vi xử lý AMD Athlon 3000G cùng phiên bản Athlon 3000G MPK mang lại giải pháp máy tính phổ...
-
Channel: Đánh giá sản phẩm DTVN
21-08-2026, 10:53 -

Comment