ÞÓã ÇáãíßÑæßäÊÑæáÑ æÇáÑæÈæÊ æÏæÇÆÑ ÇáÇÊÕÇá ÈÇáÍÇÓÈ ÇáÇáí ÞÓã ÇáãÊÍßãÇÊ ÇáÜ microcontroller æ ÇáãÚÇáÌÇÊ microprocessor æ ÇáÊÍßã ÇáÑÞãí ÈÇáßãÈíæÊÑ CNC æÇáÇäÙãÉ ÇáÂáíÉ æÇáÑæÈæÊ Robots

   

ÚÈæÏå1234
:: ãåäÏÓ ::
ÊÇÑíÎ ÇáÊÓÌíá: Apr 2012
ÇáãÔÇÑßÇÊ: 1
äÔÇØ [ ÚÈæÏå1234 ]
ÞæÉ ÇáÓãÚÉ:
ÞÏíã 16-04-2012, 01:51 PM ÇáãÔÇÑßÉ 1   
ha ÃÑÌæ ÇáãÓÇÚÏÉ Ýí ÊÍæíá ÈÑäÇãÌ ÈáÛÉ Çác Åáìhex



[INDENT][INDENT][INDENT]ÈÓã Çááå ÇáÑÍãä ÇáÑÍíã ÇáÓáÇã Úáíßã æÑÍãÉ Çááå æÈÑßÇÊå ÊÍíÉ ØíÈÉ æÈÚÏ:
ÃÑÌæ ÊÍæíá åÐÇ ÇáÈÑäÇãÌ ÇáãßÊæÈ È code vision
ãä áÛÉ Çá c Åáì hex
æÅáíßã ÇáÈÑäÇãÌ ßãÇ íÃÊí:

Chip type           : ATmega16 
Program type        : Application 
Clock frequency     : 1.000000 MHz 
Memory model        : Small 
External RAM size   : 0 
Data Stack size     : 256
ÇáÈÑäÇãÌ íÈÏà ãä åäÇ
#include <mega16.h> 
#include <delay.h>
unsigned int T = 2000; 
unsigned int X = 2000; 
unsigned int counter = 0; 
//bit f_g=1; 
bit response=0; 
unsigned int F_value = 0; 
int w=0; 
//unsigned int dB_value = 0; 
/*interrupt [EXT_INT2] void ext_int2_isr(void) 
{
// Place your code here 
PORTC.3=0; 
response=1; 
T=1000; 
}*/
// Timer 1 overflow interrupt service rouƟne
interrupt [TIM1_OVF] void Ɵmer1_ovf_isr(void) 
{
// ReiniƟalize Timer 1 value
ICR1H = T>>8; 
ICR1L = T; 
OCR1A = X; 
OCR1B = X; 
counter++;
// Place your code here
}
// Declare your global variables here
// Alphanumeric LCD Module functions 
#asm 
   .equ __lcd_port=0x15 ;PORTC 
#endasm 
#include <lcd.h> 
#define row0 PINA.0 
#define row1 PINA.1 
#define row2 PINA.2 
#define row3 PINA.3
#define col0 PORTA.4 
#define col1 PORTA.5 
#define col2 PORTA.6 
#define col3 PORTA.7
#define a PORTB.6 
#define b PORTB.5 
#define c PORTB.4 
#define en1 PORTB.3 
#define en2 PORTB.2
//char* s=" gg  "; 
//flash char* SF="                "; 
//flash char* SG="                "; 
// Declare your global variables here 
//bit go=0; 
//int value; 
unsigned char i; 
unsigned char j; 
char h; 
char mat[4][4]; 
int data; 
bit p=0; 
bit m=0; 
char z=0; 
bit y=0; 
//bit f=0; 
//bit d=0;
void read() 
{
 j=10; 
 i=10; 
 for(h=0;h<4;h++) 
 {
 switch(h) 
  {
   case 0: col0=0; col1=1; col2=1; col3=1; break; 
   case 1: col0=1; col1=0; col2=1; col3=1; break; 
   case 2: col0=1; col1=1; col2=0; col3=1; break; 
   case 3: col0=1; col1=1; col2=1; col3=0; break; 
  }
   if(!row0) {j=h; i=0;} 
   if(!row1) {j=h; i=1;} 
   if(!row2) {j=h; i=2;}  
   if(!row3) {j=h; i=3;} 
  }
  if(m==0) 
  {
   if(j!=10) 
   {
        data=mat[i][j]; 
    w=0;  
    y=1;  
    PORTB.1=0; 
    p=1; 
   }
   m=1; 
  }
  if(j==10)  
  m=0;   
}
void show() 
{
 if(p==1) 
 {
// lcd_putchar(data); 
  p=0; 
  //y=1; 
 }
}
void get() 
{
/* switch(data) 
        {
        case '=': f_g=1;       break;      
        case '+': f_g=0;       break;      
        case 'c': lcd_clear(); break;      
        } */        
// if(f_g) 
//  {       
//    PORTD.0=1;     // iniƟate the frequancy 
//    PORTD.1=0;
    switch(data) 
        {
        //case '+': T=50;PORTD.0=1;PORTD.1=0;  break;     //20 KHz 
        case '1': T=100;PORTD.0=1;PORTD.1=0; 
  if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');} 
                lcd_gotoxy(10,0);lcd_putsf("10kHz" );y=0;} break;     //10 KHz 
        case '2': T=125;PORTD.0=1;PORTD.1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');} 
                lcd_gotoxy(10,0);lcd_putsf("8 kHz" );y=0;} break;     //8 KHz 
        case '3': T=250;PORTD.0=1;PORTD.1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');} 
                lcd_gotoxy(10,0);lcd_putsf("4 kHz" );y=0;} break;     //4 KHz 
        case '‐': T=500;PORTD.0=1;PORTD.1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');} 
                lcd_gotoxy(10,0);lcd_putsf("2 kHz" );y=0;} break;     //2 KHz 
        case 'c': T=1000;PORTD.0=1;PORTD.1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');} 
                lcd_gotoxy(10,0);lcd_putsf("1 kHz" );y=0;} break;     //1 KHz 
        case '0': T=2000;PORTD.0=1;PORTD.1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');} 
                lcd_gotoxy(10,0);lcd_putsf("500Hz" );y=0;} break;     //500 Hz 
        case '=': T=4000;PORTD.0=1;PORTD.1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
 lcd_gotoxy(10,0);lcd_putsf("250Hz");y=0;} break;      //250 Hz 
        case '+': T=8000;PORTD.0=1;PORTD.1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');} 
                lcd_gotoxy(10,0);lcd_putsf("125Hz" );y=0;} break;     //125 Hz 
        }
 // }
// if(!f_g) 
//  { 
//    PORTD.1=1;      // iniƟate the dB 
//    PORTD.0=0; 
    switch(data) 
        {                  
        case '*': en1=0;en2=0;a=0;b=0;c=1;PORTD.1= 1;PORTD.0=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("10 dB" );y=0;}  break; 
        case '6': en1=0;en2=0;a=1;b=1;c=0;PORTD.1= 1;PORTD.0=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("20 dB" );y=0;}  break; 
        case '5': en1=0;en2=0;a=1;b=0;c=1;PORTD.1= 1;PORTD.0=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("30 dB" );y=0;}  break; 
        case '4': en1=0;en2=0;a=0;b=1;c=0;PORTD.1= 1;PORTD.0=0; 
f(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("40 dB" );y=0;}  break; 
        case '/': en1=0;en2=0;a=0;b=0;c=0;PORTD.1=1;PORTD.0=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("50 dB" );y=0;}  break; 
        case '9': en1=0;en2=0;a=1;b=0;c=0;PORTD.1= 1;PORTD.0=0;en1=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("60 dB" );y=0;}  break; 
        case '8': en1=0;en2=0;a=1;b=1;c=1;PORTD.1= 1;PORTD.0=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("70 dB" );y=0;}  break; 
        case '7': en1=0;en2=0;a=0;b=1;c=1;PORTD.1= 1;PORTD.0=0; 
            if(y==1) 
                {for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');} 
                lcd_gotoxy(10,1);lcd_putsf("80 dB" );y=0;}  break; 
        //case '8': en1=0;en2=1;a=1;b=1;c=1;PORTD.1=1;PORTD. 0=0;  break; 
        //case '9': en1=0;en2=1;a=0;b=1;c=0;PORTD.1=1;PORTD. 0=0;  break; 
        }
//  }
}
void main(void) 
{
   
// Declare your local variables here
// Input/Output Ports initialization 
// Port A initialization 
//  Func7=Out  Func6=Out  Func5=Out  Func4=Out  Func3=In  Func2=In  Func1=In 
Func0=In  
// State7=1 State6=1 State5=1 State4=1 State3=P Stat e2=P State1=P State0=P  
PORTA=0xFF; 
DDRA=0xF0;
// Port B initialization 
//  Func7=In  Func6=Out  Func5=Out  Func4=Out  Func3=Out  Func2=Out  Func1=Out 
Func0=In  
// State7=T State6=0 State5=0 State4=0 State3=0 Stat e2=0 State1=0 State0=P  
PORTB=0x01; 
DDRB=0x7E;
// Port C initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=Out Fun c2=In Func1=In Func0=In  
// State7=T State6=T State5=T State4=T State3=0 Stat e2=T State1=T State0=T  
PORTC=0x00; 
DDRC=0x08; 
// Port D initialization 
// Func7=In Func6=In Func5=Out Func4=Out Func3=In Fu nc2=In Func1=In Func0=In  
// State7=T State6=T State5=0 State4=0 State3=T Stat e2=T State1=T State0=T  
PORTD=0x00; 
DDRD=0x33;
// Timer/Counter 0 iniƟalizaƟon 
// 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 iniƟalizaƟon 
// Clock source: System Clock 
// Clock value: 1000.000 kHz 
// Mode: Fast PWM top=ICR1 
// OC1A output: Non‐Inv. 
// OC1B output: Inverted 
// Noise Canceler: Off 
// Input Capture on Falling Edge 
// Timer 1 Overflow Interrupt: On 
// Input Capture Interrupt: Off 
// Compare A Match Interrupt: Off 
// Compare B Match Interrupt: Off 
TCCR1A=0xB2; 
TCCR1B=0x19; 
TCNT1H=0x00; 
TCNT1L=0x00; 
ICR1H=0x00; 
ICR1L=0x00; 
OCR1AH=0x00; 
OCR1AL=0x00; 
OCR1BH=0x00; 
OCR1BL=0x00; 
// Timer/Counter 2 iniƟalizaƟon 
// 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=0x04;
// Analog Comparator initialization 
// Analog Comparator: Off 
// Analog Comparator Input Capture by Timer/Counter 1: Off 
ACSR=0x80; 
SFIOR=0x00;
// LCD module initialization 
lcd_init(16);
mat[0][0]='/'; 
mat[1][0]='*'; 
mat[2][0]='‐'; 
mat[3][0]='+'; 
mat[0][1]='9'; 
mat[1][1]='6'; 
mat[2][1]='3'; 
mat[3][1]='='; 
mat[0][2]='8'; 
mat[1][2]='5'; 
mat[2][2]='2'; 
mat[3][2]='0'; 
mat[0][3]='7'; 
mat[1][3]='4'; 
mat[2][3]='1'; 
mat[3][3]='c';
// Global enable interrupts 
#asm("sei")
lcd_putsf("this project is made by :"); 
delay_ms(3000); 
lcd_clear();
lcd_putsf("N.M.D & GH.H &  M.KH"); 
delay_ms(5000); 
lcd_clear();
lcd_putsf("Supervised by : ENG M.H"); 
delay_ms(2000); 
lcd_clear();
lcd_putsf("frequ_val= off"); 
lcd_gotoxy(0,1); 
lcd_putsf("dBell_val= off"); 
while (1) 
      {
      //lcd_putsf("nader"); 
       read(); 
       show(); 
       get(); 
      if(w!=1) 
      {
      if ( counter >= 1 ) 
        {
            counter = 0; 
            X=T/2; 
            X %= T;       
        }
      }   
      if(PINB.0==0) 
        {
         PORTB.1=1; 
         PORTD.5=0; 
         response=1; 
         F_value=T; 
         w=1; 
        }  
      };
} 
 
ãáÇÍÙÉ :åá íÌÈ ÊÍÏíÏ ÇáãÏÇÎá æ ÇáãÎÇÑÌ ÚäÏ ÇáÊÍæíá Åáì ãáÝ Çá hex

[IMG][/IMG]
 
æÅÐÇ ßÇä íÌÈ Ðáß ÝÅáíßã ÇáÕæÑÉ ÇáÊí ÊæÖÍ ÇáÏÇÑÉ Ãí ÇáãÏÇÎá æÇáãÎÇÑÌ ááãÊÍßã



æåá íÌÈ ÊÍÏíÏ ÇáÈæÑÊ ÇáãäÇÓÈ áá lcd



ÃÑÌæ ÇáÑÏ ÇáÓÑíÚ æáßã ÌÒíá ÇáÔßÑ

ÇÚáÇäÇÊ


ÇáÓÇÚÉ ãÚÊãÏÉ ÈÊæÞíÊ ÌÑíäÊÔ +3 ÇáÓÇÚÉ ÇáÂä: 07:50 AM
ãæÞÚ ÇáÞÑíÉ ÇáÇáßÊÑæäíÉ ÛíÑ ãÓÄæá Úä Ãí ÇÊÝÇÞ ÊÌÇÑí Ãæ ÊÚÇæäí Èíä ÇáÃÚÖÇÁ
ÝÚáì ßá ÔÎÕ ÊÍãá ãÓÆæáíÉ äÝÓå ÅÊÌÇå ãÇíÞæã Èå ãä ÈíÚ æÔÑÇÁ æÅÊÝÇÞ æÃÚØÇÁ ãÚáæãÇÊ ãæÞÚå
ÇáÊÚáíÞÇÊ ÇáãäÔæÑÉ áÇ ÊÚÈÑ Úä ÑÃí ãæÞÚ ÇáÞÑíÉ ÇáÇáßÊÑæäíÉ æáÇíÊÍãá ÇáãæÞÚ Ãí ãÓÄæáíÉ ÞÇäæäíÉ ÍíÇá Ðáß (æíÊÍãá ßÇÊÈåÇ ãÓÄæáíÉ ÇáäÔÑ)