عکس پیش‌فرض نوشته

در این مطلب ما قصد آموزش ساخت LED آبشاری را داریم.

در این برنامه از تکنیک موج PWM برای کاهش نور LED ها استفاده شده است و تعداد LED های دنباله آبشار 5 عدد می باشد.

LED آبشاری

میتوان این برنامه را تعمیم داد و برای تمام پایه های میکرو تعریف نمود (یعنی حداقل 6 و حد اکثر 32، LED میتوان استفاده کرد.)

ابتدا معرفی میکرو،متغییرها،تایمر و پورت خروجی:

$regfile = "m16def.dat"
$crystal = 8000000
Config Porta = Output
Dim C As Byte , X As Byte , Y As Byte , Led(8) As Byte
Dim E As Byte , L As Byte , N As Byte

Config Timer0 = Timer , Prescale = 1
On Ovf0 Rgbpwm
Enable Timer0
Enable Interrupts

تمام LED ها را خاموش می کند:

For X = 1 To 8
Led(x) = 0
Next

کدهای اصلی برنامه:

در مرحله اول باید LED اول را روشن نمود و تمام LED ها نیز خاموش باقی بمانند.

در مرحله دوم باید LED دوم را کامل روشن نمود و LED اول را کم نور کرد و باقی LED ها را نیز خاموش نگه داشت.

در مرحله سول مطابق مراحل قبلی باید پیش بروید.

تا به مرحله پنجم برسیم.

Do
L = 250
For Y = 1 To 5
For X = 1 To 5
Led(x) = E
If E = 0 Then Goto M
If E < 250 Then : E = E + 50 : Goto M : End If
If E > 249 Then E = 0
M:
Next
Waitus 500
L = L - 50
If L < 50 Then Goto M1
Next

در مرحله پنجم باید تمام LED ها را شیفت داد.

M1:
Led(1) = 0
For Y = 1 To 9
For X = 7 To 1 Step -1
Led(x + 1) = Led(x)
Next
Waitus 500
Next
Loop

پایان برنامه

End

کد تایمر جهت کاهش نور LED ها :

Rgbpwm:
Timer0 = 0
Incr C
If C = 0 Then Porta = &B11111111
If Led(1) = C Then Reset Porta.0
If Led(2) = C Then Reset Porta.1
If Led(3) = C Then Reset Porta.2
If Led(4) = C Then Reset Porta.3
If Led(5) = C Then Reset Porta.4
If Led(6) = C Then Reset Porta.5
If Led(7) = C Then Reset Porta.6
Return

این برنامه صرفا جهت آموزش می‌باشد و کدهای آن به صورت کامل نوشته نشده است.