۲۳-فروردین-۱۳۹۱, ۱۳:۲۷:۲۹
۲۴-فروردین-۱۳۹۱, ۲۱:۰۸:۰۹
سلام
من آخر برنامتون تغييري دادم تا اونو تو سگمنت 2 تايي ببينم ولي باز نتيجه اي ندارم
ببخشيد واسه شما دردسر شد
تصوير پروتئوس را هم گذاشتم
من آخر برنامتون تغييري دادم تا اونو تو سگمنت 2 تايي ببينم ولي باز نتيجه اي ندارم
ببخشيد واسه شما دردسر شد
تصوير پروتئوس را هم گذاشتم
کد php:
$regfile = "m16def.dat"
$crystal = 8000000
Config Portb = Output
Config Kbd = Portd , Debounce = 100 , Delay = 1
Dim A As Byte
Dim B1 As Byte
Dim B2 As Byte
Dim Num As Byte
Dim B As Byte
Dim C As Byte
Do
Goto Adad1
Loop
End
Adad1:
A = Getkbd()
If A > 15 Then
Goto Adad1
End If
B = Lookup(a , W)
Waitms 300
Goto Adad2
Adad2:
A = Getkbd()
If A > 15 Then
Goto Adad2
End If
B1 = Lookup(a , W)
Waitms 300
Goto Sett
'--------------------------
B = B * 10
B1 = B + B1
'--------------------------
Sett:
A = Getkbd()
If A > 15 Then
Goto Sett
End If
Waitms 100
If B2 = 12 Then
Num = B1
Goto Prog1
Else
Goto Sett
End If
Prog1:
C = Makebcd(num)
Portb = C
End
W:
Data 1 , 2 , 3 , 99 , 4 , 5 , 6 , 99 , 7 , 8 , 9 , 99 , 99 , 0 , 99 , 99
۲۴-فروردین-۱۳۹۱, ۲۲:۴۲:۲۹
برنامتون اشكال زياد دارهه ...
خط هاي برنامه رو دونه دونه چك كنيد ...
1- end بايد آخرين خط برنامه باشه ، مگر اينكه از تابع يا sub روتين استفاده كرده باشيد.
2-
اين خط ها اجرا نمي شن ، به علت اينكه خط قبل از اونها Goto Sett هست.
حاصل B1+B رو هم در B2 بريزيد تا يكان كه B1 هست مقدارش از دست نرهه . . .
3-جدول lookup يا همومن ليبل w رو متناسب باكارتون مقدار دهي كرديد؟
4-اول سعي كنيد يك عدد 2 رقمي رو روي 7seg نمايش بديد. بعد كه از اون جواب گرفتيد ، قاطي پروژه ي فعلي تون كنيد.
كدي كه براي نمايش روي 7seg زديد درست نيست.
روش رفرش رو چند وقت پيش توضيح دادم ،يه سرچي بزنيد .
شما در هر لحظه توسط 2 پايه ي كنترلي 7seg تنها به يكي از 2 سمت 7seg مقدار مي ديد .
در لحظه ي اول مثلا مقدار b رو كه عدد دهگان هست روي 7seg سمت چپ ، و در لحظه ي بعد b1 كه عدد يكان هست رو روي 7seg سمت راست مي ذاريد و در هر ثانيه اين كار بايد بيش از 24 بار صورت بگيرد تا چشم ما هر دو عدد رو يكجا روشن ببينه ...
خط هاي برنامه رو دونه دونه چك كنيد ...
1- end بايد آخرين خط برنامه باشه ، مگر اينكه از تابع يا sub روتين استفاده كرده باشيد.
2-
کد:
B = B * 10
B1 = B + B1
حاصل B1+B رو هم در B2 بريزيد تا يكان كه B1 هست مقدارش از دست نرهه . . .
3-جدول lookup يا همومن ليبل w رو متناسب باكارتون مقدار دهي كرديد؟
4-اول سعي كنيد يك عدد 2 رقمي رو روي 7seg نمايش بديد. بعد كه از اون جواب گرفتيد ، قاطي پروژه ي فعلي تون كنيد.
كدي كه براي نمايش روي 7seg زديد درست نيست.
روش رفرش رو چند وقت پيش توضيح دادم ،يه سرچي بزنيد .
شما در هر لحظه توسط 2 پايه ي كنترلي 7seg تنها به يكي از 2 سمت 7seg مقدار مي ديد .
در لحظه ي اول مثلا مقدار b رو كه عدد دهگان هست روي 7seg سمت چپ ، و در لحظه ي بعد b1 كه عدد يكان هست رو روي 7seg سمت راست مي ذاريد و در هر ثانيه اين كار بايد بيش از 24 بار صورت بگيرد تا چشم ما هر دو عدد رو يكجا روشن ببينه ...
۲۶-فروردین-۱۳۹۱, ۱۸:۱۸:۴۴
سلام
من يه كارايي كردم الان شماره ها رو وارد ميكنم و بعد زدن ستاره شروع به شمردن ميكنه درست هم ميشماره ولي درست اعداد را رو سگمنت نشون نميده مثلا بار اول 1 و بار دوم 2 را وارد ميكنم 12 ثانيه چراغ را قرمز ميكنه ولي اون عدد هايي كه بايد نشون نميده ويه چيزاي دري وري نشون ميده
فايل هاش را گذاشتم يه زحمت بكش خودت نگاش كن مثل اينكه دارم كم كم نتيجه مي گيرم
من يه كارايي كردم الان شماره ها رو وارد ميكنم و بعد زدن ستاره شروع به شمردن ميكنه درست هم ميشماره ولي درست اعداد را رو سگمنت نشون نميده مثلا بار اول 1 و بار دوم 2 را وارد ميكنم 12 ثانيه چراغ را قرمز ميكنه ولي اون عدد هايي كه بايد نشون نميده ويه چيزاي دري وري نشون ميده
فايل هاش را گذاشتم يه زحمت بكش خودت نگاش كن مثل اينكه دارم كم كم نتيجه مي گيرم
کد php:
$regfile = "m16def.dat"
$crystal = 8000000
Config Portb = Output
Config Kbd = Portd , Debounce = 100 , Delay = 1
Dim A As Byte
Dim B1 As Byte
Dim B2 As Byte
Dim Num As Byte
Dim B As Byte
Dim C As Byte
Dim I As Byte
Ddrb = &HFF
Portb = 0
Ddrc = &H07
Portc = 0
Goto Adad1
Adad1:
A = Getkbd()
If A > 15 Then
Goto Adad1
End If
B = Lookup(a , W)
Waitms 300
Goto Adad2
Adad2:
A = Getkbd()
If A > 15 Then
Goto Adad2
End If
B1 = Lookup(a , W)
Waitms 300
'--------------------------
B = B * 10
B1 = B + B1
'--------------------------
Goto Sett
Sett:
A = Getkbd()
If A > 15 Then
Goto Sett
End If
Waitms 100
If A = 12 Then
Num = B1
Goto Prog1
Else
Goto Sett
End If
Prog1:
Do
Set Portc.0
For I = Num To 0 Step -1
Portb = Makebcd(i)
Waitms 1000
Next I
Reset Portc.0
Set Portc.1
Portb = 0
Waitms 2000
Reset Portc.1
Set Portc.2
For I = Num To 0 Step -1
Portb = Makebcd(i)
Waitms 1000
Next I
Reset Portc.2
Loop
End
W:
Data 1 , 2 , 3 , 99 , 4 , 5 , 6 , 99 , 7 , 8 , 9 , 99 , 99 , 0 , 99 , 99
۲۷-فروردین-۱۳۹۱, ۰۹:۲۷:۳۸
نقل قول: Do
Set Portc.0
For I = Num To 0 Step -1
Portb = Makebcd(i)
Waitms 1000
Next I
Reset Portc.0
Set Portc.1
Portb = 0
Waitms 2000
Reset Portc.1
Set Portc.2
For I = Num To 0 Step -1
Portb = Makebcd(i)
Waitms 1000
Next I
Reset Portc.2
Loop
در اين تيكه كد ، يه سري اشتباهات واضح هست .
1-مثلا ، قرار شد در هر ثانيه بيش از 24 بار هر كدوم از سمت هاي 7seg رو مقدار دهي كنيد.
الان شمادو بار 1000 ميلي ثانيه + 2000 ميلي ثانيه = 4 ثانيه گذاشتيد !!!!!!
يعني در 1 ثانيه 1 بار هم 2 سمت مقدار دهي نمي شه ...!!!
waitms ها رو خيلي كم تر بگيريد.
2- هر سمت سگمنت مي تونه عددهاي 0 تا 9 رو نشان بده. شما اول اومدي يه سمت رو فعال كردي و در يك حلقه ي for مقدار num رو كه مثلا 30 هست رو تا 0 شدنش يه جا به همون دادي !!!
جدا از باقيه مسائل ، عدد 30 رو چطور مي شه روي يك سمت 7seg نشون داد ؟؟؟!!!
--------------
براي عدد 30 ، سمت چپ رو فعال كني و 3 رو بايد بذاري روي سمت چپ ، بعد از يه زمان خيلي كوتاه ، سريع بايد سمت راست رو فعال كني و 0 رو بذاري روي سمت راست، بعد از يك مدت كوتاه ، دوباره بايد سمت چپ رو فعال كني و 3 رو بذاري روي سمت چپ و بعد از يك مدت كوتاه دوباره سمت راست رو فعال كني و 0 رو بذاري روي سمت راست و ... بيش از 24 بار اين عمليات رو در 1 ثانيه بايستي انجام بدي ...
وقتي يك ثانيه گذشت ، مي ري سراغ عدد 29 . باز مثل قبل اين كار رو انجام مي دي ...
۲۷-فروردین-۱۳۹۱, ۱۵:۵۵:۲۱
سلام
اين 1 و 2 ثانيه واسه شمارش هستش اگه اينارو تغيير بدم فاصله بين ثانيه ها كم ميشه مثلا12 را تو 6 ثانيه تا 0 ميشماره
اين 1 و 2 ثانيه واسه شمارش هستش اگه اينارو تغيير بدم فاصله بين ثانيه ها كم ميشه مثلا12 را تو 6 ثانيه تا 0 ميشماره
۲۷-فروردین-۱۳۹۱, ۱۷:۵۳:۵۳
براي درست كردن زمان 1 ثانيه از تايمر استفاده كنيد.
يه برنامه ي كاملش رو چند روز پيش تو سايت گذاشتم.
اسم تاپيكش تايمر0 بود فكر كنم ،تو بخش ميكرو يا AVR مي تونيد پيداش كنيد.
يه برنامه ي كاملش رو چند روز پيش تو سايت گذاشتم.
اسم تاپيكش تايمر0 بود فكر كنم ،تو بخش ميكرو يا AVR مي تونيد پيداش كنيد.
۲۸-فروردین-۱۳۹۱, ۲۳:۲۳:۲۴
سلام
در مورد تايمر من هنوز چيزي بلد نيستم ( تازه اين ترم ميكرو دارم )
ولي مشكل نشان دادن رو سگمنت را حل كردم
بين ميكرو و سگمنت از آيسي 7448 استفاده كردم الان تقريبا پروزه ام حاضره البته با كمك شما
نميدونم چطوري ازتون تشكر كنم خيلي چيز ها ياد گرفتم هر چند هنوز تازه اول راهم
راستي هنوز 4 روز وقت دارم به سرم زده حالت چشمك زن و 3 زمانه را هم اضافه كنم
بازم ممنون
در مورد تايمر من هنوز چيزي بلد نيستم ( تازه اين ترم ميكرو دارم )
ولي مشكل نشان دادن رو سگمنت را حل كردم
بين ميكرو و سگمنت از آيسي 7448 استفاده كردم الان تقريبا پروزه ام حاضره البته با كمك شما
نميدونم چطوري ازتون تشكر كنم خيلي چيز ها ياد گرفتم هر چند هنوز تازه اول راهم
راستي هنوز 4 روز وقت دارم به سرم زده حالت چشمك زن و 3 زمانه را هم اضافه كنم
بازم ممنون
۰۱-اردیبهشت-۱۳۹۱, ۲۰:۳۵:۲۰
سلام
بستن مدار رو برد را نگه داشتم دقيقه نود الان يه مشكلي دارم ممنون ميشم بازم كمكم كني
مدار در پروتئوس جواب ميده ولي وقتي بستمش تموم قسمتها كار ميكنه به جز ledها كه بعضي هاشون روشن خاموش نميشن
با ولت متر كه خود ميكرو را تست كردم اون پورت هايي كه اين ledها وصلن هميشه ولتاز 4.7 دارن حتي وقتي كه بايد روشن خاموش بشن (ولتاز اين پورت ها صفر نميشه )ولي با وجود 4.7 led را روشن نميكنه
اتصالت رو هم چك كردم يه بار هم تو برنامه جاي پورتها را عوض كردم اين بار يه چند تاي ديگه ايجوري شدن
ممنون ميشم زود كمكم كنين فردا بايد تحويل بدم
بستن مدار رو برد را نگه داشتم دقيقه نود الان يه مشكلي دارم ممنون ميشم بازم كمكم كني
مدار در پروتئوس جواب ميده ولي وقتي بستمش تموم قسمتها كار ميكنه به جز ledها كه بعضي هاشون روشن خاموش نميشن
با ولت متر كه خود ميكرو را تست كردم اون پورت هايي كه اين ledها وصلن هميشه ولتاز 4.7 دارن حتي وقتي كه بايد روشن خاموش بشن (ولتاز اين پورت ها صفر نميشه )ولي با وجود 4.7 led را روشن نميكنه
اتصالت رو هم چك كردم يه بار هم تو برنامه جاي پورتها را عوض كردم اين بار يه چند تاي ديگه ايجوري شدن
ممنون ميشم زود كمكم كنين فردا بايد تحويل بدم
۰۱-اردیبهشت-۱۳۹۱, ۲۲:۳۴:۳۰
LED رو مستقيم به پورت نزنيد . يه مقاومت بين 330 اهم تا 1k باهاش سري كنيد تا جريان رو محدود كنه و پورت هاي ميكرو آسيب نبينه ...
از چه ميكرويي استفاده مي كني ؟
مشكلي كه گفتيد احيانا در پورت C نيست ؟
اگر هست در قسمت فيوز بيت ها JTAG رو disable كنيد.
اينطوري پورت C فعال مي شه ...
باقيه فيوزبيت ها رو اگر آشنايي نداريد تغيير نديد ...
موفق باشيد.
از چه ميكرويي استفاده مي كني ؟
مشكلي كه گفتيد احيانا در پورت C نيست ؟
اگر هست در قسمت فيوز بيت ها JTAG رو disable كنيد.
اينطوري پورت C فعال مي شه ...
باقيه فيوزبيت ها رو اگر آشنايي نداريد تغيير نديد ...
موفق باشيد.
۰۱-اردیبهشت-۱۳۹۱, ۲۳:۵۰:۴۳
آقا تشكر تشكر تشكر
jtag را غيرفعال كردم درست شد
jtag را غيرفعال كردم درست شد