اطلاعیه

Collapse
No announcement yet.

تغییر در کد ماشین حساب

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تغییر در کد ماشین حساب

    سلام دوستان من یه ماشین حساب دارم که علاوه بر 4 عمل اصلی سینوس و کسینوس و... را هم داره
    حالا میخوام کد فقط 4 عمل اصل رو داشته باشه و سینوس اینا حذف بشه کسی میتونه کمکم کنه

    کد :

    [FONT=Yekan]#include <mega16.h>[/FONT]#include <delay.h>
    #include <lcd.h>
    #include <stdlib.h>
    #include <math.h>


    #asm
    .equ __lcd_port=0x18
    #endasm
    //#############################################
    int key(void);
    float _Main(void);
    void Mohandes(void);
    void Mohasebe(void);
    void Alamat(int,int);
    float Emoji(int);
    //#############################################
    float a = 0 , b = 0 , c = 0 , q , t;
    int i ;
    char y=0 , lcd[25] , z ;
    //#############################################
    void main(void){


    DDRB=0x0F;
    DDRC=0x07;
    DDRD=0x0F;


    lcd_init(16);
    while (1){
    _Main();
    }
    }
    //#############################################################
    float _Main(void){
    int Loop = 1 ;
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y < 10 ){
    a = (a*10)+y ;
    itoa(y , lcd);
    lcd_puts(lcd);
    delay_ms(50);
    }





    if( y > 9 && y < 16 ){
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    z = y ;
    Alamat(y,1);
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y < 10 ){
    b = (b*10)+y ;
    itoa(y , lcd);
    lcd_puts(lcd);
    delay_ms(50);
    }else if(y == 14){
    lcd_putchar('=');
    Mohasebe();
    y = 0 ;
    Loop = 0 ;
    }
    }
    }
    if( y > 15 ){
    lcd_clear();
    a= 0 ; b = 0 ; c = 0;
    Alamat(y , 2);
    z = y ;
    Loop = 1 ;
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if(y < 10){
    a = (a*10) + y ;
    itoa(y , lcd);
    lcd_puts(lcd);
    delay_ms(50);
    }else if ( y == 14){
    lcd_putchar('=');
    Mohandes();
    }
    Loop = 1 ;
    }
    }
    return 0;
    }
    //##########################################################
    void Mohasebe(void){
    if(z == 10)c = a / b ;
    if(z == 11)c = a * b ;
    if(z == 12)c = a - b ;
    if(z == 13)c = a + b ;
    ftoa(c , 3 , lcd);
    lcd_puts(lcd);
    delay_ms(100);
    }
    //#########################################################
    float Emoji(int rr){
    q=1;
    for(i=0;i<rr;i++)q = q * 2.71728 ;
    return q;
    }
    //#########################################################
    void Mohandes(void){
    t = (3.1415926535897932384626433832795/180)*a ;
    if(z == 16)c = sin(t) ;
    if(z == 17)c = cos(t) ;
    if(z == 18)c = tan(t) ;
    if(z == 19)c = 1/tan(t) ;
    if(z == 20)c = asin(t) ;
    if(z == 21)c = acos(t) ;
    if(z == 22)c = log(a) ;
    if(z == 23)c = sqrt(a) ;
    if(z == 24)c = Emoji(a) ;
    ftoa(c , 3 , lcd);
    lcd_puts(lcd);
    delay_ms(100);
    }
    //#########################################################
    void Alamat(int Moji,int Halat){
    if(Halat == 1){
    if(Moji == 10)lcd_putchar('/') ;
    if(Moji == 11)lcd_putchar('*') ;
    if(Moji == 12)lcd_putchar('-') ;
    if(Moji == 13)lcd_putchar('+') ;
    delay_ms(100);
    }
    if(Halat == 2){
    if(Moji == 16)lcd_putsf("Sin ") ;
    if(Moji == 17)lcd_putsf("Cos ") ;
    if(Moji == 18)lcd_putsf("Tan ") ;
    if(Moji == 19)lcd_putsf("Cot ") ;
    if(Moji == 20)lcd_putsf("aSin") ;
    if(Moji == 21)lcd_putsf("aCos") ;
    if(Moji == 22)lcd_putsf("Log ") ;
    if(Moji == 23)lcd_putsf("Sqrt ") ;
    if(Moji == 24)lcd_putsf("exp ") ;
    delay_ms(100);


    }
    }
    //#########################################################
    int key(void){
    char KEY = 1 ;
    while(KEY){


    PORTD.0 = 1 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}
    if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}
    if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}
    if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 1 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 4 ; KEY = 0;}
    if(PIND.5 == 1){return 5 ; KEY = 0;}
    if(PIND.6 == 1){return 6 ; KEY = 0;}
    if(PIND.7 == 1){return 11; KEY = 0;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 1 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 1 ; KEY = 0;}
    if(PIND.5 == 1){return 2 ; KEY = 0;}
    if(PIND.6 == 1){return 3 ; KEY = 0;}
    if(PIND.7 == 1){return 12; KEY = 0;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 1 ;
    if(PIND.4 == 1){return 15; KEY = 0;}
    if(PIND.5 == 1){return 0 ; KEY = 0;}
    if(PIND.6 == 1){return 14; KEY = 0;}
    if(PIND.7 == 1){return 13; KEY = 0;}


    //=============================================================================
    PORTC.0 = 1 ;
    PORTC.1 = 0 ;
    PORTC.2 = 0 ;
    if(PINC.5 == 1){return 16 ; KEY=0;}
    if(PINC.6 == 1){return 17; KEY=0;}
    if(PINC.7 == 1){return 18 ; KEY=0;}
    //=====================================================
    PORTC.0 = 0 ;
    PORTC.1 = 1 ;
    PORTC.2 = 0 ;
    if(PINC.5 == 1){return 19 ; KEY=0;}
    if(PINC.6 == 1){return 20 ; KEY=0;}
    if(PINC.7 == 1){return 21 ; KEY=0;}
    //=====================================================
    PORTC.0 = 0 ;
    PORTC.1 = 0 ;
    PORTC.2 = 1 ;
    if(PINC.5 == 1){return 22 ; KEY=0;}
    if(PINC.6 == 1){return 23 ; KEY=0;}
    if(PINC.7 == 1){return 24 ; KEY=0;}

    KEY = 1 ;
    }
    }
    [FONT=Yekan]//############################################################[/FONT]


    اینم شکل مدار


    #2
    پاسخ : تغییر در کد ماشین حساب

    سلام
    وقتتون بخیر
    فکر کنم اینطوری درست کار کنه
    کد:
    [FONT=Yekan]#include <mega16.h>[/FONT]#include <delay.h>
    #include <lcd.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    #asm
       .equ __lcd_port=0x18
    #endasm
    //#############################################
    int key(void);
    float _Main(void);
    
    void Mohasebe(void);
    void Alamat(int,int);
    float Emoji(int);
    //#############################################
    float a = 0 , b = 0 , c = 0 , q , t;
    int i ;
    char y=0 , lcd[25] , z   ;
    //#############################################
    void main(void){
     
     
    DDRB=0x0F;
    DDRC=0x07;
    DDRD=0x0F;
     
     
    lcd_init(16);
    while (1){
    _Main();
    }
    }
    //#############################################################
    float _Main(void){
    int Loop = 1 ;
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y < 10 ){
            a = (a*10)+y ;
            itoa(y , lcd);
            lcd_puts(lcd);
            delay_ms(50);
    }
      
     
     
     
     
    if( y > 9 && y < 16 ){
            if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
            z = y ;
            Alamat(y,1);
            while(Loop){
            y = key();
            if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
            if( y < 10 ){
                    b = (b*10)+y ;
                    itoa(y , lcd);
                    lcd_puts(lcd);
                    delay_ms(50); 
            }else if(y == 14){
                    lcd_putchar('=');
                    Mohasebe();
                    y = 0 ;
                    Loop = 0 ;
            }
            }
    } 
    if( y > 15 ){
    lcd_clear();
    a= 0 ; b = 0 ; c = 0;
    Alamat(y , 2);
    z = y ;
    Loop = 1 ;
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if(y <  10){
            a = (a*10) + y ;
            itoa(y , lcd);
            lcd_puts(lcd);
            delay_ms(50);
    }else if ( y == 14){
            lcd_putchar('=');
            Mohandes();
    }
    Loop = 1 ;
    }
    }
    return 0;
    }
    //##########################################################
    void Mohasebe(void){                                          
    if(z == 10)c = a / b ;
    if(z == 11)c = a * b ;
    if(z == 12)c = a - b ;
    if(z == 13)c = a + b ;
    ftoa(c , 3 , lcd);            
    lcd_puts(lcd);
    delay_ms(100);
    }
    //#########################################################
    float Emoji(int rr){
    q=1;
    for(i=0;i<rr;i++)q = q * 2.71728 ;
    return q;   
    }
    
    //#########################################################
    void Alamat(int Moji,int Halat){
    if(Halat == 1){
            if(Moji == 10)lcd_putchar('/') ;
            if(Moji == 11)lcd_putchar('*') ;
            if(Moji == 12)lcd_putchar('-') ;
            if(Moji == 13)lcd_putchar('+') ; 
            delay_ms(100);      
    }
    if(Halat == 2){
            if(Moji == 16)lcd_putsf("Sin ") ;
            if(Moji == 17)lcd_putsf("Cos ") ;
            if(Moji == 18)lcd_putsf("Tan ") ;
            if(Moji == 19)lcd_putsf("Cot ") ;  
            if(Moji == 20)lcd_putsf("aSin") ;
            if(Moji == 21)lcd_putsf("aCos") ;
            if(Moji == 22)lcd_putsf("Log ") ;
            if(Moji == 23)lcd_putsf("Sqrt ") ;  
            if(Moji == 24)lcd_putsf("exp ") ;
            delay_ms(100);
     
     
    }
    }
    //#########################################################
    int key(void){
    char KEY = 1 ;
    while(KEY){
     
     
            PORTD.0 = 1 ;
            PORTD.1 = 0 ;
            PORTD.2 = 0 ;
            PORTD.3 = 0 ;
            if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}     
            if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}    
            if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}   
            if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}       
            //==========================================
            PORTD.0 = 0 ;
            PORTD.1 = 1 ;
            PORTD.2 = 0 ;
            PORTD.3 = 0 ;
            if(PIND.4 == 1){return 4 ; KEY = 0;}     
            if(PIND.5 == 1){return 5 ; KEY = 0;}    
            if(PIND.6 == 1){return 6 ; KEY = 0;}
            if(PIND.7 == 1){return 11; KEY = 0;}       
            //==========================================
            PORTD.0 = 0 ;
            PORTD.1 = 0 ;
            PORTD.2 = 1 ;
            PORTD.3 = 0 ;
            if(PIND.4 == 1){return 1 ; KEY = 0;}         
            if(PIND.5 == 1){return 2 ; KEY = 0;}       
            if(PIND.6 == 1){return 3 ; KEY = 0;}      
            if(PIND.7 == 1){return 12; KEY = 0;}         
            //==========================================
            PORTD.0 = 0 ;
            PORTD.1 = 0 ;
            PORTD.2 = 0 ;
            PORTD.3 = 1 ;
            if(PIND.4 == 1){return 15; KEY = 0;}        
            if(PIND.5 == 1){return 0 ; KEY = 0;}        
            if(PIND.6 == 1){return 14; KEY = 0;}       
            if(PIND.7 == 1){return 13; KEY = 0;}
     
     
            //=============================================================================
            PORTC.0 = 1 ;
            PORTC.1 = 0 ;
            PORTC.2 = 0 ;
            if(PINC.5 == 1){return 16 ; KEY=0;}
            if(PINC.6 == 1){return 17; KEY=0;}
            if(PINC.7 == 1){return 18 ; KEY=0;}
            //===================================================== 
            PORTC.0 = 0 ;
            PORTC.1 = 1 ;
            PORTC.2 = 0 ;
            if(PINC.5 == 1){return 19 ; KEY=0;}         
            if(PINC.6 == 1){return 20 ; KEY=0;}
            if(PINC.7 == 1){return 21 ; KEY=0;}
            //=====================================================
    
            
    
      
    
    KEY = 1 ;       
    }
    
    }
    [FONT=Yekan]//############################################################[/FONT]

    دیدگاه

    لطفا صبر کنید...
    X