- طریقه طراحی و ساخت پروژه در محیط PROTEUS و توضیح برنامه بهمراه عملکرد مدارو همچنین یک نمونه از کاربرد آن در صنعت .
1-3 طراحی سخت افزار و مراحل ساخت پروژه :
برای طراحی سخت افزار مدار ما در اینجا از نرم افزار شبیه ساز PROTEUS استفاده کردیم که نحوه عملکرد آن در قسمت مربوط به آموزش این نرم افزار آمده است .
در شروع کار ما اول باید قطعاتی را که نیاز داریم انتخاب کنیم و آنها را به قسمت DEVICES آورده و با SELECT کردن قطعات آنها را بروی صفحه طراحی بیاوریم .
برای ساخت پروژه مربوطه ما نیاز به قطعات ذیل داریم که عبارتند از :
|
NO |
نام قطعه |
تعداد مورد نیاز |
|
1 |
پل دیود مدل 2W005G |
1 عدد |
|
2 |
آی سی رگولاتور ولتاژ مدل 7805 |
1 عدد |
|
3 |
خازن 1000uf |
2 عدد |
|
4 |
آی سی دما مدل LM35 |
1 عدد |
|
5 |
مقاومت 10 کیاو اهم |
7 عدد |
|
6 |
مقاومت 330 اهم |
3 عدد |
|
7 |
LED های آبی ، زرد ، قرمز |
1 عدد از هر کدام |
|
8 |
آی سی ATMEGA32 |
1 عدد |
|
9 |
LCD گرافیکی 128*64 مدل T6963 |
1 عدد |
|
10 |
خازن 680nf |
1 عدد |
|
11 |
میکرو سوئیچ |
7 عدد |
|
12 |
پتانسیومتر 50 کیلو |
1 عدد |
|
13 |
آداپتور 12V DC |
1 عدد |
(جدول 1-3)
در ابتدا ما نحوه اتصال آی سی ATMEGA32 را به LCD گرافیکی توضیح می دهیم . همانطور که می دانید آی سی که ما دراین پروژه بکار بردیم از نوع 40 پایه و LCD گرافیکی ما هم دارای 20 پایه می باشد ، طریقه اتصال آن در جدول زیر نمایش داده شده است :
|
پایه شماره یک LCD گرافیکی( FG ) به سر پایین پتانسیومتر 50کیلو آی سی ATMEGA32وصل شود . |
|
پایه شماره دو LCD گرافیکی ( VSS ) به رمین متصل شود . |
|
پایه شماره سه LCD گرافیکی ( VDD ) به تغذیه 5 ولت متصل شود . |
|
پایه شماره چهارLCD گرافیکی ( CON ) به سر پایین پتانسیومتر 50 کیلو آی سی ATMEGA32وصل شود . |
|
پایه شماره پنج LCD گرافیکی ( WR ) به پایه 22 آی سی ATMEGA32 ( PC0 /SCL ( وصل شود |
|
پایه شماره شش LCD گرافیکی ( RD ) به پایه 23 آی سی ATMEGA32( PC1 /SDA ) وصل شود |
|
پایه شماره هفت LCD گرافیکی ( CE ) به پایه 24 آی سی ATMEGA32( PC2 /TCK ) وصل شود |
|
پایه شماره هشت LCD گرافیکی ( reset ) به پایه 25 آی سی ATMEGA32 ( PC3/TMS ) وصل شود . |
|
پایه شماره نه LCD گرافیکی ( C/D ) به پایه 26 آی سیATMEGA32 ( PC4 /TDO) وصل شود. |
|
پایه شماره ده LCD گرافیکی (D0) به پایه 14 آی سی PD0 /RXD) ATMEGA32 ) وصل شود . |
|
پایه شماره یازده LCD گرافیکی (D1) به پایه 15 آی سی)ATMEGA32 ( PD1 /TXDوصل شود . |
|
پایه شماره دوازده LCD گرافیکی (D2) به پایه 16 آی سی (PD2 /INT0) ATMEGA32وصل شود . |
|
پایه شماره سیزده LCD گرافیکی (D3) به پایه 17 آی سی PD3 /INT1 ) ATMEGA32)وصل شود . |
|
پایه شماره چهارده LCD گرافیکی (D4) به پایه 18 آی سی ATMEGA32 (( PD4 /OC1Bوصل شود |
|
پایه شماره پانزده LCD گرافیکی (D5) به پایه 19 آی سی ATMEGA32 (( PD5 /OC1Aوصل شود . |
|
پایه شماره شانزده LCD گرافیکی (D6) به پایه 20 آی سی (PD6 /ICP) ATMEGA32وصل شود . |
|
پایه شماره هفده LCD گرافیکی (D7) به پایه 21 آی سی ATMEGA32 (( PD7 /OC2وصل شود . |
|
پایه شماره هجده LCD گرافیکی (FS1) به پایه 27 آی سی ATMEGA32 ((PCS /TDIوصل شود . |
(جدول 2-3
2-3 شمای آی سی ATMEGA32 :
ATMEGA32دارای 4 پورت A,B,C,D می باشد که ما در اینجا پورت A را بعنوان پورت ورودی در نظر گرفتیم که این پورت به عنوان ADC ( مبدل آنالوگ به دیجیتال ) جهت بکارگیری سنسور دمایLM35 و همچنین برای تنظیم میکروسوئیچ های سال ، ماه ، روز ، بکار برده شده است
اما در پورت B پین های Pb0,1,2 به عنوان پورت خروجی جهت نمایش سه وضعیت دما ، HOT -NORMAL - COOL) ) توسط سه عدد LED به نمایش در می آورد .
همچنین پین های Pb3,4,5 بعنوان پین های ورودی ما تعریف شده که این سه پین مربوط به میکروسوئیچ های تنظیم ساعت ، دقیقه و SET می باشد .
و در پایان پورت D ما هم بعنوان پورت DATA در نظر گرفته شده است ، که این پورت جهت فرستادن اطلاعات آی سی ATMEGA32 به LCD گرافیکی مورد استفاده قرار می گیرد . البته یک میکروسوئیچ دیگر در این مدار جهت RESET کردن ( به صورت سخت افزاری ) تعبیع شده است که برای ریست کردن دستگاه در مواقع ضروری از آن استفاده می کنیم .
پتانسیومتر 50کیلو برای تنظیم کنتراست LCD بکار برده می شود .
3-3 نقشه سخت افزار مدار:
4-3 نرم افزار مدار( برنامه ) :
بعد از اینکه سخت افزار را طراحی کردیم برنامه مربوط به این مدار را می نویسیم ، در زیر برنامه به همراه توضیحات آن را مشاهده خواهید کرد :
---------------------------------------------------------------------------
1- نوع میکرو استفاده شده را مشخص می کنیم. regfile = "m32def.dat"$
---------------------------------------------------------------------------
2- مقدار فرکانس کریستال جهت کار میکرو را مشخص می کنیم. crystal = 8000000$
-----------------------------------------------------------------------------
Config Graphlcd = 128 * 64 , Dataport = Portd , Controlport = Portc ,
Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
3- پایه ها و نوع LCD را برای میکرو تعریف می کنیم.
-----------------------------------------------------------------------------
4- مکان نمای LCD را خاموش می کنیم. Cursor Off
-----------------------------------------------------------------------------
5- پورت A را بعنوان پورت ورودی تعریف می کنیم . Config Port A = Input
-----------------------------------------------------------------------------
6- پایه پین های b.0,b.1,b.2 را بعنوان پین های خروجی تعریف Config Pinb.0 = Output
می کنیم و پایه پین های b.3,b.4,b.5 را بعنوان پین های ورودی Config Pinb.1 = Output
تعریف می کنیم . Config Pinb.2 = Output
Config Pinb.3 = Input
Config Pinb.4 = Input
Config Pinb.5 = Input
Config Adc = Single , Prescaler = Auto
: single/free 7- گزینه هایتوسط
انتخاب شود مقدار دیجیتال سیگنال آنالوگ توسطSingle در حالتی که
دستور getadc در یک متغیر از جنس word ریخته می شود و در حالتی که free انتخاب شود مقداردیجیتال سیگنال آنالوگ در رجیستر مربوط به adc ریخته می شود .
: PRESCALER
اين گزينه کلاک ADC را مشخص می کند و در حالتی که AUTO انتخاب شود کامپاير با توجه به کريستال انتخاب شده بهترين کلاک را در نظر ميگيرد ،موارد ديگر برای کلاک عبارتند از 2و 4و 8و 16 و 32 و 64 يا 128 است که به جای گزینه AUTO نوشته مي شود .
-----------------------------------------------------------------------------
Dim S As Word , M As Word , H As Word
Dim D As Word , E As Word , Y As Word
Dim W As Word
8- متغیرهای S,M,H به ترتیب ساعت ، دقیقه و ثانیه جهت نمایش زمان تعریف می شود، و متغیرهای D,E,Y به ترتیب سال ، ماه و روز جهت نمایش تاریخ نمایش می دهد .
متغیر W را جهت نمایش دما تعریف می شود .
-----------------------------------------------------------------------------
9- صفحه LCD را پاک می کند . Cls
-----------------------------------------------------------------------------
10- با این دستور می توان یک تصویر را با روش Showpic 35 , 1 , Arm
GRAPHIC CONVERTER در مختصات X وY(1 و35 ) فراخوانی کرد .
Arm برچسبی است که فایل تصویر ما در حافظه flash با فرمت BGFذخیره شده است .
Wait 4
Cls Graph
Locate 4 , 1
Lcd "University F.Z.A"
Wait 4
Cls Text
11- به مدت چهار ثانیه منتظر مانده و تصویر بروی LCD را پاک می کند و در ستون اول ،سطر چهارم شروع به نمایش عبارت University F.Z.A کرده و به مدت چهار ثانیه منتظر مانده و متن نوشته شده بروی LCD را پاک می کند .
------------------------------------------------------------------
Showpic 1 , 1 , Mypic
Wait 4
Cls Graph
Locate 2 , 1
Lcd "Masoud Nazari"
Wait 4
Cls Text
12- با این دستور می توان یک تصویر را با روش GRAPHIC CONVERTER در مختصات X وY(1 و1 ) فراخوانی کرد .
MYPIC برچسبی است که فایل تصویر ما در حافظه flash با فرمت BGFذخیره شده است .
به مدت چهار ثانیه منتظر مانده و تصویر بروی LCD را پاک می کند و در ستون اول ،سطر دوم شروع به نمایش عبارت Masoud Nazari کرده و به مدت چهار ثانیه منتظر مانده و متن نوشته شده بروی LCD را پاک می کند .
-----------------------------------------------------------------------------
Locate 3 , 1
Lcd "MASTER: Engineering Hor"
Wait 4
Cls Text
13- در ستون اول ، سطر سوم شروع به نمایش عبارت "MASTER: Engineering Hor"
کرده و به مدت چهار ثانیه منتظر مانده و متن نوشته شده بروی LCD را پاک می کند .
14- با این دستور مبدل آنالوگ به دیجیتال شروع بکار می کند . Start Adc
-----------------------------------------------------------------------------
S = 0 : M = 0 : H = 0
Locate 1 , 1
15- متغیرهای S,M,H را برابر صفر قرار داده و در ستون اول ، Lcd "TIME>"
سطر اول شروع به نمایش عبارت TIME می کند .
-----------------------------------------------------------------------------
D = 1 : E = 1 : Y = 80
Locate 4 , 1
Lcd "DATE>"
Locate 7 , 1
Lcd "Temp>"
16- متغیرهای D,E را برابر صفر قرار داده ومتغیر Y=80 قرار میدهد و در ستون اول ، سطر اول شروع به نمایش عبارت DATE می کند ، در ستون اول سطر هفتم شروع به نمایش عبارت TEMP می کند .
-------------------------------------------------------------------------------------------------
17- با این دستور حلقه ای در برنامه بوجود می آید که از LOOP به DO
DO پرش می کند .
-----------------------------------------------------------------------------
) W = Getadc(0
W = W / 2
Locate 7 , 8
Lcd W ; " ^c"
Select Case W
18- با این دستور سیگنال آنالوگ وارد شده به کانالهای ( 0 -7 ) به مقدار دیجیتال تبدیل می شود و در متغییر var از نوع داده WORD قرار می گیرد .
Var = GETADC( channel)
Var نتیجه تبدیل و channel کانال مبدل آنالوگ به دیجیتال داخلی انتخاب شده است که می تواند بین 0-7 باشد .
متغیر W را تقسیم بر 2 نموده دوباره در همان متغیر W ذخیره می کند و در ستون هشتم ، سطر هفتم شروع به نمایش متغیر W به همراه ^C می نماید .
متغییر W برای شرایط پیشبینی شده انتخاب می شود .
-----------------------------------------------------------------------------
19- اگر متغیر انتخاب شده ( W)کوچکتر یا مساوی 10 باشد Case Is =< 10
پورت bرا برابر 1 قرار داده و در ستون اول ، سطر هشتم Portb = 1
شروع به نمایش عبارت COOL می کند . Locate 8 , 1
Lcd "Cool "
---------------------------------------------------------------------------
Case 11 To 32
Portb = 2
Locate 8 , 1
Lcd "Normal "
20- اگر متغیر انتخاب شده ( W) بین 11 تا 32 باشد پورت b را برابر 2 قرار داده و در ستون اول ،
سطر هشتم شروع به نمایش عبارتNormal می کند .
-----------------------------------------------------------------------------
Case Is >= 33
Portb = 4
Locate 8 , 1
" Lcd "Hot
End Select
21- اگر متغیر انتخاب شده ( W)بزرگتر یا مساوی 33 باشد پورت bرا برابر 4 قرار داده و در ستون اول
، سطر هشتم شروع به نمایش عبارت Hot می کند و به حالت پیش بینی شده پایان می دهد .
-------------------------------------------------------------------------------------------------
If D > 31 Then
Incr E
D = 1
End If
22- اگر متغیر D >31 (روز) باشد آنگاه متغیر E ( ماه) را یک واحد افزایش داده و D=1
قرارمی دهد وبه این شرط پایان می دهد .
---------------------------------------------------------------------------
If E > 12 Then
Incr Y
E = 1
End If
Locate 4 , 8
" ";Lcd Y ; "/" ; E ; "/" ; D
23- اگر متغییر E> 12 باشد آنگاه متغیر ( سال ) را یک واحد افزایش داده و متغیر E=1 قرار می
دهد و به این شرط پایان می دهد ، در ستون 8 ، سطر 4 شروع به نمایش متغیرهای Y,E,D می کند .
-----------------------------------------------------------------------------
If Pinb.5 = 0 Then Gosub Tin
24- اگر pinb.5=0 شود ( دکمه setفشار داده شود ) آنگاه به زیر برنامه Tin می رود در غیر اینصورت به خط بعدی برنامه می رود .
-----------------------------------------------------------------------------
Locate 1 , 8
" ";Lcd H ; ":" ; M ; ":" ; S
Waitms 995
Incr S
25- از ستون 8 ، سطر اول LCD متغیر های H,M,S شروع به نمایش می کند و بمدت 995 میلی ثانیه منتظر مانده و متغیر S را یک واحد افزایش می دهد .
-----------------------------------------------------------------------------
If S > 59 Then
S = 0
Incr M
Locate 1 , 8
" ";Lcd H ; ":" ; M ; ":" ; S
End If
26- اگر متغیر S>59 شود آنگاه S=0 قرار داده و یک واحد M را افزایش داده و در ستون هشتم ، سطر اول شروع به نمایش متغیر های H.M,S می کند , پایان شرط .
-----------------------------------------------------------------------------
If M > 59 Then
M = 0
Incr H
End If
27- اگر متغیر M>59 شود آنگاه M=0 قرار داده و متغیر H را یک واحد افزایش می دهد ، پایان شرط .
--------------------------------------------------------------------------
If H > 23 Then
H = 0
Incr D
Locate 1 , 8
" ";Lcd H ; ":" ; M ; ":" ; S
End If
28- اگر متغیر H>23 شود آنگاه H=0 قرار داده و یک واحد D (روز) را افزایش داده و در ستون هشتم ، سطر اول شروع به نمایش متغیر های H .M , S می کند , پایان شرط .
in:
Bitwait Pinb.5 , Set
S = 0
توجه : متغیر Tin برای تنظیم ساعت و تاریخ در نظر گرفته شده است که مربوط به زیر برنامه ها می باشد
29- در این خط ، برنامه آنقدر منتظر مانده تا Pinb.5 یک ( کلید setرها شود) ، تا به خط بعدی برنامه رود و متغیر s = 0 قرار می دهد .
b.3 = 0 Then Gosub Incr_h
If Pinb.4 = 0 Then Gosub Incr_m
If Pina.1 = 0 Then Gosub Incr_d
If Pina.2 = 0 Then Gosub Incr_e
If Pina.3 = 0 Then Gosub Incr_y
If Pinb.5 = 0 Then Gosub Tout
Loop
30- در اینجا برای زیربرنامه ها حلقه ای را تشکیل داده که می آید کلیدهای ساعت ، تاریخ و set را جاروب کرده و چک می کند که کدام یک از این 6 کلید فشار داده شده است ، وبا توجه به اینکه کدام کلید فشار داده شده به زیر برنامه مورد نظر می رود .
زیر برنامه ساعت :31- متغیر H را یک واحد افزایش داده ، اگر متغیر23 H > شود سپس H=0
قرار داده و این شرط را پایان می دهد . Incr_h:
در ستون هشتم ، سطر اول شروع به نمایش متغیر S, M, Hمی کند و Incr H
آنقدر منتظر مانده تا Pinb.3 ست شود ( دکمه رها شود ) و تا فشار دادن If H > 23 Then
دکمه دیگر همین زیر برنامه را اجراء می کند . H = 0
End If
Locate 1 , 8
" ";Lcd H ; ":" ; M ; ":" ; S
Bitwait Pinb.3 , Set
Return
زیر برنامه دقیقه :
: Incr_m
Incr M
If M > 59 Then
M = 0
End If
Locate 1 , 8
" ";Lcd H ; ":" ; M ; ":" ; S
Bitwait Pinb.4 , Set
Return
32- متغیر M را یک واحد افزایش داده ، اگر متغیر59 M > شود سپس M = 0 قرار داده و این شرط را پایان می دهد .
در ستون هشتم ، سطر اول شروع به نمایش متغیر S , M , Hمی کند و آنقدر منتظر مانده تا Pinb.4
ست شود ( دکمه رها شود ) و تا فشار دادن دکمه دیگر همین زیر برنامه را اجراء می کند .
-------------------------------------------------------------------------------------------------
زیر برنامه روز : Incr_d:
Incr D
If D > 31 Then
D = 1
End If
Locate 4 , 8
" ";Lcd Y ; "/" ; E ; "/" ; D
Bitwait Pina.1 , Set
Return
33- متغیر D را یک واحد افزایش داده ، اگر متغیر31 D > شود سپس D = 1 قرار داده و این شرط را پایان می دهد .
در ستون هشتم ، سطر اول شروع به نمایش متغیر D , E, Yمی کند و آنقدر منتظر مانده تا Pina.1 ست شود ( دکمه رها شود ) و تا فشار دادن دکمه دیگر همین زیر برنامه را اجراء می کند .
-------------------------------------------------------------------------------------------------
زیر برنامه ماه : Incr_e:
Incr E
If E > 12 Then
E = 1
End If
Locate 4 , 8
" ";Lcd Y ; "/" ; E ; "/" ; D
Bitwait Pina.2 , Set
Return
34- متغیر E را یک واحد افزایش داده ، اگر متغیر12 E > شود سپس E = 1 قرار داده و این شرط را پایان می دهد .
در ستون هشتم ، سطر اول شروع به نمایش متغیر D , E, Yمی کند و آنقدر منتظر مانده تا Pina.2 ست
شود ( دکمه رها شود ) و تا فشار دادن دکمه دیگر همین زیر برنامه را اجراء می کند .
-------------------------------------------------------------------------------------------------
زیر برنامه سال : Incr_y:
Incr Y
If Y > 99 Then
Y = 80
End If
Locate 4 , 8
" ";Lcd Y ; "/" ; E ; "/" ; D
Bitwait Pina.3 , Set
Return
35- متغیر Y را یک واحد افزایش داده ، اگر متغیر99 Y > شود سپس Y = 80 قرار داده و این شرط را پایان می دهد .
در ستون هشتم ، سطر چهارم شروع به نمایش متغیر D , E, Yمی کند و آنقدر منتظر مانده تا Pina.3 ست
شود ( دکمه رها شود ) و تا فشار دادن دکمه دیگر همین زیر برنامه را اجراء می کند .
------------------------------------------------------------------
زیر برنامه خارج شدن از حالت تنظیمات : Tout:
Bitwait Pinb.5 , Set
Loop
36- با فشار دادن مجدد کلید Pinb.5 و رها کردن آن از تنظیمات خارج می شویم ، پایان حلقه .
-----------------------------------------------------------------------------
End
Arm:
bgf "BASCOM1.BGF"$
Mypic:
bgf "BASCOM2.BGF"$
37- پایان برنامه .
توجه : تصویر آرم دانشگاه و تصویر شخصی lable است که بعد از اتمام برنامه (END ) نوشته می شود .
-----------------------------------------------------------------------------
بعد از نوشتن برنامه ، برنامه را یک بار توسط نرم افزار PROTEUSE تست می کنیم و در صورت جواب گرفتن برنامه را توسط پروگرمر ، پروگرام می کنیم حال بعداز اینکه آی سی را پروگرام کردیم پشت فیبر مدار را توسط همین نرم افزار ، زده و قطعات را بروی فیبر مونتاژ می کنیم در ذیل پشت و روی فیبر را می توانید مشاهده فرمایید :