رفتن به مطلب

چطور میتونم 6تا سون سگمنت کاتد مشترک کوچک رو برنامه نویسی رفرش کنم


gmaissam

ارسال های توصیه شده

سلام

چطور میتونم 6تا سون سگمنت کاتد مشترک کوچک رو برنامه نویسی رفرش کنم

این سگمنتها با ایسی7448 به میکرو اتصال دارنن درواقع 4پایه یک پورت اشغال میشه ،،منها برنامه نویسیشو بلد نیستم کسی میتونه کمک کنه؟؟؟

این میکرو ساعت دیجیتال با کمک 1307 هست

لینک به دیدگاه

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

 

 

 

 

$regfile = "m32def.dat"

$crystal = 11059200

$lib "ds1307clock.lib"

'------------------------ 7segment -----------------------------------------------

Config Portb = Output

Config Portc.2 = Output

Config Portc.3 = Output

Config Portc.4 = Output

Config Portc.5 = Output

'------------------------ ds 1307 -----------------------------------------

'configure the scl and sda pins

Config Sda = Portc.1

Config Scl = Portc.0

'address of ds1307

Const Ds1307w = &HD0 ' Addresses of Ds1307 clock

Const Ds1307r = &HD1

Dim I As Byte

Dim Seco As Byte , Sec1 As Byte , Sec2 As Byte , Sec3 As Byte

Dim Mine As Byte

Dim Mine1 As Byte

Dim Mine2 As Byte

Dim M As Byte

Dim *** As Byte

Seco = 1

Gosub Ds1307s

Gosub Ds1307m

Do

For I = 0 To 3

 

If I = 0 Then

Portc.3 = 1

Portc.2 = 0

Portb = Lookup(sec2 , 7seg)

End If

If I = 1 Then

Portc.2 = 1

Portc.3 = 0

Portb = Lookup(sec3 , 7seg)

End If

If I = 2 Then

Portc.4 = 0

Portc.5 = 1

Portb = Lookup(mine1 , 7seg)

End If

If I = 3 Then

Portc.5 = 0

Portc.4 = 1

Portb = Lookup(mine2 , 7seg)

End If

Gosub Ds1307

If Seco > 59 Then Seco = 0

Seco = Makedec(seco)

Sec2 = Seco / 10

Sec3 = Seco Mod 10

If Mine > 59 Then Mine = 0

Mine = Makedec(mine)

Mine1 = Mine / 10

Mine2 = Mine Mod 10

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

I2crbyte Mine , Ack 'sec

I2cstop

Return

 

Ds1307s:

If Seco > 59 Then Seco = 0

Seco = Makebcd(seco)

I2cstart ' Generate start code

I2cwbyte Ds1307w ' send address

I2cwbyte 0 ' starting address in 1307

I2cwbyte Seco

I2cstop

Return

Ds1307m:

If Mine > 59 Then Mine = 0

Mine = Makebcd(mine)

I2cstart ' Generate start code

I2cwbyte Ds1307w ' send address

I2cwbyte 0 ' starting address in 1307

I2cwbyte Mine

I2cstop

Return

End

7seg:

Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F

لینک به دیدگاه

این رو با باسکام نوشتی؟؟؟

من با سی بلد هستم.

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

حالا به ترتیب هر 20 میلی ثانیه یکی از سون سگمنت ها رو روشن می کنیم و عدد مورد نظر رو می ریزیم روش بعد سون سگمنت بعدی... همین طور روشن و خاموش می شن اما چون این اتفاق سریع رخ میده ما کل ارقام رو ثابت می بینیم

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...