Nguyên văn bởi haoth2
Xem bài viết
Thông báo
Collapse
No announcement yet.
Cách ghép nối ATmega16 với LM35
Collapse
X
-
Nguyên văn bởi gtvt45 Xem bài viếtÚi trời, đừng mô phỏng.
Làm thật đi!
Mình làm thật cái dc ngay mà, không có vấn đề gì!
CHúc thành công.....
Comment
-
Ai có thư viện chứa con ATmega16 không cho mình với, đang cần vẽ mạch con này mà tìm trong thư viện không có, mình dung orcad 9.2. email của mình hoangnam3.0@gmail.com. thank trước nha!|
Comment
-
Nguyên văn bởi haoth2 Xem bài viếtMình đã thử rồi, nhưng mà sao khi mô phỏng trong Proteus thì lại không được nhỉ, Chỉ mới ghép nối vào mạch chưa viết code gì cả, thì báo lỗi là No model specifired for U2, là thế nào nhỉ
Thử Debug lại coi!
Comment
-
cảm ơn bạn rất nhiều!
Nguyên văn bởi linhDT1 Xem bài viếtphan lap trinh
Bạn có thể share các file thư viện kèm theo được ko ?
Thanks!!:-)
Comment
-
Nguyên văn bởi haoth2 Xem bài viếtTrong CodevisionAVR có phần tạo mã tự động, khi mình cho phép ADC thì trong code của nó có hàm read_adc(unsigned char adc_input). Cho mình hỏi cách sử dụng hàm này thế nào được không? Chân Vout của LM35 mình ghép vào chân P0.0
Nếu được share cho mình code luôn bạn ơi
#include <mega16.h>
#include<delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
register static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// 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 lcd_putnum(unsigned char so,unsigned char x,unsigned char y)
{
unsigned char a,b,c;
a=so/100;
// lay fan tram
b=(so-100*a)/10;
// lay fan chuc
c=(so-100*a-10*b);
// lay hang don vi
lcd_gotoxy(x,y);
// ve vi tri x,y
lcd_putchar(a+48);
// day ra hang tram, ma ascii
lcd_putchar(b+48);
// day ra hang chuc, ma ascii
lcd_putchar(c+48);
// day ra hang don vi, ma ascii
}
void main(void)
{
// 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;
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xCE;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
lcd_putnum(2*adc_data[0],0,0);
delay_ms(300);
// tre 3 s, cap nhat du lieu mot lan
};
}
Comment
-
nhờ bạn giúp đỡ về :lm35 + avr ???????????????
Nguyên văn bởi huetkiem Xem bài viếtchào cả mọi người mình cũng mới học AVR và đã thử lập trình với lm35 thấy chạy mô phỏng tốt lên post bài lên cho mọi ngưởi tham khảo
#include <mega16.h>
#include<delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
register static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// 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 lcd_putnum(unsigned char so,unsigned char x,unsigned char y)
{
unsigned char a,b,c;
a=so/100;
// lay fan tram
b=(so-100*a)/10;
// lay fan chuc
c=(so-100*a-10*b);
// lay hang don vi
lcd_gotoxy(x,y);
// ve vi tri x,y
lcd_putchar(a+48);
// day ra hang tram, ma ascii
lcd_putchar(b+48);
// day ra hang chuc, ma ascii
lcd_putchar(c+48);
// day ra hang don vi, ma ascii
}
void main(void)
{
// 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;
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xCE;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
lcd_putnum(2*adc_data[0],0,0);
delay_ms(300);
// tre 3 s, cap nhat du lieu mot lan
};
}
thien.dhbk@yahoo.com.vn|
Comment
-
Nguyên văn bởi huetkiem Xem bài viếtchào cả mọi người mình cũng mới học AVR và đã thử lập trình với lm35 thấy chạy mô phỏng tốt lên post bài lên cho mọi ngưởi tham khảo
#include <mega16.h>
#include<delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
register static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// 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 lcd_putnum(unsigned char so,unsigned char x,unsigned char y)
{
unsigned char a,b,c;
a=so/100;
// lay fan tram
b=(so-100*a)/10;
// lay fan chuc
c=(so-100*a-10*b);
// lay hang don vi
lcd_gotoxy(x,y);
// ve vi tri x,y
lcd_putchar(a+48);
// day ra hang tram, ma ascii
lcd_putchar(b+48);
// day ra hang chuc, ma ascii
lcd_putchar(c+48);
// day ra hang don vi, ma ascii
}
void main(void)
{
// 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;
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xCE;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
lcd_putnum(2*adc_data[0],0,0);
delay_ms(300);
// tre 3 s, cap nhat du lieu mot lan
};
}
- Hàm printf là hàm khá phổ biến khi học C, cái này tham khảo Help
- Chuyển đổi số thành chuỗi thì có hàm itoa, ftoa... cũng xem Help
Những hàm này có sẵn, bạn chỉ phải tham khảo và dùng, khi đó code sẽ ngắn hơn.
Comment
Bài viết mới nhất
Collapse
-
bởi sieuviet2020Cài win online là quá trình cài đặt hệ điều hành Windows thông qua internet, thay vì sử dụng đĩa cài đặt truyền thống. Khi cài win online, người dùng không cần phải tải về một file ISO và ghi vào đĩa hoặc USB, thay vào đó họ có thể cài đặt...
-
Channel: Tìm mua
hôm nay, 00:35 -
-
bởi FschoolvnTrong bối cảnh toàn cầu hóa giáo dục, ngày càng nhiều học sinh được gia đình chắp cánh để truy cầu kiến thức từ các quốc gia phát triển, đặc biệt là Hoa Kỳ. Từ ước mơ thụ hưởng nền giáo dục chất lượng, không ít học sinh nhìn...01-05-2024, 00:54
-
Trả lời cho Hỏi xin sơ đồ tivi các loạibởi Trân thànhCần các Bạn giúp sơ đồ Lcd Samsung UA40JU6400 và UA43ku6500k. Xin cảm ơn!...
-
Channel: Điện tử truyền hình
28-04-2024, 16:07 -
-
Trả lời cho Hỏi xin sơ đồ tivi các loạibởi Trân thànhCần các Bạn giúp sơ đồ Lcd Samsung UA40JU6400 và UA43ku6500k. Xin cảm ơn!...
-
Channel: Điện tử truyền hình
28-04-2024, 16:01 -
-
bởi chinhnguyen9Hoạt động của thế hệ mạch cân bằng trước đây dựa trên nguyên lý so áp giữa 2 string liền kề. Hoạt động cân bằng chỉ kích hoạt khi sự chênh lệch vượt ngưỡng 100mV và ngưng hoạt động khi mức chênh lệch giảm xuống còn 30mV. Bản...
-
Channel: Điện tử dành cho người mới bắt đầu
27-04-2024, 05:07 -
-
bởi chinhnguyen9Xem hình minh họa có phần thuyết minh bên trong tiện việc quan sát và đọc thuyết minh. Khi G1 high dòng điện chạy theo các đường màu đen khi G2 high dòng điện chạy theo các đường màu nâu đỏ.
Bổ sung một tính chất củng cố cho tên gọi tụ bay: Trong mạch đề cập chỉ...-
Channel: Điện tử dành cho người mới bắt đầu
26-04-2024, 21:02 -
-
bởi chinhnguyen9Sản phẩm này ghi version 2.0 01-2024 MADE IN CHINA nhưng không thấy thương hiệu hình 1
Do 8 chân G của 8 mosfet được đấu song song thành 2 nhóm nên có cùng biên độ xung kích 12V. Nhưng Q1 và Q2 nằm cuối dãy, chân S cùa chúng có điện áp DC cao đến...-
Channel: Điện tử dành cho người mới bắt đầu
26-04-2024, 20:37 -
-
bởi xuanthiettivi em bị mất remote lỡ vào chế độ usb giờ không chọn lại source được. ai có file nạp cho em xin với ạ. Model 32HD957T2
-
Channel: Điện tử truyền hình
26-04-2024, 10:53 -
-
Trả lời cho Giải thích nôm na từ "tụ bay"bởi chinhnguyen9Đa tạ lời cảm ơn của bạn. Mến!
-
Channel: Hướng dẫn sử dụng diễn đàn
26-04-2024, 05:06 -
-
Trả lời cho Xin tư vấn về mạch cầu H cho inverter 1000wbởi thebinhzChắc là không được đâu bạn ơi
Quán ăn Vĩnh Yên-
Channel: Điện tử công suất
25-04-2024, 21:56 -
Comment