PDA

View Full Version : کمک در مورد نمایش کلمه روی سون سگمنت سه تایی اند مشترک



amiri630
پنج شنبه 14 آبان 1394, 13:10 عصر
سلام خسته نباشید : متاسفانه این تایپیک را اشتباهی اینجا زده ام دوستان لطفا کمک کنید. از مدیریت محترم خواهشمندم تایپیک را انتقال بدن. با تشکر
http://barnamenevis.org/showthread.php?511638-کمک-در-مورد-نمایش-کلمه-روی-سون-سگمنت-سه-تایی-اند-مشترک&p=2277336#post2277336

amiri630
جمعه 15 آبان 1394, 11:07 صبح
با سلام و عرض خسته نباشید: یک نفر با معرفت پیدا نشد یک کمکی به من بکنه و دستورات را اصلاح بکنه بگذاره !!!
چند روزه منتظریم :متفکر::ناراحت:

AliBahar
یک شنبه 17 آبان 1394, 15:43 عصر
اون طرف خدمتتون عرض کردم با اصلاح کد مشکلی حل نمیشه. چون از نظر سخت افزاری پایه های مشابه سون سگمنتها بصورت داخلی بهم متصلند. شما توی کدت هرکاری بکنی باز هم مشکل حل نمیشه مگه این که از سون سگمنتهای جداگانه استفاده کنی.

MrFassih
چهارشنبه 20 آبان 1394, 00:30 صبح
سلام خسته نباشید : متاسفانه این تایپیک را اشتباهی اینجا زده ام دوستان لطفا کمک کنید. از مدیریت محترم خواهشمندم تایپیک را انتقال بدن. با تشکر
http://barnamenevis.org/showthread.php?511638-کمک-در-مورد-نمایش-کلمه-روی-سون-سگمنت-سه-تایی-اند-مشترک&p=2277336#post2277336


سلام.
واسه اینکه اینکارو بکنی باید بیای اول با یه delay کم سون سگمنت رو refresh کنی و بعد این این کار یه delay بیشتر بدی.
من کدت رو دیدم و تعجب میکنم که میگی همزمان دو تا H یا I رو نشون میده‌ ! چون کد های این دو تا حرف توی آند مشترک اونایی که تو نوشتی نیست.
روی کنترل هاتم یه مشکل کوچیک هستش که برای refresh کردن آند مشترک باید یه ۱ رو شیفت بدی ولی مال تو توش کلی یک داره !
بعدشم سه بیت کم ارزش تر کنترلت که میره توی سون سگمنت واسه هر دو حالت صفر صفر یکه.
این کد رو برات نوشتم.

#include <mega16.h>

#include <delay.h>
char sevenSegmentOutPut[ ] = { 0x89 , 0xCF };
char segmentRefresh[ ] = { 0b00000001, 0b00000010 };
void main(void) {
int i;
DDRC = 0xFF;
DDRD = 0xFF;
while ( 1 ) {
for( i = 0; i < 2; i ++ ) {
PORTD = segmentRefresh[ i ];
PORTC = sevenSegmentOutPut [ i ];
delay_ms( 5 );
}
PORTD = 0x00;
delay_ms( 500 );
}
}


میکرو هم به سون سگمنت اینجوری وصل کردم.

136631

amiri630
جمعه 22 آبان 1394, 12:52 عصر
سلام دوست عزیز : دستت طلا ، محبت کردین . سپاسگزارم :قلب:
تستش کردم درست شد .برای چشمک زدن کلمه ، زمان مکث عدم نمایش Hi با اخرین دستور delay_ms( 500 ) قابل کنترله ولی زمان نمایش Hi قابل کنترل نیست و زمان خیلی کمی Hi روی سون سگمنت روشن میمونه ،اگر کلمه زمان بیشتری روی صفحه روشن می ماند و قابل کنترل بود عالی بود .با تشکر:تشویق:
خودت هم میتونی ببینیش

دانلود سورس و شماتیک :

MrFassih
شنبه 23 آبان 1394, 21:07 عصر
سلام خواهش میکنم

واسه اینکه کلمه بیشتر روی صفحه بمونه اون delay اخر رو نیاید تغییر بدی چون این زمان خاموش بودن صفحه هست.
واسه اینکه بیشتر بمونه رو صفحه باید با یه مکانیزمی از روی این delay بپری !
مثلان توی این کد هرچی اون عدد if بیشتر بشه کلمه بیشتر توی صفحه می مونه.
#include <mega16.h>

#include <delay.h>
const char sevenSegmentOutPut[ ] = { 0x89 , 0xCF };
const char segmentRefresh[ ] = { 0b00000001, 0b00000010 };
void main(void) {
int i, j = 0;
DDRC = 0xFF;
DDRD = 0xFF;
while ( 1 ) {
for( i = 0; i < 2; i ++ ) {
PORTD = segmentRefresh[ i ];
PORTC = sevenSegmentOutPut [ i ];
delay_ms( 5 );
}
PORTD = 0x00;
if ( j++ > 50 ) {
j = 0;
delay_ms( 500 );
}
}
}

amiri630
سه شنبه 26 آبان 1394, 02:01 صبح
با سلام و عرض خسته نباشید : سپاسگزارم دوست عزیز . با راهنمایی خوب شما مشکل حل شد. با تشکر فراوان