اطلاعیه

Collapse
No announcement yet.

برنامه میکرو 8051

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

    برنامه میکرو 8051

    سلام . لطفا به من در برنامه نویسی میکرو کمک کنید . و برایم برنامه های زیر را بگویید .
    اول :4دانشجوداریم که هر کدام 4درس دارند و عدل آنها را در جایی ذخیره شده. حال چنان برنامه ای بنویسید که اگر بر فرض مثال شماره 3را به میکرو وارد کردیم بررسی کند که دانشجوی اول نمرهای ثبت شده دارد یانه .اگر دارد معدل آن را نشان دهد و اگرنمرهای ندارد منتظر بماند تا نمره ای در آن ثبت نماید و در این حالت مثلا پورت یک از سه را روشن کند .
    دوم : برنامه ای برای تبدیل bcd به hex و برعکس .
    کمک کنید تا روز یکشنبه برای تحویل این برنامه ها بیشتر وقت ندارم . :sad:

    "هنگامي كه دري از خوشبختي به روي ما بسته ميشود ، دري ديگر باز مي شود ولي ما اغلب چنان به دربسته چشم مي دوزيم كه درهاي باز را نمي بينيم." هلن کلر

    #2
    پاسخ : برنامه میکرو 8051

    سلام
    جالبه..... یه نفر دیگه هم توی قسمت 8051 همین سوال رو با همین جملات و همین کلمات پرسیده!!!! http://www.eca.ir/forum2/index.php/topic,7098.0.html :exclaim: :icon_razz:
    شما اگر در خواستتونو یک جا، یا صد جا مطرح کنین هیچ فرقی نمیکنه! اگه قرار باشه کسی کمک کنه ،درخواست شما هر جا باشه حتما کمک میکنه.
    بگذریم.........
    -------------------------------------------------------------------------------------------------------------------------------------
    در مورد پروژه هاتون چند تا سوال داشتم:
    پروژه اول باید EEPROM داشته باشه؟
    اطلاعات باید روی LCD نمایش داده بشه؟
    منظورتون از تبدیل BCD به HEX چیه؟
    در مورد پروژه دوم من اینطور فهمیدم : باید میکرو رو طوری برنامه ریزی کنیم که از چهار تا پین عدد رو در فرمت BCD بگیره و متناظر با اون یکی از 16 پایه خروجی (F - 0) رو روشن کنه.درسته؟

    لطفا به این سوالها جواب بدین تا بعد بریم سر برنامش.

    دیدگاه


      #3
      پاسخ : برنامه میکرو 8051

      سلام . البته باید ببخشید بابت مطرح کردن سئوال در چند جای سایت ،من تازه وارد هستم و ناشی .
      برنامه من به eeprom و lcd نیازی ندارد. تنها مسئله مهم همان است که میکرو درک کند که دانشجوی مد نظر نمره ای دارد یا نه ؟ اگر دارد معدل را نمایش دهد و اگر ندارد پورت هفت از سه را یک کند .
      در مورد پرژه بعدی هم منظورم تبدیل اعداد bcd به hex بوده است .
      باز هم ممنونم :sad:
      "هنگامي كه دري از خوشبختي به روي ما بسته ميشود ، دري ديگر باز مي شود ولي ما اغلب چنان به دربسته چشم مي دوزيم كه درهاي باز را نمي بينيم." هلن کلر

      دیدگاه


        #4
        پاسخ : برنامه میکرو 8051

        سلام
        در مورد پروژه اول: خوب بالاخره اطلاعات باید یه جوری به میکرو داده بشه دیگه! همینجوری با دو تا دکمه و یه LED که نمیشه . مثلاً اسم دانشجو ها و نمره ها رو چجوری باید وارد کنیم یا چجوری معدل رو نشون بدیم؟!
        بدون EEPROM هم بعد از هر بار خاموش کردن اطلاعات از بین میره. حالا EEPROM هیچی! ولی کیبرد و LCD باید باشه دیگه!

        در رابطه با پروژه دوم هم کد زیر رو ببینید.
        کد BCD رو به پینهای P1.0 تا P1.3 میدیم ، معادل هگزادسیمال اون روی پورتهای P2 و P3 قرارمیگیره. توی پروتیوس مدارشو ببندید و امتحان کنید.

        ORG 00H

        MOV P1,#0FFH
        MOV P2,#0FFH
        MOV P3,#0FFH

        LOOP: MOV P1,#0FFH
        MOV A,P1
        ANL A,#0FH
        MOV R0,A
        MOV DPTR,#HVALUE
        MOVC A,@A+DPTR
        CJNE R0,#07H,LOBYTE
        MOV P2,A
        MOV P3,#00H
        JMP LOOP
        LOBYTE: JNC HIBYTE
        MOV P2,A
        MOV P3,#00H
        JMP LOOP
        HIBYTE: MOV P2,#00H
        MOV P3,A
        JMP LOOP
        ;********************************
        HVALUE: DB 1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128
        END




        دیدگاه


          #5
          پاسخ : برنامه میکرو 8051

          ممنونم . من خودم برنامه اول را با دستورات mov, and, call , cjne نوشتم . منتها نمیدانم چطور معدل را در پورت خروجی بیاورم . من تازه میکرو گرفتم و تا بخش 6که پورتها باشد بیشتر نمی دانم . لطفا کمکم کنید با هر روشی که می دانید با معلومات من می شود انجام داد . کمکم کنید .
          مرسی :sad:
          "هنگامي كه دري از خوشبختي به روي ما بسته ميشود ، دري ديگر باز مي شود ولي ما اغلب چنان به دربسته چشم مي دوزيم كه درهاي باز را نمي بينيم." هلن کلر

          دیدگاه


            #6
            پاسخ : برنامه میکرو 8051

            شما برنامه ای که خودتون نوشتین رو بذارید تا من بدونم رابط کاربر شما چیه؟ شما چجور قطعات ورودی خروجی استفاده کردید؟
            من یه نمونه با کیبرد و السیدی نوشتم ولی فعلاً ناقصه. شما دقیقا بگین ارتباط با بیرون باید چجوری باشه تا ببینیم چی میشه.

            راستی در مورد کد قبلی که گذاشتم چیزی نگفتید! به درد میخوره یا نه؟ اصلاً نگاهش کردین؟!
            برنامه ی قبلی که گذاشتم فقط BCD رو به HEX تبدیل میکنه . برعکسش هم بزودی راه اندازی میشه!

            فعلاً

            دیدگاه


              #7
              پاسخ : برنامه میکرو 8051

              سلام و بابت همه چیز ممنون .
              چیزی که از برنامه bcd به hex نفهمیدم در دستور movc بود که آنچه در aو dptr است را جمع می کند و محتوای آن حافظه را به درون a می برد و در این قسمت معلوم نیست که dptr از چه عددی شروع می شود و البته فکر می کنم که باید برای اعداد از 1تا 9 که در bcd و hex مثل هم می باشد شرطی بگذاریم . لطفا در مورد برنامه کمی توضیح بدهید .
              اما در مورد برنامه دانشجو ها من برنامه ای به صورت زیر در نظر گرفتم به صورت زیر می باشد و البته پر از عیب.
              Org0000
              Mov p1,#offh
              Mov a,p1
              Mov 30 h , a
              Call dellay
              Mov a, p1
              Mov 31h, a
              Call dellay
              Mov a, p1
              Mov 32h, a
              Call dellay
              Mov a,p1
              Mov 33h, a
              Mov r0,#4
              Mov r1,30h
              Clr a
              Back: add a, @r1
              Inc r1
              Djnz r0, back
              Da a
              Mov b, #4
              Div ab
              Mov r1, a
              Mov a,b
              Movb,#4
              Div ab
              چطور باید این خارج قسمت جدید را در کنار خارج قسمت قبل بیاوریم
              ************************************************** *************
              ئخر ح1و#خببا
              باید به پورت یک عدد یک که مربوط به دانشجوی اول است داده شود
              Mov r0,#0
              Mov r1,30h
              Cjne @r1,#00h,l-1
              l-1:inc r0
              inc r1
              cjne @r1, #0h, l-2
              l-2:inc r0
              inc r1
              cjne @r1, #0h,l-3
              l-3:incr0
              incr1
              cjne @r1,#oh,l-4
              l-4:cjne r0,#3, l-5
              اینجا باید معدل دو بایتی در خروجی قرار گیرد که نتوانستم دستوری پیدا کنم.
              l-5: mov p1.3, #ofh
              ************************************************** *******
              Dellay:mov r5,#offh
              Again: djnz r5,again
              Ret
              وهمین طور برای هر سه دانشجوی دیگر و.......
              End
              لطفا آنچه که نوشتم را بررسی کنید و عیوب آن را به من بگویید و اگر خیلی افتضاح است برنامه ی خودتان را با توضیح به من بدهید . ممنون
              می شوم .

              مرسی :sad:
              "هنگامي كه دري از خوشبختي به روي ما بسته ميشود ، دري ديگر باز مي شود ولي ما اغلب چنان به دربسته چشم مي دوزيم كه درهاي باز را نمي بينيم." هلن کلر

              دیدگاه


                #8
                پاسخ : برنامه میکرو 8051

                سلام
                میدونید مشکل چیه؟ من منظور شما رو متوجه نمیشم و شما هم کد من رو! من هنوز نفهمیدم منظور شما از تبدیل BCD به HEX چیه؟ وقتی هم ازتون میپرسم میگید(( تبدیل BCD به HEX )) !!
                اصولاً با توجه به چیزی که شما میگید منظور شما باید همونی باشه که من گرفتم. شما دیتاشیت یا مدل شبیه سازی شده پروتیوس آیسی های 7442 , 74145 رو ببینید. اینها برای تبدیل BCD به دسیمال هستند.

                در مورد برنامه قبلی من: DPTR یک رجیستر 16 بیتی است که من در اینجا از آن برای آدرس دهی Lookup Table (که با دستور DB نوشته شده و در ROM قرار دارد) استفاده کردم.
                دستور MOV DPTR,#HVALUE آدرس بایت اول Lookup Table با برچسب HVALUE را در DPTR می ریزد.
                حالا ما مقدار عدد ورودی از پورت 1 را که در فرمت BCD بوده با آدرس بایت اول Lookup Table جمع میکنیم و الگویی که خروجی باید به آن شکل در بیاید بدست میاید. (MOVC A,@A+DPTR)
                به جز 0 و 1 هیچ اعدادی در مبنای دو (BCD) و شانزده (HEX) مثل هم نیستند.
                ------------------------------------------------------------------------------------------
                در مورد برنامه دانشجو ها: من هنوز کد شما رو دقیق نخوندم . ظاهراً مشکل خاصی نداره منتها کامل نیست. ولی به نظرم اینطوری به درد نمیخوره. شما از کاربر می خواهید عدد رو بصورت باینری به میکرو بده؟؟!!
                به قول یکی از بچه محلا " اصلاً اینترفیس جالبی نمیده" ! برنامه شما باید User Friendly باشه.
                ------------------------------------------------------------------------------------------
                در هر صورت سعی میکنم تا بعد از ظهر تکمیل کنم بذارم .

                دیدگاه


                  #9
                  پاسخ : برنامه میکرو 8051

                  سلام . ببخشید که دائم با سولاتم شما را اذیت می کنم . منظور من از تبدیل اعدادbcd به hex مثل همان تبدیل اعداد از دهدهی به دودویی است من خودم فکر می کنم باید برناه ای بنویسم که اعداد را از bcd به دهدهی ببردو بعد به hex ببرد . اما در مورد دانشجوها گفتم که اطلاعاتم خیلی کم است وآن برنامه را با توجه به معلوماتم نوشتم .خواهش می کنم به من زودتر جواب برنامه دانشجوها را بدهید واقعا عجله دارم .
                  مرسی :sad:
                  "هنگامي كه دري از خوشبختي به روي ما بسته ميشود ، دري ديگر باز مي شود ولي ما اغلب چنان به دربسته چشم مي دوزيم كه درهاي باز را نمي بينيم." هلن کلر

                  دیدگاه


                    #10
                    پاسخ : برنامه میکرو 8051

                    سلام.
                    ببخشید بی مقدمه وارد بحثتون میشم. به یه مطلبی اشاره کردید در مورد تبدیل مبنای اعداد، ببینید در میکرو همه چیز در مبنای 2 ذخیره میشه شما وقتی در مبنا 10 میخونید یا 16 این شمایید که این تبدیل رو انجام میدید و اگر نه توی میکرو همواره در مبنای 2 هست علت اینکه از مبنای 16 استفاده میشه چون خوندنش راحتر هست و جمع و جور تر نوشته میشه و به راحتی قابل تبدیل به منبای 2 هست.

                    ولی اعداد BCD فرق میکنن در اعدادی که به صورت BCDآ‌ ذخیره شدن هر عدد 2 رقم داره هر رقمش در یک چهار بیت ذخیره میشه. 2 تاش کنار همدیگه میشه یه عدد 2 رقمی. مثلا اگه آرایش بیت ها اینطوری باشه 00010001 این عدد رو اگه در مبنای 16 بخونیم میشه 11h . اگه در مبنای 10 بخونیم میشه 17 اگه به صورت BCD بخونیم میشه عدد 11 در مبنای 10. شما باید بدونید این عدد رو در چه حالتی ذخیره کردید BCD یا غیر BCD ولی در تمام این حالت آرایش بیت ها مشابه هست .
                    موفق باشید.
                    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                    هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                    چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                    دیدگاه


                      #11
                      پاسخ : برنامه میکرو 8051

                      مجدداً سلام
                      ببخشید که دیر شد. :redface: یه کاری واسم پیش اومد.
                      ولی عوضش برنامه رو تکمیل کردم. به نظر خودم که خوب شده. هم LCD داره هم EEPROM .
                      باگهاش رو هم تا حد امکان تصحیح کردم.مثلا کاربر نمیتونه اعداد بیشتر از بیست وارد کنه و تا وقتی همه ی نمره ها تکمیل نشده باشه معدل محاسبه نمیشه.
                      فقط یه عیب داره و اونم اینکه اعداد ورودی باید صحیح باشن ولی معدل تا دو رقم اعشار حساب میشه. وقت نداشتم و الا اونم درستش میکردم.
                      از این لینک میتونین دانلودش کنین:    http://www.4shared.com/file/14139511/f03c833b/AVG1.html
                      این هم یه تصویر از فلوچارت برنامه :(کلیک کنید)

                      اگه مشکلی داشت بگین. بازم از این که دیر شد شرمندم.

                      راستی آخرش معلوم نشد شما hamid kalantari هستید  یا فرزانه؟!

                      دیدگاه


                        #12
                        پاسخ : برنامه میکرو 8051

                        اینم برنامه تبدیل BCD به هگز و بالعکس: http://www.4shared.com/file/14183442/ded9d86/BCDHEX.html

                        برای اینکه مشکلی پیش نیاد از یه لچ استفاده کردم چون پورتها بصورت دوطرفه متقابل استفاده شدند.
                        برای دیدن شماتیک مدار کلیک کنید.

                        فعلاً

                        دیدگاه


                          #13
                          پاسخ : برنامه میکرو 8051

                          سلام . بسیار بسیار ممنونم واقعا کمک کردید وازاینکه وقتتان را برای کمک به من قرار دادید ممنون هستم . راستش به خاطر کارت دیر connect شدنوزود زود قطع شدن اینترنت نتوانستم تا حالا برنامه شما را دان لود کنم وبعد از این می خواهم برنامه داده شده از طرف شما را بخوانم .وحالا می خواستم از شما درخواست کنم که این برنامه را بخوانید و بگویید می شود توسط یک دیپ سوئئچ 4 پایه عددی را به 8051 وارد کرد و خروجی آن را در سون سگمنت دید .
                          org 0
                          mov dptr,#300h
                          mov a,#OFF
                          mov p1,a
                          back: mov a,p1
                          movc a,@a+dptr
                          mov p2,a
                          sjmp back

                          org 300h
                          DB 11111100d,01100000,11011010,11110010,01100110,1011 0110,10111110,11100000,11111110,11110110,11101111
                          11111111,10011101,11111101,10011111,10001111
                          مرسی

                          :sad:
                          "هنگامي كه دري از خوشبختي به روي ما بسته ميشود ، دري ديگر باز مي شود ولي ما اغلب چنان به دربسته چشم مي دوزيم كه درهاي باز را نمي بينيم." هلن کلر

                          دیدگاه


                            #14
                            پاسخ : برنامه میکرو 8051

                            نوشته اصلی توسط فرزانه2
                            وحالا می خواستم از شما درخواست کنم که این برنامه را بخوانید و بگویید می شود توسط یک دیپ سوئئچ 4 پایه عددی را به 8051 وارد کرد و خروجی آن را در سون سگمنت دید .
                            بله میشود!
                            برنامه ای که گذاشتید درسته و عیبی نداره.
                            فقط توی Lookup Table بعد از اون اعداد حرف B یادتون نره.
                            همچنین الگوی حرفهای B و C رو باید بصورت حروف کوچیک یعنی b و c بنویسید چون در غیر اینصورت با اعداد 8 و 0 اشتباه گرفته میشن.

                            دیدگاه


                              #15
                              پاسخ : برنامه میکرو 8051

                              سلام .
                              بابت همه چیز ممنونم
                              اما باز هم برنامه ای دارم و به کمک شما نیازمندم .
                              برنامه یک کورنومتر ساعت دار است .
                              خودم برنامه زیر را نوشته ام اما به درستی آ شک دارم لطفا آن را بخوانید و بگویید آیا با این برنامه می شود یک کورنومتر ساعت دار ساخت یا نه .
                              ORG 0000
                              MOV TMOD ,#0110B
                              MOV R1,#60
                              MOV R2,#0
                              MOV R3,#0
                              H: SETB P3.5
                              BACK:SETB TR0
                              MOV A,TL0
                              MOV P0,A
                              DJNZ R1,BACK
                              INC R2
                              MOV P1,R2
                              L: JNB TF0,L
                              CLR TR0
                              CLR TF0
                              SJMP H
                              CJNE R2,#60,H
                              INC R3
                              MOV P2,R3
                              SJMP H
                              CJNE R3,#24,H
                              HERE:SJMP HERE
                              مرسی
                              :sad:
                              "هنگامي كه دري از خوشبختي به روي ما بسته ميشود ، دري ديگر باز مي شود ولي ما اغلب چنان به دربسته چشم مي دوزيم كه درهاي باز را نمي بينيم." هلن کلر

                              دیدگاه

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