قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

mikro.man7
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2014
المشاركات: 109
نشاط [ mikro.man7 ]
قوة السمعة:0
قديم 20-01-2016, 11:42 AM المشاركة 1   
افتراضي مشكلة محاكاة ال7سيجمنت على البروتوس Twitter FaceBook Google+



انا شغال بلغة c
في مشكلة ظهرت معايا وهيا انو الشاشة 7 سيجمن ظاهر انها بتعمل فلاشر
وهيا بتعرض الرقم المشكلة دي فين فى البروتوس ولا الكود ؟
كود:
/*
 * 7SEG_FUN.c
 *
 * Created: 1/20/2016 1:48:20 PM
 * Author : negm
 */ 
#ifndef F_CPU
#define F_CPU 16000000 //16 MEGA HZ
#endif
#include <avr/io.h>
#include <util/delay.h>
int DISPLAY1 [10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
unsigned char num = 0;
unsigned dig0 , dig1;
int main(void)
{
	DDRC=0X00;
	DDRD=0X07;
    while (1) 
    {
		dig0 = num%10;
		dig1 = (num/10)%10;
		//--------------
		PORTD = 0x01;
		PORTC = DISPLAY1 [dig0];
		_delay_ms(10);
		//-----------
		PORTD = 0x02;
		PORTC = DISPLAY1 [dig1];
		_delay_ms(10);
		
		if(num >= 0)
		{num++;}
		else if (num > 99)
		{ num = 0;}	
    }
}

اعلانات

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 20-01-2016, 05:18 PM المشاركة 2   
x4


بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته

اخى العزيز و جدت بعض الاخطاء و حاولت اصلاحها و ان شاء الله يعمل معاك
قارن الكودين لتعرف الفرق .

و الله المستعان و هو نعم المولى و نعم النصير

كود:
int DISPLAY1 [10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
unsigned char num = 0 , no_flash;
unsigned char dig0 , dig1;
int main(void)
{
    DDRC=0Xff;
    DDRD=0X07;
  while (1){
       for (num = 0;num <=99 ;num++) {
              no_flash=10;
                     while(no_flash){
                                 dig0 = num%10;
                                  dig1 = (num/10)%10;
                                   //--------------
                                    PORTD = 0x01;
                                     PORTC = DISPLAY1 [dig0];
                                     delay_ms(100);
                                     //-----------
                                     PORTD = 0x02;
                                  PORTC = DISPLAY1 [dig1];
                                    delay_ms(100);
                                --no_flash  ;
                                 }
                       }
              num = 0;
             }
}

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

ahmed idris
:: مهندس متميز ::
تاريخ التسجيل: Jul 2015
المشاركات: 453
نشاط [ ahmed idris ]
قوة السمعة:0
قديم 20-01-2016, 07:37 PM المشاركة 3   
افتراضي


يبدو أن برنامجك يعمل بنظام الملتبلكس
إذا كان كذلك لا تستخدم العارضات العادية
استخدم عارضات خاصة به والتي تبدا بالحروف mpx.
اختر ما يناسبك من اللائحة:


mikro.man7
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2014
المشاركات: 109
نشاط [ mikro.man7 ]
قوة السمعة:0
قديم 20-01-2016, 07:41 PM المشاركة 4   
افتراضي


بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته

اخى العزيز و جدت بعض الاخطاء و حاولت اصلاحها و ان شاء الله يعمل معاك
قارن الكودين لتعرف الفرق .

و الله المستعان و هو نعم المولى و نعم النصير

كود:
int DISPLAY1 [10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
unsigned char num = 0 , no_flash;
unsigned char dig0 , dig1;
int main(void)
{
    DDRC=0Xff;
    DDRD=0X07;
  while (1){
       for (num = 0;num <=99 ;num++) {
              no_flash=10;
                     while(no_flash){
                                 dig0 = num%10;
                                  dig1 = (num/10)%10;
                                   //--------------
                                    PORTD = 0x01;
                                     PORTC = DISPLAY1 [dig0];
                                     delay_ms(100);
                                     //-----------
                                     PORTD = 0x02;
                                  PORTC = DISPLAY1 [dig1];
                                    delay_ms(100);
                                --no_flash  ;
                                 }
                       }
              num = 0;
             }
}
تمام اشتغلت تمام بس ليا طلب يا هندسة

انا عاوز استخدم ديكودر 7448 عشان اقلل عدد الاطراف المستخدمه
ازاى اعمل الفكرة دي مع العلم انو انا مشيت شوية فى الكود بس مش
عارف ازاى 4 بن اعملهم داله عشان بحيث اتعامل معاهم كبورت port


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 21-01-2016, 06:48 AM المشاركة 5   
افتراضي


بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته

اخي ستقوم بالتغيير التالي :
1-
كود:
 PORTC=PORTC | DISPLAY[dig];


2- ستغير المصفوفة الى 4 بت على حسب داتا شيت لل 7448 مثلا
......char DISPLAY []={0X00,0X01,0X02,0X03


و الله المستعان و هو نعم المولى و نعم النصير

اللهم ردنا لدينك ردا جميلا


mikro.man7
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2014
المشاركات: 109
نشاط [ mikro.man7 ]
قوة السمعة:0
قديم 21-01-2016, 10:08 AM المشاركة 6   
افتراضي


بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته

اخي ستقوم بالتغيير التالي :
1-
كود:
 PORTC=PORTC | DISPLAY[dig];


2- ستغير المصفوفة الى 4 بت على حسب داتا شيت لل 7448 مثلا
......char DISPLAY []={0X00,0X01,0X02,0X03


و الله المستعان و هو نعم المولى و نعم النصير

اللهم ردنا لدينك ردا جميلا

تمام بس انا مستخدم باقي اطراف البورت لتشغيل ليدات
يعني باقي اطراف البورت مستخدمه لتشيغل واطفاء ليدات


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 21-01-2016, 04:58 PM المشاركة 7   
x4


تمام بس انا مستخدم باقي اطراف البورت لتشغيل ليدات
يعني باقي اطراف البورت مستخدمه لتشيغل واطفاء ليدات
بسم الله الرحمن الرحيم

اخي العزيز السلام عليكم و رحمة الله و بركاته
باقى اطراف البورت لن تتاثر باستخدام OR | , و لكن مثلا اذا اردت ان تجعل ال PIN 5 للبورت تكون ON تكتب :
PORTC5_BIT=1; او
PORTC|=1<<5;


تحت امرك ربنا يوفقك
و الله المستعان و الموفق
اللهم انصر الاسلام و اعز المسلمين

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 07:26 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025