پروژه شمارنده افراد با AVR از طریق اتصال به سنسور و پردازش توسط میکروکنترلر AVR کار میکند. این پروژه در سال 2013 توسط ایمان صدیقی ساخته شد.
برنامه نویسی آن با BASCOM انجام شده است و سایر قطعات این پروژه عبارتند از:
سون سگمنت
ترانزیستورهای BC327
LED
رگولاتور ۷۸۰۵
کلیدهای روشن و خاموش و ریست
شرح و تحلیل مدار:
سون سگمنت ها از هفت تکه LED تشکیل شده اند و هر کدام از آن ها می توانند به تنهایی روشن شوند. بنابراین ترکیب آنها یک عدد را تشکیل میدهد.
برای راه اندازی سون سگمنت ها به میکروکنترلر و دو عدد ترانزیستور BC327 نیاز است. ترانزیستورها ولتاژ منفی مورد نیاز سون سگمنت ها را تهیه میکنند و اینکه کدام قسمت روشن شود به عهده میکروکنترلر است که با برنامه ای که ما نوشته ایم انجام میشود.
ولتاژ منفی مورد نیاز زمانی به سون سگمنت راه پیدا میکند که میخواهیم چیزی را نمایش بدهیم و شمارش زمانی انجام میشود که سنسور حس کند چیزی از مقابل آن عبور کرده است که با توجه به کاربری این مدار میتوان از آن در پارکینگ های هوشمند و غیره استفاده کرد.
این مدار با پروتئوس هم شبیه سازی شده است.
برنامه پروژه شمارنده افراد:
‘* Title : Counter * ‘* Last Updated : 2013/12/20 * ‘* Micro Contoroler : Atemaga 8 * ‘* Clock frequency : 1.000000 MHz * ‘* Author : iman sedighi * ‘* Email : imanseddighi@yahoo.com * $crystal = 1000000 $regfile = “M8def.dat” Config Portb = Output Config Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Portd.4 = Output Config Debounce = 128 Config Portc.0 = Input : Portc.0 = 1 : Key_counter Alias Pinc.0 Config Portc.1 = Input : Portc.1 = 1 : Key_counter2 Alias Pinc.1 Config Portc.5 = Input : Portc.5 = 1 : Key_reset Alias Pinc.5 Config Portc.3 = Input S1 Alias Portd.1 S2 Alias Portd.0 Portb = 8 Set S1 : Set S2 Dim A As Byte : A = 0 Dim T As Byte : T = 0 Dim I As Byte : I = 0 Dim K As Byte Dim K_eeprom As Eram Byte Declare Sub Show(byval A As Byte) K = K_eeprom Do Portd.2 = 0 Portd.4 = 0 If K = 99 Then Portd.4 = 1 Else Portd.2 = 1 Call Show(k) Debounce Key_counter , 1 , T1 , Sub. Debounce Key_counter2 , 0 , T3 , Sub. Debounce Key_reset , 0 , T2 , Sub Loop End ‘******************************************* T1: Incr K : If K > 99 Then K = 1 K_eeprom = K Return ‘******************************************* T3: If K < 1 Then Goto T2 Decr K K_eeprom = K Return ‘******************************************* T2: K = 0 K_eeprom = K Return ‘******************************************* Sub Show(a As Byte) Do Incr I T = A Mod 10 Portb = Lookup(t , Annode_display) Select Case I Case 1: Reset S1 : Set S2 ‘Display1 is ON : Display2 is OFF Waitms 1 Case 2: Set S1 : Reset S2 ‘Display1 is OFF : Display2 is ON Waitms 1 End Select Set S1 : Set S2 ‘Display1 is OFF : Display2 is OFF A = A \ 10 If A = 0 Then I = 0 Exit Sub End If Loop End Sub ‘_____________________________ For Annode Display