Устройство контроля за уровнем аналоговых сигналов
p align="left"> 00249 LIST 00003 00000020 00004 TMP EQU 20H 00000021 00005 K1 EQU 21H 00000022 00006 K2 EQU 22H 00007 00000023 00008 SOTNI EQU 23H 00000024 00009 DESYATKI EQU 24H 00000025 00010 EDINICI EQU 25H 00011 00000028 00012 SAVEW EQU 28H 00000030 00013 SAVEW2 EQU 30H 00000029 00014 SAVESTATUS EQU 29H 00000031 00015 SAVESTATUS2 EQU 31H 00016 00000026 00017 SV EQU 26H ; STACK VERTEX 00000027 00018 SP EQU 27H ; STACK POINTER 00019 00020 00000032 00021 DINAMIK EQU 32H 00022 00000033 00023 CT EQU 33H ; FOR DELAY 00024 00025 ;STK 40h-5Eh ; STACK ADDRES FOR TEN BCD TRIADS 00026 Warning[205]: Found directive in column 1. (ORG) 0000 00027 ORG 0x00 ; processor reset vector 0000 28B5 00028 GOTO Start ; go to beginning of program 00029 00030 00031 ; -------------IRQ Warning[205]: Found directive in column 1. (ORG) 0004 00032 ORG 0x04 ; обработка прерывания осуществляется за 9 циклов (4,5 мкс) 0004 1C0C 00033 BTFSS PIR1, TMR1IF ; анализ 0005 2818 00034 goto IRQTMR2 ; источника прерывания 00035 0006 00036 IRQTMR1 ; обработчик прерывания от таймера 00037 ;------ PUSH REGISTERS--------- 0006 00A8 00038 MOVWF SAVEW 0007 0803 00039 MOVF STATUS,W 0008 00A9 00040 MOVWF SAVESTATUS 0009 0804 00041 MOVF FSR,W 000A 00A6 00042 MOVWF SV 00043 ;------------------------------ 000B 1010 00044 BCF T1CON,TMR1ON ; TIMER STPR 000C 3038 00045 MOVLW B'00111000' 000D 008E 00046 MOVWF TMR1L 000E 30A7 00047 MOVLW B'10100111' 000F 008F 00048 MOVWF TMR1H MPASM 02.50.02 Intermediate KURSOV.ASM 4-20-2006 9:09:06 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0010 1410 00049 BSF T1CON,TMR1ON ; TIMER ON 0011 100C 00050 BCF PIR1, TMR1IF ; сброс флага переполнения от таймера 0012 2116 00051 CALL INDICATION 00052 00053 ;------ POP REGISTERS --------- 0013 0826 00054 MOVF SV,W 0014 0084 00055 MOVWF FSR 0015 0829 00056 MOVF SAVESTATUS,W 0016 0083 00057 MOVWF STATUS 0017 0828 00058 MOVF SAVEW,W 00059 ;------------------------------ --------------------------------- --------------------------------- Файл KURSOV.err: Warning[205] D:\MPLAB\KURSOV.ASM 27 : Found directive in column 1. (ORG) Warning[205] D:\MPLAB\KURSOV.ASM 32 : Found directive in column 1. (ORG) Warning[203] D:\MPLAB\KURSOV.ASM 83 : Found opcode in column 1. (retfie) Warning[205] D:\MPLAB\KURSOV.ASM 86 : Found directive in column 1. (ORG) Message[302] D:\MPLAB\KURSOV.ASM 107 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] D:\MPLAB\KURSOV.ASM 109 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] D:\MPLAB\KURSOV.ASM 111 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] D:\MPLAB\KURSOV.ASM 167 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] D:\MPLAB\KURSOV.ASM 168 : Register in operand not in bank 0. Ensure that bank bits are correct. Warning[203] D:\MPLAB\KURSOV.ASM 322 : Found opcode in column 1. (RETURN) Warning[203] D:\MPLAB\KURSOV.ASM 399 : Found opcode in column 1. (RETURN) Warning[203] D:\MPLAB\KURSOV.ASM 419 : Found opcode in column 1. (RETURN) Warning[203] D:\MPLAB\KURSOV.ASM 434 : Found opcode in column 1. (RETURN) Warning[205] D:\MPLAB\KURSOV.ASM 438 : Found directive in column 1. (END) Файл KURSOV.hex: :02000000B52821 :080008000C1C1828A8000308D5 :10001000A9000408A600101038308E00A7308F0009 :1000200010140C10162126088400290883002808C3 :100030008C1C2628B0000308B1001211003091007A :0E00400012158C105C21310883003008090075 :0C01540082073F3406345B344F346634BD :100160006D347D3407347F346F3403138316FF30CE :10017000850000308600003087008312FF30A00029 :10018000A501A301A401B201850186018701073001 :100190008700FF30B3007830A2002D30A10040303E :1001A0008400A700A60038308E00A7308F00900191 :1001B00010140C108B170B1783160C148C1483124D :1001C000C1309F001F1534211F19E4287F309E0085 :1001D0001E08A000FF30B300000000000000000077 :1001E000000000000000000000000000000000000F :1001F00000000000000000000000B30BEC2803101A :1002000021082002031C0D29031020082202031CD0 :100210000D29121187150712DF2807168711920181 :100220008C101211FC3091001215DF282708840071 :1002300000080710860067210714840A0008871049 :10024000860067218714840A000807118600672149 :100250000715840A03105E300402031C3129403064 :1002600084000408A7000800A301A401A501A30AB3 :100270006430A00203183729A3036430A007A40A3E :100280000A30A00203183F29A4030A30A00720085F :10029000A500AA208000840A2408AA208000840ADD :1002A0002308AA208000840A03105E300402031C85 :1002B0005B29403084000800031001303202031C27 :1002C0006429B20387120800B20A87160800FF30BB :1002D000B30000000000000000000000000000006B :0602E000B30B69290800C0 :00000001FF 6.5.2. Моделирование Моделирование производилось в интегрированной среде разработки MPLAB (кратко в разделе 6.5 этого документа). Для проверки состояния регистров мы использовали окно «watch», а для подсчета времени выполнения процедур в программе были расставлены breakpoint'ы и использовалось окно «stopwatch» . В результате моделирования установлена работоспособность программы. исследованы получившиеся временные характеристики: Процедура BINTOSEVEN- в худшем случае (при преобразовании уровня 5В) - 99 мкс. Процедура INDICATION- 7694 мкс Интервал между вызовами INDICATION - 22741 мкс (44Гц) Интервал между вызовами SOUNDINDICATION - 268 мкс (3731Гц) Данные временные характеристики полностью удовлетворяют ТЗ. СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 1) В.В.Скороделов "Проектирование устройств на однокристальных микроконтроллерах с RISC-архитектурой". Ч1,Ч2, Учебное пособие. 2) Угрюмов Е. П. Проектирование элементов и узлов ЭВМ. М.: Высшая школа, 1991. 3) Шило В. Л. Популярные цифровые микросхемы. М.: Радио и связь, 1988. 4) Тули М. Справочное пособие по цифровой электронике. М.: “Энергоатомиздат”, 1990. 5) Бирюков С.А. “Применение интегральных микросхем серии ТТЛ”. М.: “Патриот”, 1992. 6) Применение интегральных микросхем в электронной вычислительной технике. Справочник (под ред. Б.И.Файзулаева, -М, Радио и связь, 1989) 7) ГОСТ 2.102-68. Виды и комплектность конструкторской докуметации. М.: 1988. 8) ГОСТ 2.708-81. Правила выполнения электрических схем цифровой вычислительной техники. М.: 1988. 9) Разработка и оформление конструкторской документации. РЭА. Справочник (под ред. Э.Г.Романычевой - М.: Радио и связь, 1989) 10) Ю.В.Новиков, О.А.Калашников "Разработка устройств сопряжения". Издательство "ЭКОМ", Москва, 1998г. 355 с. Заключение В данном проекте был разработано устройство контроля за уровнями аналоговых сигналов. Это устройство предназначено для измерения уровней входных аналоговых сигналов, проверки попадания уровня в определенные границы и отображения на цифровом табло текущего значения уровня сигнала. Устройство реализовано на однокристальном микроконтроллере типа PIC16С71. Применение в устройстве данного однокристального микроконтроллера привело к экономии элементов, возможности меняя программу работы в широких пределах корректировать алгоритм обработки данных. Также улучшились весогабаритные параметры. Устройство имеет следующие характеристики: Потребляемая мощность не более 0,5 Вт; Наработка на отказ около 35000 часов; Уровни входных сигналов 0-5 В. Промоделировав работу программы и проанализировав, полученные при моделировании, временные характеристики можем сказать что устройство полностью удовлетворяет требованиям, поставленным в ТЗ. В качестве улучшения можно предложить доработать устройство, а конкретнее добавить возможность контроля за уровнями аналоговых сигналов, уровень которых выше 5В. В качестве решения можно предложить поставить на входе АЦП делитель уровня и учитывать его коэффициент деления в программе (для перевода результата отображения в семисегментный код ). При таком подходе получиться полноценный вольтметр постоянного тока. |
Обозначение | Наименование | Количество | | | | | | | Конденсаторы | | | С1 | K50-6-20 мкФ - 16В | 1 | | С2-С3 | МРТ-111-20 пФ±10%-63В | 2 | | С4 | КМ - 6 - 9 - 0,47 +- 10% ОЖО 464. 023 ТУ | 1 | | | | | | | Микросхемы | | | DD1 | PIC16С72 | 1 | | HG | АЛС324А | 3 | | | | | | | Кварц | | | ZQ1 | 4 МГц | 1 | | | | | | | | | | | | | | | Разъемы | | | ХТ1 | СНО 4 | 1 | | | | | | | Телефон | | | BF1 | ТОН-2 | 1 | | | | | | | Кнопки | | | SA1 | П2К | 1 | | | | | | | Резисторы | | | R1 | ОМЛТ 0,125 - 300 Ом | 1 | | R2-R11 | ОМЛТ 0,125 - 1,2 КОм | 10 | | | | | | | | | | | Приложение АТекст программы: list p=16C72 #include <P16C72.inc>TMP EQU 20HK1 EQU 21HK2 EQU 22HSOTNI EQU 23H DESYATKI EQU 24H EDINICI EQU 25H SAVEW EQU 28HSAVEW2 EQU 30HSAVESTATUS EQU 29HSAVESTATUS2 EQU 31HSV EQU 26H ; STACK VERTEXSP EQU 27H ; STACK POINTERDINAMIK EQU 32HCT EQU 33H ; FOR DELAY;STK 40h-5Eh ; STACK ADDRES FOR TEN BCD TRIADSORG 0x00 ; processor reset vector GOTO Start ; go to beginning of program; -------------IRQORG 0x04 ; обработка прерывания осуществляется за 9 циклов (4,5 мкс) BTFSS PIR1, TMR1IF ; анализ goto IRQTMR2 ; источника прерыванияIRQTMR1 ; обработчик прерывания от таймера;------ PUSH REGISTERS--------- MOVWF SAVEW MOVF STATUS,W MOVWF SAVESTATUS MOVF FSR,W MOVWF SV;------------------------------ BCF T1CON,TMR1ON ; TIMER STPR MOVLW B'00111000' MOVWF TMR1L MOVLW B'10100111' MOVWF TMR1H BSF T1CON,TMR1ON ; TIMER ON BCF PIR1, TMR1IF ; сброс флага переполнения от таймера CALL INDICATION;------ POP REGISTERS --------- MOVF SV,W MOVWF FSR MOVF SAVESTATUS,W MOVWF STATUS MOVF SAVEW,W;------------------------------IRQTMR2 BTFSS PIR1, TMR2IF; анализ goto RET T2BREAK;------ PUSH REGISTERS--------- MOVWF SAVEW2 MOVF STATUS,W MOVWF SAVESTATUS2;------------------------------ BCF T2CON,TMR2ON ; TIMER2 STOP MOVLW B'00000000' MOVWF TMR2 BSF T2CON,TMR2ON ; TIMER2 ON BCF PIR1, TMR2IF ; сброс флага переполнения от таймера CALL SOUNDINDICATION;------ POP REGISTERS --------- MOVF SAVESTATUS2,W MOVWF STATUS MOVF SAVEW2,W;------------------------------RETretfie ; возврат из прерыванияORG 0xAATOSEVEN addwf PCL,F ; W + PC -> PC retlw b'00111111' ; ..FEDCBA = '0' retlw b'00000110' ; .....CB. = '1' retlw b'01011011' ; .G.ED.BA = '2' retlw b'01001111' ; .G..DCBA = '3' retlw b'01100110' ; .GF..CB. = '4' retlw b'01101101' ; .GF.DC.A = '5' retlw b'01111101' ; .GFEDC.A = '6' retlw b'00000111' ; .....CBA = '7' retlw b'01111111' ; .GFEDCBA = '8' retlw b'01101111' ; .GF.DCBA = '9'Start BCF STATUS,6 BSF STATUS,5 ; BANK1 MOVLW B'11111111';INITA MOVWF TRISA MOVLW B'00000000';INITB MOVWF TRISB MOVLW B'00000000';INITC MOVWF TRISC BCF STATUS,5 ; BANK 0;--------------------------- INIT VAR;----------------- TESTS MOVLW B'11111111' MOVWF TMP ;----------------------; CLRF TMP CLRF EDINICI CLRF SOTNI CLRF DESYATKI CLRF DINAMIK CLRF PORTA CLRF PORTB CLRF PORTC MOVLW B'00000111' MOVWF PORTC MOVLW B'11111111' MOVWF CT MOVLW .120 MOVWF K2 MOVLW .45 MOVWF K1 ;--------------------------- INIT STACK MOVLW 0x40 MOVWF FSR MOVWF SP MOVWF SV;--------------------------- INIT TIMER1 MOVLW B'00111000' MOVWF TMR1L MOVLW B'10100111' MOVWF TMR1H;------------------------------- INIT TIMER 2; --------------------------- RUN TIMER1 CLRF T1CON BSF T1CON,TMR1ON ; TIMER ON BCF PIR1,TMR1IF BSF INTCON,GIE BSF INTCON,PEIE BSF STATUS,5 ; BANK1 BSF PIE1,TMR1IE BSF PIE1,TMR2IE; MOVLW B'00000001'; MOVWF PIE1MAIN;--------------------------------------------- ADC ------------ BCF STATUS,5 ; BANK0 MOVLW B'11000001' MOVWF ADCON0 BSF ADCON0,2 ; START CONV CALL BINTOSEVENLOOP BTFSC ADCON0,2 GOTO LOOP;---------------------------- TEST VALUES; MOVLW B'1100100' ; POADAET; MOVLW B'0000000' ; NIJE MOVLW B'1111111' ; VISHE MOVWF ADRES ;--------------------------- MOVF ADRES,W MOVWF TMP;DELAY ;----5106-CYCLES 1CYCLE=1us MOVLW .255 MOVWF CTD2 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DECFSZ CT,1 GOTO D2COMP; ----------------- COMPARE -----------; K1< ADC <K2 ????;---- K1< ADC ? ---------- BCF STATUS,0 MOVF K1,W SUBWF TMP,0 ; ADFRES-K1 BTFSS STATUS,0 ; ЕСЛИ ADRES<ki, ТО ПЕРЕЙТИ НА NO (ИНАЧЕ ПРО ; ПРОПУСТИТЬ СЛЕД КОМАНДУ) GOTO NO;---- ADC <=K2 ? -------- BCF STATUS,0 MOVF TMP,W SUBWF K2,0 ; ADFRES-K1 BTFSS STATUS,0 ; ЕСЛИ ADRES>ki, ТО ПЕРЕЙТИ НА NO (ИНАЧЕ ПРО ; ПРОПУСТИТЬ СЛЕД КОМАНДУ) GOTO NO;YES;--------------- TIMER 2 STOP BCF T2CON,TMR2ON ; TIMER STOP BSF PORTC,3 BCF PORTC,4 GOTO MAINNO;--------------- TIMER2 ON WITH IMMIDIATLY IRQ BSF PORTC,4 BCF PORTC,3 CLRF T2CON BCF PIR1, TMR2IF ; сброс флага переполнения от таймера BCF T2CON,TMR2ON ; TIMER2 STOP MOVLW B'11111100' MOVWF TMR2 BSF T2CON,TMR2ON ; TIMER2 ON ;-------------------------------------------------- GOTO MAIN; -------------------- DYNAMIC INDICATION PROCEDUREINDICATION;----------- RESTORE SP VALUE----------- MOVF SP,W MOVWF FSR;--------------------------------------- MOVF INDF,W BCF PORTC,0 MOVWF PORTB CALL DELAY BSF PORTC,0 INCF FSR,F MOVF INDF,W BCF PORTC,1 MOVWF PORTB CALL DELAY BSF PORTC,1 INCF FSR,F MOVF INDF,W BCF PORTC,2 MOVWF PORTB CALL DELAY BSF PORTC,2 INCF FSR,F;-------------------CALCULATE SP (STACK POINTER);---- 5Eh< FSR ? ---------- BCF STATUS,0 MOVLW 0x5E SUBWF FSR,0 ; ADFRES-K1 BTFSS STATUS,0 ; ЕСЛИ FSR<70h, ТО ПЕРЕЙТИ НА NO (ИНАЧЕ ПРОПРОПУСТИТЬ СЛЕД КОМАНДУ) GOTO SPFSRNO MOVLW 0x40 MOVWF FSR SPFSRNO;------------ PUSH SP VALUE ---------- MOVF FSR,W MOVWF SPRETURN;---------------------- BINARY TO SEVENSEGMENTS GODE CONVERTIONBINTOSEVEN; ----------- MUL x2 -------------- clrf SOTNI clrf DESYATKI clrf EDINICI; RLF TMP,1; BTFSS STATUS,0 ; ; GOTO M1;; MOVLW .2 ; MOVWF SOTNI; MOVLW .5 ; MOVWF DESYATKI; MOVLW .6 ; MOVWF EDINICIM1;----------- convert bin to bcd -------------; clrf SOTNIpr0 incf SOTNI,f ;разряд сотен movlw .100 subwf TMP,f btfsc STATUS,0 goto pr0 decf SOTNI,f movlw .100 addwf TMP,F; clrf DESYATKIpr1 incf DESYATKI,F ;разряд десятков movlw .10 subwf TMP,F btfsc STATUS,0 goto pr1 decf DESYATKI,F movlw .10 addwf TMP,F; clrf EDINICI movf TMP,W movwf EDINICI;----------- convert bcd to seven segments code -------------TTTT CALL TOSEVEN MOVWF INDF INCF FSR,F MOVF DESYATKI,W CALL TOSEVEN MOVWF INDF INCF FSR,F MOVF SOTNI,W CALL TOSEVEN MOVWF INDF INCF FSR,F;-------------------CALCULATE SV (STACK VERTEX);---- 5Eh< FSR ? ---------- BCF STATUS,0 MOVLW 0x5E SUBWF FSR,0 ; ADFRES-K1 BTFSS STATUS,0 ; ЕСЛИ FSR<70h, ТО ПЕРЕЙТИ НА NO (ИНАЧЕ ПРОПРОПУСТИТЬ СЛЕД КОМАНДУ) GOTO SVFSRNO MOVLW 0x40 MOVWF FSR SVFSRNORETURN;---------------------- SOUND INDICATION PROCEDURESOUNDINDICATION BCF STATUS,0 MOVLW 0x1 SUBWF DINAMIK,0 ; ADFRES-K1 BTFSS STATUS,0 ; ЕСЛИ FSR<70h, ТО ПЕРЕЙТИ НА NO (ИНАЧЕ ПРОПРОПУСТИТЬ СЛЕД КОМАНДУ) GOTO DIN DECF DINAMIK,F BCF PORTC,5 RETURNDIN INCF DINAMIK,F BSF PORTC,5RETURNDELAY ;----2555-CYCLES 1CYCLE=1us MOVLW .255 MOVWF CTD1 NOP NOP NOP NOP NOP NOP NOP DECFSZ CT,1 GOTO D1RETURNEND
Страницы: 1, 2, 3
|