اطلاعیه

Collapse
No announcement yet.

راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

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

    #76
    پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

    سلام

    روی LCD عدد 10320 نمایش داده می شود

    این برنامه گیرنده :

    int b[4];
    int a[4];
    int c;


    while (1)
    {
    lcd_clear();
    cursor_off();
    a[0] = getkey();
    a[1] = getkey();
    a[2] = getkey();
    a[3] = getkey();
    b[0]=a[0];
    b[1]=(a[1]<<8);
    b[2]=(a[2]<<16);
    b[3]=(a[3]<<24);
    c = (b[0]|b[1]|b[2]|b[3]);
    lcd_gotoxy(1,1);
    lcd_puts(c);
    delay_ms(100);
    }
    }

    این برنامه فرستنده :

    int a[4];
    int b;
    b = 12345;

    a[0]=(b&0xff);
    a[1]=((b&0xff00)>>8);
    a[2]=((b&0xff0000)>>16);
    a[3]=((b&0xff000000)>>24);


    while (1)
    {
    lcd_clear();
    cursor_off();
    lcd_gotoxy(1,1);
    lcd_putsf("Sending Data :"
    sendchar(a[0]);
    sendchar(a[1]);
    sendchar(a[2]);
    sendchar(a[3]);
    delay_ms(100);
    }
    }
    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

    دیدگاه


      #77
      پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

      سلام

      درسته ، من متغیر chra حامل عدد 65 رو با دستور sendchar ارسال می کنم و در گیرنده با دستور lcd_putchar روی LCD نمایش می دهم که کارارکتر نمایش داده شده روی LCD حرف A می باشد ، اگر لطف کنید و من رو کمک و راهنمایی کنید که چگونه به جای یک حرف ، یک کلمه رو ارسال کنم و در گیرنده حرف ها رو کنار هم بچینم و روی LCD نمایش بدهم خیلی خیلی ممنون می شوم ، اگر برنامه درست باشد می توانم در هدر اضافه کنم و با یک دستور حرف و کلمه ارسال و دریافت کنم ، و یا همون بحث ارسال عدد که اون رو هم مانند ارسال کلمه باید قسمت کرد و در گیرنده این قسمت هارو کنار هم چید تا یک عدد کامل بدست آید

      ******************** پس ما نیاز به یک آرایه داریم که قسمت کنه و بعد کنار هم بچینه ، اگر برای اعداد این آرایه رو بنویسیم ********************
      ******************** برای کلمات هم می توانیم استفاده کنیم زیرا کلمات هم کد اسکی هستند ********************
      *************** در هدر هم اضافه می کنیم فقط برای تبدیل کلمات به کد اسکی یک آرایه دیگه هم می خواهیم که در وب پیدا میشه **************

      !@#$%^&*)({}\[],؛،ریال ٍ ٌ ً َ ُ ِ ّ ه آ ـ « » :"هیژواأء<>؟| :biggrin:این ها رو از پورت سریال دریافت کردم همه اش تقدیم به شما :biggrin:

      ××××××××××× فقط نیاز به یاری سبز شما دارم :smile:

      با سپاس
      http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

      دیدگاه


        #78
        پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

        سلام.بلاخره نفهمیدم درسته یا نه.چرا اون عددرو درست ارسال نکرده؟
        چون 12345 فقط روی a[0] , a[1] تاثیر داره ببینید اینا چه مقداری هستند و بقیشون صفر هستند؟ چون مقدار باینری 11000000111001 هست و توی 2 تا از 4 تا باید پر باشه .اگه این روش کامل جواب بده میتونیم همینکارو با یک متغیر استرینگ بکنیم و متن رو هم ارسال کنیم
        در ضمن متغیر های a,b رو هم کاراکتر تعریف کنید و یه امتحانی بکنید.

        دیدگاه


          #79
          پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

          نوشته اصلی توسط Soodi
          درسته ، من متغیر chra حامل عدد 65 رو با دستور sendchar ارسال می کنم و در گیرنده با دستور lcd_putchar روی LCD نمایش می دهم که کارارکتر نمایش داده شده روی LCD حرف A می باشد ، اگر لطف کنید و من رو کمک و راهنمایی کنید که چگونه به جای یک حرف ، یک کلمه رو ارسال کنم و در گیرنده حرف ها رو کنار هم بچینم و روی LCD نمایش بدهم خیلی خیلی ممنون می شوم ، اگر برنامه درست باشد می توانم در هدر اضافه کنم و با یک دستور حرف و کلمه ارسال و دریافت کنم ، و یا همون بحث ارسال عدد که اون رو هم مانند ارسال کلمه باید قسمت کرد و در گیرنده این قسمت هارو کنار هم چید تا یک عدد کامل بدست آید
          یه آرایه از نوع char به تعداد حرف های کلمت میسازی بعد دونه دونه میفرستی اونور هم میریزی تو یه آرایه دیگه از همین نوع

          دیدگاه


            #80
            پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت &#

            آخه وقتی حرف مثلا m رو توی متغیر chra قرار می دهم Keil ارور می دهد ؟؟؟؟

            برای :

            char k;
            k="m";

            میگه :

            Program.c(25): error: #513: a value of type "char *" cannot be assigned to an entity of type "char"
            Program.c(24): warning: #550-D: variable "k" was set but never used

            آقای روزیطلب این نتایج برنامه :

            الان با همون برنامه ی پست اول مقدار متغیر C برابر 10320 و مقدار متغیر b0 برابر ( هیچی ) و مقدار متغیر b1 برابر 14592 و مقدار متغیر b2 برابر j5728 و مقدار متغیر b3 برابر (هیچی) می باشد
            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

            دیدگاه


              #81
              پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

              برای اینکه احتمالا حرف m رو که میخوای بریزی "m" مینویسی و کیل ارور میگره چون باید 'm' بنویسی
              توی فرستنده هم یه lcd گذاشته بودی ببین مقدار a اونجا چقدره

              دیدگاه


                #82
                پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                سلام

                می دونید الان چی شد من با برنامه زیر کلمه ارسال و دریافت کردم ، و روی LCD مقدار اسکی هر حرف رو مشاهده کردم یعنی آرایه ی sendchar خودش یک تبدیل به اسکی داره یا شاید هم آرایه getkey اینطوریه و کد اسکی حرف رو میفرسته !!!

                فرستنده :
                char a[6];
                a[0] = 'M';
                a[1] = 'a';
                a[2] = 's';
                a[3] = 'o';
                a[4] = 'o';
                a[5] = 'd';

                while (1)
                {
                lcd_clear();
                cursor_off();
                lcd_gotoxy(1,1);
                lcd_putsf("Sending Data :"
                sendchar(a[0]);
                sendchar(a[1]);
                sendchar(a[2]);
                sendchar(a[3]);
                sendchar(a[4]);
                sendchar(a[5]);
                delay_ms(100);
                }
                }

                گیرنده :
                char a[6];

                while (1)
                {
                lcd_clear();
                cursor_off();
                a[0] = getkey();
                a[1] = getkey();
                a[2] = getkey();
                a[3] = getkey();
                a[4] = getkey();
                a[5] = getkey();
                lcd_gotoxy(1,1);
                lcd_puts(a[0]);
                lcd_gotoxy(1,5);
                lcd_puts(a[1]);
                lcd_gotoxy(1,9);
                lcd_puts(a[2]);
                lcd_gotoxy(1,13);
                lcd_puts(a[3]);
                lcd_gotoxy(2,1);
                lcd_puts(a[4]);
                lcd_gotoxy(2,5);
                lcd_puts(a[5]);
                delay_ms(100);
                }
                }

                با سپاس
                http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                دیدگاه


                  #83
                  پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                  نه اون موقع که به آرایه مقدار دهی میکردید خودش تبدیل به اسکی میکنه

                  دیدگاه


                    #84
                    پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                    خوب حالا چطوری میشه که این کد اسکی در گیرنده به حرف تبدیل کرد ؟
                    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                    دیدگاه


                      #85
                      پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                      نوشته اصلی توسط Soodi
                      خوب حالا چطوری میشه که این کد اسکی در گیرنده به حرف تبدیل کرد ؟
                      چیزی به عنوان حرف برای میکروکنترلر معنی نداره همش یه مشت 0 و 1 هست کد اسکی در واقع قراردادیه برای اینکه کدوم مقدار کدوم حرف رو نشون بده شما همین کد اسکی رو بفرست به LCD یا پورت سریال میبینی که حرف نشون میده LCD و پورت سریال فقط کد اسکی میفهمند

                      دیدگاه


                        #86
                        پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                        با سلام

                        ****** خوب حالا من می خواهم که تایپ کنم ، (توی یکجا نه توی 10 تا متغیر ) که خودش به اسکی تبدیل کنه و بفرسته و توی گیرنده این اسکی ها رو کنار هم بچینه

                        ×××××××××× با همین برنامه عدد فرستادم دیدم درست فرستاد فقط متغیر آخر رو اول می گیره یعنی عدد 123456 رو 612345 میگیره !!
                        خوب حالا این برنامه رو چطوری توی هدر جا بدم که وقتی یک عدد رو می فرستم خودش قسمت قسمت کنه و بفرسته و در گیرنده هم این قسمت ها رو کنار هم بچینه

                        ********* ولی به نظر من ما عدد رو خیلی تکه تکه کردیم ، آخه ما که تا 255 جا داریم خوب چرا مثلا عدد 400 رو 2 تا 200 نکنیم و بفرستیم به جای این که یک 4 بکنیم و دوتا 0 !!!

                        با سپاس
                        http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                        دیدگاه


                          #87
                          پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                          نوشته اصلی توسط Soodi
                          ****** خوب حالا من می خواهم که تایپ کنم ، (توی یکجا نه توی 10 تا متغیر ) که خودش به اسکی تبدیل کنه و بفرسته و توی گیرنده این اسکی ها رو کنار هم بچینه
                          باید تعریف کنی که هر کلید کدوم حرفه بعد مقدار اون قسمت از آرایه رو اون حرف قرار بدی
                          نوشته اصلی توسط Soodi
                          ×××××××××× با همین برنامه عدد فرستادم دیدم درست فرستاد فقط متغیر آخر رو اول می گیره یعنی عدد 123456 رو 612345 میگیره !!
                          خوب حالا این برنامه رو چطوری توی هدر جا بدم که وقتی یک عدد رو می فرستم خودش قسمت قسمت کنه و بفرسته و در گیرنده هم این قسمت ها رو کنار هم بچینه
                          اون قسمت هایی که فکیر میکنی خوبه رو توی یه تابع بنویس فایل کتابخونه رو باز کن اینارو توش بنویس بعد save کن
                          اون مشکل هم خودت ببین از کجا هست فکر نکنم لازم باشه توضیح بدیم
                          نوشته اصلی توسط Soodi
                          ********* ولی به نظر من ما عدد رو خیلی تکه تکه کردیم ، آخه ما که تا 255 جا داریم خوب چرا مثلا عدد 400 رو 2 تا 200 نکنیم و بفرستیم به جای این که یک 4 بکنیم و دوتا 0 !!!
                          از این روش خوشت نمیاد روش من که بود

                          دیدگاه


                            #88
                            پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                            اگه خواستی رقم هاش رو از هم جدا کنی این طوری میشه:
                            کد:
                            unsigned char x[5];
                            char z=0;
                            while (a>0)
                            {
                            x[z]=(a%10)+48;
                            a/=10;
                            z++;
                            }
                            for(;5>z>=0;z--)
                            {
                            lcd_putchar(x[z]);
                            }
                            این احتمالا کار میکنه برای گیرنده اگه این برنامه رو با قبلی ها یکی کنی و اینو بزاری توی گیرنده
                            اگر میخوای حرف و عدد رو یکجا ارسال کنی و توی گیرنده قرار نیست محاسبه ای روی اعداد انجام بشه و هدف خوندن روی LCD باشه بگو تا بگم چی کار کنی

                            دیدگاه


                              #89
                              پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                              سلام

                              نه عدد و حرف رو به صورت یکجا ارسال نمی کنم ، فقط ارسال عدد و یا ارسال کلمه مد نظر می باشد که این عدد می تواند مقدار ADC باشد و یا چیز دیگری و متن هم می تواند پیغامی باشد که توسط Master به واحد های Slave ارسال می شود

                              با سپاس
                              http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                              دیدگاه


                                #90
                                پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR

                                نوشته اصلی توسط Soodi
                                سلام

                                نه عدد و حرف رو به صورت یکجا ارسال نمی کنم ، فقط ارسال عدد و یا ارسال کلمه مد نظر می باشد که این عدد می تواند مقدار ADC باشد و یا چیز دیگری و متن هم می تواند پیغامی باشد که توسط Master به واحد های Slave ارسال می شود

                                با سپاس
                                روی عدد adc توی گیرنده میخوای محاسبه انجام بدی؟

                                دیدگاه

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