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

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

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

–  برنامه اصلی

$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

  • محتوای متغیر VAR در آدرس حافظه EEPROM‌ داخلی نوشته می شود . بعد از دستور WRITEEEPROM‌با توجه VCC‌باید 5-4ms تأخیر ایجاد كنید تا عملیات نوشتن تكمیل شود . آدرس می تواند یك عدد ثابت یا متغیر بسته به حافظه از نوع داده word‌یا BYTE باشد .
  • پایان برنامه END

 این دستور در انتهای برنامه قرار می گیرد و اجرای برنامه را متوقف می كند ، با دستور END تمام وقفه ها غیر فعال شده و یك حلقه بی نهایت تولید و برنامه خاتمه می یابد.

برای دیدن قسمت های دیگر این تحقیق لطفا” از منوی جستجوی سایت که در قسمت بالا قرار دارد استفاده کنید. یا از منوی سایت، فایل های دسته بندی رشته مورد نظر خود را ببینید.

با فرمت ورد

Leave a comment