Thảo luận AVR và ứng dụng.

mta_cdt

Super Moderator
Thành viên BQT
#1
Lâu rùi box avr trầm quá mình mở theart này để anh em chia sẻ những project ứng dụng vi điều khiển AVR.
Trong box avr đã có 1 số project mình tập hợp lại để anh em tiện theo dõi.

- led cube 8x8x8 : Chia sẻ - Code Led Cube 8x8x8 | Cộng đồng cơ điện tử Việt Nam | Mechatronics

- giao tiếp avr với remote hồng ngoại: Chia sẻ - Cách giao tiếp với Vi Điều Khiển và Cách Lấy Mã Code Remote | Cộng đồng cơ điện tử Việt Nam | Mechatronics

- giao tiếp avr với ds18b20 chuẩn 1 wire: Chia sẻ - dùng avr giao tiếp với nhiều ds18b20 chuẩn 1 wire | Cộng đồng cơ điện tử Việt Nam | Mechatronics

- mở rộng đầu vào dùng 74165: Hướng dẫn - Mở rộng đầu vào dùng 74165 | Cộng đồng cơ điện tử Việt Nam | Mechatronics

- điều khiển LCD 16x2: Hướng dẫn - Điều khiển LCD 16x02 dùng AVR cho người mới bắt đầu | Cộng đồng cơ điện tử Việt Nam | Mechatronics

-ADC+LCD+SPI(I2C) atmega16: ADC+LCD+SPI+TWI(I2C) Atmega16 | Cộng đồng cơ điện tử Việt Nam | Mechatronics

- atmega16+ds1307+LCD+7seg: Atmega16 + ds1307 + lcd + 7seg | Cộng đồng cơ điện tử Việt Nam | Mechatronics

- đo nhiệt độ ds18b20 hiển thị led 7seg
Các project tiếp theo sẽ được update.
- 1 bài giá trị nữa mở rộng đầu vào với 74hc165 Hướng dẫn - Mở rộng đầu vào dùng 74165 | Cộng đồng cơ điện tử Việt Nam | Mechatronics
- ứng dụng pwm điều khiển RC servo
- led cu be 8x8x8: Chia sẻ - Code Led Cube 8x8x8 | Cộng đồng cơ điện tử Việt Nam | Mechatronics
- RTC với ds1307 : Thảo luận - AVR và ứng dụng. | Page 2 | Cộng đồng cơ điện tử Việt Nam | Mechatronics
 

mta_cdt

Super Moderator
Thành viên BQT
#2
hôm nay mới có thời gian làm cái project cái.
mạch do nhiệt độ hiển thị led 7seg sử dụng timer để quét led. Toàn bộ project tải ở file đính kèm.
2013-08-10_201001.png
còn đây là code
Mã:
#include <mega8515.h>
#include <delay.h>
#define set PIND.4
#define up PIND.5
#define down PIND.6
#define ok PIND.7
 
unsigned char data_seg[10]    = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
 
 
// 1 Wire Bus functions
#asm
  .equ __w1_port=0x12 ;PORTD
  .equ __w1_bit=2
#endasm
#include <1wire.h>
 
// DS1820 Temperature Sensor functions
#include <ds18b20.h>
int i,so,t=0;
int n,tram,c,dv;
 
// Declare your global variables here
 
 
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{TCNT0=0xE0;
i++;
 
if(i==1)
{PORTB.0=1;PORTB.1=0;PORTB.2=0;PORTB.3=0;
PORTA=data_seg[n];}    // hien thi hang nghin
if(i==2)
{PORTB.0=0;PORTB.1=1;PORTB.2=0;PORTB.3=0;
PORTA=data_seg[tram];}    // hien thi hang tram
if(i==3)
{PORTB.0=0;PORTB.1=0;PORTB.2=1;PORTB.3=0;
PORTA=data_seg[c];}        // hien thi hang chuc
if(i==4)
{PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=1;
PORTA=data_seg[dv];}
if(i==5)      // hien thi hang don vi
{PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;
}
if(i==6){i=0;}
// Place your code here
 
}
 
void main(void)
{
float Temp;
unsigned char *T=0;
// 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=0xFF;
 
// 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=0xF0;
DDRB=0xFF;
 
// 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=0xFF;
DDRC=0xFF;
 
// 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=0xFF;
DDRD=0x00;
 
// Port E initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTE=0x00;
DDRE=0x00;
 
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
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;
 
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
EMCUCR=0x00;
 
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
 
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
#asm("sei")
// 1 Wire Bus initialization
w1_init();
ds18b20_init(T,0,0,DS18B20_9BIT_RES);  // Khoi tao DS18b20, do phan giai 12bit
while (1)
      {
      Temp=(unsigned char)(ds18b20_temperature(T));    // Gan gia tri nhiet do do duoc vao bien Temp 
      so=Temp; 
  //    if(up==0){while(!up);t++;}
  //  if(down==0){while(!down);t--;}
      if(so<(t-1)){PORTB.4=0;}   
      if(so>(t+1)){PORTB.4=1;}
//n=t/10;
//tram=t%10;
c=so/10;
dv=so%10;
 
//      for(i=0;i<30;i++)
//      {
//      quetled(Temp);
//      }// Place your code here
 
 
      }
}
 

Đính kèm

chipamd

Học sinh phổ thông
#4
topic này hay quá tất cả các link đều tổng hợp #1
mỗi khi cần tham khảo không phải tìm :D
cảm ơn các anh nhiều
mỗi khi cần hỏi post trong này luôn cho nóng nhé các anh :D
 

QUAN93

Học sinh trung cấp
#5
Em đang học về vi điều khiển ứng dụng của AVR em làm robot dò đưuòng nhưng nó bị lỗi,nó có boa mấy lỗi này đây ạ:
Warning: C:\Users\nghiem\Desktop\quan\quan.c(86): unused function 'stop_L' was removed by the linker
Warning: C:\Users\nghiem\Desktop\quan\quan.c(106): unused function 'stop_R' was removed by the linker
Warning: C:\Users\nghiem\Desktop\quan\quan.c(112): unused function 'stop' was removed by the linker
còn đay là code ạ
mong cac anh giúp đỡ
 

Đính kèm

mta_cdt

Super Moderator
Thành viên BQT
#6
Em đang học về vi điều khiển ứng dụng của AVR em làm robot dò đưuòng nhưng nó bị lỗi,nó có boa mấy lỗi này đây ạ:
Warning: C:\Users\nghiem\Desktop\quan\quan.c(86): unused function 'stop_L' was removed by the linker
Warning: C:\Users\nghiem\Desktop\quan\quan.c(106): unused function 'stop_R' was removed by the linker
Warning: C:\Users\nghiem\Desktop\quan\quan.c(112): unused function 'stop' was removed by the linker
còn đay là code ạ
mong cac anh giúp đỡ
chú đọc lại xem đây có phải là lỗi đâu nó báo chú không sử dụng 3 hàm stop_L, stop_R, với lại stop thôi chứ có lỗi gì đâu.
 
#7
Hàm Stop() bạn viết mà không dùng nên nó Wanrning thôi, không phải lỗi đâu.
Không lẽ robot chạy hoài không dừng sao? Ngộ thiệt nhỉ :)
 

QUAN93

Học sinh trung cấp
#8
Hàm Stop() bạn viết mà không dùng nên nó Wanrning thôi, không phải lỗi đâu.
Không lẽ robot chạy hoài không dừng sao? Ngộ thiệt nhỉ :)
Vậy sửa sao vậy sư huynh đúng như huynh nói chả lẽ nó lại chạy mai. mong huynh giúp đỡ.
 

Quảng cáo Google