ايران ويج

نسخه‌ی کامل: تایمر با بسکام-تورو خدا کمممک
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
پروژه ام تایمر با بسکامه به این صورت که سه تا رله داشته باشیم
و واسه هر رله بشه سه تا زمان روشن خاموش تنظیم کرد
من یه برنامه دارم که ساعته با ای سی DS1307 اما نمیدونم واسه تایمرا چطور منو بسازم
اونم اینطور باشه که مثلا اگر دکمه منو رو زدیم ال سی دی بنویسه شماره تایمرو وارد کنید و ما با 2 دکمه UP و DOWN از 1 تا 9 تایمرو انتخاب کنیم و بعد مثلا دکمه OK رو بزنیم و وارد تنظیماته اون تایمر بشیم و زمان شروع و پایانه وصل بودنشو تنظیم کنیم
تایمرها 9 تا برای 3 تا رله.یعنی هرکدوم 3 تا
دوستان اگه میتونید تورو خدا کمک کنید زیاد وقت ندارم
مررررررررررسی پیشاپیش
اینم برنامه ایه که من دارم

کد:
'Download from WWW.PICPARS.COM
$regfile = "m8def.dat"
$crystal = 1000000
'------------------------  lcd -----------------------------------------------
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Pind.0 , E = Pind.1 , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = Pind.5
Cls

'---------------------------  ds 1307 -----------------------------------------
$lib "ds1307clock.lib"
'configure the scl and sda pins
Config Sda = Portd.7
Config Scl = Portd.6
'address of ds1307
Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
Const Ds1307r = &HD1
'------------------------------ key --------------------------------------------
Config Pinc.1 = Input
Key_menu Alias Pinc.1
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
'------------------------------------------------------------------------------
Config Debounce = 30

Dim A As Byte , B As Byte , Data1 As Byte , C As Byte

Dim Seco As Byte , Mine As Byte , Hour As Byte


Dim S As Byte


'----------------------------------------------------------------------------
Cursor Off


Cls
'-------------------------------------------------------------------------------
Main:
Do
         Gosub Ds1307
         Gosub Disply_24
         Gosub Chekkey

'For Conter1 = 1 To 40000

   If Pinc.1 = 0 Then

      Waitms 100

      If Key_menu = 0 Then
         Cls
         Locate 1 , 1
         Lcd "     MENU "
         Wait 1
          Cls

         Gosub Menu
      End If

   Waitus 10

End If

'Next


Loop
'-------------------------------------------------------------------------------
Ds1307:
        I2cstart                                            ' Generate start code
        I2cwbyte Ds1307w                                    ' send address
        I2cwbyte 0                                          ' start address in 1307
        I2cstart                                            ' Generate start code
        I2cwbyte Ds1307r                                    ' send address
        I2crbyte Seco , Ack                                 'sec
        I2crbyte Mine , Ack                                 ' MINUTES
        I2crbyte Hour , Nack                                ' Hours
        I2cstop

        Seco = Makedec(seco) : Mine = Makedec(mine) : Hour = Makedec(hour)

        If Seco > 59 Then Seco = 0
        If Mine > 59 Then Mine = 0
        If Hour > 23 Then
        Hour = 0

        End If

Return
'-------------------------------------------------------------------------------

Disply_24:

         Locate 1 , 1
         Lcd "Time = " ; Hour ; ":" ; Mine ; ":" ; Seco ; "      "

Return

'-------------------------------------------------------------------------------

Chekkey:

         Debounce Pinc.2 , 0 , Minute , Sub
         Debounce Pinc.3 , 0 , Hours , Sub
         Debounce Pinc.4 , 0 , Menu , Sub

Return
'---------------------------------------------

'-------------------------------------
Minute:
         Incr Mine
         If Mine > 59 Then Mine = 0
         Mine = Makebcd(mine)
         I2cstart                                           ' Generate start code
         I2cwbyte Ds1307w                                   ' send address
         I2cwbyte 1                                         ' starting address in 1307
         I2cwbyte Mine
         I2cstop
Return
'-------------------------------------

Hours:
         Incr Hour
         If Hour > 23 Then Hour = 0
         Hour = Makebcd(hour)
         I2cstart                                           ' Generate start code
         I2cwbyte Ds1307w                                   ' send address
         I2cwbyte 2                                         ' starting address in 1307
         I2cwbyte Hour
         I2cstop

Return
'-------------------------------------
Menu:
Locate 1 , 1
Lcd "INT TIMER NUM"
Locate 2 , 1
Lcd "NUMBER =" ; S ;
S = 0
If Pinc.4 = 0 Then Incr S

S = S + 1

If S > 9 Then S = 0
Wait 4
If S = 0 Then Cls

Return
(۰۳-آذر-۱۳۹۳, ۱۸:۴۵:۲۵)alirezaa2 نوشته است: [ -> ]تایمرها 9 تا برای 3 تا رله.یعنی هرکدوم 3 تا

سلام
این یعنی چی؟


شما خودتون تا کجا پیش رفتین؟ صحبتی از اینکه کجا مشکل دارید نکردین! فایل شبیه سازتونم بزارید
(۰۳-آذر-۱۳۹۳, ۲۰:۲۵:۵۰)Ambassador نوشته است: [ -> ]
(۰۳-آذر-۱۳۹۳, ۱۸:۴۵:۲۵)alirezaa2 نوشته است: [ -> ]تایمرها 9 تا برای 3 تا رله.یعنی هرکدوم 3 تا

سلام
این یعنی چی؟


شما خودتون تا کجا پیش رفتین؟ صحبتی از اینکه کجا مشکل دارید نکردین! فایل شبیه سازتونم بزارید

یعنی همون که بالا گفته بودم حواسم نبود دوباره تکرار کردم
(به این صورت که سه تا رله داشته باشیم
و واسه هر رله بشه سه تا زمان روشن خاموش تنظیم کرد)
من فقط ساعتشو دارم و مشکلم ساخت MENU هستش .
تنظیماته ساعت با MINUTEو HOUR انجام بشه که الانم همینجوره
تو شبیه ساز میخوام وقتی دکمه MENU زده شد رو ال سی دی شماره تایمرو بخواد بعد با UPوDOWNکه اینجا همون MINUTEو HOUR هستند شماره رو از 1 تا 9 بخواد (سه تایمر اول به طور پیشفرض برای رله اول و به همین ترتیب تا رله سوم ) و بعد از زدن دکمه OK وارد محل تنظیم زمان قطع و وصل مورد نظرمون بشه مثلا اینطوری S 00:00-E 00:00 و با هر بار زدن دکمه منو تو این مرحله به ترتیب یکیشون چشمک بزنه و بشه با UPوDOWN تنظیمش کرد و اخرشم OK رو بزنیم و والسلام.یجورم باشه که تو صفحه اصلی (خط دوم ال سی دی زیره ساعت اصلی )معلوم بشه که کدوم رله در حالته اماده باش هستش عااالی میشه
رله هارو هم رو هر پایه خالی که بود بزارید فرقی نداره- و اینکه برنامه نویسیم در حد مبتدیه :(
ببخشید سرتونو درد اوردم - مرررسی