امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
یه سوال فووررررری ( نمایش اعداد در سون سگمنت )
نویسنده پیام
sanaz.z آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 1
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
Question  یه سوال فووررررری ( نمایش اعداد در سون سگمنت )
سلام. یه سوال سخت افزاری داشتم.

من می خوام با ای سی های cmos اعداد 0 تا 15 رو روی 7-سگمنت تولید کنم.

اول از ای سی 4511 برای اینکار استفاده کردم ولی این ای سی 0 تا 9 رو فقط تولید می کنه . چجوری و با چه گیتهایی باید یه مدار طراحی کنم که اینکارو انجام بده؟؟؟؟؟؟؟؟

خیلی مهربونید اگه زود بهم جواب بدید . مرسی


(آخرین ویرایش در این ارسال: ۱۲-شهریور-۱۳۸۹, ۱۷:۰۹:۳۹، توسط t3r!p3000.)
۱۱-شهریور-۱۳۸۹, ۰۱:۱۲:۵۳
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #2
RE: یه سوال فووررررری
حاجی 4511 که فقط راه انداز سون سگمنته !!!
شمارنده نیست که !


مهندس 4510 استفاده کن !
چون دورقمی هستش پس دو تا لازم داری !
خروجیشو هر کدومو بده به یه 4511
دیتاشیتش رو هم نگاه کنی متوجه میشی چجوری باید دو تا رو به هم وصل کنی و چی کار کنی تا 15 بشمره !!!
۱۱-شهریور-۱۳۸۹, ۰۱:۲۰:۴۹
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, رسول, kimiafars, salehjg
sanaz.z آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 1
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #3
RE: یه سوال فووررررری
سلام.
مرسي از راهنماييتون ولي فكر كنم من بد توضيح دادم.
من دارم از يك keypad 4*4 استفاده مي كنم و ميخوام با زدن هر دكمه اي عدد مربوط به اون نشون داده بشه مثلا 0 تا 9 كه خودشون براي 10 تا 15 هم با علائمي مثل c يا c برعكس....
۱۲-شهریور-۱۳۸۹, ۱۵:۴۴:۱۴
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #4
RE: یه سوال فووررررری
خوب مهندس باید میکرو استفاده کنی !

چون واسه اسکن کیبورد لازمه !!!!

۱۲-شهریور-۱۳۸۹, ۱۶:۰۱:۰۱
ارسال‌ها
پاسخ
تشکر شده توسط : رسول, reza555
sanaz.z آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 1
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #5
RE: یه سوال فووررررری ( نمایش اعداد در سون سگمنت )
مرسی از راهنماییتون .
۱۲-شهریور-۱۳۸۹, ۲۰:۲۱:۰۲
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #6
RE: یه سوال فووررررری ( نمایش اعداد در سون سگمنت )

اتصال کي پد



ابتدا در مورد چگونگي کار کي پد بحث کنيم .
در زير شکل اين وسيله را مشاهده مي کنيد .

[تصویر:  232e55b2178a40389ce9.GIF]

'گاهي به تعداد زيادي کليد نياز داريم ، ما بايد اين کليد ها را به ميکرو متصل کنيم و مدام آنها را چک نماييم . براي اين کار دو راه وجود دارد که روش اول اتصال هر کليد به يک پايه و روش دوم استفاده از صفحه کليد ماتريسي است .

روش اول، چون تعداد زيادي از پايه هاي ميکرو اشغال مي شود،کمتر مورد استفاده قرار مي گيرد .

دستور بسکام براي استفاده از صفحه کليد ماتريسي که از اين به بعد به آن KBD مي گوييم به شرح زير است :

کد php:
Config Kbd PORTX [, Debounce Value Delay Value

که PORTX ، پورتي است که KBD به آن متصل مي شود .

Debounce تاخير کليد است که بين 1 تا 255 ميلي ثانيه است . (اگر تعریف نشود 20 میلی ثانیه در نظر گرفته می شود )

Delay هم تاخیر بین هر فشردن کلید است که در بین 1 تا 255 میلی ثانیه قابل تنظیم است . (اگر تعریف نشود 100 میلی ثانیه در نظر گرفته می شود )

بعد از تعريف KBD در برنامه نوبت به استفاده از آن است براي اين کار از دستور زير استفاده مي شود

کد php:
Var = Getkbd() 

که Var يک متغيير از جنس بايت است که عدد گرفته شده از KBD در آن گذاشته مي شود و در صورتي که کليدي فشرده نشود عدد 16 در داخل آن گذاشته مي شود ، براي حذف عدد 16 مي توان از دستور شرطي If استفاده کرد.

مانند :

کد php:
"regfile = "m16def.dat
crystal 12000000
Config Lcd 16 
Config Lcdpin 
Pin Db4 Portd.0 Db5 Portd.1 Db6 Portd.2 Db7 Portd.3 Portd.4 Rs Portd.5
Config Kbd 
Portb,DEBOUNCE 50 
Dim A 
As Byte 
Q

Getkbd() 
If 
15 Then 
Goto 
End 
If 
Locate 1 
Lcd A 
Goto 
End 

دو خط اول برنامه مثل هميشه معرفي ميکرو و کريستال است (که در اينجا از ميکرو مگا 16 و کريستال 8 مگاهرتز استفاده شده است) .

در خط سوم و چهارم و پنجم LCD راه اندازي شده است ( که در اينجا از LCD 6*2 استفاده شده وLCD به پورتD متصل است) .

در خط ششم KBD معرفي شده (که در اينجا KBD به پورت B متصل شده وDebounce پنجاه ميلي ثانيه گرفته شده است ) .

در خط هفتم يک متغيير از جنس بايت معرفي گرديده .

در خط هشتم يک برجسب به نام Q قرار داده شده است .

در خط نهم عدد گرفته شده از KBD در متغيير A قرار مي گيرد (در صورتي که هيچ کليدي فشرده نشود مقدار 16 (A=16) در A ريخته مي شود ) .

در خط ده ويازده و دوازده يک دستور شرطي قرار گرفته که اين دستور شرطي ميگويد : اگر A بزرگتر از 15 شد به برچسب Q پرش کن (در صورتي که شرط درست باشد دستورات بين If و Endif اجرا مي شود و اگر شرط درست نباشد برنامه از خط بعد از Endif ادامه مي يابد ).

در خط سيزده و چهارده مقدار A در سطر اول و ستون اول LCD نمايش داده مي شود .

و در خط پانزده برنامه به برچسب Q پرش ميکند و مراحل قبل دوباره تکرار ميگردد .

خط اخر برنامه هميشه End است .

مدار مورد استفاده :

[تصویر:  bc298e8d9ce9449ba85e.PNG]

مثال :

در اين مثال به ازاي هر کليد در LCD يک نام نوشته مي شود :

کد php:
"regfile = "m16def.dat
crystal 12000000
Config Lcd 16 
Config Lcdpin 
Pin Db4 Portd.0 Db5 Portd.1 Db6 Portd.2 Db7 Portd.3 Portd.4 Rs Portd.5
Config Kbd 
Portb Debounce 20
Dim A 
As Byte
Q
:
Getkbd()
If 
15 Then : Goto End If
If 
0 Then Locate 1 Lcd "qwer" End If
If 
1 Then Locate 1 Lcd "asdf" End If
If 
3 Then Locate 1 Lcd "FDFD" End If
If 
4 Then Locate 1 Lcd "aFDf" End If
If 
5 Then Locate 1 Lcd "SAKr" End If
If 
6 Then Locate 1 Lcd "1234" End If
If 
7 Then Locate 1 Lcd "5687" End If
If 
8 Then Locate 1 Lcd "7541" End If
If 
9 Then Locate 1 Lcd "IO12" End If
If 
10 Then Locate 1 Lcd "wqsf" End If
If 
11 Then Locate 1 Lcd "1l2k" End If
If 
12 Then Locate 1 Lcd "3,m5" End If
If 
13 Then Locate 1 Lcd ")(*(" End If
If 
14 Then Locate 1 Lcd "****" End If
If 
15 Then Locate 1 Lcd "++++" End If
Locate 2 Lcd A : Goto Q
End 

در برنامه بالا براي اينکه حجم کمتري اشغال شود دستورات به صورت سطري نوشته شده اند ، شما ميتوانيد با قرار دادن علامت دونقطهShy) در بين دو دستور آنها را در يک خط بنويسيد ، هعمچنين با قرار دادن علامت ويرگولWink) چندين علامت را روي LCD در يک خط نمايش دهيد ، همچنين با دستور کما (,) چندين متغيير را در يک خط معرفي کنيد .

برنامه بالا را با استفاده از جدول lookupstr مي نويسيم :

کد php:
"regfile = "m16def.dat
crystal 12000000
Config Lcd 16 
Config Lcdpin 
Pin Db4 Portd.0 Db5 Portd.1 Db6 Portd.2 Db7 Portd.3 Portd.4 Rs Portd.5
Config Kbd 
Portb Debounce 20 
Dim A 
As Byte 
Dim B 
As String 
Q

Getkbd() 
If 
15 Then 
Goto 
End 
If 
Lookupstr(W
Locate 1 1Lcd B  
Locate 2 
1Lcd A 
Goto 
End 
W

Data "qwer" "asdf" "gdfh" "jlhl" "hkn," "yryh" "bmn4" "2452" "jkym" "jytj" "njhf" "uyjn" "dyr4" "e5yh" "9768" "hnbh" 

جدولLookupstr نيز مانند جدول Lookup است اما جدول Lookup براي باز گرداني اعداد و جدول Lookupstr براي بازگرداني حروف به کار مي رود .

شما جاي پايه هاي KBD که به پايه ميکرو متصل است را تغيير دهيد ونتيجه راببينيد. هميشه نياز نيست که ورودي يک کليد باشد بعضي وقت ها مي توان صفر يا يک شدن يک پين را هم چک کرد.

بعضي وقت ها به کيپد با تعداد کليد بيشتر نياز است شما با دستور زير 2 سطر ديگر به تعدا سطر هاي کيپد اضافه کنيد (در مجموع 24 کليد)

کد php:
Config Kbd Portx Debounce Value Rows Row5 PINA.BRow6 PINA.

X نام پورتي است که کيپد به آن متصل شده است (4سطر و4ستون اصلي).

Value مقدار تاخير در فشردن کليد براي گرفتن لرزش است.

A.B نام پورت و پيني است که دوسطر ديگر به آن متصل شده اند.

کد php:
$regfile "m16def.dat"
$crystal 12000000
Config Lcd 
16 2
Config Lcdpin 
Pin Db4 Portd.0 Db5 Portd.1 Db6 Portd.2 Db7 Portd.3 Portd.4 Rs Portd.5
Config Kbd 
Portb Debounce 20 Rows Row5 Pina.0 Row6 Pina.1
Dim A 
As Byte
Q
:
Getkbd()
If 
16 Then : Goto End If
Locate 1 Lcd A : Goto Q
End 

منبع : http://www.iranled.com/forum/showthread.php?tid=10869
۱۲-شهریور-۱۳۸۹, ۲۱:۱۰:۲۱
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, رسول


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  نمایش یک عدد دو رقمی روی یک سون سگمنت دوتایی hadishooti 28 36,403 ۲۱-خرداد-۱۳۹۵, ۱۳:۱۲:۳۱
آخرین ارسال: eli722

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS