پژوهش: دانلود پروژه رشته برق در مورد ترموستات ديجيتالي قابل برنامه ريزي – قسمت دوم

دانلود پایان نامه

نرم افزار ترموستات

–  برنامه اصلي

$regfile = “m16def.dat”

$crystal = 1000000

Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinc.4 , Db7 = Pinc.5 , Rs = Pinc.0 , E = Pinc.1

Config Lcd = 16 * 2

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

‘*******************’

Config Pinb.0 = 0                                           ‘input

Config Pinb.1 = 0                                           ‘input

Config Pinb.2 = 0                                           ‘input

Config Pinb.3 = 0                                           ‘input

Config Pinb.4 = 1                                           ‘output

Config Pinb.5 = 1                                           ‘output

Config Pinb.6 = 1                                           ‘output

‘*******************’

Ok Alias Pinb.3

Downn Alias Pinb.2

Upp Alias Pinb.1

Change Alias Pinb.0

‘*******************’

Cursor Off

Cls

‘Lcd ” YASER HASHEMI”

‘Lowerline

‘Lcd ”  TEMP PROJECT”

‘Wait 2

Config Adc = Single , Prescaler = Auto

Dim A As Word , Maxim As Byte , Minim As Byte , Ch As Byte , Testing As Byte

شما می توانید مطالب مشابه این مطلب را با جستجو در همین سایت بخوانید                     

Dim I As Word , Bish As Byte , Kam As Byte , Kodam As Byte

Dim Maximtest As Byte , Minimtest As Byte , Jk As Byte

Bish = 0 : Kam = 0 : Kodam = 0

‘******************************************************************************’

Main:

Readeeprom Testing , 10

If Testing > 150 Then

      Goto Getfirst

    Else

      Readeeprom Maxim , 0

      Readeeprom Minim , 2

      Cls

      Lcd ”   ” ; Minim ; “<Temp<” ; “” ; Maxim

      Lowerline

      Lcd “Start     Change”

      Do

         If Ok = 0 Then

            Ddq:

            If Ok = 0 Then Goto Ddq

            Readeeprom Maxim , 0

            Readeeprom Minim , 2

            Cls

            Goto Temptest

         End If

         If Change = 0 Then

            Ddq3:

            If Change = 0 Then Goto Ddq3

            Goto Changetemp

         End If

      Loop

End If

End                                                         ‘end program

‘*****************************    Temptest    *********************************’

Temptest:

Start Adc

Do

   A = Getadc(1)

   Waitms 100

   A = A / 2

   Locate 1 , 1

   Lcd ”   Temp=” ; ” ” ; A ; “‘c”

   Select Case A

   Case Is < Minim

         Reset Portb.4 : Reset Portb.5 : Set Portb.6

         Cls

         Locate 1 , 1

         Lcd ”   Temp=” ; ” ” ; A ; “‘c”

         Lowerline

         Lcd ”      LOW”

   Case Minim To Maxim:

         Reset Portb.4 : Set Portb.5 : Reset Portb.6

         Cls

         Locate 1 , 1

         Lcd ”   Temp=” ; ” ” ; A ; “‘c”

         Lowerline

         Lcd ”     NORMAL”

   Case Is > Maxim

         Set Portb.4 : Reset Portb.5 : Reset Portb.6

         Cls

         Locate 1 , 1

         Lcd ”   Temp=” ; ” ” ; A ; “‘c”

         Lowerline

         Lcd ”      HIGH”

   End Select

   For I = 1 To 3000

       Waitms 1

       If Change = 0 Then

          Dd1:

          If Change = 0 Then Goto Dd1

          Reset Portb.4 : Reset Portb.5 : Reset Portb.6

          Goto Changetemp

       End If

   Next

   If Change = 0 Then

         Dd2:

         If Change = 0 Then Goto Dd2

         Goto Changetemp

   End If

Loop

‘*****************************   ChangeTemp   *********************************’

Changetemp:

Readeeprom Maxim , 0

Readeeprom Minim , 2

Cls

Lcd ”   ” ; Minim ; “<Temp<” ; “” ; Maxim

شما می توانید تکه های دیگری از این مطلب را در شماره بندی انتهای صفحه بخوانید              

Waitms 1500

Cls

Gosub Templcd

‘******************  MAX  ********************’

If Kodam = 0 Then

      Fgh:

      If Upp = 0 Then

          Fd:

          If Upp = 0 Then Goto Fd

          Cls

          Incr Bish

          If Bish > 100 Then : Bish = 0 : End If

          Gosub Templcd

      End If

      If Downn = 0 Then

          Fd1:

          If Downn = 0 Then Goto Fd1

          Cls

          Decr Bish

          If Bish = 255 Then : Bish = 0 : End If

          Gosub Templcd

      End If

      If Ok = 0 Then

          Fd2:

          If Ok = 0 Then Goto Fd2

          Ch = Bish : Writeeeprom Ch , 0 : Waitms 5

          Ch = Kam : Writeeeprom Ch , 2 : Waitms 5

          Kodam = 1

          Goto Dfghj

      End If

      Goto Fgh

End If

‘******************  MIN  ********************’

Dfghj:

Cls

Gosub Templcd

If Kodam = 1 Then

      Fgh1:

      If Upp = 0 Then

          Fdd:

          If Upp = 0 Then Goto Fdd

          Cls : Incr Kam

          If Kam > 100 Then : Kam = 0 : End If

          Gosub Templcd

      End If

      If Downn = 0 Then

          Fdd1:

          If Downn = 0 Then Goto Fdd1

          Cls : Decr Kam

          If Kam = 255 Then : Kam = 0 : End If

          Gosub Templcd

      End If

      If Ok = 0 Then

          Fdd2:

          If Ok = 0 Then Goto Fdd2

          Ch = Bish : Writeeeprom Ch , 0 : Waitms 5

          Ch = Kam : Writeeeprom Ch , 2 : Waitms 5

          Readeeprom Maximtest , 0

          Readeeprom Minimtest , 2

          If Minimtest > Maximtest Then

               Ch = 32 : Writeeeprom Ch , 0 : Waitms 5

               Ch = 25 : Writeeeprom Ch , 2 : Waitms 5

               Cls

               Lcd ”  Wrong Range”

               Lowerline

               Lcd ”  Min>Max ???”

                  Set Portb.4 : Set Portb.5 : Set Portb.6

                  Waitms 500

                  Reset Portb.4 : Reset Portb.5 : Reset Portb.6

                  Waitms 500

                  Set Portb.4 : Set Portb.5 : Set Portb.6

                  Waitms 500

                  Reset Portb.4 : Reset Portb.5 : Reset Portb.6

                  Waitms 500

                  Set Portb.4 : Set Portb.5 : Set Portb.6

                  Waitms 500

                  Reset Portb.4 : Reset Portb.5 : Reset Portb.6

               Cls

               Kodam = 0

               Goto Main

          End If

          If Minimtest = Maximtest Then

               Ch = 32 : Writeeeprom Ch , 0 : Waitms 5

               Ch = 25 : Writeeeprom Ch , 2 : Waitms 5

               Cls

               Lcd ”  Wrong Range”

               Lowerline

               Lcd ”  Min=Max ???”

                  Set Portb.4 : Set Portb.5 : Set Portb.6

                  Waitms 500

                  Reset Portb.4 : Reset Portb.5 : Reset Portb.6

                  Waitms 500

                  Set Portb.4 : Set Portb.5 : Set Portb.6

                  Waitms 500

                  Reset Portb.4 : Reset Portb.5 : Reset Portb.6

                  Waitms 500

                  Set Portb.4 : Set Portb.5 : Set Portb.6

                  Waitms 500

                  Reset Portb.4 : Reset Portb.5 : Reset Portb.6

               Cls

               Kodam = 0

               Goto Main

          End If

          Kodam = 0

          Ch = 120 : Writeeeprom Ch , 10 : Waitms 5

          Goto Main

      End If

      Goto Fgh1

End If

‘*****************************     Templcd    *********************************’

Templcd:

    Lcd “Maxim=” ; “” ; Bish ; ” ‘c”

    Lowerline

    Lcd “Minim=” ; “” ; Kam ; ” ‘c”

    Waitms 100

    Return

‘*****************************    getfirst    *********************************’

Getfirst:

Cls

Ch = 32 : Writeeeprom Ch , 0 : Waitms 5

Ch = 25 : Writeeeprom Ch , 2 : Waitms 5

Lcd ”   25<Temp<32″

Lowerline

Lcd “Start     Change”

Do

   If Ok = 0 Then

      Dd:

      If Ok = 0 Then Goto Dd

      Readeeprom Maxim , 0

      Readeeprom Minim , 2

      Cls

      Ch = 120 : Writeeeprom Ch , 10 : Waitms 5

      Goto Temptest

   End If

   If Change = 0 Then

      Dd3:

      If Change = 0 Then Goto Dd3

      Goto Changetemp

   End If

Loop

دستورات به كار رفته دربرنامه ترموستات :

نرم افزار ترموستات

  • معرفي ميكرو: $REGFILE=VAR
  • كريستال :$CRYSTAL=VAR

جهت مشخص كردن فركانس كريستال بهره گیری شده بر حسب هرتز

  • پيكره بندي LCD:

CONFIGLCDPIN=PIN,DN4=PN,DB5=PN,DB6=PN,DB7=PN,RS=PN

PN: پايه‌اي دلخواه از ميكرو كه پايه LCD به آن اتصال مي يابد .

  • تعيين نوع LCD: CONFIG LCD= LCD Type

تعيين ورودي و خروجي :

Config pinbo=0                       input

Config pinb4 =1                      Output

  • دستور براي تغيير نام متغير :ALIAS

DIM:‌از اين دستور براي تعريف متغيرهاي موجود در برنامه بهره گیری مي گردد .

  • دستور تعيين مكان نماي LCD: CURSORDN/OFF
  • دستور CLS: (CLEAR SCREEN)
  • اين دستور باعث مي گردد تمام صفحه نمايش LCD پاك گردد .

 دستور LCD :

 اين دستور يك يا چند عبارت ثابت يا متغيير را برروي LCD‌نمايش مي‌دهد. LCDX

  • دستور LOWER LINE:
  • اين دستور مكان نما را به خط پايين تر مي برد .
  • دستور WAIT:

 براي ايجاد تأخير در برنامه از اين دستور بهره گیری مي گردد .

CONFIG ADC= SINGLE/FREE

 براي تبديل سيگنال آنالوگ خود به ديجيتال مي توان از دو مد SINGLE , FREE بهره گیری نمود . زماني كه حد SINGLE را انتخاب مي كنيد ، بايد از دستور GET ADCC بهره گیری كنيد .

 

  • دستور REEIP EEPROM:

 READE EPROM VAR , ADRESS

 ‌توسط اين دستور محتواي EEPROM از آدرس دلخواه خوانده مي گردد و در متغير VAR از نوع داده BYTE ذخيره مي گردد .

 آدرس مي تواند يك عدد ثابت يا يك عدد متغير بسته به حافظه از نوع داده WORD‌يا BYTE باشد .

  • دستور العمل IF

در كليه حالتهاي زير عبارت Statement  مي تواند يك دستورالعمل ساده يا چند دستور العمل مركب باشد.

  • حالت O:

IF Expression Then Statement

دستورالعمل Statement‌زماني اجرا ميشود كه عبارت Expression داراي ارزشي TRUE‌باشد . حالت 1

 IF Expression Then statement 1

ELSe

statement2

End IF

‌در صورتي كه عبارت expression 1‌داراي ارزش True باشد دستورالعمل
 statement  اجرا خواهد گردید . در غير اينصورت دستور العمل statement 2 اجرا مي‌گردد .

 حالت 2:

IE Expression Thebn

 statement 1

Elseif [Expression 2 then]

statement 2

Else

statement 3

Endif

  • نرم افزار ترموستات

در صورتي كه عبارت expression1 داراي ارزش TRUE باشد دستور العمل  statement 1 اجرا خواهد گردید . در صورتي كه عبارت expression1 داراي ارزش FAlSE ولي عبارت اختياري expression2 داراي ارزش TRUE باشد دستورالعمل Statement 2 اجرا خواهد گردید . و در غير اينصورت يعني در حالتي كه هر دو عبارت expression1 , expression2 داراي ارزش FSLSE باشد دستورالعمل staternent3 اجرا خواهد گردید .

 همچنين با دستور If مي توان يك يا صفر بودن يك بيت از يك متغير را امتحان كرد.

If bit= 1T HEN or ifbit = 0 THEN

  • دستور GOTO

‌با اين دستور مي توان به بر چسب  lable پرش كرد . برچسب lable‌ بايد با علامت ((Collon پايان يابد و مي تواند تا 32 كاراكتر طول داشته باشد .

  • دستور العمل CASE:

 كنترل اجراي دستورات  يك برنامه داراي ترتيب بالا به پايين می باشد ولي در صورت نياز مي توان توسط دستور العمل انشعاب يا پرش جهت كنترل اجراي دستورات يك برنامه را تغيير داد يكي از اين دستورات SELECT- CASE می باشد كه مي توان يكي از چندين دستور را با در نظر داشتن مقدار ورودي اجرا كرد .

Select Var

Case test1:statement 1

 [CASE test2: statement 2]

CASE ELSE: Statement 3

End select

اگر متغير Var با مقدار test برابر باشد  Statement 1 اجرا مي گردد و سپس اجرا برنامه بعد از Endselect ادامه مي يابد  در غير اينصورت اگر متغير Var با مقدار Test1  برابر نباشد ولي با مقدار test 2 برابر با سبك  statement2  اجرا مي گردد و سپس اجرا برنامه بعد از End select ادامه مي يابد و نهايتاً اگر متغير Var با هيچكدام از مقادير test 2 , test 1 برابر نباشد statement 3 اجرا مي گردد و سپس اجراي برنامه بعد از End select‌ادامه مي يابد .

  • پرش به زير برنامه توسط دستور Gosub

 اين دستور به زير برنامه پرش مي كند و اجراي برنامه را از آدرس برچسب ادامه مي دهد .

Gosub lable

Label نام برچسبي زير برنامه می باشد كه به آن پرش مي گردد . توسط دستور RENTURN مي توان از SUB برگشت و اجراي برنامه بعد از دستور GOSUB‌ادامه مي يابد .

  • دستور Exit :

 با اين دستور مي توانيد فقط از يك ساختار يا حلقه خارج شويد و ادامه برنامه را بعد از ساختار يا حلقه ادامه دهيد .

  • دستور العمل For – Next

 فرم كلي دستور For next به صورت زير مي باشد.

For Var= Start To end [stepvalue]

statements

Next Var

Var به عنوان يك كانتر اقدام مي كند Start مقدار اوليه و end مقدار پاياني می باشد و هردو مي توانند يك ثابت عددي يا متغير عددي باشند . value‌مقدار عددي STEP‌(‌قدمها) را نشان مي دهد كه مي تواند مثبت و يا منفي باشد .در صورت حذف كردن Step Value كامپايلر به صورت پيش فرض مقدار يك را در نظر مي گيرد.

  • نرم افزار ترموستات

INCR Var

  • دستور INCR

 اين دستور يك واحد به متغير عددي Var مي افزايد

  • دستور DECR

DECR VAR

 اين دستور  يك واحد از متغير عددي Var كاهش مي دهد .

  • دستور – SET

توسط اين دستور ميتوان يك بيت را يك كرد .

set Bit/ Pin

Set Var.x

Bit مي تواند يك بيت و يا يك SFR مانند Portb.1 باشد و Var متغيري از نوع داده Byte Word , Integer يا Long می باشد .X براي Byte‌مي تواند  0  تا 7 ،  0 تا 15 براي Word و براي Long مي تواند 0‌تا 31 باشد.

  • دستور RESET:

 توسط اين دستور مي توان يك بيت را صفر كرد .

set Bit/ Pin

Set Var.x

Bit مي تواند يك بيت و يا يك SFR مانند Portb.1 باشد و Var متغيري از نوع داده Byte Word , Integer يا Long و X براي Byte‌مي تواند  0  تا 7 ،  0 تا 15 براي Word و براي Long مي تواند 0‌تا 31 باشد.

  • دستور العمل Do-Lood

 فرم كلي دستور Do-Lood به صورت زير مي باشد .

 Do

Statements

Lood[until expression]

‌دستورالعمل statements  تا زماني كه expression داراي ارزش True يا عنصر صفر می باشد تكرار خواهد گردید بنابراين اين نوع حلقه ، حداقل يكبار تكرار گردد ، Do-Lood به تنهايي  يك حلقه بي نهايت می باشد كه با exit do مي توان از درون حلقه خارج گردید و اجراي برنامه در خط از حلقه ادامه يابد .

  • نرم افزار ترموستات
  • دستور Locate

اين دستور مكان نما را به مكان دلخواه در صفحه LCD مي برد

Locate x,y

 x‌ثابت يا متغيري از (1-4) مشخص كننده سطر و y ثابت به متغيري از (1-64) كه مشخص كننده ستون LCD می باشد .

  • دستور Stop , Start

 توسط دستور ADC , START ADC شروع به نمونه برداري از سيگنال آنالوگ كرده و توسط Stop Adc تغذيه را از ADC قطع مي كند و اين دستور براي شروع و توقف ADC بايد نوشته گردد

  • دستور WRITEEEPROM:

WEITEEEPROM VAR, APPRESS

این نوشته در برق ارسال شده است. افزودن پیوند یکتا به علاقه‌مندی‌ها.

دیدگاهتان را بنویسید