مدار الکترونیکی شمارنده افراد با AVR

29-اردیبهشت-1405 / خواندن 3 دقیقه

شمارنده افراد

پروژه شمارنده افراد با 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

Annode_display:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 191 , 127 , 199
‘ 0 1 2 3 4 5 6 7 8 9 – dp L

آموزش الکترونیک avr پروژه های الکترونیکی برنامه نویسی