راه اندازی 7SEGMENT چهار رقمی با قابلیت تغییر مقدار هر رقم به صورت چشمک زن :
برنامه رو با کامپایلر AVR GCC در محیط AVR STUDIO5 نوشتم ، توضیحات نحوه اتصال 7SEGMENT و پوش باتون ها رو به صورت کامند ارائه کردم .
فایلهای برنامه : TATLI_AVR4
برنامه :
این هم یک عکس از نحوه اتصال سخت افزارهای جانبی با مگا 8 :
برنامه رو با کامپایلر AVR GCC در محیط AVR STUDIO5 نوشتم ، توضیحات نحوه اتصال 7SEGMENT و پوش باتون ها رو به صورت کامند ارائه کردم .
فایلهای برنامه : TATLI_AVR4
برنامه :
کد:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#define DATA PORTB
#define SCAN PORTD
/*
port for the 7SEGMENT DATA lines :PORTB
pin for a : PB0
pin for b : PB1
pin for c : PB2
pin for d : PB3
pin for e : PB4
pin for f : PB5
pin for g : PB6
pin for dp : PB7
and
port for the 7SEGMENT scan lines :PORTD
pin for C1 : PD0
pin for C2 : PD1
pin for C3 : PD2
pin for C4 : PD3
*/
/*
pin for SELECT : PD7
pin for DOWN : PD6
pin for UP : PD4
*/
unsigned char select,Cdgit[4]={0,1,2,3};
const unsigned char nom[] PROGMEM=
{
/* 0 1 2 3 4 5 6 7 8 9 */
0X3F , 0X06 , 0X5B , 0X4F , 0X66 , 0X6D , 0X7D , 0X07 , 0X7F , 0X6F ,
/* 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
0XBF , 0X86 , 0XDB , 0XCF , 0XE6 , 0XED , 0XFD , 0X87 , 0XFF , 0XEF
};
void main (void){
DDRD=0X0F;
DDRB=0XFF;
PORTD|=(1<<PD4)|(1<<PD6)|(1<<PD7);
/* Timer/Counter 0 initialization
Clock source: System Clock
Clock value: 125.000 kHz*/
TCCR0B=(1<<CS00)|(1<<CS01);
TCNT0=0x83;
TIMSK0=(1<<TOIE0); // Timer(s)/Counter(s) Interrupt(s) initialization
/*External Interrupt(s) initialization
INT5: On
INT5 Mode: Falling Edge
INT6: On
INT6 Mode: Falling Edge
INT7: On
INT7 Mode: Falling Edge*/
EICRA=(1<<ISC51)|(1<<ISC61)|(1<<ISC71);
EIMSK=(1<<INT5)|(1<<INT6)|(1<<INT7);
EIFR=(1<<INTF5)|(1<<INTF6)|(1<<INTF7);
DATA=0XC0;
SCAN=0X80;
sei() ;
while(1){
};
}
// Timer 0 overflow interrupt service routine
ISR(TIMER0_OVF_vect ){
// Reinitialize Timer 0 value
TCNT0=0x83;
// Place your code here
static unsigned char dg,i=0;
SCAN = 0;
DATA = pgm_read_byte(&nom[Cdgit[dg]]);
SCAN |= (1<<dg);
if(dg==select&&++i<130)SCAN=0;
if(++dg>3)dg=0;
}
// External Interrupt 0 service routine
ISR(INT5_vect ){
if(Cdgit[select]<19)Cdgit[select]++;
}
// External Interrupt 1 service routine
ISR(INT6_vect ){
if(Cdgit[select]>0)Cdgit[select]--;
}
// External Interrupt 1 service routine
ISR(INT7_vect ){
if(++select>4)select=0;
}
این هم یک عکس از نحوه اتصال سخت افزارهای جانبی با مگا 8 :



دیدگاه