تبليغاتX
......electronice........... - اتصال صفحه کلید به میکروکنترلر
برق والکترونیک

اتصال صفحه کلید به میکروکنترلر
منبع:
http://www.vis.ir

با امید به اینکه آزمایشهای قبلی را با موفقیت انجام داده اید و با پوزش از عزیزانی که منتظر آپدیت شدن وبلاگ بوده اند به سراغ آزمایش سوم می رویم که اتصال صفحه کلید ماتریسی 16 تایی به میکروکنترلر می باشد و کاربردهای زیادی در اکثر پروژه های مبتنی بر مییکروکنترلر دارد . نقشه ی شماتیک سخت افزار را می توانید از اینجا دانلود کنید و نرم افزار را هم که در زیر مشاهده می کنید همان نرم افزاری است که در کتاب «میکروکنترلر 8051» نوشته ی محمد علی مزیدی برای اتصال صفحه کلید ماتریسی 16 تایی به میکروکنترلر پیشنهاد شده است . با این تفاوت که نرم افزار موجود در کتاب از 2 پورت استفاده می کند ولی نرم افزاری که در اینجا مشاهده می کنید برای استفاده از یک پورت بهینه شده است و برای نمایش اعداد مربوط به کلید های فشرده شده نیز از 4 عدد سون سگمنت که به روش مالتی پلکس بسته شده اند بهره می برد . توضیحات لازم در مورد نرم افزار صفحه کلید را در ذیل آن مشاهده می کنید و در مورد نرم افزار مالتی پلکس هم در آزمایش قبل به طور مفصل توضیح داده شده است .


Zero Equ 0C0H

One Equ 0F9H

Two Equ 0A4H

Three Equ 0B0H

Four Equ 99H

Five Equ 92H

six Equ 82H

Seven Equ 0F8H

Eight Equ 80H

Nine Equ 90H

_A Equ 88H

_B Equ 83H

_C Equ 0C6H

_D Equ 0A1H

_E Equ 86H

_F Equ 8EH



Timer0_Preload Equ -5000

seven_segment Data P0

KeypadPort Data P1

Yekan Data 35H

Dahgan Data 36H

Sadgan Data 37H

Yekan_Hezar Data 38H

Anode1 Bit P3.0

Anode2 Bit P3.1

Anode3 Bit P3.2

Anode4 Bit P3.3

;*******************************

Org 0H

Sjmp Main

;*******************************

Org 0BH

Ajmp Multiplex

;*******************************

Main: Mov Tmod,#01H

Mov IE,#82H

Mov r2,#0

Mov Yekan,#Zero

Mov Dahgan,#Zero

Mov Sadgan,#Zero

Mov Yekan_Hezar,#Zero

Mov Tl0,#low Timer0_Preload

Mov Th0,#high Timer0_Preload

Setb Tr0



Back1: Mov KeypadPort,#11110000B

Mov a,KeypadPort

Anl a,#11110000B

Cjne a,#11110000B,Back1

Back2: Acall Delay

Mov a,KeypadPort

Anl a,#11110000B

Cjne a,#11110000B,Over

Sjmp Back2

Over: Acall Delay

Mov a,KeypadPort

Anl a,#11110000B

Cjne a,#11110000B,Over1

Sjmp Back2

;* * * * * * * * * * * * * * * *

Over1: Mov KeypadPort,#11111110B

Mov a,KeypadPort

Anl a,#11110000B

Cjne a,#11110000B,Row_0

;* * * * * * * * * * * * * * * *

Mov KeypadPort,#11111101B

Mov a,KeypadPort

Anl a,#11110000B

Cjne a,#11110000B,Row_1

;* * * * * * * * * * * * * * * *

Mov KeypadPort,#11111011B

Mov a,KeypadPort

Anl a,#11110000B

Cjne a,#11110000B,Row_2

;* * * * * * * * * * * * * * * *

Mov KeypadPort,#11110111B

Mov a,KeypadPort

Anl a,#11110000B

Cjne a,#11110000B,Row_3

Ajmp Back2

;* * * * * * * * * * * * * * * *

Delay: Mov 40h,#50

Back3: Mov 41h,#100

Djnz 41h,$

Djnz 40h,Back3

Ret

;* * * * * * * * * * * * * * * *

Row_0: Mov Dptr,#Kcode0

Sjmp Find

Row_1: Mov Dptr,#Kcode1

Sjmp Find

Row_2: Mov Dptr,#Kcode2

Sjmp Find

Row_3: Mov Dptr,#Kcode3

;* * * * * * * * * * * * * * * *

Find: Rlc a

Jnc Match

Inc dptr

Sjmp Find

;* * * * * * * * * * * * * * * *

Match: Clr a

Movc a,@a+Dptr



Mov Dptr,#NumberCodes

Movc a,@a+Dptr

Mov Yekan_Hezar,Sadgan

Mov Sadgan,Dahgan

Mov Dahgan,Yekan

Mov Yekan,a

Ajmp Back1

;*******************************

Multiplex: Clr Tr0

Mov Tl0,#low Timer0_Preload

Mov Th0,#high Timer0_Preload

Setb Tr0

Inc r2



Cjne r2,#1,Show_Dahgan

Clr Anode4

Setb Anode1

Mov seven_segment,Yekan

Reti



Show_Dahgan: Cjne r2,#2,Show_Sahgan

Clr Anode1

Setb Anode2

Mov seven_segment,Dahgan

Reti



Show_Sahgan: Cjne r2,#3,Show_Yekanhezar

Clr Anode2

Setb Anode3

Mov seven_segment,Sadgan

Reti



Show_Yekanhezar: Mov r2,#0

Clr Anode3

Setb Anode4

Mov seven_segment,Yekan_Hezar

Reti

;*******************************

Cseg at 170H

Kcode0: Db 3,2,1,0

Kcode1: Db 7,6,5,4

Kcode2: Db 11,10,9,8

Kcode3: Db 15,14,13,12

;*******************************

Cseg at 180H

NumberCodes: Db Zero,One,Two,Three,Four,Five,Six,seven,Eight,Nine,_A,_B ,_C,_D,_E,_F

End



به طوری که در نقشه ی شماتیک مشاهده می کنید سطرها به 4 بیت کم ارزشتر و ستونها نیز به 4 بیت پرارزشتر پورت P1 متصل شده اند . نرم افزار مربوط به صفحه کلید را می توان به 4 قسمت تقسیم کرد که عملکرد هر قسمت به شرح ذیل است .

در ابتدا برای اطمینان از رهایی کلید قبلی به همه ی سطرها صفر اعمال شده و ستونها مرتباً خوانده و وارسی می گردند تا همه ی ستونها در سطح منطقی یک باشند . اگر همه ی ستونها در سطح یک تشخیص داده شوند برنامه قبل از رفتن به مرحله بعدی با فراخوانی زیر روال Delay مکث کرده و سپس در قسمت بعدی منتظر فشرده شدن کلید جدید می ماند .

در قسمت دوم نرم افزار ، برای یافتن کلید فشرده شده ستونها بوسیله یک حلقه نامتناهی مکرراً پویش می شوند تا یکی از آنها حاوی صفر شود . ذکر این نکته ضروری است که لچ های خروجی متصل به سطرها هنوز صفرهای خود را که در مرحله ی قبل تهیه شده اند دارند . نرم افزار پس از تشخیص فشردگی کلید ، با فراخوانی زیر روال Delay ، 20 میلی ثانیه برای حذف جهش ناشی از اتصال کلید صبر کرده و دوباره ستونها را پویش می کند . این کار دو مزیت دارد : 1- اطمینان از اینکه اولین تشخص فشردگی به دلیل پارازیت و نویز نبوده و 2- تأخیر 20 میلی ثانیه ای موجب می شود تا تا فشردن کلید مذکور بعنوان چندین فشردگی تعبیر نشود . اگر بعد از تأخیر 20 میلی ثانیه ، باز هم کلید فشرده شده تشخیص داده شد ، برنامه برای یافتن سطری که کلید فشرده شده در آن است به مرحله ی بعدی می رود و در غیر این صورت به حلقه ی تشخیص کلید فشرده شده ی واقعی بر می گردد .

در قسمت سوم ، نرم افزار به منظور تشخیص سطری که کلید فشرده شده در آن است ، هر بار فقط به یکی از سطرها صفر اعمال کرده و ستونها را بررسی می کند . اگر همه ی ستون ها در سطح بالا باشند بدین معناست که کلید فشرده شده متعلق به این سطر نیست . بنابراین به سطر بعدی صفر اعمال کرده و این عمل را تا یافتن سطر متعلق به کلید تکرار می کند . پس از مشخص شدن سطر متعلق به کلید فشرده شده ، ابتدا آدرس برچسبی که کدهای مربوط به آن سطر در آن تعریف شده اند به درون ثبات Dptr بار شده (مثلاً به صورت Mov Dptr,#Kcode0) و سپس برنامه برای یافتن کد مربوط به کلید فشرده شده به مرحله بعد می رود .

برای شناسایی کلید فشرده شده ، ثبات a که محتوی پورت متصل به صفحه کلید است ، از طریق پرچم نقلی به چپ چرخانده شده (با دستور Rlc a) و صفر بودن پرچم نقلی بررسی می شود . اگر پرچم نقلی صفر باشد ابتدا محتوای ثبات a صفر شده و سپس با دستور Movc a,@a+Dptr کد مربوط به کلید فشرده شده به درون ثبات a منتقل می شود . در صورتی که پرچم نقلی صفر نباشد ثبات Dptr برای اشاره به مکان بعدی در آدرس مورد نظر یک واحد افزایش می یابد .

در این مرحله ثبات a حاوی کد مربوط به کلید فشرده شده است که عددی بین 0 تا 15 می باشد . ولی برای نمایش این کد روی سون سگمنت می بایست به کد متناظر آن تبدیل شود که این کار نیز با استفاده از روش آدرس دهی اندیسی صورت می گیرد . البته می توان کدهای مربوط به اعداد و کاراکترها برای نمایش روی سون سگمنت را مستقیماً در محلهایی که با برچسب های Kcode0 تا 3 مشخص شده اند قرار داد تا دیگر به فرآیند تبدیل کد نیازی نباشد ولی در صورتی که بخواهیم با کدهای صفحه کلید عملیات محاسباتی انجام دهیم بایستی به همین روشی که در برنامه به کار رفته عمل کنیم .

اگر ترتیب اتصال سطرها و ستونها به پورتP1 مطابق نقشه ی شماتیک باشد ، با فشردن هر کلید عدد و یا کاراکتری که در نقشه ی شماتیک در زیر هر کلید است بر روی سون سگمنت نشان داده می شود . در صورتی که شما ترتیب دیگری را برای کلیدها انتظار دارید می توانید با دستکاری جدولی که در انتهای برنامه و با آدرسهای Kcode0 تا 3 تعریف شده به ترتیب مورد نظر برسید
+ نوشته شده در  Sun 7 Dec 2008ساعت   دوست شما gezel jamarvan | 
 
صفحه نخست
پست الکترونیک
آرشیو
عناوین مطالب وبلاگ
AT&T Phones
Deals on Cell Phones
درباره وبلاگ

« ارسال برای دوستان »
نام شما :
ایمیل شما :
نام دوست شما:
ایمیل دوست شما:

Powered by ParsTools
پیوندهای روزانه
دانلود جزوه
تم بازی برنامه آهنگ موزیک موبایل - دانلود - نرم افزار - مقاله - مهندسی
دالود رایگان انواع کتاب
سرزمین دانلود نرم افزار
جدیدترین کتاب های اموزش زبان
كتابخانه صوتي طنين ايراني
کتاب های الکترونیکی موبایل ( پرنیان )
برنامه نویسی وکدهای آماده+کتاب
دانلود EbooK برای مهندسی برق
بزرگترین مجموعه کتاب الکترونیکی ایران
کتاب رایگان کامپیوتری
دانلود کتابهای رایگان فارسی
کتابهای رایگان فارسی و عربی
کتابخانه بزرگ آریا
دانلود کتابهای رایگان فارسی مخصوص موبایل
کتنابخانه مجازی ایران
انجمن برق دانشگاه آزاد خرم آباد
مهندسی برق* کنترل مخابرات الکترونیک قدرت*
آموزش میکروکنترلر avr
برق و الکترونیک
اطلاعات ارشد برق دانشگاه آزاد
وبلاگ دانشجویان برق
سایت جامع سرگرمی
edit عكس online
گوگل محقق(پژوهشگر)
دانلود کتاب های مختلف
دانلود کتاب های الکترونیک
E10دنياي دانلود
مدارات الکترونیک دانشمند
پروژه دانشجویی الکترونیک , شماتیک , میکرو
بانک اطلاعات مهندسی برق
پروژه های الکترونیک2
مقالات + مدارات الکتریکی به صورت PDF
شركت الكترونيك اذربايجان توليدي اهر كيت
مشخصات قطعات الکترونیکی
پروژه های الکترونیک1
دانلود رایگان کتابهای الکترونیکی
آرشیو پیوندهای روزانه
نوشته های پیشین
آذر 1387
خرداد 1387
اردیبهشت 1387
فروردین 1387
بهمن 1386
آرشیو موضوعی
کتاب ها
اطلاعیه ها
سوالات
پروژه ها
مقالات
میکروکنترلر
پیوندها
انجمن علمی دانشجویان ایران
انجمن های عمومی ،دانلود ، علمی
وبلاگ دانشجویان برق
برق و الكترونيك و جديدترين فن آوريهاي روز
الكترونيكا
در زمینه موفقیت، متافیزیک و روانشناسی
چهارمين وبلاگ برتر برق
دانشگاه محقق اردبیلی
دنیای دانلود برق
تاپ ترین سایت ناسا درمورد فضا
آموزش دانشگاه محقق اردبیلی
دانشگاه فردوسی مشهد
سازمان سنجش
مشهد كيت
مهران كيت
چت
 

 RSS

POWERED BY
BLOGFA.COM