مبدل باینری به دسیمال
در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی با عنوان, نمایش معادل دسیمال ورودی باینری بر روی سون سگمنت به روش مالتی پلکس, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. در این پروژه به کمک روش مالتی پلکس 4 نمایشگر سون سگمنت (Segment-7) کنترل شده و متناسب با وضعیت ورودی باینری که بین 0 تا 255 متغیر است، معادل ده دهی آن را محاسبه و نمایش داده می شود.
نقشه شماتیک پروژه
برنامه میکروکنترلر در محیط نرم افزار Bascom-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
$regfile = “M8def.dat” $crystal = 1000000 ‘———————————- Config Portd = Input Config Portb = Output : Portb = 0 Config Pinc.0 = Output : S1 Alias Portc.0 : Set S1 Config Pinc.1 = Output : S2 Alias Portc.1 : Set S2 Config Pinc.2 = Output : S3 Alias Portc.2 : Set S3 Config Pinc.3 = Output : S4 Alias Portc.3 : Set S4 ‘———————————- Dim A As Word Dim electronics As Word Dim I As Byte Dim T As Word : T = 1 ‘———————————- Declare Sub Show(byval A As Word) ‘———————————- Do A = Pind ‘A = 4321 Call Show(a) Loop End ‘———————————- Sub Show(a As Word) Do Incr I electronics = A Mod 10 Select Case I Case 1: Portb = Lookup(electronics , Annode_display) Set S1 : Waitms T Case 2: Portb = Lookup(electronics , Annode_display) Set S2 : Waitms T Case 3: Portb = Lookup(electronics , Annode_display) Set S3 : Waitms T Case 4: Portb = Lookup(electronics , Annode_display) Set S4 : Waitms T End Select Reset S1 : Reset S2 : Reset S3 : Reset S4 A = A \ 10 : If A = 0 Then Exit Do Loop I = 0 Reset S1 : Reset S2 : Reset S3 : Reset S4 End Sub ‘———————————- Annode_display: Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 191 , 127 , 199 , 143 |
شرح برنامه میکروکنترلر به زبان بیسیک BASIC
برای اینکار ابتدا وضعیت پورت ورودی D میکروکنترلر ATmega8 در متغیر A ذخیره می شود و سپس با تقسیم معادل دسیمال ورودی بر عدد ثابت 10 و بدست آمدن باقیمانده، آن مقدار را در متغیری به نام electronics در برنامه ذخیره می کنیم و سپس مقدار متغیر electronics را بر روی سون سگمنت مالتی پلکس 4 رقمه نمایش می دهیم.
حال فرض می کنیم 3 ورودی اول دیجیتال در وضعیت 1 و مابقی صفر قرار دارد. معادل این ورودی عدد 7 است. باقی مانده عدد 7 بر عدد 10 برابر خود عدد 7 است در نتیجه مقدار متغیر electronics=7 خواهد بود. در دستور Select Case I در حلقه اول معادل عدد 7 در نمایشگر سون سگمنت (Segment-7) از جدول Annode_Display فراخوانی و در پورت خروجی قرار می گیرد و اولین نمایش با Set شدن S1 فعال می شود، در نتیجه عدد 7 روی نمایشگر اول ظاهر می شود. با توجه به دستور A = A \ 10، چون نتیجه این معادله عدد صفر را در متغیر a قرار می دهد لذا شرط مقایسه if A = 0 Then Exit Do برقرار بوده و از حلقه خارج شده و در نتیجه مابقی نمایشگرها خاموش می مانند.
همچنین فایل شبیه ساز این پروژه نیز که با نرم افزار Proteus 8 Professional طراحی شده، پیوست فایل پروژه جهت دانلود قرار داده شده است، که می تواند شما را در یادگیری هر چه بهتر مدار و نحوه عملکرد آن یاری نماید.
خیلی عالی. بهش نیاز داشتیم.
اگه همینو رو hmi بنویسم حد اقل ده تومن میشه. ولی این یک هزارم قیمتشه