- 2011-02-19
- 74
- 93
سلام
در این تایپیک قصد دارم مدارات ساده را با اتمل استادیو را ارسال کنم این پست ها بیشتر جنبه آموزشی داره و در حد توان خودم دوست دارم اطلاعاتی ناچیزم رو به اشتراک بگذارم و اگه دوستان لطف کنند تجربیات خودم رو هم افزایش بدم
اولین مدار نمایش اعداد روی seven segment
بعد از باز کردن اتمل استادیو جهت ایجاد پروژه جدید گزینه new project را انتخاب میکنیم:
در صفحه دوم گزینه GCC C Executable project را انتخاب کرده و در کادر پایین نام دلخواه خود را می نویسیم
در صفحه سوم میکرو مورد نظر را انتخاب میکنیم ما در این مدار از اتمگا 8 استفاده کردیم شپس محیط برنامه نویسی باز شده که برنامه را در ان تایپ میکنیم
/*
* 7segment.c
*
* Created: 02/17/2025 03:00:15 ب.ظ
* Author : brv
*/
#include <avr/io.h>
#include <util/delay.h> // کتابخانه تاخیر زمانی
#define F_CPU 8000000UL // تنظیم کریستال
#define SegOne 0xFE//پین شماره 1 صفر شود
#define SegTwo 0xFD//پین شماره 2 صفر شود
#define SegThree 0xFB//پین شماره 3 صفر شود
#define SegFour 0xF7//پین شماره 4 صفر شود
int main() {
char seg_code[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//کد نمایش عددها در نمایشگر 7 قطعه
int num,i,num1;
/* تنظیم پورت خروجی */
DDRB = 0x0F; // پین 0تا 3
DDRD = 0xff; // کنترل 7 قطعه ای
while (1)
{
for (num = 0x00; num <= 9999; num++) // نمایش 0 تا 9999
{if (num==9999){num=0;}
for (i = 0; i < 100; i++)// نمایش هر عدد به مدت 400 میلی ثانیه 100 ضرب در4
{
num1 = num/1000;// نمایش هزارگان
PORTB = SegOne;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
num1=(num%1000) ;
num1=num1/100;//نمایش صدگان
PORTB = SegTwo;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
num1 =(num%100);// نمایش دهگان
num1=num1/10;
PORTB = SegThree;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
num1= num%10;// نمایش یکان
PORTB = SegFour;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
}
}
}
}
در این تایپیک قصد دارم مدارات ساده را با اتمل استادیو را ارسال کنم این پست ها بیشتر جنبه آموزشی داره و در حد توان خودم دوست دارم اطلاعاتی ناچیزم رو به اشتراک بگذارم و اگه دوستان لطف کنند تجربیات خودم رو هم افزایش بدم
اولین مدار نمایش اعداد روی seven segment
بعد از باز کردن اتمل استادیو جهت ایجاد پروژه جدید گزینه new project را انتخاب میکنیم:
در صفحه دوم گزینه GCC C Executable project را انتخاب کرده و در کادر پایین نام دلخواه خود را می نویسیم
در صفحه سوم میکرو مورد نظر را انتخاب میکنیم ما در این مدار از اتمگا 8 استفاده کردیم شپس محیط برنامه نویسی باز شده که برنامه را در ان تایپ میکنیم
/*
* 7segment.c
*
* Created: 02/17/2025 03:00:15 ب.ظ
* Author : brv
*/
#include <avr/io.h>
#include <util/delay.h> // کتابخانه تاخیر زمانی
#define F_CPU 8000000UL // تنظیم کریستال
#define SegOne 0xFE//پین شماره 1 صفر شود
#define SegTwo 0xFD//پین شماره 2 صفر شود
#define SegThree 0xFB//پین شماره 3 صفر شود
#define SegFour 0xF7//پین شماره 4 صفر شود
int main() {
char seg_code[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//کد نمایش عددها در نمایشگر 7 قطعه
int num,i,num1;
/* تنظیم پورت خروجی */
DDRB = 0x0F; // پین 0تا 3
DDRD = 0xff; // کنترل 7 قطعه ای
while (1)
{
for (num = 0x00; num <= 9999; num++) // نمایش 0 تا 9999
{if (num==9999){num=0;}
for (i = 0; i < 100; i++)// نمایش هر عدد به مدت 400 میلی ثانیه 100 ضرب در4
{
num1 = num/1000;// نمایش هزارگان
PORTB = SegOne;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
num1=(num%1000) ;
num1=num1/100;//نمایش صدگان
PORTB = SegTwo;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
num1 =(num%100);// نمایش دهگان
num1=num1/10;
PORTB = SegThree;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
num1= num%10;// نمایش یکان
PORTB = SegFour;
PORTD = seg_code[num1];
_delay_ms(1);// تاخیر یک میلی ثانیه
}
}
}
}
پیوستها
-
19.6 کیلوبایت بازدیدها: 0
-
23.6 کیلوبایت بازدیدها: 0