اطلاعیه

Collapse
No announcement yet.

خاموش کردن اتوماتیک نور پشت زمینه LCD

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

    #16
    پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

    وحید نصیری
    با تشکر . ولی این برنامه رو که زحمتشو کشیدی می خوام با برنامه اصلی تلفیق بشه . یعنی این کنترل خاموش روشن شدن تو دل برنامه باشه . همون که اول تایپیک نوشتم .

    دیدگاه


      #17
      پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

      کاری نداره که دایی

      تو به ازای هر تعداد کلید که داری و در هر جای برنامه قرار دادی یه دستور call بزار و خط زیر رو هم توش قرار بده:
      If Sw = 0 Then
      Waitms 50 : Set L1 : A = 0 : End If

      مثلا کلید افزایش دقیقه توی ساعت:
      1- زیر برنامه ای که 2 خط بالا توشه بخون
      2- به دقیقه یکی اضافه کن( یا هر کار دیگه ای)

      بدرود. . .


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

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

      دیدگاه


        #18
        پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

        برای شمایی که برنامه نویسی رو واردی آسونه . لطف کن این دستوری که میگی توی برنامه که در اول تایپیک گفتم قراربده ممنون oo:

        دیدگاه


          #19
          پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

          مشکل از این بسکامه . دستور Debounce باید به لبه حساس باشه که نیست و وقتی 0 هست با دستور Debounce Pind.0 , 0 , Khamosh , Sub زیر برنامه Khamosh به طور مکرر اجرا میشه و Lcd_bl_flag رو 0 میکنه که باعث میشه روشن بمونه . این بستگی به برنامت داره که میخوای چیکار کنی ولی BackLight باید حساس به لبه باشه که من برات این برنامه رو نوشتم . بقیشو خودت میدونی . راستی توی پروتوئوس هم تست کردم کار کرد ولی از مشکلات بزرگ این شبیه ساز اینه که مدار رو در زمان واقعی اجرا نمیکنه . بخاطر همین من زمان روشن موندن رو کم کردم ولی اگه میخوای روی خود میکرو پروگرمش کنی باید Lcd_bl_delay رو که من فعلا 10 گذاشتم به همون 458 برگردونی : Back Light هم به پرت B.2 وصل هست که اگه میخوای میتونی اونو عوض کنی .

          این برنامه مثل یه مونواستابل retriggerable هست .
          $regfile = "M8def.dat"
          $crystal = 8000000
          '458 = ((8000000/1024/256)*15)
          Lcd_bl_delay Alias 10 '458
          'the pin number that is connectet to the Backlight of lcd . for example PORTB.0
          Lcd_bl_port Alias Portb.2
          Config Portb.2 = Output


          Config Pind.0 = Input
          Config Pind.1 = Input
          Config Portb.0 = Output
          Config Portb.6 = Output
          Config Portb.7 = Output
          Config Debounce = 30
          Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , _
          Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
          Config Lcd = 16 * 2
          Cls
          Cursor Off

          'Config The Timer0 as a timer
          Config Timer0 = Timer , Prescale = 1024
          Enable Interrupts
          Enable Ovf0
          On Timer0 Lcd_bl_control
          Start Timer0

          'The variables
          Dim Lcd_bl_flag As Long , Sw1_flag As Bit , Sw2_flag As Bit
          Lcd_bl_flag = Lcd_bl_delay + 1

          Locate 1 , 4
          Lcd "DESIGN OF"
          Waitms 150
          Home L
          Locate 2 , 1
          Lcd "ALI REZA"
          Waitms 400
          Cls
          Locate 1 , 5
          Lcd "PELIKAN"
          Locate 2 , 4
          Lcd "Ref . Sys"
          Waitms 400
          Cls
          Locate 1 , 3
          Lcd "TIMER 500 ms"
          Locate 2 , 5
          Lcd "ver:3.0"
          Waitms 400
          Cls
          Do

          Debounce Pind.0 , 0 , Khamosh , Sub
          Debounce Pind.0 , 1 , Roshan , Sub
          Debounce Pind.1 , 1 , Bemetal1 , Sub

          Loop

          End


          Roshan:

          Locate 1 , 4
          Lcd "TIMER RUN"
          Waitms 20
          Set Portb.6
          Waitms 50
          Set Portb.7
          Return


          Khamosh:

          Reset Portb.6
          Reset Portb.7
          Locate 1 , 4
          Lcd "TIMER OFF"
          Return


          Bemetal1:

          Set Portb.0
          Waitms 100
          Reset Portb.0
          Home L
          Lcd "desConnect Shunt"
          Return

          'Timer Overflow Sub
          Lcd_bl_control:

          If Pind.0 = 0 And Sw1_flag = 1 Then Lcd_bl_flag = 0 'Reset the timer counter
          If Pind.0 = 1 And Sw1_flag = 0 Then Lcd_bl_flag = 0 'Reset the timer counter
          If Pind.1 = 1 And Sw2_flag = 0 Then Lcd_bl_flag = 0 'Reset the timer counter

          Sw1_flag = Pind.0
          Sw2_flag = Pind.1

          If Lcd_bl_flag > Lcd_bl_delay Then
          Lcd_bl_port = 0
          Else
          Lcd_bl_port = 1
          Incr Lcd_bl_flag
          End If
          Timer0 = 0
          Return

          بعد از آشنایی اولیه با AVR حتما برنامه هات رو با C بنویس
          فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)

          دیدگاه


            #20
            پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

            باسلام.
            باتشکر از شما AlirezaT که زحمت برنامه رو کشیدی برنامه رو تست کردم ok بود فقط یه سوال داشتم که برنامه رو که اجرا میکنی , زمانی. backligh روشن میشه و عمل میکنه که برنامه ورژن و نام برنامه نویس رو بدون روشن backlight انجام میده حالامیخوام بپرسم آیا میشه برنامه رو جوری تغییر داد که از زمانی که دستگاه به برق زده میشود backlight روشن شه تا 15 ثانیه که زمان نمایش ورژن و برنامه نویس هست بعد بقیه برنامه که درسته.

            دیدگاه


              #21
              پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

              سلام

              بهتر این بود که از یک تایمر در مد نرمال استفاده می کردین برای این کار.
              به این صورت در صورت فشرده شدن یک کلید مثلا یک متغییر رو ست می کردین و در تایمر میدیدن که اون متغییر ست شده بک لایت LCDتونو روشن می کردین و 15 ثانیه بعد تو کد نوشته شده برای تایمرتون بک لایت LCD تونو خاموش می کردین و اون متغییر رو پاک می کردین.

              مسئله یک جزئیاتی هم خواهد داشت ،اونم این که سر رسز تایمرتون رو نمی تونید به مدت 15 ثانیه با کلاک 8MHz ست کنید پس در کد سر ریز تایمر نیاز به یک شمارنده داریم که تعداد سر رسز هارو بشماره و با مقدار فعلی شمارنده و زمان هر سر ریز می تونید 15 ثانیه تاخیر رو بسازین.

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

              حالا حتما می پرسین این همه کار برای چی است؟ خوب در برنامه های بزرگ و وابسته به زمان نمی شود به همین سادگی delay در برنامه گذاشت اونهم تاخیر های زیاد و برای بک لایت یک LCD

              موفق باشد.
              http://www.eDev.ir

              دیدگاه


                #22
                پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

                کافیه توی اول برنامه به جای این خط :

                'The variables
                Dim Lcd_bl_flag As Long , Sw1_flag As Bit , Sw2_flag As Bit
                Lcd_bl_flag = Lcd_bl_delay + 1
                این خط رو جایگزین کنی :
                Lcd_bl_flag = 0

                - این برنامه با تایمر نوشته شده نه با delay .درضمن همونطور که گفتم retriggerable هست ، یعنی اگر کلیدی در زمان روشن بودن دوباره تغییر وضعیت بده ، 15 ثانیه دوباره تمدید میشه .
                فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)

                دیدگاه


                  #23
                  پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

                  نوشته اصلی توسط AlirezaT
                  مشکل از این بسکامه . دستور Debounce باید به لبه حساس باشه که نیست و وقتی 0 هست با دستور Debounce Pind.0 , 0 , Khamosh , Sub زیر برنامه Khamosh به طور مکرر اجرا میشه و Lcd_bl_flag رو 0 میکنه که باعث میشه روشن بمونه .
                  بعد از آشنایی اولیه با AVR حتما برنامه هات رو با C بنویس
                  ما که چند سالی هست با این دستور کار میکنیم همچین مشکلی ندیدیم!
                  پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

                  دیدگاه


                    #24
                    پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

                    والا منم قبلنا که با بسکام برنامه هامو مینوشتم این مشکل رو نداشتم ولی نمیدونم چرا حالا توی شبیه ساز خود بسکام و پروتئوس این مشکل هست .
                    یا مشکل از شبیه سازه یا از ورژن جدید بسکام !!!؟؟؟؟؟
                    فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)

                    دیدگاه


                      #25
                      پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

                      من خودم شده که با پروتیوس کار می کردم تو مدارم lcd کار نمی کرد بعد که همون برنامه رو پروگرام کردم روی برد اصلی کار کرد تقریبا پروتیوس 1 روز منو سرکار گذاشته بود. (البته مزایایی زیادی داره ولی بعضی مواقع ....)
                      تو این جهان 7 میلیاردی من معنی ندارد و اگه تو این دنیا فقط 1 نفر وجود داشت باز هم من معنی نداشت

                      دیدگاه


                        #26
                        پاسخ : خاموش کردن اتوماتیک نور پشت زمینه LCD

                        خیلی ممنون از شما AlirezaT
                        انجمن خوبیه , یکی از بهترین دلیلهای جذب کاربران توسط این انجمن اینه که به سوالات زود پاسخ داده میشه.
                        با تشکر از مدیران محترم سایت

                        دیدگاه

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