سلام خسته نباشید : متاسفانه این تایپیک را اشتباهی اینجا زده ام دوستان لطفا کمک کنید. از مدیریت محترم خواهشمندم تایپیک را انتقال بدن. با تشکر
https://barnamenevis.org/showthread.p...36#post2277336
سلام خسته نباشید : متاسفانه این تایپیک را اشتباهی اینجا زده ام دوستان لطفا کمک کنید. از مدیریت محترم خواهشمندم تایپیک را انتقال بدن. با تشکر
https://barnamenevis.org/showthread.p...36#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 );
}
}
میکرو هم به سون سگمنت اینجوری وصل کردم.
سلام دوست عزیز : دستت طلا ، محبت کردین . سپاسگزارم
تستش کردم درست شد .برای چشمک زدن کلمه ، زمان مکث عدم نمایش Hi با اخرین دستور delay_ms( 500 ) قابل کنترله ولی زمان نمایش Hi قابل کنترل نیست و زمان خیلی کمی Hi روی سون سگمنت روشن میمونه ،اگر کلمه زمان بیشتری روی صفحه روشن می ماند و قابل کنترل بود عالی بود .با تشکر
خودت هم میتونی ببینیش
دانلود سورس و شماتیک :
آخرین ویرایش به وسیله amiri630 : جمعه 22 آبان 1394 در 13:34 عصر
سلام خواهش میکنم
واسه اینکه کلمه بیشتر روی صفحه بمونه اون 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 );
}
}
}
با سلام و عرض خسته نباشید : سپاسگزارم دوست عزیز . با راهنمایی خوب شما مشکل حل شد. با تشکر فراوان