اطلاعیه

Collapse
No announcement yet.

ساعت با استفاده از کدها

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

    ساعت با استفاده از کدها

    راستش ساعت ما با 7447 و همون طور که میدونید عدد 6 و 9 رو درست نشون نمیده و قسمت بالا و پایین رو نداره ایا میشه همینو اصلاحش کرد یا باید 7447 رو حذف کرد و با کد نوشت oo: که من بلد نیستم :cry:
    { خلاف قوانین - پاک شد }

    #2
    پاسخ : ساعت با استفاده از کدها

    7447 رو حذف کن خودت بهش کد بده
    A-Hosseini

    دیدگاه


      #3
      پاسخ : ساعت با استفاده از کدها

      http://www.eca.ir/forum2/index.php?topic=37626.0
      تو این یه برنامه برای یه مثال ساده که توش استفاده از جداول لوک پ هست

      مشکل کجاست؟
      .
      .
      .

      دیدگاه


        #4
        پاسخ : ساعت با استفاده از کدها

        راستش مشکل من اینجاست که با 1307 کار میکنم و اونم خودش کد تولید میکنه و یه dec تبدیل میکنه حالا باید قسمت getdatetime که روتینش هست رو حذف کنم یا چیزای داخلشو پاک کنم و برنامه خودمو بنویسم که این کارو کردم و جواب نداد اخه اصلا از کار میفته اگه باشن که خودش کار میکنه و کد تولید میکنه ببینین من تو روتینش همه رو جذف کردم و نوشتم
        toggle portb.4
        return
        خوب باید هر یک ثانیه این پین رو تغییر وضعیت بده ولی اصلا از کار میفته
        بهد اومدم همه رو برگردوندم سر جاش تو حلقه هم نوشتم
        portb= lookup(c,tda)
        set portc.0
        waitms 3
        .
        .
        .loop
        end
        tda:
        data,&b0110000,&b1101101,
        و الی اخر بقیه کدها
        اصلا این اعداد رو هم نشون نمیده البته این مربوط به ساعت نیست خواستم تست کنم ببینم اصلا ااین دستور کار میکنه یا نه که نکرد حالا اگه مشکلی داره راهنمایی کنین اگه هم واضح نبود تا برنامه هارو کامل بذارم :cry2:
        اصلا دیتاهارو چطوری انتخاب میکنه با چه ترتیبی زیر هم روبروی هم oo:اصلا برنامه هارو میذارم اینطوری بهتره البته برا شب میشه ضمنا از توجهتون بینهایت سپاسگذارم
        { خلاف قوانین - پاک شد }

        دیدگاه


          #5
          پاسخ : ساعت با استفاده از کدها

          بیا اینم یه برنامه که تمام کد ها رو نشون میده

          اگه خواستی فایل پروتئوس رو هم یزارم


          ' IN THE NAME OF GOD
          ' Master serial

          ' Use 7447 and 4555 ic
          '7447 ic LT(Pin3) and RBO(Pin4) Connect To (+5v) and RBI(Pin5) connect to GND
          $regfile = "M8DEF.DAT"
          $crystal = 8000000
          $baud = 9600

          Config Timer2 = Timer , Prescale = 64
          Config Portb = Output
          Enable Timer2
          On Ovf2 Ovf2flag
          Start Timer2

          Enable Serial
          On Urxc Serial_isr
          Enable Urxc



          Config Portd.4 = Output
          Config Portd.5 = Output
          Config Portd.6 = Output
          Config Portd.7 = Output

          En Alias Portd.7
          Seg Alias Portb

          Dim I As Byte
          Dim N As Byte
          Dim Bufseg As Byte
          Dim Selectdigits As Byte
          Dim Ar(17) As Byte
          Dim S As String * 1
          Dim Inn As Byte
          Dim Flag As Bit
          Dim Canal As Byte
          Dim Bytedataconvert As Byte
          Dim Slave As Byte

          Print "Saeed Bagherani"
          Print "Desing 7 Segment 8DIGIT By AVR "
          Print "Note : Please Send 8 Digit And Press Enter Key"
          Print "1387/10/18"
          Print "Start Program"
          Print
          Print "Enter A Number >>" ;

          Ar(1) = 253
          Ar(2) = 201
          Ar(3) = 17
          Ar(4) = 97
          Ar(5) = 97
          Ar(6) = 133
          Ar(7) = 253
          Ar(8) = 253

          Enable Interrupts

          Restore Dta
          Do
          Powerdown
          Idle
          Loop
          End

          '=======================
          Ovf2flag:
          Stop Timer2
          En = 1
          Selectdigits = Selectdigits + 1
          If Selectdigits = 8 Then Selectdigits = 0
          Bufseg = Ar(selectdigits + 1)
          Seg = Bufseg
          Canal = Selectdigits * 16
          For N = 4 To 7
          Portd.n = Canal.n
          Next N
          En = 0
          Start Timer2
          Return
          '=======================
          Serial_isr:
          sbis usr,7
          rjmp Serial_isr ' wait until we can read the byte
          Inn = Udr
          Select Case Inn
          Case 65 To 90
          Slave = Inn - 65
          Bytedataconvert = Lookup(slave , Dta)

          Case 48 To 57
          Slave = Inn - 22
          Bytedataconvert = Lookup(slave , Dta)

          Case Asc( "=&quot
          Bytedataconvert = 237
          Case Asc( "-&quot
          Bytedataconvert = 253
          Case Asc( "_&quot
          Bytedataconvert = 239
          Case Asc( "^&quot
          Bytedataconvert = 127
          Case Asc( "/&quot
          Bytedataconvert = 207
          Case Asc( "\&quot
          Bytedataconvert = 231
          Case Asc( "+&quot
          Bytedataconvert = 241
          Case 46 ' THIS IS DOT
          Bytedataconvert = Bytedataconvert - 1

          Case Else
          Bytedataconvert = 255

          End Select
          If Inn = 13 Then
          For I = 1 To 8 'LOAD DATA TO DISPLAY
          Ar(i) = Ar(i + 8) 'because When Press Enter Then Loade The Data
          Ar(i + 8) = 0
          Next I
          For I = 1 To 8
          Print Chr(ar(i));
          Next I
          Print " Is Sended"
          Print "Enter New Number >>" ;
          Flag = 0
          For I = 1 To 7
          If Ar(i ) = 0 And Flag = 0 Then
          Ar(i) = 255
          Else
          Flag = 1
          End If
          Next I
          Else
          If Inn = 46 Then
          Ar(16 ) = Bytedataconvert
          Else
          Ar(17 ) = Bytedataconvert
          For I = 9 To 16
          Ar(i) = Ar(i + 1) 'because When Press Enter Then Loade The Data
          Next I
          End If
          End If
          Return

          Dta:

          'IN CATODE COM.
          Data 17 , 193 , 99 , 133 , 97 , 113 , 67 , 145 , 223 , 135 , 161 , 227 , 85 , 213 , 197 , 49
          'ata Aa , Ba , Ccc , Ddd , Eee , Fff , Ggg , Hhh , Ii , Jjj , Kk , Ll , Mmm , Nn , Oo , Ppp
          Data 25 , 245 , 201 , 225 , 131 , 199 , 71 , 177 , 137 , 53 'Q-Z
          'ata QQQ , RR , SS , TT , UUU , VV , WWW , XX , YYY , ZZZ 'Q-Z
          Data 3 , 159 , 37 , 13 , 153 , 73 , 65 , 27 , 1 , 9 , 237 , 253 , 57 , 147 , 255
          'Data 0 , 111 , 22 , 33 , 444 , 55 , 66 , 77 , 8 , 9 , === , --- , Oup,||| , NUUL


          'IN ANODE COM.
          'Data 238 , 62 , 156 , 122 , 158 , 142 , 188 , 110 , 32 , 120 , 94 , 28 , 170 , 42 , 58 , 206
          ''ata Aaa , Ba , Ccc , Ddd , Eee , Fff , Ggg , Hhh , Ii , Jjj , Kk , Ll , Mmm , Nn , Oo , Ppp
          'Data 230 , 10 , 54 , 30 , 124 , 56 , 184 , 78 , 118 , 202 'Q-Z
          ''ata QQQ , RR , SS , TT , UUU , VV , WWW , XX , YYY , ZZZ 'Q-Z
          'Data 252 , 96 , 218 , 242 , 102 , 182 , 190 , 228 , 254 , 246 , 18 , 2 , 198 , 108 , 0
          ''Data 000 , 11 , 222 , 333 , 444 , 555 , 666 , 777 , 888 , 999 , == , - , Oup , || , NUUL
          اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

          دیدگاه


            #6
            پاسخ : ساعت با استفاده از کدها

            اقا دست گلت درد نکن :applause:ه راستی ببخشید که کلید تشکر رو زدم راستش تا زدم متوجه شدم و نوشدتونو خوندم oo: oo:بازم ممنون راستی اگه فایل پروتئوس رو گذاشتی که خیلی اقایی کردی حوصله تجزیه و تحلیل نداریم :redface: :mrgreen:
            { خلاف قوانین - پاک شد }

            دیدگاه


              #7
              پاسخ : ساعت با استفاده از کدها

              راستی این با سگمنت نیست که 1307هم که نداره راستش یه خورده گیج شدم این برنامه ساعته با استفاده از کد یا فقط کدهای مربوطه و مورد نیاز رو نشون میده oo: و باید از اونا برا ساعت استفاده کنیم

              ببینین این برنامه منه که دقیق داره کار میکنه و فقط 6 و 9 رو درست نشون نمیده میخوام اینو تبدیلش کنم
              $regfile = "m8def.dat"
              $crystal = 8000000

              $lib "mcsbyte.lbx" ' for smaller code
              $lib "ds1307clock.lib" ' modified lib
              $framesize = 16
              $hwstack = 24
              $swstack = 16

              Config Portb.0 = Output
              Config Portb.1 = Output
              Config Portb.2 = Output
              Config Portb.3 = Output
              Config Portb.4 = Output

              Config Pind.0 = Input
              Config Pind.1 = Input
              Config Pind.2 = Input
              Config Pind.3 = Input

              Config Portc = Output

              Config Sda = Portd.6
              Config Scl = Portd.5

              Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
              Const Ds1307r = &HD1

              Enable Interrupts

              Config Clock = User ' this will dim the bytes automatic

              Dim Weekday As Byte

              'Time$ = "2359" ' to watch the day changing value
              'Date$ = "11-13-02"

              Dim S As Byte , M As Byte , H As Byte , Ma As Word , Mlb As Byte , Sh As Byte
              Dim A As Byte , B As Byte , Mha As Word , Mla As Word , Lm As Word , Sl As Byte
              Dim Mh As Byte , Yh As Byte , Yl As Byte , Monh As Byte , Monl As Byte
              Dim Ml As Byte , Dh As Byte , Dl As Byte , Jump As Byte , Jump1 As Byte
              Dim Hh As Byte , Isrnum As Word , Isrnum1 As Byte , Yyh As Byte , Yyl As Byte , Day1 As Byte
              Dim Hl As Byte , S1 As Byte , L As Byte , L1 As Byte , Lm1 As Byte , Da As Byte
              Dim Moh As Byte , Mol As Byte , Y As Byte , Monha As Byte , Monla As Byte , Mona As Byte
              Dim Dha As Byte , Dla As Byte


              Ok Alias Pind.0
              Up Alias Pind.1
              Down Alias Pind.2
              _set Alias Pind.3

              '*************************************** start *****************************************


              Hom:


              ' 13 november 2002
              Do

              Jump1 = 0
              Stop Timer1
              Start Timer0

              Gosub Getdatetime

              Mh = _min / 10
              Ml = _min Mod 10

              Hh = _hour / 10
              Hl = _hour Mod 10

              Sh = _sec / 10
              Sl = _sec Mod 10


              Portc = &H20
              Portb = Hh
              Waitms 3

              Portc = &H10
              Portb = Hl
              Waitms 3

              Portc = 8
              Portb = Mh
              Waitms 3

              Portc = 4
              Portb = Ml
              Waitms 3

              Portc = 2
              Portb = Sh
              Waitms 3

              Portc = 1
              Portb = Sl
              Waitms 3


              Loop



              End


              'called from ds1307clock.lib
              Getdatetime:
              I2cstart ' Generate start code
              I2cwbyte Ds1307w ' send address
              I2cwbyte 0 ' start address in 1307

              I2cstart ' Generate start code
              I2cwbyte Ds1307r ' send address
              I2crbyte _sec , Ack
              I2crbyte _min , Ack ' MINUTES
              I2crbyte _hour , Ack ' Hours
              I2crbyte Weekday , Ack ' Day of Week
              I2crbyte _day , Ack ' Day of Month
              I2crbyte _month , Ack ' Month of Year
              I2crbyte _year , Nack ' Year
              I2cstop

              _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
              _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)

              Return

              برنامه با با درگاه سریاله :question:میشه لطفا بیشتر در موردش توضیح بدین
              { خلاف قوانین - پاک شد }

              دیدگاه


                #8
                پاسخ : ساعت با استفاده از کدها

                بیا اینم کل فایل هاش

                http://www.4shared.com/file/250688170/dfedfa31/7Segment_8DIG_SHOW_ALL_DATA.html




                اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

                دیدگاه


                  #9
                  پاسخ : ساعت با استفاده از کدها

                  راستی این با سگمنت نیست که 1307هم که نداره راستش یه خورده گیج شدم این برنامه ساعته با استفاده از کد یا فقط کدهای مربوطه و مورد نیاز رو نشون میده oo: و باید از اونا برا ساعت استفاده کنیم

                  ببینین این برنامه منه که دقیق داره کار میکنه و فقط 6 و 9 رو درست نشون نمیده میخوام اینو تبدیلش کنم
                  $regfile = "m8def.dat"
                  $crystal = 8000000

                  $lib "mcsbyte.lbx" ' for smaller code
                  $lib "ds1307clock.lib" ' modified lib
                  $framesize = 16
                  $hwstack = 24
                  $swstack = 16

                  Config Portb.0 = Output
                  Config Portb.1 = Output
                  Config Portb.2 = Output
                  Config Portb.3 = Output
                  Config Portb.4 = Output

                  Config Pind.0 = Input
                  Config Pind.1 = Input
                  Config Pind.2 = Input
                  Config Pind.3 = Input

                  Config Portc = Output

                  Config Sda = Portd.6
                  Config Scl = Portd.5

                  Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
                  Const Ds1307r = &HD1

                  Enable Interrupts

                  Config Clock = User ' this will dim the bytes automatic

                  Dim Weekday As Byte

                  'Time$ = "2359" ' to watch the day changing value
                  'Date$ = "11-13-02"

                  Dim S As Byte , M As Byte , H As Byte , Ma As Word , Mlb As Byte , Sh As Byte
                  Dim A As Byte , B As Byte , Mha As Word , Mla As Word , Lm As Word , Sl As Byte
                  Dim Mh As Byte , Yh As Byte , Yl As Byte , Monh As Byte , Monl As Byte
                  Dim Ml As Byte , Dh As Byte , Dl As Byte , Jump As Byte , Jump1 As Byte
                  Dim Hh As Byte , Isrnum As Word , Isrnum1 As Byte , Yyh As Byte , Yyl As Byte , Day1 As Byte
                  Dim Hl As Byte , S1 As Byte , L As Byte , L1 As Byte , Lm1 As Byte , Da As Byte
                  Dim Moh As Byte , Mol As Byte , Y As Byte , Monha As Byte , Monla As Byte , Mona As Byte
                  Dim Dha As Byte , Dla As Byte


                  Ok Alias Pind.0
                  Up Alias Pind.1
                  Down Alias Pind.2
                  _set Alias Pind.3

                  '*************************************** start *****************************************


                  Hom:


                  ' 13 november 2002
                  Do

                  Jump1 = 0
                  Stop Timer1
                  Start Timer0

                  Gosub Getdatetime

                  Mh = _min / 10
                  Ml = _min Mod 10

                  Hh = _hour / 10
                  Hl = _hour Mod 10

                  Sh = _sec / 10
                  Sl = _sec Mod 10


                  Portc = &H20
                  Portb = Hh
                  Waitms 3

                  Portc = &H10
                  Portb = Hl
                  Waitms 3

                  Portc = 8
                  Portb = Mh
                  Waitms 3

                  Portc = 4
                  Portb = Ml
                  Waitms 3

                  Portc = 2
                  Portb = Sh
                  Waitms 3

                  Portc = 1
                  Portb = Sl
                  Waitms 3


                  Loop



                  End


                  'called from ds1307clock.lib
                  Getdatetime:
                  I2cstart ' Generate start code
                  I2cwbyte Ds1307w ' send address
                  I2cwbyte 0 ' start address in 1307

                  I2cstart ' Generate start code
                  I2cwbyte Ds1307r ' send address
                  I2crbyte _sec , Ack
                  I2crbyte _min , Ack ' MINUTES
                  I2crbyte _hour , Ack ' Hours
                  I2crbyte Weekday , Ack ' Day of Week
                  I2crbyte _day , Ack ' Day of Month
                  I2crbyte _month , Ack ' Month of Year
                  I2crbyte _year , Nack ' Year
                  I2cstop

                  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
                  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)

                  Return

                  برنامه با با درگاه سریاله :question:میشه لطفا بیشتر در موردش توضیح بدین
                  { خلاف قوانین - پاک شد }

                  دیدگاه


                    #10
                    پاسخ : ساعت با استفاده از کدها

                    من با C کد مینویسم و کد سگمنت رو انجوری نوشتم ببین اگه به دردت میخوره بیشتر توضیح بدم .

                    کد:
                    //----------- BCD To Segment ----------
                    void bcd_to_seg (char no){
                    if(no==0){PORTA=0x04;}
                    if(no==1){PORTA=0x14;}
                    if(no==2){PORTA=0x05;}
                    if(no==3){PORTA=0x15;}
                    if(no==4){PORTA=0x06;}
                    if(no==5){PORTA=0x16;}
                    if(no==6){PORTA=0x07;}
                    if(no==7){PORTA=0x17;}
                    if(no==8){PORTA=0x0c;}
                    if(no==9){PORTA=0x1c;}}
                    //-------------------------------------
                    پورت سریال هم کاری نداره اگه بخای اونم بهت میگم ، البته ن فقط C بلدم
                    A-Hosseini

                    دیدگاه


                      #11
                      پاسخ : ساعت با استفاده از کدها

                      ممنون ولی من بیسیک کار میکنم البته با تشکر از شما فکر کنم بااین راهنماییتون متوجه شدم ممنون از برنامه تون راستش وقتی داشتم جوابتونو مینوشتم یهو یادم افتاد و متوجه برنامتون شدم خیلی عالیه :wow: :wow: :applause: :nice:متوجه شدم همین کارو میکنم
                      { خلاف قوانین - پاک شد }

                      دیدگاه


                        #12
                        پاسخ : ساعت با استفاده از کدها

                        خواهش
                        A-Hosseini

                        دیدگاه


                          #13
                          پاسخ : ساعت با استفاده از کدها

                          راستی یه سوال غیر مرتبط این عکس کنار چجوری گذاشتی منم میخوام بذارم ولی نمیدونم چطوری و این نوشته های پایین هم oo:
                          { خلاف قوانین - پاک شد }

                          دیدگاه


                            #14
                            پاسخ : ساعت با استفاده از کدها

                            نوشته اصلی توسط r-el
                            راستش ساعت ما با 7447 و همون طور که میدونید عدد 6 و 9 رو درست نشون نمیده و قسمت بالا و پایین رو نداره ایا میشه همینو اصلاحش کرد یا باید 7447 رو حذف کرد و با کد نوشت oo: که من بلد نیستم :cry:
                            دوست من از 74247 استفاده کن برای آند
                            74248 برای کاتد
                            بالا تر از 9 هم بهش بدی حروف aتا f رو برات مینویسه

                            دیدگاه


                              #15
                              پاسخ : ساعت با استفاده از کدها

                              نوشته اصلی توسط r-el
                              راستی یه سوال غیر مرتبط این عکس کنار چجوری گذاشتی منم میخوام بذارم ولی نمیدونم چطوری و این نوشته های پایین هم oo:
                              همه اونارو تو تنظیمات میتونی درست کنی :biggrin:
                              A-Hosseini

                              دیدگاه

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