السلام عليكم ورحمة الله وبركاته
هذه اول مشاركة لي في هذا المنتدى المتميز واود التوجه بالشكر لجميع القائمين عليه على مجهوداتهم العظيمة ونسئل الله ان يجعل هذا المجهود في ميزان حسناتكم
سؤالي باختصار
قمت بكتابة هذا الكود للتعامل مع الــ Shift Register 74HC595
واود ان اعرف هل بهذا الكود اي اخطاء نظرا لانه لا يعطي النتائج المرجوة
وهو مجرد اختبار للتعامل مع عدد 2 7 Segment
لاني اود بعد ذلك توصيله على حوالي 40 وحدة عرض سباعي
علما بانه عمل معي على البروتس بشكل جيد وبدون اي مشاكل
كود:
program HC595
' Declarations section
'( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 )
const AnodeNumbers as byte[10] = (0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90)
dim Datax as sbit at RB0_bit 'Data Input
dim Clk as sbit at RB1_bit 'clock
dim Latch as sbit at RB2_bit 'Latch
dim wLoop as word
sub procedure ClockPuls()
Clk = 1
delay_ms(1)
Clk = 0
end sub
sub procedure LatchPuls()
Latch = 1
delay_ms(1)
Latch = 0
end sub
sub procedure ShiftOut(dim dgt as byte)
dim i as byte
dim SR as byte
Clk = 0
Latch = 0
for SR = 0 to 1'shift registers count
'-----------------------------------------------
Latch=1
for i = 0 to 7
if ((dgt<<i) AND 0x80) then
Datax = 1
else
Datax = 0
end if
ClockPuls
next i
LatchPuls
'-----------------------------------------------
next SR
end sub
main:
' Main program
TRISB = 0
while 1
ShiftOut(%11111111)
Delay_Ms(10000)
for wLoop = 0 to 9
ShiftOut(AnodeNumbers[wLoop])
Delay_Ms(10000)
next wLoop
wend
end.
شاكر لكم مقدما