بخشی از مقاله
قطعه LCD TIMER
زمانی که مدار بسته می شود به مدت 2 ثانیه عبارت DIGITAL TIMER نمایش داده می شود بعد از آن در حالت تایمر قرار می گیرد سپس عبارت PAUSE TIMER 0:0:0 ظاهر می شود و تا زمانی که دکمه START/PAUSE (3) را نفشاریم شروع به شمارش نمی کند بعد از فشردن دکمه
(3) تایمر شروع به شمارش می کند اگر مجدداا همین دکمه را بفشارید زمان ثابت می شود .
برای ریست کردن تایمر باید دکمه شماره (2) را بفشارید.
اگر دکمه شماره (1) را بزنید از تایمر خارج شده و متن هایی که در سورس برنامه نوشته شده به نمایش در می آید با فشردن مجدد این کلید وارد محیط تایمر می شوید.
= البته می توانیم امکانات بیشتری به این پروژه اضافه کنیم ولی در حد یک پروژه آزمایشگاهی مفید می باشد.
سورس برنامه بیسیک
trisb=%00000101
trisa=%11111
define lcd_dreg portb
define lcd_dbit 4
define lcd_rsreg portb
define lcd_rsbit 1
define lcd_ereg portb
define lcd_ebit 3
define lcd_bits 4
define lcd_lines 2
'''''''''''''''''''''''''''''''''''''''''''''''
j var byte
i var byte
mine var byte
sec var byte
h var byte
mine =0:sec=0:h=0
pause 1000
lcdout $fe,1
lcdout " DIGITAL TIMER"
pause 2000
goto label1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
start:
sec=sec+1
if sec=60 then
mine=mine+1
sec=0
endif
if mine=60 then
h=h+1
mine=0
endif
if h=255 then
h=0
endif
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
if portb.2=0 then
h=0:mine=0:sec=0
goto label1
endif
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
lcdout $fe,1
lcdout " Timer"
lcd
lcdout $fe,$c0
lcdout " ",#h,":",#mine,":",#sec
pause 800
if portb.0=0 then label1
if porta.0=0 then main
goto start
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
main:
pause 1000
lcdout $fe,1
lcdout " IN THE NAME"
lcdout $fe,$c0
lcdout " OF GOD "
gosub jump
pause 2500
lcdout $fe,1
lcdout "Molla Sadra"
gosub jump
pause 1000
lcdout $fe,$c0
lcdout " University"
gosub jump
pause 2000
lcdout $fe,1
lcdout "WebSite:"
gosub jump
pause 1000
lcdout $fe,$c0
lcdout " www tcrsadra ir"
gosub jump
pause 2000
lcdout $fe,1
lcdout "Http:// "
gosub jump
pause 1000
lcdout $fe,$c0
lcdout "Maker.Blogfa.Com"
gosub jump
pause 1500
lcdout $fe,1
lcdout "Electronic"
gosub jump
pause 1000
lcdout $fe,$c0
lcdout " Project"
gosub jump
pause 2000
lcdout $fe,1
lcdout "Teacher: "
gosub jump
pause 1000
lcdout $fe,$c0
lcdout " Mr: Salamrodi"
gosub jump
pause 1500
for i=1 to 3
lcdout $fe,1
lcdout "Student:"
gosub jump
pause 1000
lcdout $fe,1
lcdout "Mohammad "
lcdout $fe,$c0
lcdout " Malek"
gosub jump
pause 1000
next i
goto main
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
label1:
lcdout $fe,1
lcdout " PAUSE Timer"
lcdout $fe,$c0
lcdout " ",#h,":",#mine,":",#sec
pause 350
if portb.0=0 then start
if porta.0=0 then main
goto label1
'''''''''''''''''''''''''''''''''''''''''''
jump:
if porta.0=0 then
h=0:mine=0:sec=0
goto label1
endif
return
end
سطح (3): در این سطح به معرفی نقشه های مدار و نقشه های IC دار می پردازیم!
و مسیر کشی فیبر مدار چاپی را هم شرح می دهیم.
ابتدا نقشه های بدون آی سی را معرفی می کنیم:
در نقشه ی شکل زیر نوعی چشمک زن 2 LED را مشاهده می کنید:
همانطور که مشاهده می کنید، این مدار از چهار عدد مقاومت، دو عدد خازن، دو عدد LED و دو ترانزیستور تشکیل شده است.
مقاومت های R1 و R3 مقدارشان ۲۷KΩ می باشد که معمولاً به صورت چهار حلقه عرضه می شوند و توان آنها ¼W می باشد. رنگ روی بدنه ی این دو مقاومت برابر است با قرمز، بنفش، نارنجی و حلقه ی چهارم آن نیز که درصد خطای مقاومت را نشان می دهد، مقدارش در این مدار چندان مهم نسیت (مثلاً قرمز رنگ یا نقره ای رنگ یا... باشد). مقاومت های R2 و R4 مقدارشان Ω27 و W¼ می باشد که رنگ بدنه ی آنها قرمز، بنفش و سیاه است و رنگ حلقه ی چهارم نیز مهم نیست.
دو خازن C1 و C2 ظرفیتشان µF 47 می باشد و از نوع خازن الکترولیتی هستند که باید به سر مثبت و منفی مشخص شده در نقشه و روی بدنه خازن توجه کرد چرا که اگر سرهای خازن الکترولیتی به طور معکوس در مدار قرار گیرند منجر به سوختن و حتی انفجار خازن می گردند در ضمن باید به ولتاژ کار خازن الکترولیتی که بر روی بدنه ی آن نوشته شده است توجه کرد که این ولتاژ نباید کمتر از 10V باشد چرا که در این حالت خازن الکترولیتی داغ شده و می سوزد.
دو LED مشخص شده نیازی به توضیح ندارند و فقط باید دقت کرد که کاتد و آند LED ها درست در مدار قرار بگیرند در غیر این صورت LED ها روشن نمی شوند. شما می توانید با توجه به تصویر زیر به راحتی کاتد و آند LED را از هم تشخیص دهید:
و در این تصویر پایه ی کاتد کوتاه تر از آند است و همچنین به قسمت بالایی کاتد نگاه کنید که کمی خمیده است و راه دیگر تشخیص کاتد را در تصویر زیر مشاهده کنید:
و چیدمان پایه های ترانزیستور BC237 به صورت زیر است:
این مدار از سه لامپ، یک کلید قطع و وصل، سه مقاومت، شش خازن و دو ترانزیستور تشکیل شده است.
خازن های به کار رفته در این مدار از نوع الکترولیتی می باشند و مقدارشان 470µF می باشد.
مقاومت های به کار رفته نیز مقدارشان 2.2KΩ می باشد (روی بدنه ی آنها هر سه حلقه ی رنگی قرمز هستند)
ترانزیستورها نیز همان ترانزیستور به کار رفته در نقشه ی قبل می باشد که چیدمان پایه های آن را مشخص کرده بودیم.
لامپ ها نیز به صورت مشخص شده در مدار قرار می گیرند.
این مدار با باتری 3V کار می کند و سر مثبت این باطری به کلید S1 و پایه های امیتر ترانزیستورها وصل است و سر منفی باتری به یکی از پایه های لامپ ها وصل است (نقشه را ببینید).
نکته ی آخر این است که اگر از لامپ 3V پر مصرف استفاده کنید، ترانزیستورها داغ می شوند و لامپ ها دیگر روشن نمی شوند پس بهترین لامپ هایی که می توانید در این مدار استفاده کنید در تصویر زیر نشان داده شده اند که در کنار یک LED قرار دارند:
در نقشه ی زیر نوعی چشمک زن سه لامپی را نشان داده ایم:
این مدار از چهار مقاومت، دو خازن، دو ترانزیستور و یک بلندگو تشکیل شده است.
مقدار خازن C1 که خازن عدسی است 102 می باشد که بر روی بدنه ی آن نوشته شده است (برای تشخیص مقدار خازن سرامیکی به سطح 2 مراجعه کنید) و خازن C2 نیز خازن عدسی می باشد که مقدارش 473 می باشد. برای تشخیص مقدار مقاومت های R1تا R4 به سطح 2 مراجعه کنید.
بلندگوی به کار رفته در این مدار ترجیحاً باید مید رنج باشد چون بلندگوی ووفر نمی تواند صدای تولید شده ی این مدار را پخش کند و یا با صدای کمی پخش می کند.
تا زمانی که سیم AB از مدار جدا نشده است، مدار در حالت سکون به سر می برد که در این حالت مدار جریان کمی مصرف می کند و وقتی که سیم AB به هر دلیلی پاره شود، مصرف جریان مدار زیادتر شده و بلندگو به صدا در می آید. با تعویض مقاومت های R1,R4,R3 صدای پخش شده از بلندگو تغییر می کند به طوری که می توان مدار را با بلندگوی ووفر نیز به کار انداخت خودتان این مقاومت ها را عوض کنید و نتیجه را ببینید.
این مدار از دو ترانزیستور تشکیل شده است که چیدمان پایه های ترانزیستور B324 به صورت زیر می باشد:
وقتی باتری 3 ولتی به مدار متصل شود، خازن ها شروع به پر شدن و خالی شدن (شارژ شدن و دشارژ شدن) می کنند در نتیجه ترانزیستورها به حالت هدایت و قطع می روند و در نتجه از پایه ی C ترانزیستورها که در مسیر LED قرار دارند جریان قابل توجّهی عبور کرده و LED ها شروع به چشمک زدن می کنند.
با نحوه پیاده سازی قطعات این مدار بر روی فیبر مدار چاپی، در سطح بعدی آشنا می شوید.
دستورات برنامه نویسی میکروکنترلر AVR برای راه اندازی ال سی دی
دستور HEX
این دستور مقدار X را به مقدار هگزادسیمال آن تبدیل کرده و در متغیر VAR قرار می دهد.
(VAR=HEX(X
به مثال زیر توجه کنید:
Dim A As Byte , B As String * 5
A = 95
(B = Hex(a
Lcd B 'lcd 5F
End
دستور HEXVAL
این دستور X را که یک داده هگزادسیمال است به مقدار دسیمال آن تبدیل کرده و در متغیر VAR قرار می دهد.
(VAR=HEXVAL(X
به مثال زیر توجه کنید:
Dim A As Byte , B As String * 5
B = 5f
(A = Hexval(b
Lcd A 'lcd 95
End
دستور STRING
با این دستور می توان کد اسکی x را به تعداد n به رشته تبدیل و در متغیر VAR قرار داد.
(VAR=STRING(N , X
به مثال زیر توجه کنید:
Dim A As String * 20
(A = String(3 , 66
Lcd A 'lcd BBB
End
لازمه که یه کم در مورد کد اسکی( ASCI ) براتون توضیح بدم. ببینید دوستان برای اینکه هر حرف،عدد یا کاراکتری را روی LCD نمایش دهیم باید کد اسکی آن را به پایه های 7 تا 14 LCD اعمال کنیم.
جدول کد اسکی حروف و اعداد
دستور ASC
این دستور اولین کاراکتر رشته STRING را به مقدار اسکی آن تبدیل کرده و در متغیر VAR قرار می دهد.
(VAR=ASC(STRING
به مثال زیر توجه کنید:
Dim A As Byte , B As String * 5
"B = "LOVE
(A = Asc(b
Lcd A 'lcd 76
End
دستور STR
این دستور متغیر عددی X را به رشته تبدیل کرده و در متغیر VAR قرار می دهد.
(VAR=STR(X
به مثال زیر توجه کنید:
Dim A As Byte , B As String * 5
A = 156
(B = Str(a
"Lcd B 'lcd"156
End
دستور VAL
این دستور رشته X را به متغیر عددی تبدیل کرده و در متغیر VAR قرار می دهد.[این دستور دقیقاً عکس دستور STR عمل می کند.]
(VAR=VAL(X
به مثال زیر توجه کنید:
Dim A As Byte , B As String * 5
"B = "156
(A = Val(b
Lcd A 'lcd 156
End
دستور IF
در این دستور زمانی که شرط عبارت expression درست شود و دارای ارزش شد دستورالعمل statement اجرا می شود که این دستورالعمل می تواند موراد مختلفی از جمله یک یا صفر کردن یک پایه از میکرو باشد.
IF Expression THEN statement
که همچنین می توان این دستور را به شکل زیر نیز به کار برد که در آنصورت اگر شرط عبارت Epression1درست شد دستورالعمل statement1 اجرا خواهد شد و در صورتی که شرط عبارت Expression1 درست نبود ولی شرط عبارت Expression2 درست بود دستورالعمل statement2 اجرا خواهد شد و در غیر اینصورت یعنی موقعی که شرط هیچکدام از دو عبارت Expression1 و Expression2 درست نباشد دستورالعمل statement 3 اجرا خواهد شد.
IF Expression1 THEN
statement1
Elseif Expression2 THEN
statement2
Else
statement3
End if
به مثال زیر توجه فرمایید:
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Output
Config Pinc.3 = Output
Config Pinc.4 = Output
A = Pinc.0
B = Pinc.1
C Alias Portc.2
D Alias Portc.3
E Alias Portc.4
If A = 1 Then
Set C
Elseif A = 0 Then
Set D
Elseif B = 1 Then
Set E
Else
Reset E
End If
End