قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 436
نشاط [ أبو زكووور ]
قوة السمعة:81
قديم 05-05-2009, 09:43 AM المشاركة 1   
attension مشروع ساعة رقمية PIC16F84A Twitter FaceBook Google+



السلام عليكم ...
تحية لجميع الأساتذة و المشرفين و الأعضاء .
أقدم هذا الموضوع للمنتدى ... حتى تعم الفائدة للجميع إنشاء الله

هو عبارة على ساعة رقمية أربع خانات بالإضافة إلى وجود مخرج تحكم يمكن و صله إلى دارة منبه


كود البرنامج مكتوب كما فهمت بلغة البيزك

و أنا بصراحة لم أستطيع التعامل معه لعدم توفر برنامج لتحرير ملفات البيزك

كود:
'******************************************************************************
' PIC16F84A ALARM CLOCK
'******************************************************************************
'
' feel free to use this code at your own risks
'
' target : PIC16F84A, 16 Mhz crystal
' HS clock, no watchdog.
'
' Author : Bruno Gavand, September 2007
' see more details on http://www.micro-examples.com/
'
'******************************************************************************
program alarmClock
'
' if you are using COMMON CATHODE LED display, uncomment this definition.
' if you are using COMMON ANODE LED display, comment this definition.
'
'#define CATHODE_COMMUNE
symbol  LUNDI           = 0     ' monday
symbol  MARDI           = 1     ' thuesday
symbol  MERCREDI        = 2     ' wednesday
symbol  JEUDI           = 3     ' thursday
symbol  VENDREDI        = 4     ' friday
symbol  SAMEDI          = 5     ' saturday
symbol  DIMANCHE        = 6     ' sunday
symbol  LMMJV           = 7     ' from monday to friday included
'
' alarm definitions, to be changed on your needs
'
symbol  NBALARM         = 16    ' number of programmed alarms
const   alarmTable   as byte[NBALARM * 4] = (
'       JOUR            HEURE   MINUTE  DUREE (secondes, 59 maxi)
'       DAY             HOUR    MINUTE  DURATION (in seconds, max is 59)
        LUNDI,          8,      30,     10,
        LUNDI,          12,     30,     10,
        LUNDI,          14,     00,     10,
        LUNDI,          16,     30,     10,
        MARDI,          8,      30,     10,
        MARDI,          12,     30,     10,
        MARDI,          14,     00,     10,
        MARDI,          16,     30,     10,
        JEUDI,          8,      30,     10,
        JEUDI,          12,     30,     10,
        JEUDI,          14,     00,     10,
        JEUDI,          16,     30,     10,
        VENDREDI,       8,      30,     10,
        VENDREDI,       12,     30,     10,
        VENDREDI,       14,     00,     10,
        VENDREDI,       16,     30,     10
        )
dim maxcount    as word         ' number of TMR0 overflow per second
dim scaler      as word         ' RTC scaler
dim jj          as byte         ' day of week, 0 is monday
dim hh          as byte         ' hour
dim mn          as byte         ' min
dim ss          as byte         ' sec
dim digiled     as byte[4]      ' 4 x 7 segment table
dim digit       as byte         ' number of current digit to be displayed
dim dp          as byte         ' decimal point
dim key         as byte         ' key code
dim alarm       as byte         ' alarm flag
'
' the ISR works as real time clock
'
sub procedure interrupt
        dim i as byte
'
' count time
'
        scaler = scaler + 1
        if scaler > maxcount
        then
                scaler = 0
                inc(ss)
                if ss = 60
                then
                        ss = 0
                        inc(mn)
                        if mn = 60
                        then
                                mn = 0
                                inc(hh)
                                if hh = 24
                                then
                                        hh = 0
                                        inc(jj)
                                        if jj = 8
                                        then
                                                jj = 1
                                        end if
                                end if
                        end if
                end if
        end if
'
' LED display
'
#ifdef CATHODE_COMMUNE
        PORTA = PORTA and $f0
        TRISA = $0f
        key = PORTA
        TRISA = 0
        PORTB = 0
#else
        PORTA = PORTA or $0f
        TRISA = $0f
        key = PORTA
        key = not(key)
        TRISA = 0
        PORTB = $ff
#endif
        key = key and $07
        digit = digit + 1
        if digit > 3
        then
                digit = 0
                i = $01
        else
                i = $01 << digit
        end if
#ifdef CATHODE_COMMUNE
        PORTB = digiled[digit]
        PORTA = PORTA or i
#else
        PORTB = digiled[digit]
        PORTB = not(PORTB)
        PORTA = PORTA and not(i)
#endif
        INTCON.T0IF = 0
end sub
'
' converts digit to 7 segment
'
sub function intTo7seg(dim n as byte) as byte
        select case n
                case 0  result = $3F
                case 1  result = $06
                case 2  result = $5B
                case 3  result = $4F
                case 4  result = $66
                case 5  result = $6D
                case 6  result = $7D
                case 7  result = $07
                case 8  result = $7F
                case 9  result = $6F
        end select
end sub
'
' select a value with keys
' value is pointed to by v, display char s as header, maximum value is max
'
sub procedure setValue(dim v as ^byte, dim s as byte, dim max as byte)
        digiled[0] = s
        digiled[1] = 0
        while 1
                if key.0
                then
                        inc(v^)
                        if(v^ > max)
                        then
                                v^ = 0
                        end if
                end if
                if key.1
                then
                        if(v^ = 0)
                        then
                                v^ = max
                        else
                                dec(v^)
                        end if
                end if
                if key.2
                then
                        Delay_ms(50)
                        while key.2
                        wend
                        Delay_ms(50)
                        scaler = 0
                        ss = 0
                        return
                end if
                digiled[2] = intTo7seg(v^ / 10)
                digiled[3] = intTo7seg(v^ mod 10)
                delay_ms(300)
        wend
end sub
'
' program entry
'
main:
        dim i as byte
'
' init variables
'
        dp = 0
        hh = 0
        mn = 0
        ss = 0
        jj = 0
        maxcount = 15625
'
' init I/O
'
        PORTA = %00010000
        TRISA = %00000000
        PORTB = 0
        TRISB = $00
'
' init interrupts
'
        INTCON = %10100000
        OPTION_REG = %11011000
        Delay_ms(50)
'
' clock adjustment
'
        setValue(*hh, 116, 23)
        setValue(*mn, 55, 59)
        setValue(*jj, 14, 6)
'
' forever loop
'
        while true
                if key
                then
'
' display day and seconds (what for ? don't remember !)
'
                        digiled[0] = intTo7seg(jj)
                        digiled[1] = 0
                        digiled[2] = intTo7seg(ss / 10)
                        digiled[3] = intTo7seg(ss mod 10)
                else
'
' display hours and minutes
'
                        if hh < 10
                        then
                                digiled[0] = 0
                                digiled[1] = intTo7seg(hh)
                        else
                                digiled[0] = intTo7seg(hh / 10)
                                digiled[1] = intTo7seg(hh mod 10)
                        end if
                        digiled[2] = intTo7seg(mn / 10)
                        digiled[3] = intTo7seg(mn mod 10)
                end if
'
' blinks semicolon (or decimal point)
'
                if scaler > maxcount / 2
                then
                        dp.1 = 1
                else
                        dp.1 = 0
                end if
'
' set decimal points
'
                digiled[0].7 = dp.0
                digiled[1].7 = dp.1
                digiled[2].7 = dp.2
                digiled[3].7 = dp.3
'
' check for alarm condition
'
                alarm = 0
                for i = 0 to (NBALARM - 1) * 4
                        if ((alarmTable[i] = jj) or ((alarmTable[i] = LMMJV) and (jj < SAMEDI)))
                                        and (alarmTable[i + 1] = hh)
                                        and (alarmTable[i + 2] = mn)
                                        and (alarmTable[i + 3] > ss)
                        then
                                inc(alarm)
                        end if
                next i
                if alarm
                then
'
' set alarm
'
                        dp.3 = 1
                        PORTA.4 = 0
                else
'
' clear alarm
'
                        dp.3 = 0
                        PORTA.4 = 1
                end if
        wend
end.


أرجوا من الإخوة الذين عندهم إلمام بالبيزك إفادة الإخوة في المنتدى
من ناحية برامج التحرير و توليد ملف الهيكس لهذا المشروع

إنشاء الله سوف أضع ملف البروتوس لهذا المشروع في مشاركة لاحقة
بإنتظار الحصول على ملف الهيكس

ملاحظة :مصدر الوضوع هذا الرابط

http://www.micro-examples.com/public...arm-clock.html

شكرا لكم ... بارك الله فيكم .


التعديل الأخير تم بواسطة : أبو زكووور بتاريخ 05-05-2009 الساعة 09:47 AM
اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 05-05-2009, 06:36 PM المشاركة 2   
افتراضي


اخي ابو زكور كثيرا ما حاولت تنفيذ هذه الدائرة في الميكروسي ولكن المشكلة ان الدورة توقفت ولم ندرس كيفية التعامل الصحيح مع الشاشة لاكثر من مرتبة . يا حبذا لو تجد الكود بلغة الميكروسي
بارك الله فيك

حيدر علاج حسن
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 436
نشاط [ أبو زكووور ]
قوة السمعة:81
قديم 05-05-2009, 09:03 PM المشاركة 3   
attension السلام عليكم


شكرا لك أخي حيدر
أنا أميل جدا لإستخدام السفن سيكمنت في المتحكمات الرقمية
حيث يكون لديك خيارات كثيرة في الأحجام و الألوان
بالإضافة إلى أنني أراها أجمل من غيرها
بالنسبة لدورة الميكرو سي هي توقفت
ولكن نحن يجب أن لا نتوقف
كيف ؟؟؟؟؟
بالنسبة لي أنا أتبع هذا الأسلوب في التعلم
أبحث عن مشاريع مكتوبة بلغة المايكرو سي
و أقوم بدراستها و تحليل التعليمات المكتوبة فيها قدر المستطاع
و بالنسبة لدوة البيزك هل تعرف إلى أين وصلت و ماذا جرى بها ..... هل هي متوقفة
شكرا لكم .


الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:90
قديم 05-05-2009, 10:29 PM المشاركة 4   
افتراضي


السلام عليكم ورحمة الله وبركاته
أخى زكووور تفضل كود الهكسا

كود:
:10000000F929FF3FFF3FFF3FCF00030E8301A1000F
:100010000408A0000A08A2008A014208AB004108B7
:10002000AA004008A9000C08013FC10000300318D5
:10003000013F0D07C20041088C0042088D004208B4
:100040000F02031D252841080E02031842288C01C7
:100050008D01900A10083C3A031D42289001910A34
:1000600011083C3A031D42289101920A1208183ADD
:10007000031D42289201930A1308083A031D4228DF
:10008000013093000F3085040F30831685008312F2
:10009000050894001409C0004008940083168501E7
:1000A000FF3083128600073040059400150AC10016
:1000B000410895004108033C03186228950101306E
:1000C000A3006D281508C0000130A30040080319E3
:1000D0006D28A30D2310FF3F67281630C0001508B8
:1000E000400784000008860086092309C0004008F4
:1000F00085050B112B08C2002A08C1002908C00081
:1001000022088A0020088400210E8300CF0E4F0EA3
:100110000900031383122708003A031D92283F3079
:10012000A800D1282708013A031D99280630A80005
:10013000D1282708023A031DA0285B30A800D12847
:100140002708033A031DA7284F30A800D128270805
:10015000043A031DAE286630A800D1282708053AC6
:10016000031DB5286D30A800D1282708063A031DC5
:10017000BC287D30A800D1282708073A031DC328D2
:100180000730A800D1282708083A031DCA287F3065
:10019000A800D1282708093A031DD1286F30A800EC
:1001A000D1282808C000080003138312C8010830B2
:1001B000CC00400DC80D4408C8020318E128C80748
:1001C0000310C00DCC0BD928080003138312250897
:1001D0009600970101301405C10041080319082950
:1001E000240884000008C000C00A240884002408F1
:1001F000840040088000240884000008C1004108F1
:100200002602031808292408840024088400800199
:10021000003094180130C10041080319292924082D
:1002200084000008C1004108003A031D1E2924086B
:1002300084002408840026088000292924088400DA
:100240000008C000C003240884002408840040087B
:100250008000003014190130C100410803197729CA
:100260000B30CC00FF30CB00FF30CA00CC0B39295B
:100270004029CB0B3C293F29CA0B3C293929362977
:100280003330CB00FF30CA00CB0B47294A29CA0BB9
:10029000472944298530CA00CA0B4C29003014195B
:1002A0000130C1004108031D4E290B30CC00FF3046
:1002B000CB00FF30CA00CC0B5E296529CB0B61292E
:1002C0006429CA0B61295E295B293330CB00FF30DA
:1002D000CA00CB0B6C296F29CA0B6C2969298530A0
:1002E000CA00CA0B71298C018D019001B029240824
:1002F00084000008C0000A30C400D4204008A700D1
:10030000892040089800240884000008C0000A30B2
:10031000C400D4204808C0004008A7008920400835
:1003200099003E30CC00FF30CB00FF30CA00CC0B30
:100330009A29A129CB0B9D29A029CA0B9D299A296D
:1003400097293230CB00FF30CA00CB0BA829AB294C
:10035000CA0BA829A5293530CA00CA0BAD29EA283D
:100360000800003408341E340A3400340C341E34BF
:100370000A3400340E3400340A34003410341E348D
:100380000A34013408341E340A3401340C341E3467
:100390000A3401340E3400340A34013410341E346B
:1003A0000A34033408341E340A3403340C341E3443
:1003B0000A3403340E3400340A34033410341E3447
:1003C0000A34043408341E340A3404340C341E3421
:1003D0000A3404340E3400340A34043410341E3425
:1003E0000A340800031383121C088A001A088200CA
:1003F0000800031383129D01920191019001930162
:1004000009308E003D308F00103085008316850145
:100410008312860183168601A0308B00D8308100BC
:100420000B30CC00FF30CB00FF30CA00CC0B192AB8
:10043000202ACB0B1C2A1F2ACA0B1C2A192A162A6F
:100440003330CB00FF30CA00CB0B272A2A2ACA0B35
:10045000272A242A8530CA00CA0B2C2A1230A4006D
:100460007430A5001730A600E5201130A400373005
:10047000A5003B30A600E5201330A4000E30A500F7
:100480000630A600E52014080319632A1308A70004
:1004900089204008960097010A30C4001008C00067
:1004A000D4204008A7008920400898000A30C400E2
:1004B0001008C000D4204808C0004008A7008920C8
:1004C000400899009A2A0A30120203186E2A9601EF
:1004D0001208A700892040089700842A0A30C40027
:1004E0001208C000D4204008A700892040089600C8
:1004F0000A30C4001208C000D4204808C0004008D8
:10050000A7008920400897000A30C4001108C000E5
:10051000D4204008A7008920400898000A30C40071
:100520001108C000D4204808C0004008A700892056
:10053000400899000130C4000E08C0000F08C10037
:1005400044080319A82AC10CC00CC113FF3FA12AFB
:100550000D084102031DAE2A0C0840020318B22AFE
:100560009D14B32A9D1001301D05C2004208003AB7
:10057000031DBC2A9613BD2A961700309D18013022
:10058000C2004208003A031DC72A9713C82A9717CA
:1005900000301D190130C2004208003A031DD22A62
:1005A0009813D32A981700309D190130C2004208D1
:1005B000003A031DDD2A9913DE2A99179E019F0137
:1005C0001F083C3C031C832BB130C4000130C50024
:1005D0001F08C000C1014408C00745080318013FB7
:1005E000C10740089A0041089C000A089B00F221BC
:1005F000C0001B088A0040081306FF30031D0030AE
:10060000C3001F08C000C1014408C0074508031803
:10061000013FC10740089A0041089C000A089B005E
:10062000F221C0001B088A004008073AFF30031D72
:100630000030C20005301302FF3003180030C00044
:100640004208C0054008C3041F0AC0000030C100B2
:100650004408C00745080318013FC10740089A0035
:1006600041089C000A089B00F221C2001B088A0076
:1006700042081206FF30031D0030C0004008C305C9
:1006800002301F07C0000030C1004408C007450801
:100690000318013FC10740089A0041089C000A085E
:1006A0009B00F221C2001B088A0042081106FF309D
:1006B000031D0030C0004008C30503301F07C00001
:1006C0000030C1004408C00745080318013FC107B6
:1006D00040089A0041089C000A089B00F221C200D1
:1006E0001B088A0042081002FF3003180030C000C7
:1006F0004308C00503197D2B9E0A1F083C3A0319C5
:10070000832B9F0AE02A1E080319892B9D150512C9
:100710008B2B9D110516432A8C2BFF3FFF3FFF3F7C
:02400E00F93F78
:00000001FF


الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 436
نشاط [ أبو زكووور ]
قوة السمعة:81
قديم 06-05-2009, 01:53 AM المشاركة 5   
attension السلام عليكم


السلام عليكم
شكرا للأستاذ محمد 50 على مشاركته و تقديمه لملف الهكس

هذا رابط ملف البروتوس لمشروع الساعة

http://filaty.com/f/905/24409/ALARM_CLOCK.rar.html

أرجو أن لا يكون فيها أخطاء
و أرجوا من الأستاذ محمد 50 المساعدة
لقد وضعت ملف الهكس الذي قدمه لكن المشروع لم يعمل ... ربما لم أتعامل معه بشكل صحيح
شكرا لكم .


الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:90
قديم 06-05-2009, 10:09 AM المشاركة 6   
افتراضي


السلام عليكم أخى أبوزكووور
ملف البرتوس لم يفتح معى ربما أنك تستخدم نسخة أحدث من التى معى على العموم ملف الهكسا مرة أخرى
http://filaty.com/f/905/38939/hwer.rar.html
ولكن لاحظ أخى أن البرتوس لا يعطيك نتائج مرضية فى محاكاة هذه الدوائر وتحدثنا عن هذا الموضوع فى مشاركات سابقة


kalhou
:: مهندس ::
تاريخ التسجيل: Apr 2009
المشاركات: 4
نشاط [ kalhou ]
قوة السمعة:0
قديم 07-05-2009, 05:14 PM المشاركة 7   
افتراضي السلام عليكم


مشكورين يا اخواني


kalhou
:: مهندس ::
تاريخ التسجيل: Apr 2009
المشاركات: 4
نشاط [ kalhou ]
قوة السمعة:0
قديم 07-05-2009, 05:29 PM المشاركة 8   
افتراضي السلام عليكم


مشكور عزيزي

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 02:40 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025