اطلاعیه

Collapse
No announcement yet.

کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی lcd

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

    کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی lcd

    سلام کسی می تونه لینک یک پروژه 8051((گرفتن ورودی از keypadونمایش به توان2 رسیده آن عدد روی lcd))معرفی کنه . :eek:یا حد اقل پیشنهاد اسمبلی آن :cry2:
    خیلی فوریه :nerd:فایل اسمبلیش رو هم چه جوری به دست بیارم. :applause:
    این فایل رو دارم که مستقیم خود عدد رو نمایش میده اما من باید چه تغییری در آن بدم تا به توان 2 رسیه آن عدد رو نمایش بده
    [left][/left[left][left]]ORG 00H
    MOV R7,#0FFH
    CALL LCD
    FIRST : CALL WAIT_OPEN
    CALL DELAY
    K1 : CALL WAIT_PRESS
    CALL DELAY
    MOV A,P3
    ANL A,#00000111B
    CJNE A,#00000111B,FIND
    SJMP K1
    FIND : CALL DELAY
    CALL ROW_SEARCH
    CJNE R7,#0FFH,EXIT1
    AGAIN : RRC A
    JNC FOUND
    INC DPTR
    JMP AGAIN
    FOUND : CLR A
    MOVC A,@A+DPTR
    CALL DATA_SEND
    EXIT1 : JMP FIRST
    ;***********************
    LCD : MOV A,#30H
    CALL COMMAND
    MOV A,#0EH
    CALL COMMAND
    MOV A,#01H
    CALL COMMAND
    ;********************
    WAIT_OPEN : MOV P3,#0FFH
    HERE : MOV P1,#00H
    MOV A,P3
    ANL A,#07H
    CJNE A,#07H,HERE
    RET
    ;**********************
    WAIT_PRESS : MOV A,P3
    ANL A,#07H
    CJNE A,#07H,NEXT
    SJMP WAIT_PRESS
    NEXT : RET
    ;*********************
    ROW_SEARCH :
    MOV P1,#11111110B
    MOV A,P3
    ANL A,#00000111B
    CJNE A,#00000111B,ROW0
    MOV P1,#11111101B
    MOV A,P3
    ANL A,#00000111B
    CJNE A,#00000111B,ROW1
    MOV P1,#11111011B
    MOV A,P3
    ANL A,#00000111B
    CJNE A,#00000111B,row2
    MOV P1,#11110111B
    MOV A,P3
    ANL A,#00000111B
    CJNE A,#000000111B,ROW3
    MOV R7,#00H
    JMP LAST
    ROW0:MOV DPTR,#KCODE0
    JMP LAST
    ROW1:MOV DPTR,#KCODE1
    JMP LAST
    ROW2:MOV DPTR,#KCODE2
    JMP LAST
    ROW3:MOV DPTR,#KCODE3
    JMP LAST
    LAST : RET
    ;***************************
    DELAY:
    MOV R2,#10
    AGAIN2: MOV R3,#250
    HERE2: DJNZ R3,HERE2
    DJNZ R2,AGAIN2
    RET
    ;*************************
    DATA_SEND : CJNE A,#01H,THERE
    CALL COMMAND
    JMP FINI
    THERE : CJNE A,#10H,SEND
    CALL COMMAND
    CALL DELAY
    MOV A,#20H
    CALL SEND
    CALL DELAY
    MOV A,#10H
    CALL COMMAND
    CALL DELAY
    JMP FINI
    SEND : CALL READY
    MOV P2,A
    SETB P0.1
    CLR P0.2
    SETB P0.0
    CLR P0.0
    FINI : RET
    ;********************
    COMMAND : CALL READY
    MOV P2,A
    CLR P0.1
    CLR P0.2
    SETB P0.0
    CLR P0.0
    RET
    ;*************
    READY:
    SETB P2.7
    CLR P0.1
    SETB P0.2
    BAK : CLR P0.0
    SETB P0.0
    JB P2.7,BAK
    RET
    ;**************
    ORG 200H
    KCODE0B 31H,32H,33H
    KCODE1B 34H,35H,36H
    KCODE2B 37H,38H,39H
    KCODE3B 01H,30H,10H
    END
    ما می توانیم.................جانها فدای ایران

    #2
    پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی lcd

    کسی نیست جواب ما رو بده تا یکشنبه لازمش دارم :surprised: :surprised: :cry2:
    ما می توانیم.................جانها فدای ایران

    دیدگاه


      #3
      پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی

      سلام

      اعداد ورودی که می خواهی به توان 2 برسونی حداکثر چند رقمی هستند؟

      حتما باید با اسمبلی نوشته بشه؟

      دیدگاه


        #4
        پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی lcd

        سلام افشین جان.
        اعداد یک رقمی باشند کافیه.در مورد زبان برنامه نویسی که گفتی نه برای من فرقی نداره ون که هیچکدوم رو حرفه ای بلد نیستم.ولی یکی از بچه ها میگه اگه با basic توی bascom 8051بنویسی خیلی راحته .اما من بلد نیستم .لطف می کنی اگه می تونی من رو راهنمایی کنی . :redface: :agree: :agree:
        اگه میتونی برنامش رو برای بزار .یه توضیح مختصری هم بده. :nice:
        ما می توانیم.................جانها فدای ایران

        دیدگاه


          #5
          پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی

          نوشته اصلی توسط ahmad1365
          سلام افشین جان.
          اعداد یک رقمی باشند کافیه.در مورد زبان برنامه نویسی که گفتی نه برای من فرقی نداره ون که هیچکدوم رو حرفه ای بلد نیستم.ولی یکی از بچه ها میگه اگه با basic توی bascom 8051بنویسی خیلی راحته .اما من بلد نیستم .لطف می کنی اگه می تونی من رو راهنمایی کنی . :redface: :agree: :agree:
          اگه میتونی برنامش رو برای بزار .یه توضیح مختصری هم بده. :nice:
          سلام.

          من این برنامه رو با اعداد دو رقمی و زبان C تا 1شنبه برات آماده می کنم.

          دیدگاه


            #6
            پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی

            سلام.

            اینم برنامه با تاخیر منفی. . . !!!!

            کار با LCD در همین سایت هست و من هم ازش استفاده کردم.

            این برنامه اعداد 1 رقمی و 2 رقمی را به توان 2 می رساند و روی LCD نشان می دهد. کلید * جهت پاک کردن LCD هست و کلید # برای دیدن نتیجه.

            در فایل زیر پرژه که با نرم افزار Keill نوشته شده و فایل پروتیوس اون (ورژن 7.2) وجود داره. :nice:

            http://www.4shared.com/file/50259945...PW_online.html

            Password : www.eca.ir

            دیدگاه


              #7
              پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی lcd

              سلام افشین جون link رو دیدم همونیه که می خواستم. :applause: :applause: :applause: :job: :wow:
              میشه بپرسم چند وقته تو کار 8051 هستی؟ :question:
              ما می توانیم.................جانها فدای ایران

              دیدگاه


                #8
                پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی

                نوشته اصلی توسط ahmad1365
                سلام افشین جون link رو دیدم همونیه که می خواستم. :applause: :applause: :applause: :job: :wow:
                میشه بپرسم چند وقته تو کار 8051 هستی؟ :question:
                سلام.

                تقریبا دیگه تو کار 8051 نیستم. 3 یا 4 سال پیش با 8051 شروع به کار کردم. همون سال شروع به یادگیری AVR کردم. الانم دارم با PIC و ARM آشنا می شم. 8051 فقط برای شروع خوبه و الان فقط در حد پروژه های دانشجویی باهاش کار می کنم.
                راستی شما می تونید با یک تغییر کوچیک توی برنامه، اعداد 3 با 4 رقمی رو هم به توان 2 برسونید. اگه خواستی بگو تا تغییرو یهت بگم.


                دیدگاه


                  #9
                  پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی lcd

                  سلام اون تغییر رو چه جوری باید بدم.برام بنویسش.بایذ تغییر رو تو sorce رنامه که به زبان c بدم وبا keilامپایلش کنم.دیگه توی برنامه lcd که تغییری نداریم.نه؟ :rolleyes: :smile:
                  ما می توانیم.................جانها فدای ایران

                  دیدگاه


                    #10
                    پاسخ : کمک : پروزه8051 برای گرفتن ورودی از keypadونمایش به توان2 رسیده آن روی

                    سلام

                    تغییرات به صورت زیر هستند که با رنگ قرمز مشخص شدن.

                    else if (in_key==12) // if EQUAL is pressed
                    {
                    cmnwrt(1); // clear LCD
                    BBB=AAA*AAA;
                    sprintf(buffera," "
                    sprintf(buffera,"%ld",BBB); // convert long type (AAA) to character type storede in an arrey (buffera)
                    for ( h=0; h<4; h++) for ( h=0; h<6; h++)
                    datawrt(buffera[h]); // write data (character) to LCD
                    AAA=0;
                    BBB=0;
                    i=0;
                    goto main1;
                    } //s

                    تغییر بعدی:

                    else if (i==1) else if (i<3)
                    {
                    AAA=AAA*10+in_key;
                    datawrt(0x30+in_key);
                    cmnwrt(6);
                    i=1; i++;
                    } //s


                    حالا واسه اینکه اعداد با ارقام بیشتر در ورودی داشته باشی، باید این بخش ها رو دوباره تغییر بدی. البته یک محدودیت هم وجود داره و اون اینه که توان دوم عدد ورودی نبایید بزرگتر از حد اکثر مقدار تعریف شده برای نوع داده LONG باشه.

                    دیدگاه

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