সুচিপত্র:

7 সেগমেন্ট এলইডি ব্যবহার করে ব্লাডবোল পাল্টা পাল্টা: 5 টি ধাপ
7 সেগমেন্ট এলইডি ব্যবহার করে ব্লাডবোল পাল্টা পাল্টা: 5 টি ধাপ

ভিডিও: 7 সেগমেন্ট এলইডি ব্যবহার করে ব্লাডবোল পাল্টা পাল্টা: 5 টি ধাপ

ভিডিও: 7 সেগমেন্ট এলইডি ব্যবহার করে ব্লাডবোল পাল্টা পাল্টা: 5 টি ধাপ
ভিডিও: ৭ সেগমেন্ট ডিসপ্লে কিভাবে কাজ করে? । 7 Segment Display | Ashiq's Theory 2024, জুলাই
Anonim
7 সেগমেন্ট এলইডি ব্যবহার করে ব্লাডবোল পাল্টা পাল্টা
7 সেগমেন্ট এলইডি ব্যবহার করে ব্লাডবোল পাল্টা পাল্টা

এই প্রজেক্টটি ছিল চারটি চার্লিপ্লেক্সেড 7 সেগমেন্ট এলইডি ব্যবহার করে ব্লাডবোল গেম টার্ন কাউন্টারের জন্য।

ধাপ 1: ধারণা

ধারণা
ধারণা

আমার এক বন্ধু আমাকে তার বোর্ডগেমের জন্য ব্লাডবোল টার্ন কাউন্টার তৈরির ধারণা সম্পর্কে জিজ্ঞাসা করেছিল। এটা কি ছিল, এবং তিনি কি চেয়েছিলেন তা না জানার কারণে, আমি এই কাজটি করতে যাচ্ছি এবং কিভাবে করতে যাচ্ছি সে বিষয়ে সিদ্ধান্ত নিতে কিছুক্ষণ সময় লেগেছিল। প্রথমে তিনি কী চান সে সম্পর্কে ধারণা থাকতে হবে, তাই আমি ধারণা শিল্প (ছবি) দিয়ে শুরু করলাম। মৌলিক ধারণা হল 3 টি পুশ বোতাম, 3 টি LED এর প্রতিটি নিয়ন্ত্রণ করা এবং এটি একটি কাস্টম বিল্ট টাওয়ারের ভিতরে স্থাপন করা হবে একমাত্র বড় অনুরোধ ছিল 4 টি ডিসপ্লে 0 থেকে 8 পর্যন্ত গণনা করা এবং পুনরায় সেট করা, এবং নিচের 2 টি ডিসপ্লেগুলি 8 থেকে 0 পর্যন্ত গণনা করে এবং পিছনে চক্র। আমি সার্কিটটি সম্পূর্ণ করব, এবং সে টাওয়ারটি সম্পূর্ণ করবে

ধাপ 2: ডিজাইন এবং যন্ত্রাংশ তালিকা

ডিজাইন এবং যন্ত্রাংশের তালিকা
ডিজাইন এবং যন্ত্রাংশের তালিকা

যেহেতু ধারণাটি 7 7-সেগমেন্ট LED এর জন্য বলা হয়েছিল, এবং আমার কাছে 8-বিট মাইক্রোচিপ PIC ছিল, তাই আমি LEDs নিয়ন্ত্রণ করার জন্য PIC গুলি ব্যবহার করার উপায়গুলি অনুসন্ধান করেছি। /picbook/7_08chapter.htm বলে যে "প্রতিটি ডিসপ্লের উজ্জ্বলতা প্রভাবিত না করে 6 টি পর্যন্ত ডিসপ্লে ব্যবহার করা যাবে।" আমি এটিকে একটি চ্যালেঞ্জ এবং আমার প্রজেক্টের অংশ হিসেবে তদন্ত করার জন্য বিবেচনা করেছি প্রথম জিনিসটি আমি করেছি, আমার বাক্স থেকে কিছু ভাস্বর 7-সেগমেন্ট ডিসপ্লে ধরুন এবং দেখুন কিভাবে তারা কাজ করবে। খারাপ সংবাদ. আমি যে বিশেষ অংশগুলি নির্বাচন করেছি সেগুলি আমার পছন্দ মতো আচরণ করছিল না। প্রয়োজনে সেগমেন্টটি আলোকিত হবে, রুটিবোর্ডে, কিন্তু ফুটো কারেন্ট অন্য 6 টি বিভাগে বিতরণ করা হয়েছিল। আমি বুঝতে পেরেছি যে ভাস্বর ডিসপ্লেগুলি যাওয়ার উপায় নাও হতে পারে, অথবা আমার সেগুলি অন্যভাবে ব্যবহার করা দরকার। তাই সরলতার জন্য আমি 7 সেগমেন্ট এলইডি যাচাই করেছিলাম যে আমার হাতে থাকা রুটিবোর্ডিংয়ের জন্য কাজ করবে, এবং কিছু সাধারণ অ্যানোড ডিসপ্লে অর্ডার করবে। আমার দ্বিতীয় কাজটি আমার নকশা লেআউট করা এবং কোডে কাজ শুরু করা। ছবি হল আমার সার্কিট। এটি খুব বেশি নয়, যেহেতু পিআইসিতে কোডটি মাল্টিপ্লেক্সিংয়ের যত্ন নেয় … ভুল চার্লিপ্লেক্সিং। দ্রষ্টব্য: সমস্ত 6 ডিসপ্লেতে ড্রাইভার আইসি থেকে একই লাইন রয়েছে। সিলেক্টর আইসি প্রতিটি ডিসপ্লে সক্ষম করে, এক সময়ে 1, এবং 7 সেগমেন্ট লাইনগুলি সেই অনুযায়ী পিআইসি দ্বারা আপডেট করা হয়। খুব সহজ ধারণা। এর পরে, কোড এবং হার্ডওয়্যার সমাপ্তির জন্য যা প্রয়োজন ছিল। অংশ তালিকা নির্দিষ্ট উপাদানগুলি নির্ধারণ করার সময় ডিজি-কী থেকে 3 টি ছোট আদেশের পরে, আমার প্রয়োজনীয় সবকিছু ছিল (হাতে কিছু জিনিস); 1 ~ 3 "x4 "PCB6 ছোট ধাক্কা বোতাম সুইচ (NO) 1 74LS47, 7-সেগমেন্ট ডিসপ্লে IC1 PIC16F627 1 CD4028, 10 সিলেক্টর IC 6 10KOhm রেজিস্টার 1 470Ohm রেজিস্টার 1 তারের স্পুল। আমি বিভিন্ন রং এবং গেজ ব্যবহার করেছি, কিন্তু সেটা শুধু আমিই ছিলাম। রুটিবোর্ডিং)) ডিজাইন অপ্টিমাইজেশান। এই সমস্যাগুলির মধ্যে কোনটিই নিজেরাই অতিরিক্ত জটিল নয়, কিন্তু কোনো অভিজ্ঞতা ছাড়াই সেগুলি নিয়ে যাওয়া শুরু করার জন্য অনেক কিছু হতে পারে। ডিভাইস, সোল্ডারিং স্টেশন ইত্যাদি জ্বালানোর জন্য একটি হার্ডওয়্যার প্রোগ্রামারের প্রয়োজন হয়… প্রথম যে কেউ লক্ষ্য করতে পারে যে 7-সেগমেন্ট LED এর সিরিজ (বর্তমান সীমাবদ্ধ) প্রতিরোধক নেই! আমার আসল নকশাটি তাদের মধ্যে উল্লেখ করে আমাকে তাড়াতাড়ি সম্বোধন করতে দিন … তবে ব্যাখ্যা করার জন্য পরবর্তী ধাপটি পড়ুন!

ধাপ 3: ব্রেডবোর্ডিং এবং মাইক্রো কোড

ব্রেডবোর্ডিং এবং মাইক্রো কোড
ব্রেডবোর্ডিং এবং মাইক্রো কোড

এর জন্য ব্রেডবোর্ড আবশ্যক ছিল। আমার জেনেরিক ব্রেডবোর্ড দেখানো হয়েছে, কিন্তু এই প্রকল্পের আকারের জন্য আমি আসলে এটি একটি এবং একটি ছোট রুটিবোর্ড ব্যবহার করেছি, কারণ সেখানে অনেকগুলি তারের প্রয়োজন ছিল যেগুলি দূর করা দরকার প্রথমত, আমি প্রাথমিক কোড ব্যবহার করে একটি একক 7-সেগমেন্ট LED পরীক্ষা করেছি। এটি 3 টি জিনিস নিশ্চিত করেছে; 1) আইসি এর ওয়্যারিং ভালভাবে যাচাই করা হয়েছে! আমার কোডের সাথে কাজ করার জন্য, LED একটি পুশ-বোতাম সুইচ ব্যবহার করে সংখ্যার মাধ্যমে চক্র করবে, যাতে আমার কোড এবং লেআউট যাচাই করা হয়। খুব বেশি প্রয়োজন ছিল না কিন্তু রুটিবোর্ডিং নিশ্চিত করেছে যে আমি ভাল অবস্থায় ছিলাম। CODEI মূলত আমার কোডটি বোতামগুলির জন্য স্ক্যান করার জন্য একটি প্রধান রুটিনের সাথে সেট করা ছিল এবং ISR (ইন্টারাপ্ট সার্ভিস রুটিন) নম্বরগুলি প্রদর্শন করে। ব্রেডবোর্ডিং পরীক্ষার পরে, আমি রুটিনগুলি উল্টে দিয়েছি, তাই বেশিরভাগ সময় বোতামগুলি পরীক্ষা করার জন্য ক্রমাগত সংখ্যা এবং আইএসআর প্রদর্শন করছিল। আমি এটি করার কারণটি ছিল, কেবল একটি ধ্রুবক প্রদর্শন করা, যেহেতু PIC একটি অভ্যন্তরীণ 4Mhz ঘড়ি দিয়ে চলছে, আমি বোতামগুলির জন্য খুব কম সময় স্ক্যানিং হারাচ্ছি। কোন বড় চুক্তি নয় … শুধু আপনি কিভাবে কোডটি করতে চান এবং প্রতিটি অ্যাপ্লিকেশনের জন্য কোনটি সবচেয়ে বেশি গুরুত্বপূর্ণ তা নির্ভর করে। এর জন্য, প্রদর্শন গুরুত্বপূর্ণ, তাই আমি এটিকে মূল রুটিনে রেখেছি যখন আমার প্রথম অংশগুলি এসেছিল (সমস্ত 6 টি প্রদর্শন!), আমি রুটিবোর্ডের তারের কাজ সম্পন্ন করেছি এবং অন্য একটি সমস্যা খুঁজে পেয়েছি। বোতামটি চাপার সময় আমার কোডে কিছু অস্থির রেজিস্টার ছিল যা সাফ করা হচ্ছিল না এবং আইএসআর কিছু ছোটখাট ডিসপ্লে সমস্যা সৃষ্টি করছিল। ======================================================== =====; পাল্টা পাল্টা; -----------; Dsply3 Dsply2; Dsply4 Dsply1; Led1 Led3; A5 | 4 15 | A6 - Led2; Vss | 5 14 | Vdd; বাটন 1 B0 | 6 13 | বি 7; বি 1 | 7 12 | বি 6; বি 2 | 8 11 | বি 5; B3 | 9 10 | বি 4; -----------;; LED1-3-BCD-dec IC -LEDSeg's1-6; Dsply1-3-BCD-7seg IC -Dsply#1-9;; ==================================== =================================================== পুনর্বিবেচনা ইতিহাস ও নোট:; V1.0 প্রাথমিক শিরোলেখ, কোড 3/30/09;;; ।; ------------------------------------------------ -------------------------------#P16F627A. INC অন্তর্ভুক্ত; =============== ====================================================== ================; সংজ্ঞায়িত করে; ------------------------------------------------ -------------------------------; ================== ======================================================== ===========; ডেটা; ------------------------------------------------ -------------------------------; সময় রাখছে পরিবর্তনশীল ======================================================== =======; ভেক্টর রিসেট করুন;; কনফিগ চেক করুন। পোড়ানোর আগে বিট !!! INTOSC; MCLR: সক্ষম; PWRUP: সক্ষম; অন্যান্য সকল: অক্ষম !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 ISR_ADDR EQU 0x04 org RESET_ADDR শুরু হয়েছে; == ======================================================== ===============================; ISR;; ----------------------------------------------- -------------------------------- org ISR_ADDR movwf w_temp swapf STATUS, w movwf status_temp;; এখানে ISR; PB0-PB5 সুইচ btfsc PORTB, 0 চেক করুন; চেক SW1 কল sw1debounce btfsc PORTB, 1; SW1 কল sw2debounce btfsc PORTB, 2 চেক করুন; SW1 কল sw3debounce btfsc PORTB, 3 চেক করুন; SW1 কল sw4debounce btfsc PORTB, 4 চেক করুন; SW1 কল sw5debounce btfsc PORTB, 5 চেক করুন; SW1 কল sw6debounce goto endisrsw1debounce কল debounce চেক করুন; অপেক্ষা করুন 0.2 সেকেন্ড কল debounce incf dis1; কাউন্টার movf dis1, W আপডেট করুন; ওভারফ্লো xorlw 0x1A পরীক্ষা করুন; 7-সেগে 10? btfss স্ট্যাটাস, জেড রিটার্ন; না, স্ক্যানে ফিরে আসুন। movlw h'10 '; হ্যাঁ, ডিসপ্লে রিসেট করুন। movwf dis1 returnsw2debounce কল debounce; অপেক্ষা করুন 0.2 সেকেন্ড কল debounce incf dis2; আপডেট কাউন্টার movf dis2, W; ওভারফ্লো xorlw 0x4A পরীক্ষা করুন; 7-সেগে 10? btfss স্ট্যাটাস, জেড রিটার্ন; না, স্ক্যানে ফিরে আসুন। movlw h'40 '; হ্যাঁ, ডিসপ্লে রিসেট করুন। movwf dis2 returnsw3debounce কল debounce; অপেক্ষা করুন 0.2 সেকেন্ড কল debounce incf dis3; কাউন্টার movf dis3, W আপডেট করুন; ওভারফ্লো xorlw 0x5A এর জন্য পরীক্ষা করুন; 7-সেগে 10? btfss স্ট্যাটাস, জেড রিটার্ন; না, স্ক্যানে ফিরে আসুন। movlw h'50 '; হ্যাঁ, ডিসপ্লে রিসেট করুন। movwf dis3 returnsw4debounce কল debounce; অপেক্ষা করুন 0.2 সেকেন্ড কল debounce incf dis4; কাউন্টার movf dis4, W আপডেট করুন; ওভারফ্লো xorlw 0x8A পরীক্ষা করুন; 7-সেগে 10? btfss স্ট্যাটাস, জেড রিটার্ন; না, স্ক্যানে ফিরে আসুন। movlw h'80 '; হ্যাঁ, ডিসপ্লে রিসেট করুন। movwf dis4 returnsw5debounce কল debounce; অপেক্ষা করুন 0.2 সেকেন্ড কল debounce incf dis5; কাউন্টার movf dis5, W আপডেট করুন; ওভারফ্লো xorlw 0x9A পরীক্ষা করুন; 7-সেগে 10? btfss স্ট্যাটাস, জেড রিটার্ন; না, স্ক্যানে ফিরে আসুন। movlw h'90 '; হ্যাঁ, ডিসপ্লে রিসেট করুন। movwf dis5 returnsw6debounce কল debounce; অপেক্ষা করুন 0.2 সেকেন্ড কল debounce incf dis6; কাউন্টার movf dis6, W আপডেট করুন; ওভারফ্লো xorlw 0xCA পরীক্ষা করুন; 7-সেগে 10? btfss স্ট্যাটাস, জেড রিটার্ন; না, স্ক্যানে ফিরে আসুন। movlw h'C0 '; হ্যাঁ, ডিসপ্লে রিসেট করুন। movwf dis6 returnendisr bcf INTCON, T0IF swapf status_temp, w movwf STATUS swapf w_temp, f swapf w_temp, wretfie; ============================ ======================================================== =; এখান থেকে শুরু কর!;---------------------------------------------- --------------------------------- শুরু; কনফিগ I/O পোর্ট clrf PORTA movlw 0x07 movwf CMCON bcf STATUS, RP1 bsf STATUS, RP0 movlw h'00 '; RA আউটপুট, RA5 কোন আউটপুট movwf TRISA bcf STATUS, RP0 clrf PORTB bsf STATUS, RP0' RF0; RB ইনপুট movwf TRISB; অভ্যন্তরীণ টাইমার bsf PCON, 3 সেট করুন; 4Mhz সেট করুন movlw h'CF '; Tmr0 অভ্যন্তরীণ উৎস, prescale TMR0 1: 256 movwf OPTION_REG movlw h'A0 'movwf INTCON; TMR0 ইন্টারাপ্ট, bcf STATUS, RP0 সক্ষম করুন; নিবন্ধন clrf PORTA শুরু; সাফ পোর্ট A clrf PORTB; ক্লিয়ার পোর্টবি আউটপুট clrf count1 clrf count2 movlw h'10 'movwf dis1 movlw h'40' movwf dis2 movlw h'50 'movwf dis3 movlw h'80' movwf dis4 movlw h'90 'movwf dis5 movlw h'C0' movwf dis6 call বিদায়; 0.2 সেকেন্ড; পরীক্ষা LEDs, প্রদর্শন 8 ???; =========================================== =============================================== প্রধান; সুইচ, ডিবাউন্স এবং ইনক্রিমেন্ট ডিসপ্লে থেকে ইনপুট পায়। ডিসপ্লে 1-6 তারযুক্ত। আইসি নিষ্ক্রিয় করা হয়েছে … ডিসপ্লে 0 ডিসপ্লে বন্ধ করার জন্য নির্বাচন করা হয়েছে; -------------------------------------------------- --------------- প্রধান; Disp1 movf dis1, 0 movwf PORTA call ledon goto main; ======================================================== ========; নেতৃত্বে; LED পাওয়ার চালু করার সময় নির্ধারণ করা। 6 প্রদর্শন-> 1Khz = 166 চক্রে 1/6 ডিউটি চক্র; ----------------------------------- -------------------------------------------- ledon movlw.54 movwf count1ledloop decfsz count1, F goto ledloopreturn; ================================================= ==========================================; ডিবাউন্স সিগন্যাল; লোড এবং কল করার জন্য 4 চক্র, 2 চক্র ফেরত। 4Mhz Tc:: count2 = 255-> 0.2 sec; -------------------------------------- ----------------------------------------- debounce movlw.255; 1/5 সেকেন্ড ডিবাউন্সের জন্য বিলম্ব। movwf count2 কল pon_wait রিটার্ন; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 চক্র থেকে 0, + 3 চক্র ফিরতে।; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend3 CIRCUITI মূলত 74LS47 এবং CD4028 Enable লাইন থেকে প্রতিটি ডিসপ্লে ড্রাইভার লাইন থেকে 470Ohm রোধ ছিল। যাইহোক, আমি আমার সার্কিটের বর্তমান ড্র পরীক্ষা করে দেখেছি এটি শুধুমাত্র m 31mA টানছে। এবং যেহেতু ডিসপ্লের জন্য প্রকৃত ড্রাইভারটি সরাসরি 74LS47 থেকে এবং অন্য আইসি থেকে সক্ষম করা হয়, গড় এবং সর্বোচ্চ প্রয়োজনীয়তাগুলির দ্রুত চালান এবং সংশ্লিষ্ট ডেটশীটগুলি….. ! দেখা যাচ্ছে যে 4028 থেকে সরাসরি CA লাইন ড্রাইভ করার সময় সরাসরি সমস্ত সেগমেন্ট ড্রাইভ করা ঠিক আছে! …প্রকার, রকম.:) আমি আমার কোডে একটি ত্রুটি ছিল যা একটি বোতাম টিপলে আমার রেজিস্টারগুলি পরিষ্কার করেনি, যার ফলে শেষ প্রদর্শনটির একটি বোতাম টিপে 2 টি বিভাগ খুব উজ্জ্বলভাবে জ্বলছিল। এটা খারাপ ছিল। যাইহোক, রেজিস্টার সাফ করা এই সমস্যার সমাধান করেছে, এবং ক্রমাগত পাওয়ার চেকগুলি নিশ্চিত করে যে এটি প্রায় 30mA ড্র। এটি আমাকে দেওয়া উচিত (অনুরূপ সার্কিটগুলির সাথে পূর্ববর্তী অভিজ্ঞতার ভিত্তিতে) ক্ষেত্রে কিছু ঘটেছে, দীর্ঘমেয়াদী।

ধাপ 4: পিসিবি সোল্ডারিং

পিসিবি সোল্ডারিং
পিসিবি সোল্ডারিং

যখনই আমি আমার প্রকল্পে এই বিন্দুতে পৌঁছাই তখন আমি দেরি করি। প্রথমে আমি এই জিনিসটি মোড়ানোতে যাচ্ছিলাম, কিন্তু তাড়াতাড়ি সেই ধারণাটি বাদ দিয়েছিলাম। প্রথমে আমি মনে করি "সোল্ডারের জন্য কয়েকটি তার, কোন বড় ব্যাপার নয়" … তারপর, আমার প্রকল্পটি সোল্ডার করার জন্য প্রস্তুত হওয়ার সময় আমি ভাবছি, " আমার একটি প্রোটো বোর্ড তৈরি করার জন্য পাঠানো উচিত ছিল, অথবা আমার নিজের বোর্ড এটেক করা হয়েছিল। "আমি পিসিবি এচিংয়ের মধ্যে নেই (এখনো), এবং একটি বোর্ড তৈরি করার জন্য $ $ দিতে চাইনি, তাই …। হ্যাঁ ….. আমি এই জিনিস সোল্ডারিং প্রায় 3 ঘন্টা ব্যয়। এটি প্রায় 150 টি তার, তাই এটি 300 টি সোল্ডার পয়েন্ট, এবং সোল্ডার ব্রিজের জন্য টাচ-আপ যাই হোক না কেন, এখানে বোর্ডের পিছনের দিকটি চিত্রিত করা হয়েছে … । 20 মিনিট চিন্তাভাবনা করা হয়েছে যেহেতু ডিসপ্লেটি দেখিয়েছে যে ভুল #এর একটি যৌক্তিক প্যাটার্নে প্রদর্শিত হচ্ছে যা আমাকে বোঝাতে হবে। এর পরে, আমি সংক্ষিপ্ত, এবং বাম! এটি নিখুঁতভাবে কাজ করেছে।

ধাপ 5: উপসংহার

উপসংহার
উপসংহার

এটা কাজ করেছে! চার্লিপ্লেক্স 6 7-সেগমেন্ট এলইডি পাওয়ার ড্র প্রায় 30mA এ এই ডিজাইনের সাথে, যা আমি যদি নিজে বলি তবে খারাপ নয়। আমি সন্দেহ করি যে আরও 7-সেগমেন্ট LED ব্যবহার করা যেতে পারে, কিন্তু খামটি ধাক্কা দেয়নি। এই ধারণাটি হতে পারে 7 সেগমেন্ট এলইডি ব্যবহার করে প্রায় যেকোনো অ্যাপ্লিকেশনে প্রয়োগ করা হবে; থার্মোমিটার, ঘড়ি, টেক্সট ডিসপ্লে ইত্যাদি কিছু চতুর কোডের সাথে, আপনি একটি চলমান প্রদর্শন, বা ছবি থাকতে পারে … এমনকি একটি POV (দৃ of়তার দৃ project়তা) প্রকল্পের জন্য একটি ভিত্তি হতে পারে। এবং বোর্ডটি ভিতরে রাখুন, যেমন সে দেখতে পায়। যদি/যখন এটি সম্পন্ন হয়, আমি একটি ছবি আপলোড করব। কিন্তু সার্কিটের জন্য, এটি অর্ডার করার জন্য তৈরি বলে মনে হচ্ছে!

প্রস্তাবিত: