تماس با ما

فید خبر خوان

نقشه سایت

بزرگترین سایت مقالات الکترونیک و مطالب مرتبط با الکترونیک

امروز یکشنبه ۱۶ اردیبهشت ۱۴۰۳


دسته بندی سایت

پیوند ها

آمار بازدید سایت

آمار بازدید

  • بازدید امروز : 247
  • بازدید دیروز : 233
  • بازدید کل : 1210500

نمایش ساعت بر روی تابلو روان با تراشه DS1307


در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, نمایش ساعت بر روی تابلو روان با تراشه DS1307, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. امروزه، علم الکترونیک حتی در جزئی ترین امور روزانه مردم وارد شده است که شاید در این بین، حضور تابلو روان یا همان نمایشگرهای الکترونیک روان با جذابیت زیاد، بیشتر چشمها را به سوی خود جذب کرده باشد. تابلوهای روان می توانند نمونه ای زیبا از وسایل تبلیغاتی و اطلاع رسانی باشند. شاید همه ما بارها این نوع از نمایشگرها را دیده و کارایی و زیبایی آن ها را حس کرده ایم. اساس کار این نوع از نمایشگرها بسیار ساده و در عین حال جذاب است.

در این پروژه قصد داریم چگونگی طراحی و ساخت یک تابلو روان آموزشی با قابلیت نمایش ساعت را آموزش دهیم. همانطور که از نام پروژه پیداست، موارد کاربرد آن صرفا استفاده در امور تبلیغاتی و اطلاع رسانی است. البته می توان مواردی همچون زیبا سازی محیط کار یا حتی بازی و سرگرمی را از دیگر کاربرد های آن به شمار آورد.

در پروژه قبلی (آموزش ساخت نمایشگر LED روان یا تابلو روان با میکرو AVR) که در الکترونیک 98 انتشار دادیم به صورت کامل در مورد نحوه کار تابلوهای روان و نحوه ساخت آن ها با میکروکنترلرهای AVR صحبت کردیم، به همین دلیل در این پروژه از بازگویی دوباره مباحث بیان شده پرهیز می کنیم.

نمایش ساعت بر روی تابلو روان با تراشه DS1307

انتشار : ۷ آبان ۱۳۹۴

ترمومتر و ترموستات بسیار پیشرفته با تراشه DS18B20


ترمومتر و ترموستات بسیار پیشرفته با تراشه DS18B20

در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, ساخت ترمومتر و ترموستات بسیار پیشرفته با تراشه DS18B20, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. همانطور که می دانید سنسورهای بسیار زیادی برای اندازه گیری دما در بازار موجود می باشد که هر کدام دارای محدوده اندازه گیری و پروتکل ارتباطی خاصی می باشند، به همین دلیل تا کنون پروژه های بسیار زیادی با موضوع اندازه گیری و کنترل دمای محیط در سایت الکترونیک 98 منتشر کرده ایم، که هدف اصلی از انتشار این پروژه ها آشنایی شما دوستان عزیز با راه اندازی انواع حسگرهای دما با میکروکنترلرهای AVR می باشد.

در پروژه قبلی (اندازه گیری همزمان دمای چهار نقطه با سنسور DS18B20) شما را با نحوه راه اندازی سنسور دمای DS18B20 با میکروکنترلرهای AVR و شیوه اندازه گیری دما با سنسور مذکور آشنا کردیم. حال می خواهیم پروژه قبلی را گسترش دهیم و با استفاده از سنسور دمای DS18B20 یک دستگاه اندازه گیری و کنترل دما (ترمومتر و ترموستات) طراحی کنیم. در این پروژه ابتدا دما با استفاده از سنسور دمای DS18B20 اندازه گیری می شود و سپس مقدار دما توسط میکروکنترلر AVR بر روی یک ال سی دی کاراکتری در ابعاد 2*16 نمایش داده می شود. در صورتی که دمای اندازه گیری شده در محدود رنج دمایی از قبل تنظیم شده باشد، رله خروجی دستگاه فعال می شود.

ترمومتر و ترموستات بسیار پیشرفته با تراشه DS18B20

 

انتشار : ۷ آبان ۱۳۹۴

کنترل سرعت موتور DC توسط LCD گرافیکی و تاچ اسکرین


در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, کنترل سرعت حرکت موتور DC توسط میکروکنترلر AVR با استفاده از LCD گرافیکی و تاچ اسکرین, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. اصولا برای کنترل سرعت موتور DC، باید مقدار ولتاژ به آن را تغییر داد، سرعت موتور با کاهش سطح ولتاژ، کاهش پیدا می کند و با افزایش آن، افزایش می یابد. برای کاهش سطح ولتاژ نیز می توان از یک مقاومت متغیر در مسیر جریان عبوری به سمت موتور استفاده کرد. یکی از معایب اصلی این روش اتلاف انرژی است.

حال اگر به طریقی بتوانیم ولتاژ اعمالی به موتور را با سرعتی یکنواخت قطع و وصل کنیم، با بالاتر رفتن این سرعت از حد خاص، دیگر قطع و وصل شدن موتور محسوس نخواهد بود، ولی موتور به علت قطع و وصل شدن ولتاژ، سطح ولتاژ های متفاوتی را با توجه به سرعت خاموش و روشن شدن احساس خواهد کرد. به این ترتیب سرعت چرخش موتور نیز متناسب با سطح ولتاژ تغییر خواهد کرد که همان هدف اولیه ما است.

در این پروژه قطع و وصل شدن ولتاژ با سرعتی یکنواخت، توسط موج PWM میکروکنترلر AVR انجام می گیرد. بعد از ساخت و راه اندازی پروژه شما می توانید توسط یک ال سی دی گرافیکی که به یک تاچ اسکرین (صفحه لمسی) مجهز شده است، سرعت و جهت چرخش موتور را به صورت لمسی کنترل نمائید. همچنین در مدار این پرژه یک عدد پتانسیومتر نیز تعبیه شده است که شما می توانید با چرخاندن آن سرعت چرخش موتور را به روشی دیگر نیز کنترل نمائید. برای دریافت توضیحات بیشتر و دریافت فایل پروژه با ما همراه باشید.

کنترل سرعت موتور DC توسط LCD گرافیکی و تاچ اسکرین

 

انتشار : ۷ آبان ۱۳۹۴

رقص نور بسیار زیبا توسط میکروکنترلر AVR به همراه فایل PCB


رقص نور بسیار زیبا توسط میکروکنترلر AVR به همراه فایل PCB

در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای جذاب و سرگرم کننده با عنوان, ساخت رقص نور بسیار زیبا و البته حرفه ای با ظاهری شبیه قلب توسط میکروکنترلر AVR, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. همواره نور یکی از عوامل مهم در جذب نگاه انسان ها است و به همین خاطر نیز می باشد که امروزه ما شاهد استفاده بسیار زیاد از تجهیزات و جلوه های نوری در تبلیغات های محیطی هستیم. به طور حتم روشن بودن مداوم یک لامپ هیچ گاه نگاه فردی را جذب نمی کند! اما همیشه روشن و خاموش شدن چندین لامپ با افکت های گوناگون، نگاه افراد زیادی را جذب خود می کند، به همین دلیل در یک نتیجه گیری ساده می توان فهمید یک رقص نور زیبا دارای لامپ های LED با چینشی خلاقانه و افکت های نوری طولانی و بسیار گوناگون است.

در این پروژه ما با استفاده از 18 لامپ LED و میکروکنترلر ATTINY2313 از خانواده میکروکنترلرهای AVR اقدام به ساخت یک رقص نور بسیار کوچک با جریان مصرفی بسیار پائین کرده ایم. در رقص نور طراحی شده تمامی لامپ های ال ای دی و میکروکنترلر از نوع SMD (نصب سطحی) انتخاب شده اند تا مدار تا حد ممکن کوچک شود.

برای زیبایی کار تصمیم گرفته ایم تا 18 لامپ ال ای دی را به شکل یک قلب زیبا در کنار یکدیگر قرار بدهیم، همچنین از آنجا که جریان مصرفی مدار بسیار پائین است برای راه اندازی آن از یک باتری 3 ولتی ساعت های مچی بهره برده ایم. همچنین در طرح PCB مدار سعی شده است تا مدار در کوچک ترین اندازه طراحی گردد، بعد از ساخت مدار شما می توانید آن را به عنوان یک هدیه بسیار زیبا و متفاوت که به دست خودتان ساخته اید به شخص مورد نظرتان هدیه بدهید.

 

 

 

انتشار : ۷ آبان ۱۳۹۴

انکدر کیبورد 4*4 ( جایگزین مناسب آی سی MM74C922 )


در طراحی مدارات میکروکنترلر و استفاده از کی پد بدلیل تخصیص یک پورت کامل از آی سی ، گاهی وقتها ممکن است با کمبود پایه های آی سی مواجه شویم .

Keypad

بدین منظور آی سی های انکدر در بازار موجود میباشد مانند آی سی شماره MM74C922 که کد گرفته شده از هشت پایه کی پد ( البته اگر 16 کلیدی باشد ) را گرفته و تبدیل به کد BCD کرده و توسط 4 پایه خروجی در اختیار ما میگذارد . یعنی در واقع با استفاده از این آی سی ها در مدارات میکروکنترلر ، ما بجای تخصیص یک پورت کامل برای کی پد نیاز به چهار پایه از میکرو بدین منظور داریم.

این آی سی تقریبا قیمت بالایی دارد و حتی گاهی ممکن است به دست آوردن آن کمی مشکل باشد. بدین جهت مدار و برنامه ای را که در این جا آورده ام این مشکل را نه تنها به کلی مرتفع کرده بلکه امکانات بسیار جالبتری را در اختیار ما میگذارد ؛

۱- دارای خروجی سریال جهت استفاده در برنامه نویسی ( پایه های مورد نیاز میکرو = 1 عدد)

۲- دارای پایه VT جهت استفاده از وقفه ها

۳- قیمت تمام شده کمتر نسبت به انکدرها

از پایه VT میتوان در مدارتان برای وقفه استفاده نموده و در زیر برنامه وقفه مورد نظر از دستورات سریال مانند Waitkey استفاده نمود.

شماتیک:

سورس برنامه در زیر آورده شده :

 

 

$regfile = "m8def.dat"

$crystal = 8000000

Enable Interrupts

Open "ComB.0:9600,8,n,1" For Output As #1

Config Kbd = Portd , Delay = 50

Config Portc = Output

Config Portb.1 = Output

Vt Alias Portb.1

Dim K As Byte , Num As Byte

Begin:

K = Getkbd()

If K > 15 Then Goto Begin

Num = Lookup(k , Dta)

Vt = 1

Waitms 50

Print #1 , Num

Do

K = Getkbd()

Loop Until K > 15

Vt = 0

JMP Begin

Dta:

Data 7 , 4 , 1 , 10 , 8 , 5 , 2 , 0 , 9 , 6 , 3 , 11 , 12 , 13 , 14 , 15

 

انتشار : ۷ آبان ۱۳۹۴

هشدار ورود و خروج افراد


در بعضی اماکن از قبیل ادارات و یا منازل که ورود و خروج افراد زیاد انجام میشود و اطلاع از آن برای ما اهمیت دارد و نیز بازماندن درب آن مکان چه در فصل تابستان و چه در زمستان از نظر اتلاف انرژی و یا موارد دیگر برای ما حائز اهمیت است ، وجود چنین سیستمی ضروری به نظر می رسد.

در این ورژن ، دستگاه دارای یک دکمه FUNCTION میباشد که این اجازه را به ما میدهد تا بتوانیم به دلخواه عملکرد دستگاه را تنظیم کنیم.

با هر بار فشار این دکمه میتوانیم حالت "فقط 5 ثانیه" ، "فقط 1 دقیقه" ، "هر دو حالت" و یا "هیچ حالت" را انتخاب نماییم. یعنی به این صورت که اگر فقط تایم 5 ثانیه فعال باشد ، زمانی که سنسور عمل کند بدون در نظر گرفتن وضعیت سنسور (یعنی اگر بعنوان مثال از مگنت روی درب استفاده کرده باشیم چه باز بماند و چه بسته شود) ، آلارم فعال شده و بعد از این زمان قطع خواهد شد تا این که وضعیت سنسور به حالت عادی برگردد و سپس دوباره فعال شود . نوع سنسور میتواند PIR و یا مگنت و ... باشد.

اگر تایم فقط یک دقیقه فعال باشد (که این حالت عملکرد بیشتر جهت استفاده بامگنت مناسب میباشد) فقط زمانی آلارم عمل خواهد کرد که مگنت یا هر المان دیگری به مدت یک دقیقه باز بماند . آلارم قطع نخواهد شد تا زمانی که سنسور بسته شود. این حالت برای اطلاع از باز ماندن درب بخصوص در زمستان برای جلوگیری از اتلاف انرژی و نیز در تابستان جهت جلوگیری از ورود حشرات و ... مناسب میباشد.

اگر هر دو تایم فعال باشد با تحریک سنسور، رله فعال شده و بدون در نظر گرفتن وضعیت سنسور قطع خواهد شد ،حال چنانچه تا یک دقیقه باز بماند رله مجدد فعال شده و تا بسته شدن سنسور ادامه خواهد داشت. اگر هیچ حالت فعال نباشد چراغ Stand By روشن خواهد شد.

کلیه تنظیمات در حافظه EEPROM ذخیره خواهد شد.

شماتیک:

سورس برنامه :

NAME : Door Alarm
VER : 2.0
Designer : Esmaeil Mohammad Zadeh
Date : 1388/7/24
Mobile : 09139545140
Email : Esmaeil_AVR@yahoo.com


$regfile = "m8def.dat"
$crystal = 8000000

Config Portc.0 = Output : Config Portc.1 = Output : Config Portc.2 = Output
Config Portc.3 = Output : Config Portd.6 = Output : Config Portd.7 = Output
Config Portd.5 = Output
Config Pind.2 = Input : Config Pind.3 = Input

Config Clock = Soft : Enable Interrupts : Disable Timer2

Defbyte A : Dim Ea As Eram Byte

REN
_open Alias Portc.0 : 60sec Alias Portc.1 : 5sec Alias Portc.2
St_by Alias Portc.3 : Beep Alias Portd.5
Out5 Alias Portd.6 : Out60 Alias Portd.7
Sens Alias Pind.2 : Func Alias Pind.3
Waitms 10 : A = Ea

-------------------------------------------------------------------------------
S0:
Disable Timer2
Do
If Sens = 0 Then
If A = 1 Or A = 3 Then
JMP S1
Elseif A = 2 Then
JMP S2
End If
Else
Gosub Esmaeil : Disable Timer2 : Reset Out60 : Reset _open
End If
If Func = 1 Then
Do
Loop Until Func = 0
Incr A
If A > 3 Then A = 0
Waitms 10
Ea = A
End If
Select Case A
Case 0:
5sec = 0 : 60sec = 0 : St_by = 1 : Goto Standby
Case 1:
5sec = 1 : 60sec = 0 : St_by = 0
Case 2:
5sec = 0 : 60sec = 1 : St_by = 0
Case 3:
5sec = 1 : 60sec = 1 : St_by = 0
End Select
Loop
---------------------------- 5 SEC TIME --------------------------------------
S1:
Gosub Esmaeil : Enable Timer2
Do
Set Out5
If Sens = 0 Then
Set _open
Else
Reset _open
End If
Loop Until _sec = 5
Reset Out5
If A = 1 Then
Do
Loop Until Sens = 1
Goto S0
Elseif A = 3 Then
Goto S2
End If
---------------------------- 60 SEC TIME --------------------------------------
S2:
Gosub Esmaeil : Enable Timer2
Do
If Sens = 0 Then
Set _open
If _min = 1 Then
Set Out60
Do
Loop Until Sens = 1
Jmp S0
End If
Else
JMP S0
End If
Loop
--------------------------- STAND BY ------------------------------------------
Standby:
If Func = 1 Then
Do
Loop Until Func = 0
Incr A : Goto S0
End If
JMP Standby
--------------------------- RESET TIME ----------------------------------------
Esmaeil:
_hour = 0 : _min = 0 : _sec = 0
Return

انتشار : ۷ آبان ۱۳۹۴

LCD روان


چنانچه پروژه ای برنامه نویسی کرده اید و در ابتدای برنامه نیاز دارید که تبلیغات خودتان را نمایش دهید میتوانید از قطعه برنامه ای که نوشته ام استفاده نمایید.

 

در متغیر Text میتوانید متن دلخواه را وارد نموده و متغیر Speed سرعت حرکت و متغیر های Lcd_row و Lcd_col مشخصه های ال سی دی بکار رفته میباشد.

اولی تعداد ردیفهای ال سی دی و دومی تعداد ستونهای آن میباشد.

این برنامه بگونه ای نوشته شده که شما براحتی بتوانید از آن استفاده نمایید و نیاز به دستکاری داخل برنامه نباشد.

شماتیک:

سورس برنامه :

 

***************************************
NAME = LCD Ravan
Ver : 1.0
DESIGNER = ESMAEIL MOHAMMAD ZADEH
MOBILE : 09139545140
FINAL DATE : 1391/8/5
E-MAIL : Esmaeil_AVR@yahoo.com
***************************************
$regfile = "M32def.dat" : $crystal = 8000000 : Enable Interrupts

Config Debounce = 50
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pina.4 , Db5 = Pina.5 , Db6 = Pina.6 , Db7 = Pina.7 , _
E = Pina.3 , Rs = Pina.2


Dim Text As String * 50
Dim Text2 As String * 50
Dim I As Byte , Lenght As Byte
Dim Lcd_col As Byte , Lcd_row As Byte
Dim Col As Byte , Speed As Word
******************************************
Text = "Esmaeil Mohammad Zadeh - Tel : 09139545140"
Lcd_row = 2
Lcd_col = 16
Speed = 300 Mili sec
***************************************
Begin:
Cls : Cursor Off
Lenght = Len(text)
Home : Lcd " LCD Ravan"
Main:
***************************************
Col = Lcd_col
For I = 1 To Lcd_col
Text2 = Mid(text , 1 , I)
Locate Lcd_row , Col : Lcd Text2
Waitms Speed
Decr Col
Next I
***************************************
For I = 2 To Lenght
Text2 = Mid(text , I , Lcd_col)
Locate Lcd_row , 1 : Lcd Text2 ; " "
Waitms Speed
Next I
Locate Lcd_row , 1 : Lcd " "
***************************************
jmp Main
End

 

انتشار : ۷ آبان ۱۳۹۴

سون سگمنت (7segment ) روان


در مداراتی که با سون سگمنت طراحی نموده اید و لازم میبینید تا تبلیغی را نمایش دهید میتوان از این قطعه کد در برنامه اصلی خود استفاده نمایید.

 

این پروژه شبیه پروژه ال سی دی روان میباشد منتها برای مداراتی که از سون سگمنت آند مشترک و با تعداد ارقام مثلا 6 رقم باشد .البته میتوان آن را در برنامه تغییر داد.

قبل از همه باید کاراکترهایی را که میخواهید نمایش دهید را بصورت کد هگز درآورید. برای این کار هم میتوان از طریق محاسبه و هم از طریق نرم افزاری که اینجانب طراحی نموده ام و در پست بعدی ارسال خواهم کرد استفاده نمایید.

شماتیک

سورس برنامه :

 

*************************************
Name : LED Rawan
Type : 6-Digit - 7SEG-CA
Designer : ESMAEIL MOHAMMAD ZADEH
Mobile : 09139545140
Mail : Esmaeil_AVR@yahoo.com
*************************************


$regfile = "m32def.dat" : $crystal = 8000000 : Enable Interrupts
Configuration:

Config Timer1 = Timer , Prescale = 64 : Enable Timer1 : On Ovf1 Ovf1_int

Config Porta = Output : 7seg Alias Porta
Config Portc = Output : Anod Alias Portc
Var:
Dim Puls As Byte , Z As Byte , Y As Byte , I As Byte , Puls_new As Byte
Dim Num_of_7seg As Byte , Num_of_char As Byte

************************************ Tabligh **********************************
Tabligh1:
Puls_new = 0 : I = 0 : Z = 0 : Puls = 0 : Y = 0

Tabligh:
Do
For I = 1 To 6
Anod = Lookup(i , Anod_dta)
Z = Y + I
7seg = Lookup(z , Tabligh_dta)
Waitms 2
Next I
Loop Until Puls_new <> Puls
Puls_new = Puls
Y = Y + 1
If Y => 21 Then Jmp Tabligh1
jmp Tabligh
*******************************************************************************
Ovf1_int:
Incr Puls
Return
************************************* DATA
Anod_dta:
Data &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20 , &H40 , &H80
-------------------------------------------------------------------------------
Tabligh_dta:
Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H87 , &H86 , &HC7 , &HB7
Data &HC0 , &H90 , &HF9 , &HB0 , &H90 , &H92 , &H99 , &H92 , &HF9 , &H99 , &HC0
Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF

 

END

انتشار : ۷ آبان ۱۳۹۴

نرم افزار سون سگمنت


همانگونه که در پست قبلی بهتون قول داده بودم ، در بسیاری از مداراتی که با سون سگمنت طراحی میکنیم باید برای نمایش یک عدد و یا یک کاراکتر خاص باید کد آن را بصورت هگز و یا باینری وارد کنیم .

بدین منظور ما باید یکسری محاسباتی انجام دهیم که مستلزم وقت زیادی خواهد بود. برای حل این مشکل ، نرم افزاری را طراحی و برنامه نویسی نموده ام که کافی است نوع سون سگمنت را انتخاب و نوع کد مورد نظر را نیز انتخاب کرده و دکمه OK را بزنیم .

برای دانلود بر روی لینک زیر کلیک کنید . نظر یادتون نره

دانلود

رمز فایل : www.esmaeil-avr.mihanblog.com

انتشار : ۷ آبان ۱۳۹۴

شمارنده معکوس 6 رقمی


گاهی اوقات ما دستگاهی نیاز داریم که با رسیدن تعداد پالس مشخص به آن و در یک عدد تنظیم شده یک خروجی را روشن کند .

برای تنظیم ابتدا دکمه ستاره "*" را چند ثانیه نگه دارید تا وارد مرحله تنظیم شویم ، سپس میتوان توسط صفحه کلید رقم مورد نظر را وارد نمود.

با هر پالس تحریک به پایه فتوکوپلر شمارنده یک رقم کاهش می یابد و این مقدار در حافظه ثبت خواهد شد تا چنانچه در حین شمارش با قطع برق مواجه شویم و یا در اثر نویز ، سیستم ما ریست شود ، اختلالی در کار شمارش ایجاد نشده و ادامه شمارش انجام شود.

زمانی که شمارش به صفر برسد خروجی رله ما روشن شده و عمل شمارش متوقف خواهد شد.

بعد از متوقف شدن میتوان دکمه مربع "#" را چند ثانیه فشرده نگه دارید تا عدد تنظیم شده اول مجدداً بارگزاری و آماده شمارش شود.

 

 

برنامه این سیستم به روشی متفاوت نسبت به سیستمهای مشابه نوشته شده است که باعث کم شدن خطوط برنامه میشود.

شماتیک:

سورس برنامه:

 

*****************************************
Name : Counter 6 Digit
Ver : 2.0
Designer : Esmaeil Mohammad Zadeh
Mobile : 09139545140
Date : 1390/7/ 21
*****************************************
$regfile = "m32def.dat" : $crystal = 8000000 : Enable Interrupts

Config Kbd = Portd : Config Clock = Soft , Gosub = Sectic
Declare Sub Show

Config Portc = Output : Seg Alias Portc
Config Porta = Output : Disp Alias Porta
Config Pinb.0 = Input : Triger Alias Pinb.0
Config Portb.1 = Output : Rel Alias Portb.1
Config Portb.3 = Output : Dp Alias Portb.3
Dim Flag As Bit
Dim A As Byte , I As Byte , L As Byte , X As Byte , Key As Byte
Dim Num As Long , Eprom As Long
Dim Num_str As String * 6 , Dig As String * 6 , Dig1 As String * 1
Dim E_num As Eram Long , Eeprom As Eram Long
*******************************************************
Begin:
Flag = 0 : Dp = 1 : Num = E_num : Eprom = Eeprom
Main:
Key = Getkbd()
Key = Lookup(key , Keybd)
If Key = 10 Then
_sec = 0
Do
Key = Getkbd()
If _sec => 2 Then Goto Esmaeil
Call Show
Loop Until Key > 11
End If
If Key = 11 Then
_sec = 0
Do
Key = Getkbd()
If _sec => 2 Then
Rel = 0 : Num = Eprom : Waitms 3
E_num = Num
End If
Call Show
Loop Until Key > 11
End If
Call Show
Debounce Triger , 1 , Decrease , Sub
If Num = 0 Then : Rel = 1 : Else : Rel = 0 : End If

jmp Main
*******************************************************
Sub Show
For I = 1 To 6
Num_str = Str(num) : L = Len(num_str)
If L < 6 Then
A = 6 - L : Dig = String(a , 48) 48 = Ascii Code "0"
Num_str = Dig + Num_str
End If
Dig = Mid(num_str , I , 1)
A = Val(dig)
Seg = Lookup(i , Dta2)
Disp = Lookup(a , Dta)
Waitms 1
Next I
End Sub
*******************************************************
Decrease:
If Num > 0 Then Decr Num
Waitms 2
E_num = Num
Return
*******************************************************
Esmaeil:
Num = 0 : X = 0 : _sec = 0 : Flag = 1
Do
Key = Getkbd()
Seg = &HFF : Disp = &HBF
Loop Until Key > 11
Edit:
Key = Getkbd()
Call Show
If _sec => 10 Then Goto Begin
If Key > 11 Then Goto Edit
Key = Lookup(key , Keybd)
_sec = 0
Select Case Key
Case 10:
Waitms 4
E_num = Num : Waitms 4
Eeprom = Num : Goto Begin
Case 11 :
If X <> 0 Then
Num = 0 : X = 0
Else
Goto Begin
End If
Case Else:
Incr X
If X <= 6 Then
Dig1 = Str(key ) : Dig = Str(num)
Dig = Dig + Dig1 : Num = Val(dig)
End If
End Select
Do
Key = Getkbd()
Call Show
Loop Until Key > 11
JMP Edit
*******************************************************
Sectic:
If Flag = 1 Then Toggle Dp
Return

Keybd:
Data 1 , 6 , 7 , 10 , 2 , 5 , 8 , 0 , 3 , 4 , 9 , 11
Dta:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90
Dta2:
Data &H00 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20
END

 

 

انتشار : ۷ آبان ۱۳۹۴

دزدگیر تلفن کننده ساده


هدف از این پروژه آشنایی با سیستم شماره گیری DTMF میکرو کنترلر میباشد

 

در ابتدا برای وارد کردن شماره مورد نظر دکمه # را به مدت حدود 5 ثانیه نگه داشته تا وارد قسمت ورود شماره شوید . در این حالت چراغ سبز (CHANGE) روشن شده و بعد از وارد کردن شماره دکمه * را فشار دهید . دراین مرحله چراغ CHANGE چند مرتبه چشمک خواهد زد که به منزله ورود مجدد شماره تلفن وارد شده جهت تایید میباشد و بعد از وارد کردن مجدد شماره تلفن در صورت درست بودن شماره ، بیزر به صدا در آمده و چراغ خاموش خواهد شد در غیر این صورت بوق خطا داده و روشن خواهد ماند.

در هر کدام ازمراحل ( ورود شماره ) و یا ( تایید آن ) ، در صورت انصراف از تغییر شماره تلفن و یا ورود اشتباه ، میتوان با فشار دادن دکمه # به حالت استندبای برگشت.

اگر بدون ورود شماره تلفن دکمه * را فشار دهید هیچ عکس العملی نشان نخواهد داد. حال چنانچه سنسور عمل کند سیستم وارد عمل شده و شماره مورد نظر را خواهد گرفت ویک سیگنال هشدار دهنده روی خط خواهد فرستاد و بعد از حدود یک دقیقه ،خط تلفن به حالت عادی برخواهد گشت.

رله بکار رفته ار نوع دوبل بوده که یک جفت از کنتاکت رله بعنوان وصل آزیر مورد استفاده قرار میگیرد.میتوان از بکار بردن ال سی دی صرفنظر کرد.

شماتیک:

 

سورس برنامه :

 

************************************
NAME : AUTO DIALLER
DESIGNER : Esmaeil Mohammad Zadeh
DATE : 1388/7/5
TEL : 09139545140
MAIL : Esmaeil_AVR@Gmail.com
************************************
$regfile = "m8def.dat"
$crystal = 4000000
Real Crystal is 4MHZ
Config Lcdpin = Pin , Db7 = Pinb.2 , Db6 = Pinb.3 , Db5 = Pinb.4 , _
Db4 = Pinb.5 , E = Pinc.0 , Rs = Pinc.1
Config Lcd = 16 * 2
Config Kbd = Portd , Debounce = 100 , Delay = 100
Config Timer2 = Timer , Prescale = 256

Enable Interrupts : Disable Timer2
On Ovf2 Esmaeil
VAR
Dim Puls As Byte , B As Byte , N As Byte , Result As Byte , K As Byte
Dim Num As Byte , Flag As Bit , Count As Byte
Dim En As Eram Byte
Dim K2 As String * 1
Dim A(16) As String * 1 , A2(16) As String * 1
Dim Digit(16) As String * 1
Dim Edigit(16) As Eram String * 1

Declare Sub Check
I/O
Config Pinc.2 = Input : Config Portc.3 = Output : Config Portc.4 = Output
Config Portc.5 = Output : Config Portb.0 = Output
Trig Alias Pinc.2 : Tel_line Alias Portc.3 : Led Alias Portc.4
Beep Alias Portc.5
Beep2 Alias Portb.0
Cursor Off
Cls : Home : Lcd "Designer :"
Home L : Lcd "E-Mohammad Zadeh"
Wait 3
Sound Beep , 500 , 100
Waitms 100
Sound Beep , 200 , 200
Waitms 100
Sound Beep , 100 , 400
Waitms 100
********************** START **************************************************
Begin:
Sound Beep , 200 , 100
Disable Timer2 : Puls = 0 : Count = 0
Cls : Home : Lcd "* Stand By *"
Home L : Lcd "Dialler Ver. 1.0"
Tel_line = 0 : Led = 0
If En < 0 Then En = 0
N = En
For B = 1 To N
Digit(b) = Edigit(b)
Waitms 5
Next B

Bitwait Trig , Reset
Begin2:
Do
If Trig = 1 Then Goto Dial
K = Getkbd()
If K > 11 Then Goto Begin2
If K = 11 Then # BUTTON
Sound Beep , 200 , 100 : Enable Timer2 : Puls = 0
Do
K = Getkbd()
If Puls = 100 Then Goto Chang
Loop Until K > 11
Disable Timer2 : Puls = 0 : Goto Begin2
Else
Sound Beep , 200 , 100
Do
K = Getkbd()
Loop Until K > 11
Goto Begin2
End If
Loop
----------------------------------------- CHANGE TEL NUMBER -------------------
Chang:
Disable Timer2 : Puls = 0 : B = 0 : Led = 1
Cls : Home : Lcd "Enter Tel Number" : Home L : Cursor Blink
Sound Beep , 200 , 100
Do
K = Getkbd()
Loop Until K > 11
Chang2:
K = Getkbd()
If K > 11 Then Goto Chang2
If K = 11 Then Goto Begin # BUTTON

If K = 3 Then * BUTTON
If B <> 0 Then
Do
K = Getkbd()
Loop Until K > 11
Goto Confirm
Else
Goto Chang2
End If
End If
Num = Lookup(k , Dta)
K2 = Str(num)
Incr B
A(b) = K2 : Locate 2 , B : Lcd K2
Sound Beep , 200 , 100
Do
K = Getkbd()
Loop Until K > 11
JMP Chang2
---------------------------------------- CONFIRM ------------------------------
Confirm:
Cls : Home : Lcd " Confirm Number "
N = B : Sound Beep , 500 , 100
For B = 1 To 10
Toggle Led
Waitms 150
Next B
Led = 1
B = 0
Home L : Cursor On Blink
Confirm2:
K = Getkbd()
If K > 11 Then Jmp Confirm2
If K = 11 Then Goto Begin # BUTTON
If K = 3 Then
If B <> 0 Then * button
Call Check
If Result = N Then verify tel number
For B = 1 To N
Edigit(b) = A(b)
Waitms 10
Next B
En = N
For B = 1 To 4
Sound Beep , 200 , 100
Waitms 50
Next B
Goto Begin
Else
Sound Beep , 1000 , 200 : Jmp Chang
End If
Else
Goto Confirm2
End If
End If

Num = Lookup(k , Dta)
K2 = Str(num)
Incr B
A2(b) = K2 : Locate 2 , B : Lcd K2
Sound Beep , 200 , 100
Do
K = Getkbd()
Loop Until K > 11
jmp confirm2
-------------------------------------------- DIALING --------------------------
Dial:
Tel_line = 1
Cls : Home : Lcd " Dialling... "
Wait 1 : Home L
For B = 1 To N
Dtmfout Digit(b) , 50
Locate 2 , B : Lcd Digit(b)
Waitms 60
Next B
Puls = 0
Wait 4
Alarm:
Do
Enable Timer2
Sound Beep2 , 300 , 100
Waitms 50
If Count = 255 Then Goto Begin
K = Getkbd()
If K = 11 Then Goto Begin
Loop
-------------------------------------------------------------------------------
Sub Check
Result = 0
For B = 1 To N
If A(b) = A2(b) Then Incr Result
Next B
End Sub
-------------------------------------------------------------------------------
Dta:
Data 1 , 4 , 7 , 10 , 2 , 5 , 8 , 0 , 3 , 6 , 9 , 11

Esmaeil:
Incr Puls
Count = Puls + 0.5
Return

 

انتشار : ۷ آبان ۱۳۹۴

شمارنده پالس


گاهی اوقات لازم است تا برای یک سیستم تعدادی پالس با تعداد مشخص را شمرده و سپس در یک عدد خاص دستگاهی را فعال کرده و یا کار دیگری انجام دهیم و نیز لازم است تا فاصله زمانی بین دو پالس را همچنین تنظیم نماییم .

در این صورت ما میتوانیم از این مدار استفاده نماییم.

مدار در صورتی کار خواهد نمود که هم تعداد پالس و هم فاصله زمانی آن تنظیم شده باشد. تنظیمات در حافظه eeprom دستگاه ذخیره خواهد شد.

ورودی فتوکوپلر را میتوان به منبع پالس متصل نمود و اگر ابتدا دکمه INCR را فشرده نگه داریم بوسیله SET میتوان رقم مورد نظر را افزایش و اگر دکمه DECR را فشرده نگه داریم بوسیله SET میتوان رقم مورد نظر را کاهش داد.

با هر بار پالس ، رقم تنظیم شده ما یک شماره کاهش خواهد یافت و با صفر شدن رله فعال خواهد شد و این روشن بودن ادامه خواهد یافت تا زمانی که دیگر هیچ پالسی نداشته باشیم.

حداکثر فاصله زمانی بین دو پالس پیاپی را میتوان با فشرده نگه داشتن DELAY تنظیم نمود. با فشردن این دکمه عدد تاخیر نمایش داده خواهد شد و با رها نمودن ، عدد مربوط به تعداد نشان داده خواهد شد.

حال برای افزایش رقم باید علاوه بر DELAY دکمه INCR را نیز نگه داشته و با SET افزایش دهیم و برای کاهش باید علاوه بر DELAY دکمه DECR را نیز نگه داشته و با SET تنظیم نماییم.

شماتیک:

سورس برنامه :

 

NAME : Pulse Counter
VER : 2.0
DESIGN : ESMAEIL MOHAMMAD ZADEH
DATE : 1388/10/12
TEL : 09139545140
E-MAIL :Esmaeil_AVR@GMAIL.COM
*************************************
$regfile = "m8def.dat"
$crystal = 8000000
CONFIGURATIO
Config Int0 = Falling : Enable Int0
On Int0 Int0_isr
Config Int1 = Falling : Enable Int1
On Int1 Int1_isr
Config Timer1 = Timer , Prescale = 64
Enable Ovf1 : On Ovf1 Tim : Start Timer1
I/O
Config Portd.0 = Output : Config Portd.1 = Output
Config Pind.4 = Input : Config Pind.5 = Input
Config Portc.5 = Output : Config Portb = Output
Config Portb.7 = Output : Config Pind.6 = Input
VAR
Dim Yek As Byte , Dah As Byte , I As Byte , S As Byte , Del As Byte
Dim Pulse As Byte , Num As Byte , Num2 As Byte , A As Byte
Dim Enum As Eram Byte , Edel As Eram Byte
SUB PROGRAM
Declare Sub Separate
RENAME
Dig1 Alias Portd.0 : Dig2 Alias Portd.1
Rel Alias Portc.5
In_cr Alias Pind.4 : De_cr Alias Pind.5
Dp Alias Portb.7 : Delay_ Alias Pind.6
CONST
Const Dig1 = &B00000001 : Const Dig2 = &B00000010
LOAD EEPROM
If Enum = 255 Then Enum = 0
Num = Enum
If Edel = 255 Then Edel = 0
Del = Edel
For I = 1 To 3
Portd = &B00000011
Portb = &HBF
Waitms 400
Portd = &B00000000
Waitms 400
Next I
-------------------------------- MAIN -----------------------------------------
Begin:
Enable Interrupts : Disable Timer1 : S = 0
Pulse = 0 : Rel = 0 : Dp = 1
Waitms 20
Del = Edel
Num = Enum
Num2 = Num
Do
A = Num2
Call Separate
Yek = Lookup(yek , Dta)
Portd = Dig2
Portb = Yek
Waitms 2

Dah = Lookup(dah , Dta)
If Dah <> &HC0 Then
Portd = Dig1
Else
Portd = &H00
End If
Portb = Dah
Waitms 2

If Del <> 0 Then
If S = Del Then Goto Begin delay time
End If

If Num <> 0 Then
If Pulse = Num Then Rel = 1
End If

If Delay_ = 0 Then Goto Delay_isr
Loop
End

Delay_isr:
Do
A = Del
Call Separate
Yek = Lookup(yek , Dta)
Portd = Dig2
Portb = Yek
Dp = 0
Waitms 2

Dah = Lookup(dah , Dta)
If Dah <> &HC0 Then
Portd = Dig1
Else
Portd = &H00
End If
Portb = Dah

Waitms 2
Loop Until Delay_ = 1
Goto Begin

---------------------------------- SUB PROGRAM --------------------------------
Sub Separate
Dah = A / 10
Yek = Dah * 10
Yek = A - Yek
End Sub

Int0_isr:

If Num <> 0 And Del <> 0 Then
S = 0 : Enable Timer1 : Start Timer1
If Rel = 0 Then
Pulse = Pulse + 1
Num2 = Num - Pulse
If Num2 = 255 Then Num2 = 0
End If
End If
Return

Int1_isr:

Pulse = 0
If Delay_ = 1 Then
If In_cr = 0 Then
Waitms 10
Num = Num + 1
If Num > 99 Then Num = 0
Num2 = Num
Waitms 5
Enum = Num
Elseif De_cr = 0 Then
Waitms 10
Num = Num - 1
If Num = 255 Then Num = 99
Num2 = Num
Waitms 5
Enum = Num
End If
Else
If In_cr = 0 Then
Waitms 10
Del = Del + 1
If Del > 99 Then Del = 0
Waitms 5
Edel = Del
Elseif De_cr = 0 Then
Waitms 10
Del = Del - 1
If Del = 255 Then Del = 99
Waitms 5
Edel = Del
End If
End If
Return

Tim:
Incr S
Start Timer1
Return

Dta:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90

END

 

انتشار : ۷ آبان ۱۳۹۴

کارت های هوشمند (Smart Card)


کارتهای هوشمند در واقع کامپیوتری است در قالب یک تراشه که روی یک کارت پلاستیکی با ابعاد استاندارد قرار گرفته است و دارای یک حافظه از نوع eeprom میباشد.

هدف ما از این مطلب این است که بتوانیم دیتا را از داخل حافظه کارت خوانده و توسط آن پروژه های کاربردی مختلفی را بسته به ایده خودمان طراحی نماییم.

شماتیک پایه های آن مانند شکل زیر میباشد :

کارتتلفنهامعمولادارای64بایتحافظه eeprom میباشند یعنی در مجموع 512 بایت.

چهاربایتاولمربوطبهکدهای مخصوصکشوروشرکتسازندهوچهاربایتدوممربوطبهسریالکارتمیباشد.

 

در واقع ما برای پروژه هایمان به همین 4 بایت دوم نیاز داریم چون همیشه ثابت میباشند یعنی باطل بودن کارت و یا داشتن اعتبار فرقی به حال آن نخواهد داشت. بنابراین در این پست من فقط روی همین قضیه مانور خواهم داد.

 

ما برای اتصال کارت تلفن به میکرو به 3 پایه آن نیاز داریم که با توجه به شکل عبارتند از :

 

1- پایه های CLK و Reset که به پایه های کنترلی معروفند

2- پایه I/O (پایه دیتا)

پایه Vpp آن در اینجا آزاد میگذاریم و استفاده نمیشود.

برای خواندن دیتای کارت ، باید در ابتدا کارت را ریست کنیم تا شمارنده آدرس از خانه صفر شروع شود یعنی از اولین بیت.

 

به ازای هر پالس ساعت که به پایه کلاک وارد میشود تا زمانی که پایه ریست در وضعیت LOW (پایین) قرار دارد ، شمارنده آدرس حافظه یک واحد اضافه خواهد شد.

 

بعدازریستوپایینامدنپایهریست و Clock ، اولین بیت در پایه I/O ظاهر خواهد شد. به این ترتیب با هر بالا رفتن کلاک شمارنده یک واحد افزایش یافته و با پایین آمدن آن بیت بعدی در I/O ظاهر میشود.

 

ما میتوانیم بیت های دریافتی را در یک متغیر از نوع آرایه ذخیره نموده و در برنامه خودمان به دلخواه از آن استفاده کنیم.

 

با استفاده از یک میکرو ، 2 پایه از آن را خروجی قرار داده یکی برای Clock و دیگری برای Reset

ویک پایه از میکرو هم بعنوان ورودی برای I/O تعریف میکنیم.

 

برای هر بار خواندن کارت در ابتدا کارت را ریست میکنیم . برنامه ریست میکرو به این شکل است:

 

 

Config pind.0=Input : IO Alias Pind.0

Config portd.1=Ouput : CLK Alias Portd.1

Config Portd.2=Output : RST Alias Portd.2

 

Reset_card:

Set Rst

Set Clk

Waitms 50

Reset Clk

Reset Rst

Return

 

 

بلافاصله بعد از آن طبق برنامه زیر ، بیتهای دریافتی از پین I/O را تبدیل به بایت و در آرایه (Dta ) ذخیره کرده و میتوانیم روی ال سی دی نمایش دهیم :

 

 

 

 

 

For I = 1 To 10

For Z = 7 To 0 Step -1

Dta(i).z = Io

Set Clk

Waitus 10

Reset Clk

Next Z

Next I

 

 

بعد از این مرحله ما بایتهای 1 تا 10 را در Dta(1) تا Dta(10) خواهیم داشت و با آن کارهای دلخواه را انجام میدهیم. پایه IO میکرو به I/O کارت و پایه RST میکرو به پایه Reset کارت و پایه CLK میکرو به پایه Clock از کارت وصل میشود.

شماتیک:

موفق باشید./

 

انتشار : ۷ آبان ۱۳۹۴

قفل رمز دیجیتال ساده (ورژن یک)


در اینجا برنامه یک قفل رمز دیجیتال ساده (ورژن یک ) را برای شما نوشتم که میتوان از آن بعنوان یک درب بازکن دیجیتالی رمزی استفاده کرده و نیز از این روش برنامه نویسی برای نوشتن سایر برنامه های کاربردی و پیشرفته تر بهره برد.

 

روش کار بدین صورت میباشد که در ابتدا برای رمز گذاری باید دکمه Button را فشرده نگه داشته و سپس برق دستگاه وصل شود. در این حالت چراغ تغییر رمز Change Password روشن خواهد شد.

رمز را از یک تا 10 رقم به دلخواه وارد نموده و دکمه "*" رافشار دهید. چند بوق متناوب زده و نیز چراغ تغییر رمز هم چند بار چشمک خواهد زد و مجدداً روشن میماند.

در اینجا باید رمز را مجدد وارد نموده و سپس دکمه "*" را بفشارید. در صورت برابری رمزها ، در حافظه ذخیره خواهد شد. در غیر اینصورت بوق خطا داده و آماده تغییر مجدد رمز میشود.

در حین ورود رمز چنانچه رقمی را اشتباه وارد کنید میتوان توسط دکمه "#" آن را پاک و دوباره از اول وارد کنید و چنانچه رقمی را وارد ننموده باشید توسط دکمه مربع میتوان به حالت عادی برگشت.

برای باز کردن درب کافیست رمز صحیح را وارد نموده و دکمه مربع را بزنید. در پست های بعدی قفل رمز پیشرفته تر برای سایر وسایل منزل خواهم گذاشت. با سایت من همراه باشید

شماتیک:

برنامه :

 

************************************
NAME : Digital Lock
Ver : 1.0
DESIGNER : Esmaeil Mohammad Zadeh
DATE : 1391/7/5
TEL : 09139545140
MAIL : Esmaeil_AVR@yahoo.com
Weblog : www.esmaeil-avr.Mihanblog.com
************************************
$regfile = "m8def.dat" : $crystal = 8000000 : Enable Interrupts

Config Kbd = Portd , Debounce = 50 , Delay = 50

VAR
Dim A(10) As Byte , A2(10) As Byte
Dim B As Byte , Num_of_password As Byte
Dim Result As Byte , K As Byte
Dim Num As Byte , I As Byte
Dim Enum_of_password As Eram Byte
Dim Enum(10) As Eram Byte

Declare Sub Check

I/O
Config Pinb.0 = Input : Button Alias Pinb.0
Config Pinc.2 = Output : Beep Alias Portc.2
Config Portc.3 = Output : Relay Alias Portc.3
Config Portc.4 = Output : Change_led Alias Portc.4

If Button = 1 Then Jmp Chang


********************** START
Begin:
Num_of_password = Enum_of_password

Change_led = 0 : Relay = 0

B = 0 : I = 0 : Result = 0
*******************************************************************************
Main:
Do
K = Getkbd()
Loop Until K < 12
Beep = 1
Waitms 100
Beep = 0
Num = Lookup(k , Dta)

Select Case Num
Case 0 To 9:
If B < 10 Then
Incr B
A(b) = Num
End If
Case 10: * Button
If B <> 0 Then
For I = 1 To Num_of_password
If A(i) = Enum(i) Then Incr Result
Next I
If Result = Num_of_password Then OK Password
Relay = 1 : Wait 1
Relay = 0
Else Error Password
Relay = 0 : Beep = 1
Wait 2
Beep = 0
End If
jmp Begin
End If
Case 11 : Jmp Begin # Button
End Select

Do
K = Getkbd()
Loop Until K > 11
jmp Main
***************************************** CHANGE PASSWORD
Chang:
B = 0 : Change_led = 1
Chang2:
Do
K = Getkbd()
Loop Until K < 12
Beep = 1
Waitms 100
Beep = 0
Num = Lookup(k , Dta)

Select Case Num
Case 0 To 9:
If B < 10 Then
Incr B
A(b) = Num
End If
Case 10: * BUTTON
If B <> 0 Then
Goto Confirm
Else
Goto Chang2
End If
Case 11 : # BUTTON
If B <> 0 Then
B = 0
Else
Goto Begin
End If
End Select

Do
K = Getkbd()
Loop Until K > 11
JMP Chang2
---------------------------------------- CONFIRM ------------------------------
Confirm:
Num_of_password = B
For B = 1 To 10
Toggle Change_led : Toggle Beep
Waitms 100
Next B
Change_led = 1 : Beep = 0
B = 0
Do
K = Getkbd()
Loop Until K > 11
Confirm2:
Do
K = Getkbd()
Loop Until K < 12
Beep = 1
Waitms 100
Beep = 0
Num = Lookup(k , Dta)

Select Case Num
Case 0 To 9:
If B < 10 Then
Incr B
A2(b) = Num
End If
Case 10: * button
If B <> 0 Then
Call Check
If Result = Num_of_password Then verify tel number
For B = 1 To Num_of_password
Enum(b) = A(b)
Waitms 10
Next B
Enum_of_password = Num_of_password
For B = 1 To 6
Toggle Beep
Waitms 50
Next B
Beep = 0
Goto Begin
Else
Beep = 1 : Wait 1
Beep = 0 : Jmp Chang
End If
End If
Case 11: # BUTTON
If B <> 0 Then
B = 0
Else
Goto Begin
End If
End Select

Do
K = Getkbd()
Loop Until K > 11
jmp confirm2
-------------------------------------------------------------------------------
Sub Check
Result = 0
For B = 1 To Num_of_password
If A(b) = A2(b) Then Incr Result
Next B
End Sub
-------------------------------------------------------------------------------

Dta:
Data 1 , 4 , 7 , 10 , 2 , 5 , 8 , 0 , 3 , 6 , 9 , 11

انتشار : ۷ آبان ۱۳۹۴

مدار ضد هنگ میکروکنترلر


آیا تا به حال برای شما پیش آمده که در برنامه نویسی های خود با وجود این که تایمر WatchDog را نیز فعال کرده اید ولی به دلایل نامعلوم میکرو هنگ کند؟! به خاطر مشکلی که قبلا یکبار برای خودم بوجود آمد و آن هم به این شکل بود که با وجودی که سیستم Watchdog میکرو را راه اندازی کرده بودم و از نظر صحت کارکرد تست و عملی هم شده بود ، باز هم به دلیل نامعلومی (که البته فکر میکنم نوسانات برق بوده) میکرو هنگ کرد و مجبور به ریست سخت افزاری شدم. این مشکل ایده ای شد تا به فکر یک مدار ریست کننده اتوماتیک سخت افزاری بیفتم تا برای دستگاههایی که از نظر کاری حساس می باشند مانند کنترل کننده های دما و رطوبت و سیستمهای امنیتی که با میکرو طراحی میکنیم و ... بشود استفاده کرد. شاید زمانی به درد شما هم بخورد. پس فایل های زیر را دانلود کنید. نظر یادتون نره. فایل راهنما و توضیحات فایل پروتیوس http://s1.picofile.com/file/7706942903/Antihang_Shematic.rar.html پسورد تمام فایلها : www.esmaeil-avr.mihanblog.com

انتشار : ۷ آبان ۱۳۹۴

راهنمای جامع ایمنی در برق

راهنمای جامع ایمنی در برق

برق، یکی از مهم ترین اختراعات بشر است که نقش حیاتی در زندگی روزمره ما دارد. با این حال، برق می تواند بسیار خطرناک باشد و در صورت عدم رعایت نکات ایمنی، می تواند منجر به برق گرفتگی، آتش سوزی و سایر حوادث ناگوار شود. در این راهنمای جامع، به بررسی کامل اصول ایمنی در برق، از ... ...

راهنمای جامع خازن ها - درک کامل اصول، کاربردها و انواع

راهنمای جامع خازن ها - درک کامل اصول، کاربردها و انواع

خازن ها، یکی از اجزای اساسی مدارهای الکتریکی و الکترونیکی هستند که وظیفه ذخیره سازی بار الکتریکی را بر عهده دارند. در این راهنمای جامع، به بررسی عمیق خازن ها، از جمله اصول عملکرد، انواع، کاربردها، محاسبات و انتخاب خازن مناسب، می پردازیم. با این راهنما می توانید: اصول ... ...

راهنمای جامع تبدیل واحدهای الکتریکی

راهنمای جامع تبدیل واحدهای الکتریکی

در دنیای برق و الکترونیک، آشنایی با واحدهای الکتریکی و نحوه تبدیل آنها بین یکدیگر از مهارت های ضروری است. این راهنمای جامع، به شما کمک می کند تا به طور کامل بر تبدیل واحدهای الکتریکی مسلط شوید. در این راهنما، به بررسی موارد زیر می پردازیم: معرفی واحدهای پایه و فرعی ... ...

راهنمای جامع نصب کابل برق

راهنمای جامع نصب کابل برق

با این راهنمای جامع، به دنیای نصب کابل برق قدم بگذارید، اصول و الزامات آن را بشناسید، با انواع کابل ها و ابزارهای مورد نیاز آشنا شوید، مراحل نصب را به صورت گام به گام فرا بگیرید و با نصب اصولی کابل برق در منزل یا محل کار خود، از ایمنی و آسایش بیشتری برخوردار شوید!   برق، ... ...

شبیه سازی شبکه HVDC

شبیه سازی شبکه HVDC

در این پروژه، یک واحد انرژی تجدید پذیر (توربین بادی) از طریق خطوط جریان مستقیم ولتاژ بالا (HVDC) به یک شبکه AC متصل شده است. بدیهی است که از دو مبدل (کانورتر) AC به DC جهت تبدیل پارامترهای الکتریکی استفاده شده است. سیستم های کنترل مبدل ها برای واحد تجدید پذیر و شبکه به ... ...

دریافت فایل : شبیه سازی شبکه HVDC
مطالعه روش‏های تلفیق داده در سیستم ناوبری ترکیبی INS/GNSS

مطالعه روش‏های تلفیق داده در سیستم ناوبری ترکیبی INS/GNSS

این محصول در قالب یک سمینار کامل نوشته شده است که نیاز به هیچگونه ویرایشی ندارد. این فایل در ۷۸ صفحه و در فرمت word تنظیم شده است که شامل چکیده،فهرست مطالب که در ۶ فصل آورده شده و در نهایت مراجع و رفرنس ها می باشد. در این سمینار قصد داریم ابتدا اصول کارکرد سیستم ناوبری ... ...

شناسایی سیستم به روش آنالیز طیفی با کد نویسی در متلب و مقایسه آن با کد دستوری spa

شناسایی سیستم به روش آنالیز طیفی با کد نویسی در متلب و مقایسه آن با کد دستوری spa

این فایل در فرمت پاورپوینت تهیه شدا است. این کد براساس سه گام مهم نوشته شده است که مختصرا شرح داده می شود گام اول: ابتدا ورودی را به سیستم اعمال می کنیم و خروجی ها را ثبت می کنیم. اولین گام محاسبۀ کوواریانس و کراس کوواریانس از این ورودی و خروجی هاست. برای شناسایی سیستم ... ...

پاورپوینت کامل و جامع با عنوان تقریب فیلترهای الکترونیکی (فیلتر و سنتز مدار) در 112 اسلاید

پاورپوینت کامل و جامع با عنوان تقریب فیلترهای الکترونیکی (فیلتر و سنتز مدار) در 112 اسلاید

فیلتر پایین‌گذر (به انگلیسی: Low-pass filter) نوعی از فیلتر می‌باشد که سیگنال‌هایی با بسامدی کمتر از بسامدی مشخص را عبور می‌دهد لازم به توجه است که این فیلتر در بحث پردازش سیگنال و جریان‌های متناوب اهمیت دارد و اثری بر جریان‌های مستقیم ندارد. فیلتر بالاگذر (به انگلیسی: ... ...

پاورپوینت گیاه جینکو بیلوبا

پاورپوینت گیاه جینکو بیلوبا

عنوان پاورپوینت:دانلود پاورپوینت گیاه جینکو بیلوبافرمت: پاورپوینت قابل ویرایشتعداد اسلاید: 17پاورپوینت کامل و آماده ارائهفهرست مطالب:معرفی کوتاهی از گیاه جینکو بیلوباترکیبات شیمیایی اصلیاصلی ترین ترکیب تشکیل دهنده آنمکانیسم عمل جینکو بیلوبااشکال دارویی جینکو بیلوباکاربرد آن ... ...

دانلود جزوه کنترل مدرن دانشگاه خواجه نصیر

دانلود جزوه کنترل مدرن دانشگاه خواجه نصیر

جزوه عالی و کامل تایپ شده سیستم های کنترل پیشرفته (کنترل مدرن) آماده برای دانلود است. مشخصات جزوه دانشگاه: صنعتی خواجه نصیرالدین طوسی رشته: مهندسی برق، مهندسی مکانیک استاد: دکتر بیژن معاونی فایل های همراه جزوه: تمرین ها و جواب های کامل، کوئیزها، پروژه ها فرمت: PDF پی ... ...

راهنمای جامع طبقه بندی فیوزها

راهنمای جامع طبقه بندی فیوزها

با این راهنمای جامع، به دنیای شگفت انگیز فیوزها قدم بگذارید، انواع مختلف آنها را بشناسید، با نحوه کار و عملکرد آنها آشنا شوید و با انتخاب و استفاده صحیح از فیوزها، از تجهیزات و لوازم برقی خود در برابر خطرات ناشی از اضافه بار و اتصال کوتاه محافظت کنید!   فیوزها، یکی از ... ...

شبیه سازی مقاله جبران سازی نامتعادلی ولتاژ در ریز شبکه با ژنراتور سنکرون مجازی

شبیه سازی مقاله جبران سازی نامتعادلی ولتاژ در ریز شبکه با ژنراتور سنکرون مجازی

مبدل های قدرت در دهه گذشته کاربردهای زیادی در صنعت برق پیدا کرده اند. ژنراتور سنکرون مجازی (VSG) یک نمونه واقعا موثر از این مبدل ها است که می تواند برای القای دینامیک مورد نظر به شبکه استفاده شود. علیرغم عملکرد عالی VSGها در شرایط متعادل، آنها انعطاف پذیری لازم برای حذف ... ...

دانلود شبیه سازی یکسوساز تک فاز تمام موج تریستوری

دانلود شبیه سازی یکسوساز تک فاز تمام موج تریستوری

شبیه سازی یکسوساز تک فاز تمام موج تریستوری   الکترونیک صنعتی یا الکترونیک قدرت شاخه ای از مهندسی برق است که در آن با استفاده از خواص حالت جامد مواد نمیه هادی، توان ها (ولتاژ ها و جریان ها) ی قدرت کنترل یا تبدیل می شوند. بنابراین تمام منابع تغذیه جدید همچون شارژرها، ... ...

کتاب Impedance source power electronic converters

کتاب Impedance source power electronic converters

این کتاب محصول جدید انتشارات wiley در سال 2016 است. برای اطلاعات بیشتر به اینجا مراجعه شود. فرمت: PDF تعداد صفحات:419 پیشنهاد ویژه: در صورتی که تمایل دارید کتاب فوق را با 80 درصد تخفیف به همراه یک هدیه ویژه خریداری نمایید به بخش خرید پکیج کتاب های الکترونیک قدرت ... ...

اگر به یک وب سایت یا فروشگاه رایگان با فضای نامحدود و امکانات فراوان نیاز دارید بی درنگ دکمه زیر را کلیک نمایید.

ایجاد وب سایت یا
فروشگاه حرفه ای رایگان

پرفروش ترین ها


    پر بازدید ترین های فورکیا


    مطالب تصادفی

    • کاربرد و عملکرد فیبر نوری
    • چطور برخورد دهنده بزرگ هادرون (LHC) کار می کند؟
    • الگوریتم ضرب کننده Booth و پیاده سازی آن با زبان VHDL
    • مشخصه های فنی دوربین Panasonic Lumix DMC G۱
    • صفحه نمایش LCD

    تمام حقوق مادی و معنوی این وب سایت متعلق به "" می باشد