विषयसूची:

ब्लडबाउल टर्न काउंटर 7-सेगमेंट एल ई डी का उपयोग कर: 5 कदम
ब्लडबाउल टर्न काउंटर 7-सेगमेंट एल ई डी का उपयोग कर: 5 कदम

वीडियो: ब्लडबाउल टर्न काउंटर 7-सेगमेंट एल ई डी का उपयोग कर: 5 कदम

वीडियो: ब्लडबाउल टर्न काउंटर 7-सेगमेंट एल ई डी का उपयोग कर: 5 कदम
वीडियो: How to play Blood Bowl 2016 2024, जुलाई
Anonim
ब्लडबाउल टर्न काउंटर 7-सेगमेंट एलईडी का उपयोग कर रहा है
ब्लडबाउल टर्न काउंटर 7-सेगमेंट एलईडी का उपयोग कर रहा है

यह प्रोजेक्ट छह चार्लीप्लेक्स वाले 7-सेगमेंट एलईडी का उपयोग करके ब्लडबॉवल गेम टर्न काउंटर के लिए था।

चरण 1: अवधारणा

संकल्पना
संकल्पना

मेरे एक मित्र ने मुझसे उसके बोर्डगेम के लिए ब्लडबोवल टर्न काउंटर बनाने के लिए विचारों के बारे में पूछा। यह नहीं पता था कि यह क्या था, और वह क्या चाहता था, यह तय करने में कुछ समय लगा कि मैं इसे कैसे और कैसे करने जा रहा हूं। मुझे पहले यह पता होना चाहिए कि वह क्या चाहता है, इसलिए मैंने अवधारणा कला (चित्र) के साथ शुरुआत की। मूल विचार यह है कि 3 पुश बटन हों, प्रत्येक में 3 एलईडी को नियंत्रित किया जाए और इसे एक कस्टम निर्मित टॉवर के अंदर रखा जाएगा। एकमात्र बड़ा अनुरोध यह था कि शीर्ष 4 डिस्प्ले को 0 से 8 तक गिना जाए और रीसेट किया जाए, और निचला 2 हो डिस्प्ले ८ से ० तक काउंट डाउन करके साइकल बैक करता है। मैं सर्किट पूरा करूँगा, और वह टावर को पूरा करेगा।

चरण 2: डिजाइन और भागों की सूची

डिजाइन और भागों की सूची
डिजाइन और भागों की सूची

चूंकि अवधारणा 6 7-सेगमेंट एलईडी के लिए बुलाई गई थी, और मेरे पास कुछ 8-बिट माइक्रोचिप पीआईसी आसान थे, मैंने एलईडी को नियंत्रित करने के लिए पीआईसी का उपयोग करने के तरीकों की खोज की। मुझे यह लिंक https://www.mikroe.com/en/books मिला /picbook/7_08chapter.htm जो बताता है कि "इस तरह से 6 डिस्प्ले तक पहुँचा जा सकता है बिना प्रत्येक डिस्प्ले की चमक प्रभावित हुए।" मैंने इसे अपने प्रोजेक्ट के हिस्से के रूप में एक चुनौती और जांच के लिए कुछ माना। मैंने जो पहली चीज की, वह मेरे बॉक्स से कुछ गरमागरम 7-सेगमेंट डिस्प्ले ले ली और देखें कि वे कैसे काम करेंगे। बुरी खबर। मेरे द्वारा चुने गए विशेष भाग वैसा व्यवहार नहीं कर रहे थे जैसा मैं चाहता था। ब्रेडबोर्ड पर जरूरत पड़ने पर खंड प्रकाश करेगा, लेकिन रिसाव चालू अन्य 6 खंडों में वितरित किया गया था। मुझे एहसास हुआ कि गरमागरम प्रदर्शन जाने का रास्ता नहीं हो सकता है, या मुझे उन्हें अलग तरीके से उपयोग करने की आवश्यकता है। इसलिए सादगी के लिए मैंने सत्यापित किया कि मेरे हाथ में मौजूद 7-सेगमेंट एलईडी ब्रेडबोर्डिंग के लिए काम करेंगे, और कुछ सामान्य एनोड डिस्प्ले का आदेश दिया। दूसरी चीज जो मुझे करने की ज़रूरत थी वह थी मेरा डिज़ाइन लेआउट और कोड पर काम शुरू करना। चित्र मेरा सर्किट है। इसके लिए ज्यादा नहीं, क्योंकि पीआईसी में कोड मल्टीप्लेक्सिंग का ख्याल रखता है … चार्लीप्लेक्सिंग को गलत करें। नोट: सभी 6 डिस्प्ले में ड्राइवर IC से समान लाइनें हैं। चयनकर्ता IC प्रत्येक डिस्प्ले को एक बार में 1 सक्षम करता है, और 7-खंड लाइनों को तदनुसार PIC द्वारा अपडेट किया जाता है। बहुत ही सरल विचार। उसके बाद, कोड और हार्डवेयर पूर्णता वह सब कुछ है जिसकी आवश्यकता थी। भागों की सूची विशिष्ट घटकों पर निर्णय लेने के दौरान डिजी-की से 3 छोटे आदेशों के बाद, मेरे पास वह सब कुछ था जो मुझे चाहिए था (हाथ में कुछ सामान के साथ);1 ~3"x4 "PCB6 छोटे पुश बटन स्विच (NO)1 74LS47, 7-सेगमेंट डिस्प्ले IC1 PIC16F627 1 CD4028, 10 में से 1 चयनकर्ता IC 6 10KOhm रेसिस्टर्स1 470Ohm रेसिस्टर1 वायर का स्पूल। मैंने विभिन्न रंगों और गेजों का इस्तेमाल किया, लेकिन वह सिर्फ मैं था। १ ७८एल०५ ५वी रेगुलेटर१ ९वी बैटरी क्लिप१ ९वी बैटरी१ छोटा स्विच (पावर ऑन/ऑफ के लिए) ब्रेडबोर्डिंग 3) डिज़ाइन अनुकूलन। इनमें से कोई भी समस्या अपने आप में अत्यधिक जटिल नहीं है, लेकिन बिना किसी अनुभव के उन सभी को लेना शुरुआत के लिए थोड़ा अधिक हो सकता है। डिवाइस, सोल्डरिंग स्टेशन, आदि को जलाने के लिए एक हार्डवेयर प्रोग्रामर की आवश्यकता होती है … पहली बार किसी ने नोटिस किया होगा कि 7-सेगमेंट एलईडी में श्रृंखला (वर्तमान सीमित) प्रतिरोधक नहीं होते हैं! मुझे इसे जल्दी से संबोधित करने दें, यह बताकर कि मेरे मूल डिजाइन में वे थे … लेकिन स्पष्टीकरण के लिए अगला चरण पढ़ें!

चरण 3: ब्रेडबोर्डिंग और माइक्रो कोड

ब्रेडबोर्डिंग और माइक्रो कोड
ब्रेडबोर्डिंग और माइक्रो कोड

इसके लिए ब्रेडबोर्ड जरूरी था। दिखाया गया मेरा सामान्य ब्रेडबोर्ड है, लेकिन इस परियोजना के आकार के लिए मैंने वास्तव में इस एक और एक छोटे ब्रेडबोर्ड का उपयोग किया, क्योंकि कई तार थे जिन्हें बाहर निकालने की आवश्यकता थी। सबसे पहले, मैंने प्रारंभिक कोड द्वारा एक एकल 7-खंड एलईडी का परीक्षण किया। इसने 3 चीजों की पुष्टि की; 1) आईसी की वायरिंग अच्छी तरह से सत्यापित थी! 2) मुझे मेरे कोड को अनुकूलित करने और अंतिम रूप देने के लिए प्रेरित किया। 3) मुझे एहसास हुआ कि मुझे वर्तमान सीमित प्रतिरोधों की आवश्यकता नहीं है! 1 WIRINGAs ने कहा, मेरा योजनाबद्ध डिजाइन मिला था मेरे कोड के साथ काम करने के लिए, क्योंकि एलईडी एक पुश-बटन स्विच का उपयोग करके संख्याओं के माध्यम से साइकिल चलाएगा, जिससे मेरे कोड और लेआउट को सत्यापित किया जा सके। बहुत अधिक आवश्यकता नहीं थी लेकिन ब्रेडबोर्डिंग ने पुष्टि की कि मैं अच्छे आकार में था। 2 कोडई में मूल रूप से बटन के लिए स्कैन करने के लिए एक मुख्य दिनचर्या के साथ मेरा कोड सेट था और आईएसआर (इंटरप्ट सर्विस रूटीन) संख्याओं को प्रदर्शित करता है। ब्रेडबोर्डिंग परीक्षणों के बाद, मैंने रूटीन को उलट दिया, इसलिए अधिकांश समय बटनों की जांच के लिए लगातार नंबर और ISR प्रदर्शित कर रहा था। मैंने ऐसा करने का कारण सिर्फ एक निरंतर प्रदर्शन करना था, क्योंकि PIC एक आंतरिक 4Mhz घड़ी के साथ चल रहा है, मैं बटन के लिए बहुत कम समय स्कैन कर रहा हूं। कोई बड़ी बात नहीं…बस इस बात पर निर्भर करता है कि आप कोड कैसे करना चाहते हैं और प्रत्येक एप्लिकेशन के लिए सबसे ज्यादा क्या मायने रखता है। इसके लिए, डिस्प्ले महत्वपूर्ण है, इसलिए मैंने इसे मुख्य रूटीन में रखा। जब मेरे पहले भाग आए (सभी 6 डिस्प्ले!), मैंने ब्रेडबोर्ड वायरिंग को पूरा किया और एक और मुद्दा पाया। बटन दबाते समय मेरे कोड में कुछ टेढ़े-मेढ़े रजिस्टर थे जिन्हें साफ़ नहीं किया जा रहा था और ISR कुछ मामूली प्रदर्शन गड़बड़ियाँ पैदा कर रहा था।;===================== ============================================ =====; काउंटर चालू करें;; -----------;Dsply3 Dsply2;Dsply4 Dsply1;Led1 LED3; ए5 |4 15| A6 -- LED2; वीएसएस |5 14| वीडीडी;बटन1 बी0 |6 13| बी7; बी1 |7 12| बी6; बी२ |८ ११| बी5; बी3 |9 10| बी 4; -----------;; LED1-3 - BCD-dec IC -LEDSeg's1-6; Dsply1-3 - BCD-7seg IC -Dsply#1-9;;============================ =========================================; संशोधन इतिहास और नोट्स:; V1.0 प्रारंभिक शीर्षलेख, कोड 3/30/09;;;(सी) 5/2009; इस कोड का उपयोग व्यक्तिगत सीखने/अनुप्रयोग/संशोधन के लिए किया जा सकता है। वाणिज्यिक उत्पादों में इस कोड का कोई भी उपयोग इस फ्रीवेयर रिलीज का उल्लंघन करता है। प्रश्नों/टिप्पणियों के लिए, याहू डॉट कॉम पर सर्किट डॉट मैज से संपर्क करें।.;-------------------------------------------------------- -----------------------------#P16F627A. INC शामिल करें;============ ============================================ =================; परिभाषित करता है;------------------------------------------------ -----------------------------;================== ============================================ ============; आंकड़े;------------------------------------------------ -----------------------------; टाइम कीपिंग वेरिएबल्सकाउंट1 इक्व 20 काउंट2 इक्व 21 डिस1 इक्व 22डिस2 इक्व 23डिस3 इक्व 24डिस4 इक्व 25डिस5 इक्व 26डिस6 इक्व 27w_टेम्प इक्व 28स्टेटस_टेम्प इक्व 29आईएसआरसीएनटीआर इक्व 2ए;===================== ============================================ =======; रीसेट वेक्टर;; कॉन्फ़िगरेशन जांचें। जलने से पहले के टुकड़े !!!; आईएनटीओएससी; एमसीएलआर: सक्षम; PWRUP: सक्षम; अन्य सभी: अक्षम !!;;------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 ISR_ADDR EQU 0x04 संगठन RESET_ADDR गोटो प्रारंभ;== ============================================ ==========================; आईएसआर;;-------------------------------------------------------- --------------------------------- संगठन ISR_ADDR movwf w_temp स्वैप स्थिति, w movwf status_temp;; यहां आईएसआर; 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 गोटो endisrsw1debounce कॉल debounce; ०.२ सेकंड प्रतीक्षा करें कॉल debounce incf dis1; अद्यतन काउंटर movf dis1, W; अतिप्रवाह के लिए जाँच करें xorlw 0x1A; 7-सेग पर 10? बीटीएफएस स्थिति, जेड वापसी; नहीं, स्कैन पर लौटें। movlw एच'10'; हां, डिस्प्ले रीसेट करें। movwf dis1 रिटर्नw2debounce कॉल debounce; ०.२ सेकंड प्रतीक्षा करें कॉल debounce incf dis2; अद्यतन काउंटर movf dis2, W; अतिप्रवाह के लिए जाँच करें xorlw 0x4A; 7-सेग पर 10? बीटीएफएस स्थिति, जेड वापसी; नहीं, स्कैन पर लौटें। movlw h'40'; हां, डिस्प्ले रीसेट करें। movwf dis2 रिटर्नw3debounce कॉल debounce; ०.२ सेकंड प्रतीक्षा करें कॉल debounce incf dis3; अद्यतन काउंटर movf dis3, W; अतिप्रवाह के लिए जाँच करें xorlw 0x5A; 7-सेग पर 10? बीटीएफएस स्थिति, जेड वापसी; नहीं, स्कैन पर लौटें। movlw h'50'; हां, डिस्प्ले रीसेट करें। movwf dis3 रिटर्नw4debounce कॉल debounce; ०.२ सेकंड प्रतीक्षा करें कॉल debounce incf dis4; अद्यतन काउंटर movf dis4, W; अतिप्रवाह के लिए जाँच करें xorlw 0x8A; 7-सेग पर 10? बीटीएफएस स्थिति, जेड वापसी; नहीं, स्कैन पर लौटें। movlw h'80'; हां, डिस्प्ले रीसेट करें। movwf dis4 रिटर्नw5debounce कॉल debounce; ०.२ सेकंड प्रतीक्षा करें कॉल debounce incf dis5; अद्यतन काउंटर movf dis5, W; अतिप्रवाह के लिए जाँच करें xorlw 0x9A; 7-सेग पर 10? बीटीएफएस स्थिति, जेड वापसी; नहीं, स्कैन पर लौटें। movlw h'90'; हां, डिस्प्ले रीसेट करें। movwf dis5 रिटर्नw6debounce कॉल debounce; ०.२ सेकंड प्रतीक्षा करें कॉल डिबॉन्स incf dis6; अद्यतन काउंटर movf dis6, W; अतिप्रवाह के लिए जाँच करें xorlw 0xCA; 7-सेग पर 10? बीटीएफएस स्थिति, जेड वापसी; नहीं, स्कैन पर लौटें। movlw h'C0'; हां, डिस्प्ले रीसेट करें। movwf dis6 रिटर्नएंडिसर 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, FF' RP0 clrf PORTB RP0 MOVL STATUS; आरबी इनपुट्स movwf TRISB; आंतरिक टाइमर bsf PCON, 3 सेट करें; 4 मेगाहर्ट्ज पर सेट करें। movlw एच'सीएफ'; Tmr0 आंतरिक स्रोत, प्रीस्केल TMR0 1:256 movwf OPTION_REG movlw h'A0' movwf INTCON; TMR0 इंटरप्ट सक्षम करें, bcf STATUS, RP0; इनिशियलाइज़ रजिस्टर्स clrf PORTA; क्लियर पोर्टा क्लर्फ 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'C6 कॉल वाद-विवाद; 0.2 सेकंड; परीक्षण एल ई डी, प्रदर्शन 8 ???;================================= ======================================; मुख्य; स्विच, डिबॉन्स और इंक्रिमेंट डिस्प्ले से इनपुट प्राप्त करता है।; यह डिस्प्ले को अपडेट करता है, @4Mhz TMR0 प्रीस्कल 1:4 के साथ 1Khz की दर पर। डिस्प्ले 0 का उपयोग अप्रयुक्त डिस्प्ले को आवंटित करने के लिए किया जाता है। डिस्प्ले 1-6 वायर्ड हैं। पहला, BCD-7Seg IC को डिस्प्ले वैल्यू के साथ लोड किया गया है, और BCD-Dec IC को डिस्प्ले सिलेक्शन के लिए सक्रिय किया गया है। IC निष्क्रिय है…डिस्प्ले0 को डिस्प्ले बंद करने के लिए चुना गया है;;यह 6 डिस्प्ले में से प्रत्येक के लिए दोहराया जाता है, और लूप किया जाता है।;ISR 15Hz दर पर स्विच सेंसिंग को हैंडल करता है।;-------------- -------------------------------------------------- --------------- मुख्य; Disp1 movf dis1, 0 movwf PORTA कॉल लेडॉन गोटो मेन;=================== ============================================ =========; नेतृत्व; एलईडी बिजली के लिए समय निर्धारित करना.; ६ डिस्प्ले -> १/६ कर्तव्य चक्र १ किलोहर्ट्ज़ = १६६ चक्र; ------------------------------------------- लेडॉन movlw.54 movwf count1ledloop decfsz गिनती 1, एफ गोटो लेडलूपरिटर्न; ==================================== ==================================; बहस संकेत; लोड करने और कॉल करने के लिए 4 चक्र, वापस जाने के लिए 2 चक्र; ४ मेगाहर्ट्ज टीसी:: काउंट २=२५५ -> ०.२ सेकंड; --------------------------------------- -----------------------------------------नाराज movlw.255; 1/5 सेकंड की देरी के लिए। movwf count2 कॉल pon_wait वापसी;------------------------------------------ -----------------------------------; गिनती १=२५५डी:: ७७५ चक्र से ० तक, + ३ चक्र लौटने के लिए.;--------------------------------- ------------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend3 CIRCUITI में मूल रूप से 74LS47 और CD4028 सक्षम लाइन से प्रत्येक डिस्प्ले ड्राइवर लाइन से 470Ohm रेसिस्टर्स थे। हालाँकि, मैंने अपने सर्किट के वर्तमान ड्रॉ का परीक्षण किया और पाया कि यह केवल ~ 31mA खींच रहा था। और चूंकि डिस्प्ले के लिए वास्तविक ड्राइवर सीधे 74LS47 से है और सक्षम एक अन्य IC से है, औसत और शिखर आवश्यकताओं का एक त्वरित रन डाउन, और संबंधित डेटाशीट….. मैंने प्रतिरोधों को ब्रेडबोर्ड से खींच लिया और 1mA अंतर पाया ! ऐसा प्रतीत होता है कि सभी खंडों को सीधे चलाते हुए सीधे 4028 से CA लाइन चलाना ठीक है! …की तरह।:) मेरे कोड में एक गड़बड़ है जो एक बटन दबाए जाने पर मेरे रजिस्टरों को साफ़ नहीं करता था, जिससे आखिरी डिस्प्ले में बटन दबाए जाने पर 2 सेगमेंट बहुत उज्ज्वल रूप से प्रकाशित होते थे। यह बुरा था। हालाँकि, रजिस्टर को साफ़ करने से यह समस्या ठीक हो गई, और निरंतर बिजली जाँच से पुष्टि होती है कि यह लगभग 30mA ड्रॉ है। यह मुझे (समान सर्किट के साथ पिछले अनुभव के आधार पर) ~ 1 9वी बैटरी (5V विनियमन के तहत 500mAH/30mAH) का उपयोग करके रन टाइम के 20 घंटे देना चाहिए … मुझे आशा है! मैंने एलईडी को सीधे संचालित रखने का फैसला किया, लेकिन उन्हें सॉकेट में डाल दिया मामला कुछ हुआ, लंबी अवधि।

चरण 4: पीसीबी सोल्डरिंग

पीसीबी सोल्डरिंग
पीसीबी सोल्डरिंग

हर बार जब मैं अपने प्रोजेक्ट में इस मुकाम पर पहुंचता हूं तो मुझे थोड़ी देर हो जाती है। पहले तो मैं इस चीज़ को वायर रैप करने जा रहा था, लेकिन जल्दी से उस विचार को छोड़ दिया। पहले तो मुझे लगता है कि "सोल्डर के लिए कुछ तार, कोई बड़ी बात नहीं" … मुझे या तो एक प्रोटो बोर्ड बनवाने के लिए बाहर भेज देना चाहिए था, या अपना खुद का बोर्ड खोदना चाहिए था।मैं पीसीबी नक़्क़ाशी (अभी तक) में नहीं हूँ, और बोर्ड बनाने के लिए $$ का भुगतान नहीं करना चाहता था, इसलिए….हाँ…..मैंने इस चीज़ को टांका लगाने में लगभग 3 घंटे बिताए। यह लगभग १५० तार हैं, इसलिए यह ३०० सोल्डर पॉइंट हैं, साथ ही सोल्डर ब्रिज के लिए टच-अप। वैसे भी, यहाँ बोर्ड का पिछला भाग चित्रित है…।. 20 मिनट का समय लगा क्योंकि डिस्प्ले में गलत # को तार्किक पैटर्न में प्रदर्शित किया जा रहा था जिसे मुझे समझना था। उसके बाद, मैंने शॉर्ट, और बैम का पता लगाया! यह पूरी तरह से काम किया।

चरण 5: निष्कर्ष

निष्कर्ष
निष्कर्ष

यह काम किया! इस परियोजना के बारे में सोचने के लिए ~ 2 सप्ताह लग गए और अनुरोधकर्ता को ठीक अंक ईमेल किए गए, ~ 3 घंटे कोड पूरा होने और डीबग करने के लिए, ~ 4 घंटे ब्रेडबोर्डिंग और डीबग, ~ 3 घंटे सोल्डरिंग केवल 3 आईसी का उपयोग करना संभव है चार्लीप्लेक्स 6 7-सेगमेंट एलईडी। इस डिज़ाइन के साथ पावर ड्रॉ लगभग 30mA पर है, जो बुरा नहीं है अगर मैं खुद ऐसा कहूं। मुझे संदेह है कि अधिक 7-सेगमेंट एलईडी का उपयोग किया जा सकता है, लेकिन लिफाफे को धक्का नहीं दिया है। यह विचार हो सकता है 7-सेगमेंट एलईडी का उपयोग करके लगभग किसी भी एप्लिकेशन पर लागू किया जा सकता है; थर्मामीटर, घड़ी, टेक्स्ट डिस्प्ले इत्यादि। कुछ मुश्किल कोड के साथ, आपके पास एक चलती डिस्प्ले, या चित्र हो सकता है … शायद एक पीओवी (दृष्टि की दृढ़ता) परियोजना के लिए आधार भी। अंतिम कार्यान्वयन मेरे दोस्त के लिए अपना टॉवर बनाने के लिए छोड़ दिया गया है और बोर्ड को अंदर रखें, जैसा कि वह देखता है कि वह फिट है। अगर/जब ऐसा किया जाता है, तो मैं एक तस्वीर अपलोड कर दूंगा। लेकिन सर्किट के लिए, यह ऑर्डर करने के लिए बनाया गया प्रतीत होता है!

सिफारिश की: