اطلاعیه

Collapse
No announcement yet.

نمایش دو عدد روی سون سگمنت

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

    نمایش دو عدد روی سون سگمنت

    سلام دوستان
    یه برنامه به زبان بیسیک میخوام که عدد خوانده شده از پورت a را روی دو تا سون سگمنت به صورت دسیمال نمایش بده
    شرمنده مزاحم شدم برنامه را امشب میخوام فردا باید تحویل بدم کسی میتونه کمک کنه
    پورت c هم خروجی باشه
    اکتیو لو
    q=0سون سگمنت فعال
    q=1 سون سگمنت غیر فعال
    A=pinA
    B=MAKEBCD(A) thnx
    شکل:
    http://up2.iranblog.com/images/xk6xeupth85l45m9f69.jpg

    www.3ax.in

    #2
    پاسخ : نمایش دو عدد روی سون سگمنت

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



    کد:
    $regfile = "m16def.dat"
    $crystal = 8000000
    '----------------------
    Ddra = &H00
    Ddrb = &HFF
    Ddrd = &H0F
    '-----------------------------------------
    Config Timer0 = Timer , Prescale = 8
    Stop Timer0
    Tcnt0 = 6
    Enable Ovf0
    On Ovf0 T0
    Enable Interrupts
    Start Timer0
    '--------------------------------------
    Dim A(8) As Byte , Pin_temp As Byte , B As Single , Temp(3) As Single
    Dim F1 As Word , F2 As String * 16 , R(3) As Byte , L As Byte
    '--------initial value---------------
    Portb = &HC0
    Portd = &H80
    '-------------------------------------
    Do
    '---------------------------------------------
    Pin_temp = Pina
    '---B : quantity of 7segment------------------
    B = Pin_temp
    Gosub Aashar
    Gosub Column
    Loop
    End                             'end program
    '-----------------------------------
    T0:
    Tcnt0 = 6
    Rotate Portd , Left
    Portb = Lookup(a(portd) , Table)
    If Portd = &H10 Then Portd = &H80
    Return
    '---------------------------------
    Table:
    Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90_
         , &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H00 , &H10
    '-------------
    Column:
    '--------A(1) TO A(8) : calculate columns of 7segment------
    Temp(1) = B / 1000
    A(1) = Fix(temp(1))
    Temp(2) = A(1) * 1000
    A(1) = A(1) + R(1)
    B = B - Temp(2)
    '..................
    Temp(1) = B / 100
    A(2) = Fix(temp(1))
    Temp(2) = A(2) * 100
    A(2) = A(2) + R(2)
    B = B - Temp(2)
    '..................
    Temp(1) = B / 10
    A(4) = Fix(temp(1))
    Temp(2) = A(4) * 10
    A(4) = A(4) + R(3)
    B = B - Temp(2)
    '...............
    A(8) = B
    Return
    '----------------------------------
    Aashar:
    F1 = Round(b)
    F2 = Str(f1)
    L = Len(f2)
    Select Case L
    Case 0:
    B = B * 10000
    Case 1:
    B = B * 1000 : R(1) = 10 : R(2) = 0 : R(3) = 0
    Case 2:
    B = B * 100 : R(1) = 0 : R(2) = 10 : R(3) = 0
    Case 3:
    B = B * 10 : R(1) = 0 : R(2) = 0 : R(3) = 10
    End Select
    Return

    دیدگاه


      #3
      پاسخ : نمایش دو عدد روی سون سگمنت

      سلام
      نه ممنون
      فقط همون
      www.3ax.in

      دیدگاه


        #4
        پاسخ : نمایش دو عدد روی سون سگمنت

        با درود . . .
        در صورتی که بخواهید کل یک پورت رو بخونید احتیاج به 3 عدد سون سگمنت خواهید داشت، چون پورت 8 بیتی میباشد.
        منظورتون رو هم از اکتیو لو و q0 , q1 متوجه نشدم.
        در کل میشه انجامش داد. منتها باید ابتدا قضایای بالا رو مشخص کنید.

        موفق باشید
        درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

        به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
        بدرود . . .

        دیدگاه


          #5
          پاسخ : نمایش دو عدد روی سون سگمنت

          نوشته اصلی توسط وحید نصیری
          با درود . . .
          در صورتی که بخواهید کل یک پورت رو بخونید احتیاج به 3 عدد سون سگمنت خواهید داشت، چون پورت 8 بیتی میباشد.
          منظورتون رو هم از اکتیو لو و q0 , q1 متوجه نشدم.
          در کل میشه انجامش داد. منتها باید ابتدا قضایای بالا رو مشخص کنید.

          موفق باشید
          ُسلام
          نه با دو تا سون سگمنت میخوام همانطور که توی عکس هست.
          اکتیو لو یعنی 1 بدیم به سون سگمنت خاموش باشه 0 بدیم روشن بشه هر کارکتر
          اگر Q را صفر بدیم سون سگمن فعال باشه و اگه 1 بدیم غیر فعال باشه سون سگمنت
          www.3ax.in

          دیدگاه


            #6
            پاسخ : نمایش دو عدد روی سون سگمنت

            منظور از سون سگمنت رو فهمیدم. ما در سون سگمنت ها مفاهیم آند مشترک و کاتد مشترک رو داریم و از اصطلاح کاتد مشترک و آند مشترک استفاده میشه.

            نوشته اصلی توسط download2
            اکتیو لو یعنی 1 بدیم به سون سگمنت خاموش باشه 0 بدیم روشن بشه هر کارکتر
            اگر Q را صفر بدیم سون سگمن فعال باشه و اگه 1 بدیم غیر فعال باشه سون سگمنت
            چنین چیزی غیر ممکن است! در صورتی که q با 1 فعال شود به سگمنت ها حتما 0 اعمال شود و برعکس.

            در صورتی که بخواهید از دو سون سگمنت استفاده کنید تنها میتوانید 100 عدد را پوشش دهید! (0 تا 99) و ممکن است در ازای عدد 123 بر روی پورت ، روی سون سگمنت دری وری مشاهده شود.

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


            کد:
            $regfile = "m8535.dat"
            $crystal = 1000000
            
            Ddrb.0 = 1 : Pinb.0 = 0
            Config Porta = Output
            
            Dim A As Byte
            
            Do
            
               If Pinb.0 = 1 Then
                  Porta = 1
                  Waitms 100
                  For A = 1 To 7
                   Rotate Porta , Left
                   Waitms 100
                  Next
            
                  For A = 1 To 7
                   Rotate Porta , Right
                   Waitms 100
                  Next
               End If
               Porta = 0
            
            Loop
            
            End
            درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

            به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
            بدرود . . .

            دیدگاه


              #7
              پاسخ : نمایش دو عدد روی سون سگمنت

              q با 1 غیر فعال میشه
              برای سون سگمنتها باید از دستور Makebcd برای تبدیل bcd به دسیمال باید استفاده کرد بعدش هم باید از دستور lookup و فکر کنم rotate هم بخواهد
              برای یه دونه سون سگمنت برنامش اینجوریه میشه:
              do
              a=pina
              portc=lookup(A,table1)
              waitms100
              loop
              end
              table1:
              data &b11000000 ......

              اون دستور ها را نخوندیم همون که نوشتم فکر میکنم درسته
              www.3ax.in

              دیدگاه


                #8
                پاسخ : نمایش دو عدد روی سون سگمنت

                نوشته اصلی توسط download2
                q با 1 غیر فعال میشه

                اون دستور ها را نخوندیم همون که نوشتم فکر میکنم درسته
                :biggrin:
                ببین دوست عزیز سون سگمنت در حقیقت 7 تا ال ای دی هستش که یک سر همه به هم وصل شده و همون q رو تشکیل میده. بسته به مد کاری ما از آند مشترک و یا کاتد مشتک استفاده میکنیم. در صورتی که قرار باشه q صفر باشه تا سون سگمنت راه بیفته یعنی اینکه از نوع کاتد مشترک هست و این یعنی شما باید با سایر پایه ها که سگمنت ها رو تشکیل دادند 1 رو اعمال کنید تا ال ای دی متناظر با هر کدوم روشن بشه! در صورتی که شما میگید اکتیو لو باید باشه!!!! بهتره یکبار دیگه صورت مسئله ای رو که بهتون دادند بخونید. چون یک جا رو دارید اشتباه میگید! و یا شاید هم من دارم اشتباه میگم!

                تمامی این دستورات در داخل هلپ بسکام موجوده و حتما نباید به شما آموزشش بدن. میتونید همینو یاد بگیرید و ببرید و بگید که تونستید جلوتر از سطح کلاس حرکت کنید تا استادتون هم بفهمه که خودتون علاقه دارید که یاد بگیرید نه اینکه صرفا حفظ کنید!

                برای نمایش سون سگمنت ها هم میتونید از این استفاده کنید:
                توی 5 دقیقه نوشته شده و بدون اشکال هم کار میکنه. خودتون میتونید به راحتی تغییرش بدید و مورد دلخواه رو ازش بسازید. منتها همون قضیه اعداد بالاتر از 99 توش صادقه و دری وری نشون میده:
                http://dc390.4shared.com/download/PrNgWdTT/port_99.rar?tsid=20111124-213324-56850dc7

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



                درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

                به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                بدرود . . .

                دیدگاه


                  #9
                  پاسخ : نمایش دو عدد روی سون سگمنت

                  یادم رفت که بگم!
                  در داخل برنامه و در قسمت نمایش کد زیر نوشته شده:
                  B = Not B
                  چون نمیدونستم دقیقا منظورتون کدام نوع سون سگمنت هست بر پایه آند مشترک نوشتمش و این خطها رو قرار دادم تا با کاتد مشترک کار کنه، در صورتی که نوع آند مشترک رو استفاده کردید این 2 خط رو پاک کنید.
                  نوع و فرکانس میکرو هم میتونید در صورت نیاز تغییر بدید که در اینجا نیازی احساس نمیشود.

                  موفق باشید
                  درد من تنهایی نیست؛ بلكه مرگ ملتی است كه گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حكمت خداوند می‏ نامند! "گاندی"

                  به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
                  بدرود . . .

                  دیدگاه


                    #10
                    پاسخ : پاسخ : نمایش دو عدد روی سون سگمنت

                    نوشته اصلی توسط وحید نصیری
                    :biggrin:
                    ببین دوست عزیز سون سگمنت در حقیقت 7 تا ال ای دی هستش که یک سر همه به هم وصل شده و همون q رو تشکیل میده. بسته به مد کاری ما از آند مشترک و یا کاتد مشترک استفاده میکنیم. در صورتی که قرار باشه q صفر باشه تا سون سگمنت راه بیفته یعنی اینکه از نوع کاتد مشترک هست و این یعنی شما باید با سایر پایه ها که سگمنت ها رو تشکیل دادند 1 رو اعمال کنید تا ال ای دی متناظر با هر کدوم روشن بشه! در صورتی که شما میگید اکتیو لو باید باشه!!!! بهتره یکبار دیگه صورت مسئله ای رو که بهتون دادند بخونید. چون یک جا رو دارید اشتباه میگید! و یا شاید هم من دارم اشتباه میگم!

                    تمامی این دستورات در داخل هلپ بسکام موجوده و حتما نباید به شما آموزشش بدن. میتونید همینو یاد بگیرید و ببرید و بگید که تونستید جلوتر از سطح کلاس حرکت کنید تا استادتون هم بفهمه که خودتون علاقه دارید که یاد بگیرید نه اینکه صرفا حفظ کنید!

                    برای نمایش سون سگمنت ها هم میتونید از این استفاده کنید:
                    توی 5 دقیقه نوشته شده و بدون اشکال هم کار میکنه. خودتون میتونید به راحتی تغییرش بدید و مورد دلخواه رو ازش بسازید. منتها همون قضیه اعداد بالاتر از 99 توش صادقه و دری وری نشون میده:
                    http://dc390.4shared.com/download/PrNgWdTT/port_99.rar?tsid=20111124-213324-56850dc7

                    بهتره برای اینکه از صحت برنامتون مطمئن شید با پروتئوس شبیه سازیش کنید.
                    موفق باشید
                    سلام
                    احتمالا استاد اشتباه کرده توی صورت مساله
                    اگه اکتیو لو باشه و q=1سون سگمنت فعال q=0 سون سگمنت غیر فعال باشه
                    این برنامه درسته؟
                    اگه نه کسی میتونه با این دستورات برنامشو درست کنه
                    a=15
                    do
                    a=makebcd(a)
                    b=a and 00001111
                    c=a and 11110000
                    shift c,right,4
                    portc=lookup (b,data1)
                    waitms 100
                    portc=lookup(c,data1)
                    waitms 100
                    loop
                    data1:
                    www.3ax.in

                    دیدگاه


                      #11
                      پاسخ : نمایش دو عدد روی سون سگمنت

                      کسی بلد نیست؟!
                      www.3ax.in

                      دیدگاه

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