ايران ويج

نسخه‌ی کامل: آموزش بیسکام و کدویژن با پروژه های عملی ( بدون جزوه و فیلم )
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5 6 7 8 9 10
سلام دوستان.
این تاپیک رو زدم که واسه کسایی مثل خودم که میخوان هر دوتا زبان c و بیسیک رو یاد بگیرن پروژه هایی رو به هر دو زبان قرار بدم که بهتر بتونن برنامه هارو درک کنند.
امید وارم که با کمک بقیه دوستان عزیز بتونیم شمارو واسه یادگیری هر دو زبان کمک کنیم..........
من مدیر هیچ جایی نیستم که بخوام حرص و جوش انجمن رو بخورم اما تروخدا یه جای خوب بزارید تاپیکو.
بهتر بود این تاپیک توی بخش الکترونیک-میکرو-AVR باشه و اسمش هم پروژه های بسکام و کدویژن باشه.
اینجوری اونایی که نیاز داشته باشن راحت تر پیدا میکنن.
اما در کل فکر خوبیه.اگه بشه یه مجموعه کامل پروژه های عملی درست کرد خوبه.
اما برای این که اسپم نباشه:
از یه مدار مولد خیلی خیلی ساده فرکانس متغیر مربعی شروع میکنیم.(فعلا فقط همین دم دستم بود.الان هم حال کد نوشتن نداشتم.)
******************************************************
میکرو:atmega 8
کلاک:نوسانساز داخلی-1 مگاهرتز
اهداف پروژه:توضیح اینا به صورت خیلی ساده:
1.تایمر
2.وقفه های خارجی
3.ایجاد متغیر و مقدار دهی آن !!!!!! Biggrin
کد به زبان شیرین و شیبای کدویژن:
کد:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 8/21/2012
Author  : APCOG
Company :
Comments:


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 1.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>
char a=0;
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
if(a>0){
a=a-1;
};
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// Place your code here
if(a<255){
a=a+1;
};
}

// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Place your code here
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x08;

// Port C initialization
// Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=0 State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x40;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: CTC top=OCR2
// OC2 output: Toggle on compare match
ASSR=0x00;
TCCR2=0x1E;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
GICR|=0xC0;
MCUCR=0x0A;
GIFR=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here
      OCR2=a;
      };
}
بیش از حد سادست برای همین دیگه فایل پروتئوس نزاشتم.
فقط برای تغیر فرکانس از دو تا شستی مجهز به سیستم فوق پیشرفته پول آپ به وقفه یک و صفر استفاده میشه.
خروجی هم روی پایه خروجی تایمر 2 هست.خیلی راحت با یه ترانزیستور تقویتش کنین و صدای آزار دهندش رو از یه بلندگو بشنوین.
خب با نام و یاد خدا کارمونو شروع میکنیم.امید وارم که مطالبی که قرار میدم واستون مفید باشه و بهتون کمک کنه.
خب ما از کامپایلر کد ویژن شروع میکنیم.
خب یک توضیح مختصر در مورد این کامپایلر.
این کاپایلر به زبان C هستش که C یک زبان معمولی هستش(نه سطح بالا و نه سطح پایینه).
حالا کلا زبان سطح بالا چیه:به زبان برنامه نویسی که به زبان ما نزدیک تر باشه به اون زبان سطح بالا میگن مثل زبان بیسیک.
حالا زبان سطح پایین چیه؟به زبان برنامه نویسی که به زبان ماشین(0و1) نزدیک تر باشه به اون زبان سطح پایین میگن مثل زبان اسمبلی.

شما میتونین جدید ترین ورژن این نرم افزار(کد ویژن)رو از این لینک دانلود کنید.
کدویژن 2.05.5
نقل قول: http://mihandownload.com/2011/03/%D8%AF%...-2011-.php
خب حالا با نحوه ی ساختن یک پروژه و چگونگی کامپایل کردن برنامه:
خب من اینکارو هم با عکس هایی که از برنامه گرفتم واستون توضیح میدم.
لطفا تا پایان لود شدن عکس ها صبر کنید.:whistle:Rolleyes

[تصویر:  CCL_1_.jpg]
1.در مرحله ی اول بر روی گزینه ی Create New File Or Project کلیک کرده و صفحه ی زیر باز میشود.

[تصویر:  CCL_2_.jpg]
2.در این مرحله بر روی گزینه ی Project کلیک کنید و بعد از اون Ok رو بزنید.که صفحه ی زیر نمایش داده میشه.

[تصویر:  CCL_3_.jpg]
3.در این مرحله بر روی گزینه ی No کلیک کنید.

[تصویر:  CCL_4_.jpg]
4.در این مرحله اسم فایل پروژه رو در قسمت 5 بنویسید و Save رو انتخاب کنید.

[تصویر:  CCL_5_.jpg]
5.در این مرحله بر روی گزینه ی OK کلیک کنید.

[تصویر:  CCL_6_.jpg]
6.در این مرحله مجددا بر روی گزینه یCreate New File Or Project کلیک کنید.

[تصویر:  CCL_7_.jpg]
7.در این قسمت گزینه ی Scource رو انتخاب کنید و بر روی Ok کلیک کنید.

[تصویر:  CCL_8_.jpg]
8.حالا بروی گزینه File کلیک کنید و گزینه ی ...Save As رو انتخاب کنید.

[تصویر:  CCL_9_.jpg]
9.در قسمت 13 اسم فایل رو بنویسید و گزینه ی save رو انتخاب کنید.

[تصویر:  CCL_10_.jpg]
10.هم اکنون بر روی گزینه ی Configure The Project کلیک کنید.

[تصویر:  CCL_11_.jpg]
11.حالا گزینه ی Add رو انتخاب کنید.

[تصویر:  CCL_12_.jpg]
12.الآن اون فایلی رو که در بخش 9 save کردین رو به این قسمت معرفی کنید و گزینه ی Open رو انتخاب کنید.

[تصویر:  CCL_13_.jpg]
13.و حالا بروی گزینه ی C Compiler کلیک کنید و در قسمت Chip مدل میکرو مورد نظرو که میخوان اونو برنامه ریزی کنید رو وارد کنید.و در قسمت Clock فرکانس میکرو رو انتخاب کنید و گزینه Ok رو انتخاب کنید.
[تصویر:  CCL_14_.jpg]
14.و بعد از نوشتن برنامه بروی گزینه ی Build All Project File کلیک کنید تا برنامه کامپایل شه.
با زدن این برنامه اگه در برنامه اشتباهی باشه برنامه کامپایل نمیشه و در قسمت Error مشکل در برنامه معلوم میشه و با دوبار کلیک بر روی اون ارور خطی که در برنامه مشکل داره مشخص میشه.
[تصویر:  CCL_15_.jpg]
واگه برنامه مشکلی نداشت برنامه به طور کامل کامپایل میشه و پنجره زیر باز میشه.که در اون اطلاعاتی در مورد میکرو نوشته شده.
[تصویر:  CCL_16_.jpg]


خب حالا چطوری یک برنامه در کد ویژن بنویسیم:
1.در زبان C حداقل باید یک تابع اصلی به نام main باشید و برنامه ها باید درون اون تابع نوشته شن.
کد:
void main(){
.......
}

2.در زبان C در انتهای هر خط از دستورات برنامه باید علامت ; (سمی کالن) قرار بگیره.
مثال:
کد:
void main(){
PORTA.1=1;
delay_ms(500);
}

3.از این 2تا علامت برای نوشتن توضیحات در برنامه استفاده میشه.
1-3://
2-3:/*...*/
مثال:
کد:
//iranled.com
/*iranled.com*/

4.در زبان C حروف بزرگ با حروف کوچک تفاوت دارند.
مثال:
کد:
a≠A

خب فعلا تا اینجا برای کامپایلر کدویژن کافی هستش.
انشالله بعد از آموزش کامپایلر بیسکام و نرم افزار پروتوس بیشتر به بحث برنامه نویسی میپردازیم.
و در پایان 3تا فایل هم پیوست کردم واسه کسایی که عجله دارن واسه یادگیری کدویژن و زبان C که خیلی فایل های مفیدی هستن حتما دانلود کنید.

معرفی کتاب مربوط:
نام:مرجع کامل میکروکنترل های AVR
مولف:1.محمد مهدی پرتوی فر 2.فرزاد مظاهریان 3.یوسف بیانلو
قیمت:12000 تومان
تعداد صفحات:640 صفحه

با آرزوی موفقیت برای شما دوستان گلم.....HeartHeartHeart
دوباره سلامWink
در این مبحث به چگونگی کامپایل کردن یک فایل در کامپایلر بیسکام(بسکام)می پردازیم.
کامپایلر بیسکام به زبان بیسیک هستش که ساده تره نسبت به کدویژن و بیسیک یک زبان سطح بالا هستش.
شما میتونین جدیدترین ورژن این نرم افزارو در این لینک دانلود کنید.
بیسکام 2.0.7.3
نقل قول: http://www.techno-electro.com/19-%D8%AF%...0-7-3.html

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

[تصویر:  BCL_1_.jpg]
1.در مرحله ی اول بر روی گزینه ی Create a New File کلیک کنید.

[تصویر:  BCL_2_.jpg]
2.در مرحله ی دوم بر روی گزینه ی File کلیک کنید و گزینه ی Save رو انتخاب کنید.

[تصویر:  BCL_3_.jpg]
3.در پنجره ای که باز میشه در قسمت 6 اسم فایل رو بنویسید و Save رو انتخاب کنید.

[تصویر:  BCL_4_.jpg]
4.خب حالا دیگه شروع میکنیم به برنامه نوشتن.
در این کامپایلر در خط اول برنامه باید مدل میکرو تعریف بشه.برای این امر ابتدا با استفاده از دستور
کد:
$regfile = " "
و در داخل " " نام یا مدل میکرو رو مینویسیم.
مثال:
کد:
$regfile = "m32def.dat"
در این مثال میکرو Atmega32 رو تعریف کردیم.

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

نکته:با تعریف کردن مدل میکرو در سمت چپ برنامه یک تصویز از میکرو ظاهر میشه که در اگه ماوس رو بروی هر یک از پایه ها ببرید مشخصات اون پایه رو مینویسه.مانند شکل زیر:
[تصویر:  BCL_5_.jpg]

در خط دوم هر برنامه باید مقدار فرکانس رو تعریف کینم.
مثال:
کد:
$crystal = 8000000
در این مثال قدار فرکانس برابر با 8مگا هرتز میباشد.

[تصویر:  BCL_6_.jpg]
بعد از نوشتن برنامه با کلیک راست کردن در محیط برنامه و انتخاب گزینه ی Compile برنامه ی شما در آن محلی که در مرحله 3 انتخاب کردید کامپایل میشه.

[تصویر:  BCL_8_.jpg]
5.با انتخاب گزینه ی کامپایل برنامه با پیغامی که در شکل بالا میباشد کامپایل میشود.

نکته:اگر در برنامه اشتباهی رخ داده باشد کامپایلر برنامه را تا زمانی که آن خط اصلاح نشود کامپایل نمیکند و در قسمت Errors خطی که در برنامه اشتباه نوشته شده باشد را مشخص میکند.وبا دوبار کلیک چپ بروی آن Error خطی که در برنام اشتباه نوشته شده است مشخص میشود.
[تصویر:  BCL_7_.jpg]


نکات مربوط به این کامپایلر:
1.در خط اول حتما حتما باید میکرو تعریف شود و در خط دوم فرکانس میکرو مشخص شود.
مثال:
کد:
$regfile = "m32def.dat"
$crystal = 8000000

2.در آخرین خط برنامه باید حتما حتما گزینه End قرار گیرد.
کد:
$regfile = "m32def.dat"
$crystal = 8000000

Config Porta = Output
Ddra = 255

Do
Porta.1 = 1
Wait 1
Porta.1 = 0
Wait 1
Loop

End 'end program

3.در این کامپایلر فرقی میان حروف کوچک و بزرگ وجود ندارد.
کد:
A=a

4.در این کامایلر با استفاده از علامت ' (رم)می توان در برنامه متن مورد نظر را نوشت.
مثال:
کد:
'iranled.com

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

معرفی کتاب مربوط:
نام:میکرو کنترل های Avr
مولف:علی کاهه
قیمت:8000 تومان
تعداد صفحات:384 صفحه
با آرزوی موفقیت برای شما دوستان گلم.....HeartHeartHeart
سلام.
من هم اومدم این تاپیک رو کامل کنیم.
این هم برای شروع:(از جایی کپی نکردم.اسپم ندید)
خیلی خوب...
آموزش ایجاد یک پروژه با Code Wizard ، عشق قدیمی من:
کد ویزارد یک ویزارد حرفه ای برای کانفیگ اولیه میکرو هست و نوشتن برنامه ها رو خیلی سریع تر ، بی عیب تر و راحت تر میکنه.برتری این ویزارد بر اینه که ضمن این که خیلی کار ها رو خودش انجام میده،به هیچ وجه باعث ضعف پروژه ی شما نمیشه.و در موقع کانفیگ هم همه ی گزینه ها رو در اختیار شما میزاره و شما میتونید دیقیقا همون جوری که میخواید کانفیگ کنید.
از مقدمه متنفرم.میریم سر اصل مطلب:
اول کد ویژن رو باز کنید.بعد روی new کلیک کنید.
[attachment=7659]
بعد گزینه ی project رو انتخواب کنید و بعد روی ok کلیک کنید.
[attachment=7660]
بعد هم از شما میپرسه که مایلید از کد ویزارد استفاده کنید؟ جواب شما هم معلومه.بله.
[attachment=7661]
بعد پنجره ی کد ویزارد باز میشه.این هم صفحه ی اول.توضیحات هر عکس بالای اون هست و برای هر تب یه عکس گزاشتم و توضیحات اون رو میدم.
-----------------------------------------------------------------------------------------------------------------------_
توی بخش chip باید نوی میکرو رو معلوم کنید.میکرو ها بر اساس اسم اون ها مرتب شدن پس واضحه که شما atmega8 رو اون آخرا پیدا میکنین!
بخش Clock هم برای تعین فرکانس کاری میکرو بر حسب مگاهرتز هست.دقت کنید که این موضوع ربطی به فیوز بیت ها نداره.وقتی فرکانس رو اینجا تنظیم میکنید باید با فیوز بیت ها هم اون رو روی میکرو تنظیم کنید. در واقع بهتره بگم هر تنظیماتی که اینجا انجام میدین دقیقا مثل این میمونه که کد های اون رو توی صفحه ی برنامه نویسی بنویسین.همین!
بخش های بعدی هم به کار فعلی ما مربوط نمیشه.
[attachment=7662]
این بخش مربوط به پورت هاست.شما پورت ها رو به صورت تب میبینید و پین ها رو توی هر بخش میبینید. جلوی شماره ی پین ها میتونید ورودی یا خروجی بودن اون رو معلوم کنید.اگه خروجی باشه میتونید جلوی اون مقدار پیش فرض رو وارد کنید.اگه هم ورودی باشه فعال بودن یا نبودن مقاومت پول آپ تعین میشه.T یعنی غیر فعال و P یعنی فعال.
[attachment=7663]
بقیه توی پست های بعدی... Angry

توی این تب میتونید تنظیمات وقفه های خارجی رو انجام بدین.با زدن تیک هر بخش وقفه مربوط به اون فعال میشه.توی قسمت جلوی اون هم میتونین منبع تحریک رو مشخص کنید.
Low level یعنی نسبت به سطح پایین حساسه.
Any changes یعنی هر تغیری توی سطح ولتاژ (از 0 به 1 رفتن یا برعکس) باعث ایجاد وقفه میشه.
Falling edge یعنی میکرو با لبه ی پایین رونده وارد وقفه میشه.
Rising edge هم یعنی با لبه ی بالا رونده میکرو تحریک میشه.
[attachment=7664]
توی این بخش میتونید تنظیمات تایمر ها رو ببینید.ما تب تایمر/کانتر شماره 1 رو توضیح میدیم.چون از همه کامل تره و همه گزینه ها رو داره.
Clock sourse منبع کلاک رو تعین میکنه.گزینه ی اول تایمر رو به صورت عادی راه اندازی میکنه ولی گزینه ی دوم و سوم منبع کلاک اون رو لبه های به ترتیب پایین رونده و بالا رونده قرار میده.این یعنی تایمر اون ها رو میشمره و در واقع تبدیل به کانتر میشه.
[attachment=7665]
Clock value در صورتی که منبع کلاک رو گزینه ی اول یعنی کلاک سیستمی انتخاب کرده باشید فرکانس اون رو مشخص میکنه.
[attachment=7666]
توی بخش mode میتونید نوع عملکرد تایمر یا کانتر رو مشخص کنید.گزینه های اون بعدا توضیح داده میشه.
[attachment=7667]
توی بخش out ها میتونید وضعیت هر کدوم از پایه های خروجی رو تعین کنید.
Discon. یعنی وضعیت تغیری نمیکنه.
Toggle یعنی وضعیت فعلی برعکس میشه.
Clear یعنی صفر میشه.
Set هم یعنی 1 میشه.
بخش های پایینی هم بقیه قابلیت های تایمر رو تعین میکنه.که هر کدوم یه آموزش برای خودش میخواد.
[attachment=7668]

در صورتی که از ال سی دی استفاده میکنید میتونید توی تب LCD تنظیمات اون رو انجام بدید.
LCD Port پورت متصل به ال سی دی رو معلوم میکنه.
Chars/Lines هم نوی ال سی دی رو مشخص میکنه.در واقع ابعاد اون رو.
توی بخش پایین اون هم پایه هایی که کدویژن برای شما در نظر گرفته رو میتونید ببینید.این موضوع که چرا نمیشه پایه ها رو عوض کرد مربوط به کد ویزارد نیست بلکه به کتابخونه LCD.h مربوط میشه.و این مشکل توی ورژن بعدی کدویژن به کلی حل شده و شما میتونید از کدویزارد برای تغیر پایه های پیشفرض استفاده کنید.
[attachment=7669]
اینجا شما میتونید مشخصات برنامه رو بنویسید.که به صورت کد یادداشت به اول سورس اضافه میشه.
Project Name اسم پروژه هست.
Version هم ورژن اون هست.
Date هم تاریخه.
Author هم اسم برنامه نویسه.
Company هم اسم شرکت یا گروه سازنده برنامه هست.
Comments هم برای نوشتن توضیحات اضافی هست.
در کل میتونید از این بخش وقتی که یه برنامه مهم رو توی اینترنت میزارید استفاده کنید تا بقیه رو بیشتر متوجه کنید که این سورس چیه.
[attachment=7670]
توی این بخش میتونید I2C رو کانفیک کنید.
I2C PORT پورت مربوط به اون رو مشخص میکنه.
SDA Bit و SCL Bit هم پین های مربوط به اون رو معلوم میکنه.
توی بخش زیری هم میتونید در صورتی که از I2C برای ارتباط با یکی از اون آی سی ها استفاده میکنید اون رو مشخص کنید تا کدویزارد کتابخونه ی اون رو وارد کنه و کانفیگ کنه و آماده کنه.
[attachment=7671]
اینجا میتونید 1 Wire رو تنظیم کنید.
1 Wire Port پورت اون رو معلوم میکنه.
Data Bit پین مربوط به اون رو معلوم میکنه.
اون پایین هم میتونید در صورتی که از 1 Wire برای ارتباط با یکی از اون آی سی ها استفاده میکنید اون رو معلوم کنید.
[attachment=7672]
اینجا هم میتونید تنظیمات 2 Wire رو انجام بدید.تنظیمات اون مربوط به پروژه ی شما میشه.مثلا میتونید تولید پالس تاید و وقفه و ... رو تنظیم کنید.
[attachment=7673]

Usart از اینجا تنظیم میشه.
میتونید بخش های دریافت کننده و ارسال کننده رو به ترتیب با زدن تیک های Receiver و Trandmitter رو فعال کنید.
برای هر کدوم هم میتونید وقفه تنظیم کنید و حجم بافر هم معلوم کنید.
پایینش هم میتونید نرخ تبادل دیتا رو معلوم کنید.از اون تیک جلوش هم میتونید برای ارتباط با دستگاه هایی که از دو برابر سرعت استفاده میکنن استفاده کنید.
کد ویزارد به صورت اتوماتیک نرخ دیتا و فرکانس کلاک میکرو رو که قبلا تنظیم کردید رو مقایسه میکنه و میزان خطا رو محاسبه میکنه و مینویسه.اگه قرمز بنویسه یعنی وضع خیلی خرابه و ارتباط غیر ممکنه.البته بازم از شما ایرادی نمیگیره.
پایینش هم میتونید نوع تبادل دیتا رو معلوم کنید.که معمولا از همون گزینه ی دیفالت استفاده میشه.پایینش هم میتونید سینکرون بودن یا آسینکرون بودن رو انتخواب کنید.در صورت سینکرون بودن میتونید اصلی یا فرعی بودن میکرو رو معلوم کنید.
[attachment=7674]
اینجا میتونید تنظیمات مقایسه کننده ی آنالوگ رو انجام بدید.
[attachment=7675]
اینجا هم میتونید تنظیمات مبدل آنالوگ به دیجیتال رو انجام بدید.
تیک اول اون رو روشن میکنه و تیک دوم دو بیت کم ارزش رو حذف میکنه و مقدار خروجی رو یک بایتی میکنه.
تیک سوم وقفه رو فعال میکنه که وقتی نتیجه ی خروجی آماده شد وقفه تحریک بشه.
Volt.Ref ولتاژ مرجع رو تعین میکنه.که میتونه پایه AREF یا AVCC و یا ولتاژ 2.5 ولت داخلی باشه(مطمئن نیستم)
Clock هم فرکانس کلاک کاری مبدل آنالوگ به دیجیتال رو مشخص میکنه.که بهترینش 125 یا 250 بود فکر کنم.
[attachment=7676]
اینجا هم میتونید SPI رو اونجوری که میخواید تنظیم کنید.تنظیمات اون مهم اند و زیاد پس الان توضیح نمیدم.
[attachment=7677]
خوب تبریک میگم.شما میکرو رو اونجوری که میخواستید تنظیم کردید. حالا برای ذخیرهتوی منوی File روی گزینه ی Generate,Save and Exit کلیک کنید.
[attachment=7678]

حالا سه بار پنجره ذخیره سازی باز میشه و از شما اسم و مکان برای ذخیره فایل های مختلف میخواد.بهتره مکان هر سه تا و اسم هر سه تا یکی باشه.
[attachment=7679]
حالا میبینید که تمام کد هایی که باید کلی وقت برای نوشتن اون ها میزاشتید و ممکن بود خیلی هم غلط املایی داشته باشید و کلی معطل بشید جلوتون ظاهر میشه.اگه یکم دقت کنید میبینید که کدویزارد برای شما همه جا یادداشت گزاشته و راهنماییتون میکنه که مثلا "اگه میخوای متغیر عمومی تعریف کنی اینجا بنویس" . جالبه نه؟ و برای هر بخش از کد ها هم توضیح داده که این بخش چیه. حتی حلقه ی while رو هم برای کد شما آماده کرده و تابع int رو تعریف کرده.حالا میتونید به راحتی برنامه خودتون رو بنویسید.
[attachment=7680]
اما بالاخره باید بعد از نوشتن کد ها اون ها رو کامپایل کنید.
از منوی Project دکمه ی Buildرو بزنید.

[attachment=7681]
حالا اگه برنامه ارور داشته باشه توی این پنجره میبینید که حجم فایل رو 0 نوشته چون اون رو کامپایل نکرده. و ارور ها رو پایین صفحه میبینید.اما اگه برنامه بی نقص باشه یا فقط هشدار داشته باشه اون رو کامپایل میکنه و مشخصات رو مینویسه.هشدار ها رو هم در صورت وجود اون پایین مینویسه.با کلیک کردن روی هر کدوم هم میتونید خط مربوط به اون رو ببینید.
[attachment=7682]
خوب.تبریک میگم.فایل هگز شما آماده هست و توی همون پوشه ی ذخیره ی پروژه،توی پوشه ی exe و با فرمت hex قرار داره.
[attachment=7683]

------------------------------------------------------------------------------------
موفق باشید.امیدوارم این آموزش به دردتون خورده باشه.
این آموزش ها ادامه دارن و به زودی بقیش رو میزارم. Happy Clap Happy Clap Wink
و بالاخره آموزش نرم افزار پروتوس.
در این مبحث به چگونگی شبیه سازی میکرو کنترل و قطعات الکترونیکی میپردازیم.
نرم افزار پروتوس یک نرم افزار خیلی قوی برای شبیه سازی مدارات الکترونیکی اللخصوص میکرو کنترل میباشد.با این نرم افزار میشه به راحتی یک برد الکترونیکی را نیز طراحی کرد!که انشاالله در مباحث بعدی مورد بحث قرار میگیرد.
شما میتونین جدیدترین ورژن این نرم افزارو در این لینک دانلود کنید.(این لینک علاوه بر خود نرم افزار مقدار زیادی نیز کتابخانه جداگانه داره که حتما دانلود کنید...)
پروتوس 7.10.SP0
نقل قول: http://mihandownload.com/2012/04/Proteus...l-V710.php

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


[تصویر:  PCL_1_.jpg]
1.بروی گزینه ی Component Mode که با گزینه ی 1 مشخص شده کلیک کنید.
و بر روی گزینه ی Pick From Libraries که با گزینه ی 2 مشخص شده است کلیک کنید.

[تصویر:  PCL_2_2.jpg]
2.در قسمت 3 نام قطعه ی مورد نظر را وارد کنید.
در قسمت 4 لیست قطعاتی که پیدا شده است آورده میشود.با 2بار کلیک چپ بر روی هر کدام آن قطعه انتخاب میشود.
در قسمت 5 خانواده هایی که آن قطعه در آن وجود دارند آورده میشود.
در قسمت 6 نام کارخانه های سازنده ی آن آورده میشود.
در قسمت 7 شماتیک آن می اید.
در قسمت 8 فودپرینت آن می آید.
با انتخاب قطعه های مورد نظر خود در نهایت گزینه Ok را انتخاب کنید.

[تصویر:  PCL_3_.jpg]
3.در این قسمت لیست قطعاتی را که انتخاب کرده اید آورده شده است.و با یکبار کلیک بر روی هر قطعه آن قطعه انتخاب میشود و با دوبار کلیک بر روی صفحه آن قطعه در آنجا قرار میگیرد.

[تصویر:  PCL_4_.jpg]
4.با قرار دادن هر قطعه در صفحه اگر ماوس را بروی پایه ای از آن قطعه ببریم و یک بار کلیک چپ نمیایم می توانیم پایه مورد نظر با سیم به پایه ای دیگه وصل کنیم.و با دوبار کلیک راست بر روی آن سیم میتوانیم آنرا پاک کنیم.

[تصویر:  PCL_5_.jpg]
5.با انتخاب کردن گزینه ی Terminals Mode که با گزینه ی 12 مشخص شده است میتوانیم المان های مانند gnd یا vcc و یا ... رو انتخاب کنیم.(لیست 13)

[تصویر:  PCL_6_.jpg]
6.برای دادن فایل کامپایل شده به میکرو کنترل ابتدا با دوبار کلیک چپ بر روی میکرو کنترل صفحه ی بالا باز میشد.با انتخاب شکل 14 فایل کامپایل شده رو انتخاب میکنیم.وبرای انتخاب فرکانس میکرو مطابق آنچه که در برنامه تعریف شده است آنرا در قسمت 15 انتخاب میکنیم.
***با انتخاب شکل 14 صفحه زیر باز میشود که ابتدا فایل مورد نظر را انتخاب میکنم و سپس گزینه ی ok را انتخاب میکنم.
[تصویر:  PCL_7_.jpg]

[تصویر:  PCL_8_.jpg]
7.در زیر برنامه چند گزینه وجود داره که گزینه ی 18 برای شروع شبیه سازی میباشد و گزینه ی 19 20 شبیه سازی را پاز میکنند و گزینه 21 شبیه سازی را متوقف میکند.

[تصویر:  PCL_9_.jpg]
8.با انتخاب کردن گزینه ی 18 شبیه ساز کار خود را شروع میکند.(مطابق شکل بالا)

[تصویر:  PCL_10_.jpg]
9.در قسمت پایین برنامه گزینه ای وجود دارد به نام Log Message وجود دارد.اگه در مدار ما مشکلی وجودداشته باشد این قسمت زرد رنگ میشود و با 2بار کلیک بر روی این گزینه ی ایراد مدار نوشته می شود مانند شکل زیر.
[تصویر:  PCL_11_.jpg]
اگر هم که مدار مشکلی نداشته باشد اون گزینه سبز رنگ میباشد.

[تصویر:  PCL_12_.jpg]
10.برای ذخیره کردن شبیه ساز ابتدا بر روی گزینه File کلیک کنید و سپس گزینه ی Save Design را انتخاب میکنیم.با انتخاب این گزینه صفحه ای مطابق شکل زیر باز میشود.
[تصویر:  PCL_13_.jpg]
در قسمت 25 نام فایل را مینویسیم و در گزینه ی Save را انتخاب میکنیم.



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

معرفی کتاب مربوط:
نام:آموزش جامع نرم افزار Proteus
مولف:مهندس وحید نجمی
قیمت:6000 تومان
تعداد صفحات:204 صفحه

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

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

مشخصات پروژه:
میکرو کنترل:Atmega128
فرکانس:8.000.000
زبان برنامه:C , Basic

برنامه به زبان بیسک:
کد:
$regfile = "m128def.dat" (معرفی میکرو کنترل)
$crystal = 8000000 (تعیین مقدار فرکانس)

Config Portd = Output (پورت d خروجی تعریف شده است)

Do (ابتدای حلقه ی نامحدود)
Portd.0 = 1 (پین d.0 برابر 1منطقی(5ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Portd.1 = 1 (پین d.1 برابر 1منطقی(5ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Portd.2 = 1 (پین d.2 برابر 1منطقی(5ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Portd.3 = 1 (پین d.3 برابر 1منطقی(5ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Portd.0 = 0 (پین d.0 برابر 0منطقی(0ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Portd.1 = 0 (پین d.1 برابر 0منطقی(50ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Portd.2 = 0 (پین d.2 برابر 0منطقی(0ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Portd.3 = 0 (پین d.3 برابر 0منطقی(0ولت)شده است)
Waitms 200 (تاخیر 200ملی ثانیه)
Loop (انتهای حلقه ی نامحدود)

End (پایان برنامه)

برنامه C:
کد:
#include <mega128.h> (معرفی کتابخانه Amega128)
#include <delay.h> (معرفی کتابخانه delay)

void main(){ (ابتدای تابع اصلی)
DDRD=0xff; (فعال نمودن مقاوت Pull-Down پورت D)
do{ (ابتدای حلقه شرطی)
PORTD.0=1; (پین d.0 برابر 1منطقی(5ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
PORTD.1=1; (پین d.1 برابر 1منطقی(5ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
PORTD.2=1; (پین d.2 برابر 1منطقی(5ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
PORTD.3=1; (پین d.3 برابر 1منطقی(5ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
PORTD.0=0; (پین d.0 برابر 0منطقی(0ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
PORTD.1=0; (پین d.1 برابر 0منطقی(0ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
PORTD.2=0; (پین d.2 برابر 0منطقی(0ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
PORTD.3=0; (پین d.3 برابر 0منطقی(0ولت)شده است)
delay_ms(200); (تاخیر 200ملی ثانیه)
}while(1); (انتهای حلقه ی شرطی و شرط ان)
} (انتهای تابع اصلی )

اینم شبیه ساز:
[تصویر:  Cheshmak_Zan_Sade.jpg]

توضیحات برنامه بیسیک:
1.در قسمت
کد:
Config Portd = Output
میتوان بجای اینکه تمام پورت های d را خروجی تعریف کرد تعدادی از آنهارا ورودی و تعدادی از آنها را نیز خروجی تعریف کرد.
مثال:
کد:
Config Pind.1 = Output
Config Pind.2 = Input

2.حلقه.
حلقه چیه؟حلقه دستوری هستش که اگه بین این دستور دستورات دیگه ای نوشته بشه بسته به نوع دستور حلقه آن مجموع دستورات تکرار میشوند.
انواع حلقه:
2-1.حلقه نامحدود:
این نو حلقه دستورات ما بین آن بی نهایت بار تکرار میشه.
فرم کلی:
کد:
Do
مجموع دستورات
Loop
2-3.حلقه شمارشی:
این نوغ حلقه به تعداد دفعاتی که برنامه نویس واسش مشخص میکنه تکرار میشه.
فرم کلی:
کد:
For a=1 to 20
مجموع برنامه
next
مجموع دستورا این حلقه 20بار تکرار میشه.

2-2.حلقه شرطی:
این نوع حلقه تا زمانی که شرط حلقه ارزش true داشته باشد حلقه تکرار میشه.
فرم کلی:
کد:
While A>10
مجموع دستورات
Wend
در این حلقه زمانی که متغیر a بیشتر از 10 شد حلقه شروع میشه.

3.تاخیر در برنامه.
با دستور wait میتوان اجرای برنامه را تا مدت زمانی که برنامه نویس مشخص میکند به تاخیر انداخت.
انواع تاخیر:
کد:
wait 1
waitms 1000
waitus 1000000
در تمامی مثال های بالا اجرای برنامه 1 ثانیه به تاخیر می افتد.
wait بر حسب ثانیه
waitms بر حسب میلی ثانیه
waitus بر حسب میکرو ثانیه


توضیحات برنامه C:
1.برای فعال نمودن مقومت pull-down در کدویژن از دستور زیر استفاده میشود.
کد:
DDRD=0xff;
0xff مقدار دهی دستور هستش که بر مبنای هگز نوشته شده.
0xff در مبناهی باینری:0b11111111
0xff در مبنای ده دهی: 255
نکته:در بیسیک این امر خودکار صورت میگیرد و نیازی به مشخص شدن آن توسط کاربر نمیباشر.

2.حلقه در کدویژن:
توجه:بدلیل اینکه حلقه ها در قسمت بیسیک توضیح داده شده است دیگه از توضیح مجدد آن خودداری کرده ایم.
2-1.حلقه شرطی:
کد:
do{
مجموع دستورات
}while(شرط);
یا
کد:
while(شرط){
مجموع دستورات
}
در این نوع حلقه اگر شرط حلقه true شود حلقه تکرار میشود.
2-2.حلقه شمارشی:
کد:
for(i=0;i=10;i++){
مجموع دستورات
}
در اینجا ایتدا به متغیر حلقه که در این مثال متغیر i هستش یک مقدار اولیه میدیم و در جلوی آن شرطی را مینویسیم که اگه true شد حلقه تمام میشود و در جلوی آن هم گام شمارش رو قرار میدیم که هربار حلقه اجرا شود یک واحد به i می افزاید.
نکته:ما در زبان C حلقه ی نامحدود نداریم.بلکه باید با استفاده از حلقه ی شرطی شرایطی را بوجود آوریم که حلقه بی نهایت بار تکرار شود.
کد:
do{
مجموع دستورا
while(1)}
در مثال بالا چون شرط حلقه همیشه درست است در نتیجه حلقه بی نهیات با تکرار میشود.

3.تاخیر در برنامه.
برای این منظور ابتدا باید کتابخانه delay را تعریف کنیم.(در قسمت headr)
کد:
#include <delay.h>
و در برنامه با استفاده از دستورات:
کد:
delay_ms(1000);
delay_us(200);
میتوانیم به مقدار دلخواه تاخیر در برنامه بوجود آوریم.
بطوری که:
کد:
delay_ms(1000);
بر حسب میلی ثانیه تاخیر ایجاد میکند و
کد:
delay_us(200);
بر حسب میکرو ثانیه تاخیر ایجاد میکند.

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

راستی من تمام فایل های شبیه ساز و کدویژن و بیسکام رو آپلود کردم واسه شما عزیزان که دانلود کنید و حالشو ببرید.Biggrin

موفق باشید....HeartHeartHeartHeart
سلام به همه مهندسای عزیز؛
یه برنامه واسه چپ گرد و راست گرد کردن یه موتور dc؛
؛
atmega8
motor dc
و فرکانس 1000000 پیش فرض.

برنامه به زبان بیسیک؛

کد:
$regfile = "m8def.dat"میکرو مورد نظر رو معرفی می کنیم
$crystal = 1000000فرکانس رو تعیین می کنیم
Config Portb = Outputپورت b رو به خروجی ،پیکر بندی می کنیم
Doدستور
Set Portb.0موتور به جهت چپ گردش می کند
Wait 3 سه ثانیه صبر می کند
Reset Portb.0حالت چپ گرد خاموش
Wait 3 سه ثانیه صبر می کند
Set Portb.1حالت راست گرد روشن می شود
Wait 3 سه ثانیه صبر می کند
Reset Portb.1حالت راست گرد خاموش می شود
Wait 3 سه ثانیه صبر میکند
Loopاتمام دستور و گردش حلقه

شبیه ساز پروتوس؛

[تصویر:  s3euy0iw2cob28kehaa.jpg]
سلامبه همگی؛
اینبار می خواهیم،تو برنامه چپ گرد و راست گرد ،کمی تغییر ایجاد کنیم؛
یعنی موقع گردش به چپ، led اول رو روشن کنیم و به هنگام گردش به راست، led دوم رو روشن کنیم؛
؛
atmega8
motor dc
led
و فرکانس 1000000 پیش فرض.

برنامه به زبان بیسیک؛
کد:
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output
Do
Set Portb.2حالت چپ گرد روشن
Set Portb.1 ال ای دی اول روشن
Wait 3
Reset Portb.2حالت چپ گرد خاموش
Wait 4
Reset Portb.1 ال ای دی اول خاموش
Wait 7
Set Portb.3حالت راست گرد روشن
Set Portb.4 ال ای دی دوم روشن
Wait 3
Reset Portb.3حالت راست گرد خاموش
Wait 4
Reset Portb.4 ال ای دی دوم خاموش
Wait 7
Loopپایان دستور و گردش حلقه

شبیه ساز پروتوس؛

[تصویر:  v5rbarc7v4ym1wsvyu.jpg]
سلام

اینم پروژه ساده شمارنده دو رقمی با سون سگمنت؛
(شمارش و تا عدد 30 نوشتم)
؛
atmega 32
سون سگمنت کاتد مشترک
فرکانس 1 مگاهرتز

برنامه به زبان بیسیک؛(فعال سازی سون سگمنت ها رو به دو روش باینری و set ,reset کردن نوشتم)

کد:
$regfile = "m32def.dat"
$crystal = 1000000
Config Portc = Output
Config Portd = Output
Do
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.4
Set Portc.3
Set Portc.5
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.4
Reset Portc.3
Reset Portc.5
Waitms 250
Set Portc.1
Set Portc.2
Waitms 250
Reset Portc.1
Reset Portc.2
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.6
Set Portc.4
Set Portc.3
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.6
Reset Portc.4
Reset Portc.3
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.6
Set Portc.3
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.6
Reset Portc.3
Waitms 250
Set Portc.6
Set Portc.1
Set Portc.2
Set Portc.5
Waitms 250
Reset Portc.6
Reset Portc.1
Reset Portc.2
Reset Portc.5
Waitms 250
Set Portc.0
Set Portc.5
Set Portc.2
Set Portc.3
Set Portc.6
Waitms 250
Reset Portc.0
Reset Portc.5
Reset Portc.2
Reset Portc.3
Reset Portc.6
Waitms 250
Set Portc.0
Set Portc.5
Set Portc.2
Set Portc.3
Set Portc.6
Set Portc.4
Waitms 250
Reset Portc.0
Reset Portc.5
Reset Portc.2
Reset Portc.3
Reset Portc.6
Reset Portc.4
Waitms 250
Set Portc.0
Set Portc.2

Set Portc.1
Waitms 250
Reset Portc.0
Reset Portc.2

Reset Portc.1
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.4
Set Portc.3
Set Portc.5
Set Portc.6
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.4
Reset Portc.3
Reset Portc.5
Reset Portc.6
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.3
Set Portc.5
Set Portc.6
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.3
Reset Portc.5
Reset Portc.6
Waitms 250
Portc = &B00000110
Portd = &B00111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B00000110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01011011
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01001111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01100110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01101101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01111101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B00000111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01101111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B00111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B00000110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01011011
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01001111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01100110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01101101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01111101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B00000111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01101111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01001111
Portd = &B00111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Loop
End 'end program

شبیه ساز پروتوس؛

[تصویر:  wojbfqupngoonmxwvjl.jpg]

کل پروژه؛

http://www.niloblog.com/files/images/awc...jn7llk.zip
سلام ؛

پروژه چراغ راهنمایی با سون سگمنت ؛(شبیه پروژه قبلیه)
؛
atmega 32
سون سگمن کاتد مشترک
فرکانس 1 مگا هرتز

برنامه به زبان بیسیک؛
کد:
$regfile = "m32def.dat"
$crystal = 1000000
Config Portc = Output
Config Portd = Output
Config Porta = Output
Config Portb = Output
Do
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.4
Set Portc.3
Set Portc.5
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.4
Reset Portc.3
Reset Portc.5
Waitms 250
Set Portc.1
Set Portc.2
Waitms 250
Reset Portc.1
Reset Portc.2
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.6
Set Portc.4
Set Portc.3
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.6
Reset Portc.4
Reset Portc.3
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.6
Set Portc.3
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.6
Reset Portc.3
Waitms 250
Set Portc.6
Set Portc.1
Set Portc.2
Set Portc.5
Waitms 250
Reset Portc.6
Reset Portc.1
Reset Portc.2
Reset Portc.5
Waitms 250
Set Portc.0
Set Portc.5
Set Portc.2
Set Portc.3
Set Portc.6
Waitms 250
Reset Portc.0
Reset Portc.5
Reset Portc.2
Reset Portc.3
Reset Portc.6
Waitms 250
Set Portc.0
Set Portc.5
Set Portc.2
Set Portc.3
Set Portc.6
Set Portc.4
Waitms 250
Reset Portc.0
Reset Portc.5
Reset Portc.2
Reset Portc.3
Reset Portc.6
Reset Portc.4
Waitms 250
Set Portc.0
Set Portc.2

Set Portc.1
Waitms 250
Reset Portc.0
Reset Portc.2

Reset Portc.1
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.4
Set Portc.3
Set Portc.5
Set Portc.6
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.4
Reset Portc.3
Reset Portc.5
Reset Portc.6
Waitms 250
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.3
Set Portc.5
Set Portc.6
Waitms 250
Reset Portc.0
Reset Portc.1
Reset Portc.2
Reset Portc.3
Reset Portc.5
Reset Portc.6
Waitms 250
Portc = &B00000110
Portd = &B00111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B00000110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01011011
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01001111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01100110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01101101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01111101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B00000111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B00000110
Portd = &B01101111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B00111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B00000110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01011011
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01001111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01100110
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01101101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01111101
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B00000111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01011011
Portd = &B01101111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 250
Portc = &B01001111
Portd = &B00111111
Waitms 250
Portc = &B00000000
Portd = &B00000000
Waitms 500
Set Porta.0
Set Porta.1
Set Porta.2
Set Porta.4
Set Porta.3
Set Porta.5
Waitms 250
Reset Porta.0
Reset Porta.1
Reset Porta.2
Reset Porta.4
Reset Porta.3
Reset Porta.5
Waitms 250
Set Porta.1
Set Porta.2
Waitms 250
Reset Porta.1
Reset Porta.2
Waitms 250
Set Porta.0
Set Porta.1
Set Porta.6
Set Porta.4
Set Porta.3
Waitms 250
Reset Porta.0
Reset Porta.1
Reset Porta.6
Reset Porta.4
Reset Porta.3
Waitms 250
Set Porta.0
Set Porta.1
Set Porta.2
Set Porta.6
Set Porta.3
Waitms 250
Reset Porta.0
Reset Porta.1
Reset Porta.2
Reset Porta.6
Reset Porta.3
Waitms 250
Set Porta.6
Set Porta.1
Set Porta.2
Set Porta.5
Waitms 250
Reset Porta.6
Reset Porta.1
Reset Porta.2
Reset Porta.5
Waitms 250
Set Porta.0
Set Porta.5
Set Porta.2
Set Porta.3
Set Porta.6
Waitms 250
Reset Porta.0
Reset Porta.5
Reset Porta.2
Reset Porta.3
Reset Porta.6
Waitms 250
Set Porta.0
Set Porta.5
Set Porta.2
Set Porta.3
Set Porta.6
Set Porta.4
Waitms 250
Reset Porta.0
Reset Porta.5
Reset Porta.2
Reset Porta.3
Reset Porta.6
Reset Porta.4
Waitms 250
Set Porta.0
Set Porta.2
Set Porta.1
Waitms 250
Reset Porta.0
Reset Porta.2
Reset Porta.1
Waitms 250
Set Porta.0
Set Porta.1
Set Porta.2
Set Porta.4
Set Porta.3
Set Porta.5
Set Porta.6
Waitms 250
Reset Porta.0
Reset Porta.1
Reset Porta.2
Reset Porta.4
Reset Porta.3
Reset Porta.5
Reset Porta.6
Waitms 250
Set Porta.0
Set Porta.1
Set Porta.2
Set Porta.3
Set Porta.5
Set Porta.6
Waitms 250
Reset Porta.0
Reset Porta.1
Reset Porta.2
Reset Porta.3
Reset Porta.5
Reset Porta.6
Waitms 250
Porta = &B00000110
Portb = &B00111111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B00000110
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B01011011
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B01001111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B01100110
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B01101101
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B01111101
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B00000111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B01111111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B00000110
Portb = &B01101111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B00111111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B00000110
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B01011011
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B01001111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B01100110
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B01101101
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B01111101
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B00000111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B01111111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01011011
Portb = &B01101111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 250
Porta = &B01001111
Portb = &B00111111
Waitms 250
Porta = &B00000000
Portb = &B00000000
Waitms 500
Loop
End                                                         'end program

شبیه ساز پروتوس؛

[تصویر:  vxdrgqp4c70vz4x53qxy.jpg]


کل پروژه؛

http://www.niloblog.com/files/images/4w1...w4j1dt.zip
صفحه‌ها: 1 2 3 4 5 6 7 8 9 10