راه اندازی 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 :

دیدگاه