اطلاعیه

Collapse
No announcement yet.

صفحه کلید و میکرو

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

    #16
    پاسخ : صفحه کلید و میکرو

    ببخشید اصلا حواسم نبود ... قبلا اینا رو گفته بودین ... فکر کنم جاشو تو برنامه پیدا کردم ...
    کاری نداره میشه درستش کرد اما یه پیشنهاد توپ تر دارم ... نظرتون چیه که بجای این کار یه lcd 4*20 بزارین و همه رو یکجا نمایش بدین ... نیازی به تغییر خاصی تو برنامه هم نیست ...
    موافقین یا برم برنامه رو بنویسم ؟
    Share OR Die

    دیدگاه


      #17
      پاسخ : صفحه کلید و میکرو

      نوشته اصلی توسط Mahdi.N
      ببخشید اصلا حواسم نبود ... قبلا اینا رو گفته بودین ... فکر کنم جاشو تو برنامه پیدا کردم ...
      کاری نداره میشه درستش کرد اما یه پیشنهاد توپ تر دارم ... نظرتون چیه که بجای این کار یه lcd 4*20 بزارین و همه رو یکجا نمایش بدین ... نیازی به تغییر خاصی تو برنامه هم نیست ...
      موافقین یا برم برنامه رو بنویسم ؟
      اگه به من بود که یه تلویزیون میذاشتم، متاسفانه تنها قسمتیه که استادم گیر داده حتما باشه و بالا و پایین بشه!
      اما واسه خوندن اس ام اس که هرزمان میرسه اولین بارش نباید دکمه ای بزنیم، این قسمتش خودکار باید باشه چون تایمر ارسال دارم تو فرستنده
      فقط واسه دیدن جزییات بتونیم بالا و پایین کنیمش

      دیدگاه


        #18
        پاسخ : صفحه کلید و میکرو

        من برنامه رو نوشتم ... البته چون همه فایل های لازم نبود نتونستم کامپایل کنم و شبیه سازی کنم ولی فکر کنم درست کار کنه
        اینجا کپیش میکنم شما هم یه نگاهی بهش بکنید اگه مشکلی بود بهم بگین ...

        #include <mega32.h>
        #include <lcd.h>
        #include <delay.h>
        #include <stdio.h>
        #include <string.h>
        // Alphanumeric LCD Module functions
        #asm
        .equ __lcd_port=0x15 ;PORTC
        #endasm


        #define RXB8 1
        #define TXB8 0
        #define UPE 2
        #define OVR 3
        #define FE 4
        #define UDRE 5
        #define RXC 7

        #define FRAMING_ERROR (1<<FE)
        #define PARITY_ERROR (1<<UPE)
        #define DATA_OVERRUN (1<<OVR)
        #define DATA_REGISTER_EMPTY (1<<UDRE)
        #define RX_COMPLETE (1<<RXC)


        unsigned char scan_key(void);
        unsigned char code[4][4]={{1,4,7,'s'},{2,5,8,0},{3,6,9,'m&# 039;},{'c','u','d',& #039;e'}};
        char buffer_lcd[10];
        bit a;
        /// USART Receiver buffer
        #define RX_BUFFER_SIZE 250
        char rx_buffer[RX_BUFFER_SIZE];

        #if RX_BUFFER_SIZE<256
        unsigned char rx_counter=0;
        #else
        unsigned int rx_counter=0;
        #endif
        char *ptr,*ptr1,*ptr2,*ptr3,i,j,t,k[2];
        int temp1=0, hightemp=30, lowtemp=28, diftemp1=0,diftemp2=0,number=0, keytemp=0,highkey=0, lowkey=0, enter=0;
        char Enter=10, double_quote=34 , Ctrlz=26;

        interrupt [USART_RXC] void usart_rx_isr(void)
        {
        char status,data;
        status=UCSRA;
        data=UDR;
        if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
        {
        rx_buffer[rx_counter]=data;
        if (rx_counter<RX_BUFFER_SIZE)rx_counter++;
        if (rx_counter==RX_BUFFER_SIZE) rx_counter=0;


        };
        }



        // Standard Input/Output functions


        // Timer 1 overflow interrupt service routine
        interrupt [TIM1_OVF] void timer1_ovf_isr(void)
        {
        // Place your code here
        TCNT1H=0xff;
        TCNT1L=0x6f;
        // Place your code here
        }

        // Declare your global variables here

        void main(void)
        {
        unsigned char key ;
        // 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=0x0f;
        DDRA=0xf0;

        // 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=0x00;
        DDRB=0x00;

        // 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=0x00;
        DDRC=0x00;

        // 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=0x00;
        DDRD=0x00;

        // Timer/Counter 0 initialization
        // 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 initialization
        // Clock source: System Clock
        // Clock value: 10.800 kHz
        // Mode: Normal top=FFFFh
        // OC1A output: Discon.
        // OC1B output: Discon.
        // 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=0x00;
        TCCR1B=0x05;
        TCNT1H=0x00;
        TCNT1L=0x00;
        ICR1H=0x00;
        ICR1L=0x00;
        OCR1AH=0x00;
        OCR1AL=0x00;
        OCR1BH=0x00;
        OCR1BL=0x00;

        // Timer/Counter 2 initialization
        // 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;

        // USART initialization
        // Communication Parameters: 8 Data, 1 Stop, No Parity
        // USART Receiver: On
        // USART Transmitter: On
        // USART Mode: Asynchronous
        // USART Baud rate: 115200
        UCSRA=0x00;
        UCSRB=0x98;
        UCSRC=0x86;
        UBRRH=0x00;
        UBRRL=0x05;

        // 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);

        // Global enable interrupts
        #asm("sei&quot

        lcd_clear();
        lcd_gotoxy(0,0);
        printf("ATE0%C%c",13,10);
        lcd_putsf("Get sms..."

        while(1)
        {
        key=scan_key();
        if(key!=0xff)
        {

        switch(key)
        {
        case 'm':
        lcd_clear();
        diftemp1=1;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf(" ^ for HighTemp="
        lcd_gotoxy(0,1);
        lcd_putsf(" v for LowTemp="
        break;
        case 'u':
        lcd_clear();
        if(diftemp1==1)
        {
        diftemp1=0;
        diftemp2=1;
        hightemp=1;
        lowtemp=0;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("HighTemp="
        }
        break;
        case 'd':
        lcd_clear();
        if(diftemp1==1)
        {
        hightemp=0;
        lowtemp=1;
        diftemp1=0;
        diftemp2=1;
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf(" LowTemp="
        }
        break;

        case 's':
        break;

        case 'c':
        lcd_clear();
        break;

        case 'e':
        if(enter==1)
        {
        if(hightemp==1) {lcd_gotoxy(0,0); sprintf(buffer_lcd,"HighTemp is %d",keytemp); lcd_puts(buffer_lcd), lcd_gotoxy(0,1); lcd_putsf("save successfully"hightemp=0;lowtemp=0;
        printf("at%c%c",10,13);
        printf("At+CMGF=1%c%c",10,13);
        delay_ms(500);
        printf("at+cmgs=%c093....%c%c%c",double_ quote,double_quote,10,13);
        delay_ms(100);
        printf("H=%d%c",keytemp,Ctrlz); }

        if(lowtemp==1) {lcd_gotoxy(0,0); sprintf(buffer_lcd,"LowTemp is %d",keytemp); lcd_puts(buffer_lcd), lcd_gotoxy(0,1); lcd_putsf("save successfully"hightemp=0;lowtemp=0;
        printf("at%c%c",10,13);
        printf("At+CMGF=1%c%c",10,13);
        delay_ms(500);
        printf("at+cmgs=%c093.....1%c%c%c",doubl e_quote,double_quote,10,13);
        delay_ms(100);
        printf("L=%d%c",keytemp,Ctrlz) ;}

        enter=0;

        }
        break;

        default:
        if(number==0) { lcd_gotoxy(9,0); number=1; sprintf(buffer_lcd,"%d",key); lcd_puts(buffer_lcd); keytemp=key*10; enter=1;}
        else { lcd_gotoxy(10,0); number=0; sprintf(buffer_lcd,"%d",key); lcd_puts(buffer_lcd);keytemp=key+keytemp; enter=1;}


        }
        }

        delay_ms(1000);
        printf("AT+CMGR=%c%c%c",'1',13 ,10);
        rx_counter=0;
        delay_ms(2000);
        ptr=strstrf(rx_buffer,"+CMGR:"
        if(ptr!=0)
        {
        ptr1=strstrf(ptr,","
        lcd_clear();
        lcd_gotoxy(0,0);
        for (j=0;j<13 ;j++ ) // baray namayeshe shomare
        {
        lcd_putchar(*(ptr1+2+j));
        }

        ptr1=strstrf(ptr,","
        ptr1=strstrf(ptr1+1,","
        lcd_putchar('\n'
        for (i=0; i<14 ; i++ ) // baray namayeshe tarikh va saat
        {
        lcd_putchar(*(ptr1+6+i));
        }
        a=1;
        while(a)
        {
        key=scan_key();
        if(key=='d&#039
        {
        lcd_clear();
        lcd_gotoxy(0,0);
        ptr1=strstrf(ptr,","
        ptr1=strstrf(ptr1+1,","
        for (i=0; i<14 ; i++ ) // baray namayeshe tarikh va saat
        {
        lcd_putchar(*(ptr1+6+i));
        }
        ptr1=strstrf(ptr,"\n"
        if(ptr1!=0)
        {
        ptr2=strstrf(ptr1+1,"\r"
        if(ptr2!=0)
        {
        lcd_clear();
        lcd_putchar('\n'
        while(ptr1+1<ptr2) // baraye namayeshe matne sms
        {
        ptr1++;
        lcd_putchar(*ptr1);
        }
        }
        }
        }
        if(key=='u&#039
        {
        ptr1=strstrf(ptr,","
        lcd_clear();
        lcd_gotoxy(0,0);
        for (j=0;j<13 ;j++ ) // baray namayeshe shomare
        {
        lcd_putchar(*(ptr1+2+j));
        }

        ptr1=strstrf(ptr,","
        ptr1=strstrf(ptr1+1,","
        lcd_putchar('\n'
        for (i=0; i<14 ; i++ ) // baray namayeshe tarikh va saat
        {
        lcd_putchar(*(ptr1+6+i));
        }
        }
        if(key=='e&#039
        a=0;
        }
        }
        printf("AT+CMGD=%c%c%c",'1',13 ,10);
        }
        }
        unsigned char scan_key(void)
        {
        unsigned char i,data, num_key, temp;
        num_key=0xff;
        temp=0x70;
        for(i=0;i<4;i++)
        {
        PORTA=temp;
        delay_ms(5);
        data=PINA & 0x0f;
        if (data==0x07)
        num_key=code[0][i];
        if (data==0x0B)
        num_key=code[1][i];
        if (data==0x0D)
        num_key=code[2][i];
        if (data==0x0E)
        num_key=code[3][i];
        temp=((temp>>=1) | 0x80) & 0xF0;
        }
        return num_key;
        }

        البته برای خروج از این حالت جدید باید کلید e رو بزنید ... تو حالت قبل نیازی به این کار نبود و بصورت اوتوماتیک میومد بیرون اما الان روال برنامه فرق کرده ... بازم اگه تغییراتی بخواین من در خدمتم ...
        Share OR Die

        دیدگاه


          #19
          پاسخ : صفحه کلید و میکرو

          سلام
          ممنونم از این برنامه تون
          تقریبا داره جواب میده
          دارم روش کار میکنم درستش کنم
          اگه به مشکل خوردم حتما مزاحمتون میشم
          خیلییییییییییییییی ممنون :smile:

          دیدگاه


            #20
            پاسخ : صفحه کلید و میکرو

            خواهش می کنم ... خوشحالم که قسمتی از مشکلتون حل شد ... بازم اگه نیاز به کمک داشتین من در خدمتم ...
            Share OR Die

            دیدگاه


              #21
              پاسخ : صفحه کلید و میکرو

              نوشته اصلی توسط Mahdi.N
              خواهش می کنم ... خوشحالم که قسمتی از مشکلتون حل شد ... بازم اگه نیاز به کمک داشتین من در خدمتم ...
              مرسی
              انشالله فردا میرم واسه ارائه
              دعا کنین مشکل پیش نیاد
              هر 1ساعت دارم چکش میکنم، میترسیم گیر کنه فردا
              بازم واسه زحمتی که کشیدین ممنونم

              دیدگاه

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