Сандық техниканы және басқару микробақылауыштарын программалау. АУТк-18-4 Орынбасаров А. 2 РГР ПЦТИМУ. Программалау Таырыбы Клавиатура кмегімен 7 сегментті дисплейді басару Мамандыы 5В070200 Автоматтандыру жне басару
Скачать 353.17 Kb.
|
Коммерциялық емес акционерлік қоғам «Ғұмарбек Дәукеев атындағы АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС УНИВЕРСИТЕТІ» Автоматтандыру және басқару кафедрасы № 2 есептеу-графикалық жұмыс Пәні: «Сандық техниканы және басқару микробақылауыштарын программалау» Тақырыбы: «Клавиатура көмегімен 7 сегментті дисплейді басқару» Мамандығы: 5В070200 – «Автоматтандыру және басқару» Орындаған: Орынбасаров Алмат Тобы: АУ(АУТ)к 18-4 Нұсқа: № 18 Тексерген: аға оқытушы Ибрашева А. Т. ______________ ______________ «___» _______________ 2021 ж. (бағасы) (қолы) Алматы, 2021 жыл. № 2 есептеу-графикалық жұмыс. Клавиатура көмегімен 7 сегментті дисплейді басқару Жұмыс мақсаты: Тапсырмаға сәйкес берілген үш немесе төрт таңбалы санды цифрларының батырмалары арқылы 7 сегментті индикаторға шығару.
1. Жұмыс бойынша теориялық ақпарат Көптеген цифрлық индикаторлар қажетті сегменттерді таңдап қосу принципімен жұмыс істейді (1 суретті қараңыздар). Мәліметті беретін порттың разрядтары санмен белгіленген. Әдетте бұл сегменттер жарықдиодтары немесе сұйық кристалдан жасалған элементтердің электродтары болады. 1 сурет – Жеті сегментті индикатор Ішкі программаның жүйелік көрінісі 1, а суретінде келтірілген. Кіріс сигнал мұнда W жұмысшы регистрде орналасқан 4-битті екілік код. Ал осы W жұмысшы регистрге қайтатын шығыс мән сәйкес 7-битті код, ол қажетті сәйкес битті көрсетеді (Vyb_Seg ішкі программасы). PIC микробақылауыштарының гарвард архитектурасы программа жадысының мәндерін мәліметтер ретінде қолдануға мүмкіндік бермейді. Оның орнына түрлендіру кестесі retlw командаларының жиыны ретінде іске асырылады, олардың әрбіреуі бір байтты константаны береді. Жетінші бит нүкте үшін қолданылады. Клавиатура программаларда мәліметтерді енгізу, есептеу алгоритмін өзгерту нұсқауларын беру үшін және т.б. қолданылады. Зертханалық жұмыста PORTD-ға ’1’ сигналын беру арқылы клавиатураға қорек кернеуін береміз, қосымша қорек көзі қажет емес. Пленкалы клавиатураны МБ-қа қосу сұлбасы 2 суретте көрсетілген. RD7, RD6, RD5, RD4 разрядтары ‘1’ сигналын беруге арналған, қалғандары сигнал қабылдау үшін. Келген сигналды микропроцессор программаға сәйкес өңдейді, программа орындалуы сәйкесінше өзгереді. 6.1-суретте «1» цифрлы кнопканың PORTD-ға қосылуы көрсетілген. «1» кнопкасының бір клеммасы RD7 аяқшасына, ал екіншісі RD3 аяқшасына жалғанған. RD7 битін шығысқа, ал RD3 битін кіріске программалау керек.Кнопка басылған кезде RD7 битінен шыққан сигнал «1» кнопкасы арқылы RD3 кірісіне өтеді. 2 сурет – Клавиатураны қосу сұлбасы және кнопкалар қызметі 2. Есептік-графикалық жұмыстың тапсырмасы және берілгені 4x4 матрица түріндегі клавиатура көмегімен өзімізге керекті үш таңбалы санды 7 сегментті дисплейге шығару керек. «854» санын клавиатураның 8, 5, 4 батырмаларын басу арқылы аталған санды индикаторға шығаратын программа кодын құрамыз. Жүздік, ондық және бірлік разрядтағы цифрлерді әр түрлі адрестерге жазып, сәйкес батырмалардың басылуын BTFSS командасы арқылы тексеру жасаймыз. Батырма басылған соң, VYBOR_SEG ішкі программасы орындалады. Ішкі программада PCL регистрі қосылады. Ол регистр келесі орындалатын жолды нұсқап отырады. Сол регистрдің үстіне разрядтағы сандарды қосу арқылы цифрлердің 7 сегментті дисплейдегі түрі алынады. Аталған ақпаратты PORTB регистріне көшіреді. Осыдан кейін, PORTC регистрінің 0-ші, 1-ші, 2-ші аяқшалары қосылып, үш таңбалы сан шығады. Л2 программасы: FORONESECONE EQU h'21' FORONESECTWO EQU h'22' CLRF STATUS BSF STATUS, RP0 CLRF PORTE CLRF TRISC CLRF TRISB MOVLW b'00001111' MOVWF ADCON1 CLRF TRISA BCF STATUS, RP0 CLRF PORTC CLRF PORTB CLRF PORTA CLRF PORTE ONE BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'00010000' MOVWF PORTD BTFSS PORTD, 0 GOTO TWO CLRF PORTC MOVLW d'1' CALL VYBOR_SEG CALL RESH TWO BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'00100000' MOVWF PORTD BTFSS PORTD, 0 GOTO THREE CLRF PORTC MOVLW d'2' CALL VYBOR_SEG CALL RESH THREE BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'01000000' MOVWF PORTD BTFSS PORTD, 0 GOTO FOUR CLRF PORTC MOVLW d'3' CALL VYBOR_SEG CALL RESH FOUR BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'10000000' MOVWF PORTD BTFSS PORTD, 0 GOTO FIVE CLRF PORTC MOVLW d'4' CALL VYBOR_SEG CALL RESH FIVE BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'00010000' MOVWF PORTD BTFSS PORTD, 1 GOTO SIX CLRF PORTC MOVLW d'5' CALL VYBOR_SEG CALL RESH SIX BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'00100000' MOVWF PORTD BTFSS PORTD, 1 GOTO SEVEN CLRF PORTC MOVLW d'6' CALL VYBOR_SEG CALL RESH SEVEN BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'01000000' MOVWF PORTD BTFSS PORTD, 1 GOTO EIGHT CLRF PORTC MOVLW d'7' CALL VYBOR_SEG CALL RESH EIGHT BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'10000000' MOVWF PORTD BTFSS PORTD, 1 GOTO NINE CLRF PORTC MOVLW d'8' CALL VYBOR_SEG CALL RESH NINE BSF STATUS, 5 MOVLW B'00001111' MOVWF TRISD BCF STATUS, 5 MOVLW B'00010000' MOVWF PORTD BTFSS PORTD, 2 GOTO ONE CLRF PORTC MOVLW d'9' CALL VYBOR_SEG CALL RESH GOTO ONE RESH BTFSC PORTA, 1 GOTO br BTFSS PORTC, 0 BTFSC PORTC, 0 GOTO br BSF PORTC, 0 BSF PORTA, 1 MOVWF PORTB BTFSS PORTC, 0 BTFSC PORTC, 0 GOTO ONESEC br BTFSC PORTA, 4 GOTO ek BTFSS PORTC, 1 BTFSC PORTC, 1 GOTO ek BSF PORTC, 1 BSF PORTA, 4 MOVWF PORTB BTFSS PORTC, 1 BTFSC PORTC, 1 GOTO ONESEC ek BTFSC PORTA, 5 GOTO ush BTFSS PORTC, 2 BTFSC PORTC, 2 GOTO ush BSF PORTC, 2 BSF PORTA, 5 MOVWF PORTB BTFSS PORTC, 2 BTFSC PORTC, 2 GOTO ONESEC ush BTFSS PORTC, 3 BTFSC PORTC, 3 GOTO ush BSF PORTC, 3 MOVWF PORTB BTFSS PORTC, 3 BTFSC PORTC, 3 GOTO ONESEC RETURN ONESEC MOVLW D'2'; MOVWF FORONESECONE MTWO MOVLW D'15'; MOVWF FORONESECTWO MTHREE DECF FORONESECTWO, F BTFSS STATUS, Z GOTO MTHREE DECF FORONESECONE, F BTFSS STATUS, Z GOTO MTWO RETURN VYBOR_SEG ADDWF PCL, f RETLW b'00111111' RETLW b'00000110' RETLW b'01011011' RETLW b'01001111' RETLW b'01100110' RETLW b'01101101' RETLW b'01111101' RETLW b'00000111' RETLW b'01111111' RETLW b'01101111' END 3 сурет – PIC Simulator IDE ортасында программаның орындалуы 3 суретте басылғаннан батырмаға сәйкес шығатын санның 7 сегментті дисплейдегі түрі көрсетілген. Қорытынды № 2 есептік-графикалық жұмыстың тапсырмасы бойынша «1578» санын 4x4 матрица түріндегі клавиатураның аталған санға сәйкес батырмаларын басу арқылы 7 сегментті индикаторға шығардық. Жүздік, ондық және бірлік разрядтағы цифрлерді әр түрлі адрестерге жазып, сәйкес батырмалардың басылуын BTFSS командасы арқылы тексеру жасадық. Батырма басылған соң, VYBOR_SEG ішкі программасы орындалды. Ішкі программада PCL регистрі қосылды. Сол регистрдің үстіне разрядтағы сандарды қосу арқылы цифрлердің 7 сегментті дисплейдегі түрін алдық. Осыдан кейін, PORTC регистрінің 0-ші, 1-ші, 2-ші, 3-ші аяқшалары қосылып, төрт таңбалы сан шықты. Сонымен қатар, Enter және Clear батырмаларын пайдаланып, 7 сегментті дисплейді басқардық. Clear батырмасы көмегімен 7 сегментті дисплейге 0 орнаттық. Пайдаланылған әдебиеттер тізімі 1. Заец Н.И. Радиолюбительские конструкции на PIC. – М.: Солон, 2003. 2. Катцен С. PIC микроконтроллеры. Все, что необходимо вам знать. – М.: Додека, 2008. 3. Копесбаева А. А. Басқару жүйелеріндегі микропроцессорлық кешендер. Оқулық. – Алматы: АЭжБИ, 2010. 4. Кохц Дитер. Измерение, управление с помощью PIC-контроллеров. – Киев. Наукова думка. 2007. 5. Погребинский М. П. Микропроцессорные системы управления электротехническими установками. – М.: МЭИ, 2003. 6. Тарасов В. М. Программирование цифровой техники и микроконтроллеров управления. Конспект лекций для студентов всех форм обучения специальности 5В070200- «Автоматизация и управление» – Алматы: АУЭС, 2012. 7. Яценков В. С. Микроконтроллеры Microchip. Практическое руководство. – 2-е изд. исп. и допол. – М.: Горячая линия – Телеком, 2005. |