اطلاعیه

Collapse
No announcement yet.

مشکل من در ماشین حساب

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

    مشکل من در ماشین حساب

    سلام دوستان
    من یه ماشین حساب ساختم که الان یه مشکل داره اینکه اطلاعات میکرو رو نمی تونه بخونه به این صورت که lcd روشن میشه ولی چیزی نشون نمیده
    اینم مدار تو پروتئوس:
    http://eshahriary.persiangig.com/other/Calculator-advance.DSN
    اینم برنامه اش:
    کد:
    '+++++++++++++++++++++++++ shoroe"e barname ++++++++++++++++++++++++++++++++++++
    $regfile = "m16def.dat"
    $crystal = 1000000
    '+++++++++++++++++++++++++ tarif LCD +++++++++++++++++++++++++++++++++++++++++++
    Config Lcdpin = Pin Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.5 , E = Pinb.0 , Rs = Pinb.1
    Config Lcd = 16 * 2
    '+++++++++++++++++++++++++ moshakhasat +++++++++++++++++++++++++++++++++++++++++
    Lcd " bename khoda "
    Locate 2 , 1
    Lcd "ehsan shahriary"
    Wait 3
    Cls
    Locate 1 , 3
    Lcd "emam khomini"
    Locate 2 , 6
    Lcd "qaen"
    Wait 3
    Cls
    '+++++++++++++++++++++++++ tarif motaghaier ++++++++++++++++++++++++++++++++++++
    Config Kbd = Portc , Debounce = 50 , Delay = 50
    
    'VAR Calculator Advance
     Config Portd.0 = Input
     Sh Alias Pind.0
     Dim Shft As Bit
     Dim Op3 As Byte
    'Calculator Advance
    
      Dim Key As Byte , A As Byte , B As Byte , S As Bit , N As Bit
      Dim Op As String * 1 , Op2 As String * 1
      Dim K As Byte , Ans As Single , F1 As Single , F2 As Single , F3 As Single
      Dim In1(8) As Byte , I1 As Byte
      Dim In2(8) As Byte , I2 As Byte , Stn(9) As Long
     Stn(1) = 1 : Stn(2) = 10 : Stn(3) = 100 : Stn(4) = 1000 : Stn(5) = 10000
     Stn(6) = 100000 : Stn(7) = 1000000 : Stn(8) = 10000000
    
    '+++++++++++++++++++++++ mani program ++++++++++++++++++++++++++++++++++++++++++
    
    Cursor Noblink
    Start_new:
     Cursor Off
     I1 = 0 : I2 = 0 : S = 0 : N = 0 : Shft = 0
     Cls : Locate 2 , 1 : Lcd "0"
    
     Do
       Op = ""
       Gosub Set_number1
       If S = 1 Then Goto Start_new
       If Shft = 1 Then Gosub Cal_fun
       Cls
       Gosub Set_number2
       If S = 1 Then Goto Start_new
       Gosub Functions
       Cls
       Locate 1 , 1 : Lcd "ANS="
       Locate 2 , 1 : Lcd Ans
    
      Do
      K = Getkbd()
      Loop Until K <> 16
      Goto Start_new
     Loop
    
    End                             'end program
    
    '+++++++++++++++++++++++ Function SIN COS SQR ... ++++++++++++++++++++++++++++++
    Cal_fun:
         Cls
                 Lcd "1=SIN2=COS3=TAN"
         Locate 2 , 1 : Lcd "4=LOG5=ATN6=SQR"
         Shft = 0 : I1 = 0 : I2 = 0 : S = 0 : N = 0
         Gosub Keypad : Op3 = Key
         Cls
         Gosub Set_number1
    
      Select Case Op3
         Case 1:
          Ans = Sin(f1)
          Cls : Lcd "SIN " ; F1 ; " ="
          Locate 2 , 1 : Lcd Ans
    
         Case 2:
          Ans = Cos(f1)
          Cls : Lcd "COS " ; F1 ; " ="
          Locate 2 , 1 : Lcd Ans
         Case 3:
          Ans = Tan(f1)
          Cls : Lcd "TAN " ; F1 ; " ="
          Locate 2 , 1 : Lcd Ans
         Case 4:
          Ans = Log(f1)
          Cls : Lcd "LOG " ; F1 ; " ="
          Locate 2 , 1 : Lcd Ans
         Case 5:
          Ans = Atn(f1)
          Cls : Lcd "ATN " ; F1 ; " ="
          Locate 2 , 1 : Lcd Ans
         Case 6:
          Ans = Sqr(f1)
          Cls : Lcd "SQR" ; F1 ; " ="
          Locate 2 , 1 : Lcd Ans
      End Select
    
      Do
      K = Getkbd()
      Loop Until K <> 16
      Goto Start_new
    
    Return
    
    '+++++++++++++++++++++++ 4 Function ++++++++++++++++++++++++++++++++++++++++++++
    Functions:
     If Op2 = "+" Then Ans = F1 + F2
     If Op2 = "-" Then Ans = F1 - F2
     If Op2 = "*" Then Ans = F1 * F2
     If Op2 = "/" Then Ans = F1 / F2
    Return
    
    '+++++++++++++++++++++++ Functions +++++++++++++++++++++++++++++++++++++++++++++
     Keypad:
     Do
       K = Getkbd()
       If Sh = 0 Then
        Shft = 1 : Waitms 100
        Return
       End If
       Select Case K
         Case 7 : Key = 0
         Case 2 : Key = 7
         Case 6 : Key = 8
         Case 10 : Key = 9
         Case 1 : Key = 4
         Case 5 : Key = 5
         Case 9 : Key = 6
         Case 0 : Key = 1
         Case 4 : Key = 2
         Case 8 : Key = 3
         Case 3 :
         Op = "c"
         Case 11 :
         Op = "="
         Case 12 :
         Op = "+"
         Case 13 :
         Op = "-"
         Case 14 :
         Op = "*"
         Case 15 :
         Op = "/"
       End Select
     Loop Until K <> 16
    
      Do
      K = Getkbd()
      Loop Until K = 16
      K = 0
    
     Return
    
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     Set_number1:
     I1 = 0 : F3 = 0 : F1 = 0
     Locate 1 , 1
      Do
       Gosub Keypad
        If Shft = 1 Then Return
        If Ans = 0 And Op = "-" And N = 0 Then
        N = 1 : Op = ""
        Locate 1 , 1 : Lcd "-"
        Goto End_action
        End If
           If I1 = 0 Then
            If Op = "+" Or Op = "-" Or Op = "/" Or Op = "*" Then
            F1 = Ans
            Goto No_c
            End If
           End If
        If Op = "c" Then
        S = 1
        Cls
        Goto No_c
        End If
    
        If Op = "+" Or Op = "-" Or Op = "/" Or Op = "*" Or Op = "=" Then Goto Lable1
       If I1 < 8 Then
         Incr I1
         In1(i1) = Key
         Lcd In1(i1)
       End If
    End_action:
      Loop
    
    Lable1:
        B = I1
         For A = 1 To B Step 1
          F3 = In1(a) * Stn(i1)
          F1 = F1 + F3
          Decr I1
         Next
         If N = 1 Then F1 = F1 * -1
         N = 0
    
    No_c:
     Op2 = Op
     If Op = "=" Then Op2 = ""
     Return
    
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     Set_number2:
     I2 = 0 : F3 = 0 : F2 = 0 : Op = ""
     Locate 1 , 1
     Lcd F1 ; Op2
      Do
       Gosub Keypad
        If Op = "c" Then
        S = 1
        Cls
        Goto No_c2
        End If
    
        If Op = "+" Or Op = "-" Or Op = "/" Or Op = "*" Or Op = "=" Then Goto Lable2
       If I2 < 8 Then
         Incr I2
         In2(i2) = Key
         Lcd In2(i2)
       End If
    
      Loop
    
    Lable2:
        B = I2
         For A = 1 To B Step 1
          F3 = In2(a) * Stn(i2)
          F2 = F2 + F3
          Decr I2
         Next
    No_c2:
     Return
    اساتید یه نگاه بندازن ببینن برای اینکه کدار عملا جواب بده باید چیکار کنم چون تو پرتئوس جواب میده ؟؟؟؟
    اینم بگم که من دقیقا همین طوری که تو پرتطوس هستش بستم
    پایه های 10 و 11 و 30 و 31 و 32 میکرو رو وصل کردم (تغذیه)
    پایه ای کیپد رو با مقاومتی که گفته وصل کردم
    *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
    http://electerodl.ir/forum

    #2
    پاسخ : مشکل من در ماشین حساب

    فیوز بیتای میکرو درسته
    پایه 3 LCD رو زمین کردی؟
    دودمانم بر باد رفت

    دیدگاه


      #3
      پاسخ : مشکل من در ماشین حساب

      فیوزبیتاش درسته .
      پایه 3 رو وصل نکرده بودم به زمین . :mrgreen:
      وصلش کردم یه چندتا خونه سیاه نشون میده.
      حالا چیکار کنم؟؟/؟
      *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
      http://electerodl.ir/forum

      دیدگاه


        #4
        پاسخ : مشکل من در ماشین حساب

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

        دیدگاه


          #5
          پاسخ : مشکل من در ماشین حساب

          سلام.
          پایه 3 ال سی دی رو مستقیم زمین نکن،با یه مقاومت 2.7k یا همین حدودا زمین کن احتمالا درست بشه،چون منم یه بار این مشکلو داشتم

          دیدگاه


            #6
            پاسخ : مشکل من در ماشین حساب

            مرسی ابوالفاضل جان
            مشکلم حل شد پایه 3 رو بزمین وصل کردم یه اتصالی خیلی کوچیک که به چشم دیده نمی شد داشت .

            ممنون از همتون
            *****عيب جامعه اين است که همه مي خواند آدم مهمي باشند ولي هيچ کس نمي خواهد فرد مفيدي باشد.*****
            http://electerodl.ir/forum

            دیدگاه

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