Розробка генератору сигналів з програмним керуванням
Цифрові методи синтезу синусоїдальної напруги. Програмна реалізація цифрової частини. Функції управління генератором. Загальні питання охорони праці. Характеристика виробничого середовища. Небезпечні й шкідливі виробничі фактори. Метеорологічні умови.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | аттестационная работа |
Язык | украинский |
Дата добавления | 08.07.2016 |
Размер файла | 551,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Для забезпечення нормального висвітлення застосовуються природне й штучне висвітлення, а також з'єднане, які нормуються будівельними нормами й правилами Снип ІІ-4-79.
Всі виробничі приміщення, з постійним перебуванням у них людей, відповідно до санітарним нормам і правилам, мають природне висвітлення.
У нашому випадку використається бічне двостороннє природне висвітлення. Природне висвітлення нормується коефіцієнтом природного висвітлення (КЕО) по Снип ІІ-4-79.
Нормовані значення КЕО для будинків, розташованих в IV поясах світлового клімату визначаються по наступній формулі:
(6.1)
де - значення КЕО для III пояса світлового клімату становить 2 - (Снип ІІ-4-79[12]);
m - коефіцієнт світлового клімату (для м. Харкова m=0,9% -Снип ІІ-4-79[12]);
c - коефіцієнт сонячності клімату, рівняється 0,8 (СНиП ІІ-4-79[12]).
(6.2)
У лабораторії застосовується загальне штучне висвітлення - 500 лк. Штучне висвітлення нормується Снип ІІ-4-79. Для створення комфортних умов зорової роботи середньої точності необхідні наступні дані по нормах висвітлення. У лабораторії застосовується загальне штучне освітлення у темний час доби, та комбіноване вдень.
Як джерело світла рекомендується використати люмінесцентні лампи потужністю 40 Вт або енергоекономні потужністю 36 Вт типу ЛБ, ЛХБ, або ЛДЦ як найбільше ефективні й прийнятні з погляду спектрального состава, колірна температура (Тца) випромінювання яких перебуває в діапазоні 3500-4200 К.
Для освітлення дисплейного класу рекомендується застосовувати світильники серії ЛП013, ЛП031, ЛП033, виконання 001 й 006, ЛС002, ЛС004. З металевими гратами, що екранує, і непрозорими бічними частинами.
Дані по нормах висвітлення наведені в таблиці 6.3
Таблиця 6.3 - Комфортні умови зорової роботи
Точність зорових робіт |
Мінімальний розмір об'єкта розрізнення, мм |
Характеристика тіла |
Контраст об'єкта із тілом |
Розряд зорової роботи |
Підразряд зорової роботи |
Нормоване значення параметрів висвітлення |
||||
Природне освітлення |
Штучне освітлення |
|||||||||
eHIII,% |
енIV, % |
Е, лк |
Тип ламп |
|||||||
Висока |
Від 0,3 до 0,5 |
Світлий |
Великий |
III |
В |
2 |
1,44 |
500 |
Газорозрядна лампа ЛХБ - 40 |
3.5 Електробезпека
У таблиці 6.4 наведена загальна характеристика використовуваної електроапаратури (устаткування).
Таблиця 6.4 - Загальна характеристика використовуваної електроапаратури (устаткування)
Показник |
Його значення |
Критерій вибору |
Регламентуючі документи |
|
1. Режим живлення: характеристика споживаної енергії - вид - напруга - режим мережі |
Рід струму-змінний; частота струму -50Гц; напруга мережі - 220В; режим мережі -однофазна, Зх провідна із глухо заземленої нейтраллю; Споживана потужність -300 вт/година |
Експлуатаційні характеристики |
Експлуатаційно-технічні вимоги, паспорт |
|
2. Кліматичні умови надійної роботи |
Тепле, сухе приміщення |
Експлуатаційні характеристики |
Технічний паспорт |
|
3. Ступінь захисту |
IP 44 |
П- II a |
ПУЭ-87 Правила устройства электроустановок, утверждённых Главгосэнергонадзором СССР 1987 г. |
|
4. Клас приміщення по небезпеці поразки електричним струмом |
I клас |
Тому що комп'ютер має робочу ізоляцію й елементи занулення |
ГОСТ 12.2.007.0-75 ССБТ Изделия электрические. Общие требования к безопасности, ГОСТ 25861-83 ССБТ. Машины вычислительные и системы обработки данных. Требования электрической и механической безопасности и методы испытания, ДНАОП 0.00-1.31-99 Правила охорони праці при експлуатації |
|
5. Схемно - конструктивні заходи захисту від поразки електричним струмом |
Занулення на здатність, що відключає |
Тому що 220 В із заземленої нейтраллю |
ПУЭ-87 Правила устройства электроустановок, утверждённых Главгосэнергонадзором СССР 1987 г, ГОСТ 12.1.030-81 ССБП. Электробезопасность. Защитное заземление. Зануление, ДНАОП 0.00-1.31-99 Правила охраны труда при эксплуатации электронно-вычислительных машин |
Тому що лабораторія, де перебувають ЕОМ, не є приміщенням з підвищеним змістом механічних, теплових або радіаційних небезпек, але є споживачем електричної енергії (трифазна мережа змінного струму напругою 220 В и частотою 50 Гц), у даному приміщенні є небезпека поразки людини електричним струмом. Тому при розгляді питань техніки безпеки обмежимося розглядом електробезпечності.
Передбачено такі міри електробезпечності:
- конструктивні заходи електробезпечності;
- схемно-конструктивні заходи електробезпечності;
- експлуатаційні заходи електробезпечності.
Конструктивні заходи безпеки спрямовані на запобігання можливості дотику людини до струмопровідних частин.
Для усунення можливості доторкання оператора до струмопровідних частин, всі рубильники встановлені в закритих корпусах, всі струмопровідні частини розміщені в захисному корпусі або мають захисну оболонку ізоляції, що виключає можливість доторкання до них, застосовується блоковий монтаж. Електричний ланцюг, що постачає устаткування електричним струмом має ізоляцію, виконану відповідно ГОСТ_14254-96 [11]. Ступінь захисту встаткування відповідає IР44 (де 4 захист від твердих тіл розміром більше 1 мм; 4 - захист від бризів) відповідно ППЕ-87 [5].
Відповідно ГОСТ 12.2.007.0-75* [12] приймаємо I клас захисту від поразки електричним струмом обслуговуючого персоналу тому, що комп'ютер має робочу ізоляцію й елементи занулення.
Схемно-конструктивні заходи електробезпечності забезпечують безпека дотику людини до металевих не струмопровідних частин електричних апаратів при випадковому пробої їхньої ізоляції й виникнення електричного потенціалу на них.
Живлення здійснюється від трьохпроводной мережі: фазове проведення, нульове робоче проведення, нульове захисне проведення.
Тому що напруга менше 1000 В, але більше 42 В, те відповідно ГОСТ_12.1. 038-82 [13] з метою захисту від поразки електричним струмом застосовуємо занулення, тому що лабораторія є приміщенням з підвищеною небезпекою поразки людини електричним струмом, і тому що можливий одночасний дотик людини до металоконструкціями будинків, що мають з'єднання із землею, і т.п. з одного боку, і до металевих корпусів електронного встаткування - з іншої.
Занулення вимагає наявності в мережі нульового проведення, глухого заземлення нейтралі джерела струму й повторного заземлення нульового проведення (Мал. 6.1).
По засобі захисту від поразки електричним струмом проектована система ставиться до I класу відповідно ГОСТ 12.2.007.0-75* [12].
Мал. 6.1 - Принципова схема занулення
Умовні позначки:
1 - корпус електроустановки;
2 - апарати захисту від струмів КЗ (запобіжники);
Ro - опір заземлення нейтралі обмотки джерела струму;
Rп - опір повторного заземлювача нульового захисного провідника;
IКЗ - струм короткого замикання;
Iн - частина струму короткого замикання, що протікає через нульовий захисний провідник;
Iз - частина струму короткого замикання, що протікає через землю.
Призначення елементів занулення:
- призначення нульового захисного провідника - забезпечити необхідне для відключення установки значення струму однофазного короткого замикання шляхом створення для цього струму ланцюга з малим опором;
- призначення заземлення середньої крапки - зниження напруги зануленних корпусів (нульового захисного провідника) щодо землі до безпечного значення при замиканні фази на землю;
- призначення повторного заземлення захисного провідника - зниження напруги щодо землі зануленних конструкцій у період замикання фази на корпус як при справній схемі зануления, так й у випадку обриву нульового захисного проведення.
Таким чином, занулення здійснює дві захисних дії - швидке автоматичне відключення ушкодженої установки від живлячої мережі й зниження напруги зануленних металевих не струмопровідних частин, які виявилися під напругою, щодо землі.
3.6 Пожежобезпека
Пожежна безпека - стан об'єкта при якому із установленою ймовірністю виключається можливість виникнення й розвитку пожежі, а також забезпечується захист матеріальних цінностей.
Причинами, які можуть викликати пожежу в розглянутому приміщенні, є:
- несправність електропроводки й приладів;
- коротке замикання електричних ланцюгів;
- перегрів апаратур;
- блискавка.
Пожежна безпека відповідно ГОСТ 12.1.004-91 [11] забезпечується системами запобігання пожежі, пожежного захисту, організаційно-технічними заходами.
Система запобігання пожежі:
- контроль і профілактика ізоляції;
- наявність плавких вставок і запобіжників в електронному встаткуванні;
- для захисту від статичної напруги використається заземлення;
- захист від блискавок будинків й устаткування.
Для даного класу будинків і місцевості із середньою грозовою діяльністю 10 і більше грозових годин у рік, тобто для умов м. Харкова встановлена III категорія захисту від блискавок.
Ступінь захисту відповідному класу приміщення П II-а IР44 для встаткування й IР2Х для світильників.
Система пожежного захисту:
- аварійне відключення й перемикання апаратур;
- наявність первинних засобів пожежатушіння, вогнегасників ОУ-5, тому що вуглекислота має погану електропровідність, або порошкових вогнегасників;
- система оповіщення, світлова й звукова сигналізація;
- захист легкозаймистих частин устаткування, конструкцій захисними матеріалами;
- використання негорючих матеріалів для акустичної обробки стін і стель;
- у приміщеннях, де немає робітника персоналу встановлена автоматична система пожежного захисту.
Для успішної евакуації персоналу при пожежі розміри двері робочого приміщення повинні бути наступними: - ширина дверей не менше 1,5 м, - висота дверей не менше 2,0 м., - ширина коридору 1,8 м.; робоче приміщення повинне мати два виходи; відстань від найбільше віддаленого робочого місця не повинне перевищувати 100 м.
Отже у даній частині дипломної роботи розглянуті й проаналізовані наступні питання охорони праці й навколишнього середовища у виробничому приміщенні, де проводилася розробка даного дипломного проекту для зменшення негативного впливу на людину небезпечних і шкідливих виробничих факторів:
- характеристика виробничого середовища;
- небезпечні й шкідливі виробничі фактори;
- мікроклімат;
- висвітлення виробничого приміщення.
Було встановлено, що місце виконання дипломноЇ роботи повністю задовольняє всі вимоги й норми по техніці безпеки. Комфортні умови виробничого приміщення будуть сприяти більш швидкому завершенню проектувальних робіт.
Висновки
Виходячи з мети роботи, визначені завдання які необхідно вирішити в роботі:
- проведення аналізу генераторів сигналів;
- постановка завдання;
- зпроектувати генератор низькочастотний генератор синусоїдальної напруги;
- розроблене програмного забезпечення керування генератором.
Генератор виконаний на основі AVR -мікроконтроллера і є DDS (Direct Digital Synthesizer), реалізований програмно. Генератор має наступні параметри:
- Діапазон частот, що генеруються, -- 1 ... 50000 Гц
- Крок установки частоти -- 0,01 Гц
- Коефіцієнт гармонік на частоті 1 кгц, не більш -- 0,02 %
- Среднеквадратічеськоє вихідна напруга -- 0 ... 5 В
- Межі аттенюатора -- 0 -20, -40, -60 дб
- 10 передустановок частоти
- Режим виключення сигналу
- Можливість цифрового калібрування частоти
Список використаної літератури
1. Осипов К. Д., Пасынков В. В., Справочник по радиоизмерительным приборам, ч. 5, М., 1994;
2. Ремез Г. А., Курс основных радиотехнических измерений, 3 изд., М., 1996;
3. Гладышев Г. И., Батура В. Г., Воронцов А. Н., Краткий справочник по радиоизмерительной аппаратуре, К., 1996;
4. Радиоизмерительные приборы. Каталог-проспект, 5 изд., М., 1998.
5. Компоненты и технологии №4, 2006
6. http:/www.analog.com
7. А.Н.Морозевич, Б.Б.Трибуховский, А.Н.Дмитриев. Гармонические сигналы в цифровых системах контроля и испытаний. Минск, НАВУКА I ТЭХНIКА, 2000.
8. В.С.Гутников. Фильтрация измерительных сигналов. ЭНЕРГОАТОМИЗДАТ, 2000.
Додаток А. Лістинг програми
;***** Constantes
.equ TVal = 40 ;Time base 4.000 uS
.equ Cal_0 = 180143985 ;Initial calibration value
.equ Freq_0 = 100000 ;Initial frequency x 0.01 Hz
.equ Fmax = 5000000 ;F max x0.01 Hz
.equ Fmin = 100 ;F min x0.01 Hz
.equ Pos_0 = 3 ;Initial edit position
.equ T0Val = -98 ;x1024x0.0001=10mS program timer
.equ KiniD = 80 ;x10mS Initial autorepeat delay
.equ KrepD = 20 ;x10mS Autorepeat rate
.equ DebVal = 3 ;x10mS Debounce delay
.equ BliVal = 20 ;Blink delay (x blink period)
;Keys codes:
.equ COD_NO =0 ;keys are released
.equ COD_UP =1 ;key "UP" pressed
.equ COD_DN =2 ;key "DOWN" pressed
.equ COD_LF =4 ;key "LEFT" pressed
.equ COD_RT =8 ;key "RIGHT" pressed
;LCD special symbols
.equ Blank =0x00 ;Blank
.equ Ch_P =0x0e ;Char "P"
.equ Ch_F =0x0b ;Char "F"
.equ Ch_min =0x0f ;Char "-"
;***** Variables
.DSEG ;data segment (internal RAM)
Dig: .byte 10 ;Display data (Digits 1..10, chars)
.equ Dig0 =Dig+0 ;8---------
.equ Dig1 =Dig+1 ;-8--------
.equ Dig2 =Dig+2 ;--8-------
.equ Dig3 =Dig+3 ;---8------
.equ Dig4 =Dig+4 ;----8-----
.equ Dig5 =Dig+5 ;-----8----
.equ Dig6 =Dig+6 ;------8---
.equ Dig7 =Dig+7 ;-------8--
.equ Dig8 =Dig+8 ;--------8-
.equ Dig9 =Dig+9 ;---------8
MulB: .byte 7 ;Multiply buffer
COD: .byte 1 ;Keyboard last code
;Frequency calibration value (RAM copy)
;Freq = Fval x Calib / 16777216
;Nominal Calib = 180143985
;for Ttimer = 4.000 uS
Cal: .byte 4
.equ CalibK =Cal+0
.equ CalibL =Cal+1
.equ CalibM =Cal+2
.equ CalibN =Cal+3
;***** Global Register Variables
.def temp0 =r0 ;Used in SUM (with lpm)
.def tsreg =r1 ;Used in SUM
.def PhaseK =r2 ;Phase code,used in SUM
.def PhaseL =r3
.def PhaseM =r4
.def PhaseN =r5
.def FreqK =r6 ;Frequency code (delta Phase),used in SUM
.def FreqL =r7
.def FreqM =r8
.def FreqN =r9
.def DebTM =r10 ;Debounce timer
.def KeyTM =r11 ;Keyboard timer
.def BliTM =r12 ;Blink timer
.def tempA =r13 ;Temporary register tempA
.def tempB =r14 ;Temporary register tempB
.def tempC =r15 ;Temporary register tempC
.def FvalK =r16 ;Frequency value (x 0.01 Hz)
.def FvalL =r17
.def FvalM =r18
.def FLAGS =r19
.equ D_UPD =0 ;Display update flag
.equ NewPr =1 ;Keyboard new press flag
.equ Edit =2 ;Edit mode flag
.equ Blnk =3 ;Digit blank flag
.def temp =r20 ;Temporary register temp
.def tempX =r21 ;Temporary register tempX
.def Cnt =r22 ;Temporary register Cnt
.def Cnt1 =r23 ;Temporary register Cnt1
.def Del =r24 ;Temporary register Del
.def Pos =r25 ;Cursor position
.def Tm_10 =r26 ;10ms timer
.equ Blb =5 ;Blink bit
;r28,r29 used as Y-register
;r30,r31 used as Z-register in SUM
;***** Port Definitions
.equ PB = PORTB ;Port B
.equ DIRB = 0b11111111 ;Port B direction
.equ PUPB = 0b00000000 ;Port B pull-ups
.equ PD = PORTD ;Port D
.equ DIRD = 0b01000011 ;Port D direction
.equ PUPD = 0b00111100 ;Port D pull-ups
.equ SD = PD0 ;Serial data
.equ SC = PD1 ;Serial clock
.equ K_RT = PD2 ;Key RIGHT
.equ K_DN = PD3 ;Key DOWN
.equ K_LF = PD4 ;Key LEFT
.equ K_UP = PD5 ;Key UP
.equ MSB = PD6 ;DAC MSB
;***** Macros
.macro clbr ;clear bit in register
cbr @0,exp2(@1)
.endm
.macro stbr ;set bit in register
sbr @0,exp2(@1)
.endm
.macro bbrc ;branch if bit in register clear
sbrs @0,@1
rjmp @2
.endm
.macro bbrs ;branch if bit in register set
sbrc @0,@1
rjmp @2
.endm
.macro bbic ;branch if bit in I/O clear
sbis @0,@1
rjmp @2
.endm
.macro bbis ;branch if bit in I/O set
sbic @0,@1
rjmp @2
.endm
;***** Interrupt Vectors
.CSEG ;Code segment
.org 0
rjmp INIT ;Reset Handle
;***** Timer1 output compare interrupt handle
;To minimize execution time handle is located
;just at vector address. It eliminates rjmp command.
.org OC1addr
SUM: in tsreg,SREG ;Save status register
add PhaseK,FreqK ;Phase(0..31)=Phase(0..31)+Freq(0..31)
adc PhaseL,FreqL
adc PhaseM,FreqM
adc PhaseN,FreqN
mov ZL,PhaseM ;ZL <- Phase(16..23)
mov ZH,PhaseN ;ZH <- Phase(24..31)
sbrc PhaseN,2
com ZL ;ZL=!ZL if Phase.26==1
sbrc PhaseN,2
com ZH ;ZH=!ZH if Phase.26==1
andi ZH,0x03 ;Table address is 10 bit width
ori ZH,0x04 ;Table base is 0x0400 (0x200*2)
lpm ;r0 <- table[Z]
sbrc PhaseN,3
rjmp ph_ab ;jump if Phase.27==1
ph_cd: com r0 ;r0=!r0
cbi PORTD,MSB ;To minimize glitch, clear DAC.9,
out PORTB,r0 ;and then setup DAC.1 - DAC.8
out SREG,tsreg ;Restore status register
reti
ph_ab: out PORTB,r0 ;To minimize glitch, setup DAC.1 - DAC.8,
sbi PORTD,MSB ;and then set DAC.9
out SREG,tsreg ;Restore status register
reti
;***** Program Execution Starts Here
INIT: ldi temp,RAMEND ;Locate stack
out SPL,temp
ldi temp,PUPB
out PORTB,temp ;Init PORTB and on/off pullup
ldi temp,DIRB
out DDRB,temp ;Set PORTB direction
ldi temp,PUPD
out PORTD,temp ;Init PORTD and on/off pullup
ldi temp,DIRD
out DDRD,temp ;Set PORTD direction
;Variables init
clr FLAGS ;Clear all flags
ldi Pos,Pos_0 ;Initial cursor position
ldi temp,COD_NO
sts COD,temp
clr BliTM ;Clear blink timer
;Periphery setup:
ldi temp,0x00
out TCCR1A,temp ;OC disable, PWM disable
out GIMSK,temp
ldi temp,0x40
out TIFR,temp ;Clear pending timer interrupt
out TIMSK,temp ;Enable output compare interrupt
ldi temp,0x09
out TCCR1B,temp ;Clear on compare match, CK/1
ldi temp,high(TVal-1) ;Load compare register
out OCR1AH,temp
ldi temp,low(TVal-1)
out OCR1AL,temp
ldi temp,0x05
out TCCR0,temp ;CK/1024
;Initial delay 2S
ldi Cnt,133
DE3: ldi tempX,250
DE2: ldi temp,200
DE1: dec temp ;1
brne DE1 ;2
dec tempX
brne DE2
dec Cnt
brne DE3
;Load calibratin value
ldi temp,Low(Cal_0)
sts CalibK,temp
ldi temp,High(Cal_0)
sts CalibL,temp
ldi temp,Byte3(Cal_0)
sts CalibM,temp
ldi temp,Byte4(Cal_0)
sts CalibN,temp
;Load initial frequency value
ldi temp,Low(Freq_0)
mov FvalK,temp
ldi temp,High(Freq_0)
mov FvalL,temp
ldi temp,Byte3(Freq_0)
mov FvalM,temp
;Init internal variables
rcall MakeF ;Calculate Freq
rcall F2BCD ;Convert Fval to BCD
stbr FLAGS,D_UPD ;Set display update flag
sei ;Enble global interrupt
;Main loop
MAIN: rcall SCAN ;Scan keyboard
lds tempX,COD
cp tempX,temp ;Compare codes
breq Same
sts COD,temp ;New code, save it
ldi temp,DebVal
mov DebTM,temp ;Load debounce timer
stbr FLAGS,NewPr ;Set new press flag
rjmp MA10
Same: mov tempX,temp
tst DebTM ;Check debounce timer
brne MA10 ;Jump if no overflow
bbrc FLAGS,NewPr,Re ;NewPr=0, jump to repeat action
ldi temp,KiniD ;Load initial autorepeat delay
mov KeyTM,temp ;Load key timer
rjmp COD0 ;Function processing
Re: tst KeyTM ;Check key timer
brne MA10 ;Skip processing
ldi temp,KrepD
mov KeyTM,temp ;Reload key timer with autorepeat delay
;Control Functions Analysis and Processing
COD0: cpi tempX,COD_UP ;key UP
brne COD1
rcall KEY_UP
COD1: cpi tempX,COD_DN ;key DN
brne COD2
rcall KEY_DN
COD2: cpi tempX,COD_LF ;key LEFT
brne COD3
rcall KEY_LF
COD3: cpi tempX,COD_RT ;key RIGHT
brne COD4
rcall KEY_RT
COD4: clbr FLAGS,NewPr ;Clear new press flag
;Timer check
MA10: in temp,TIFR
bbrc temp,TOV0,MA50
andi temp,exp2(TOV0)
out TIFR,temp ;Timer 0 overflow flag clear
ldi temp,T0Val
out TCNT0,temp ;Timer 0 reload
inc Tm_10 ;Advance 10 ms timer
tst DebTM ;Advance debounce timer
breq MA41
dec DebTM
MA41: tst KeyTM ;Advance key timer
breq MA50
dec KeyTM
;Check blink timer
MA50: bbrc FLAGS,Edit,MA60 ;Skip if not edit mode
tst BliTM
brne MA60 ;Skip if no overflow
clbr FLAGS,Edit ;Clear edit flag
stbr FLAGS,D_UPD ;Set display update flag
;Update LCD
MA60: rcall LCD ;Update LCD
rjmp MAIN ;Main loop
;***** Subroutines Area
;===== Key UP processing
KEY_UP: bbrs FLAGS,Edit,UP_F ;Frequency step up
rjmp E_Ent
;Frequency step up
UP_F: rcall Z_Pos ;Zero lower digits
rcall BCD_I ;Inc BCD value
rcall BCD2F ;BCD -> Fval
rcall Valid ;Validate Fval
brtc UP_OK
rcall F2BCD ;Correct BCD value
UP_OK: rcall MakeF ;Calculate Freq
rjmp E_Ent
;===== Key DOWN processing
KEY_DN: bbrs FLAGS,Edit,DN_F ;Frequency step up
rjmp E_Ent
;Frequency step down
DN_F: rcall Z_Pos ;Zero lower digits
brts No_d
rcall BCD_D ;Dec BCD value
No_d: rcall BCD2F ;BCD -> Fval
rcall Valid ;Validate Fval
brtc DN_OK
rcall F2BCD ;Correct BCD value
DN_OK: rcall MakeF ;Calculate Freq
rjmp E_Ent
;===== Key LEFT processing
KEY_LF: bbrs FLAGS,Edit,LF_F ;Position left
rjmp E_Ent
;Position left
LF_F: cpi Pos,7
breq E_Ent
inc Pos ;Pos + 1
rjmp E_Ent
;===== Key RIGHT processing
KEY_RT: bbrs FLAGS,Edit,RT_F ;Position right
rjmp E_Ent
;Position right
RT_F: cpi Pos,1
breq E_Ent
dec Pos ;Pos - 1
rjmp E_Ent
;Enter to edit mode
E_Ent: stbr FLAGS,Edit ;Set edit flag
stbr FLAGS,D_UPD ;Set display update flag
ldi temp,BliVal
mov BliTM,temp ;Blink timer reload
clr Tm_10 ;Clear 10 ms timer (on blinking digit)
ret
;Zero positions at right of cursor
;Input: Pos
;Out: [Dig...] = 0
;Out: T=0 if no action performed
Z_Pos: mov Cnt,Pos
clt ;Clear T flag
Z_loop: dec Cnt
breq Z_done
ldi YH,high(Dig+10) ;Calculate pointer
ldi YL,low(Dig+10)
sub YL,Cnt
sbci YH,0
ld temp,Y
tst temp
breq Z_loop
clr temp
st Y,temp
set ;Set T flag
rjmp Z_loop
Z_done: ret
;BCD buffer inc
;Input: Pos
;Out: [Dig+3]..[Dig+9]
BCD_I: ldi Cnt,8
sub Cnt,Pos ;Pos = 7..1 -> Cnt = 1..7 -> [Dig+3]..[Dig+9]
I_loop: rcall LD_Dig
inc temp
cpi temp,10
brne I_done
clr temp
st Y,temp
dec Cnt
brne I_loop
I_done: st Y,temp
ret
;BCD buffer dec
;Input: Pos
;Out: [Dig+3]..[Dig+9]
BCD_D: ldi Cnt,8
sub Cnt,Pos ;Pos = 7..1 -> Cnt = 1..7 -> [Dig+3]..[Dig+9]
D_loop: rcall LD_Dig
dec temp
cpi temp,-1
brne D_done
ldi temp,9
st Y,temp
dec Cnt
brne D_loop
D_done: st Y,temp
ret
;Load [Dig..] to temp
LD_Dig: clr temp
ldi YH,high(Dig+2) ;Calculate pointer
ldi YL,low(Dig+2)
add YL,Cnt
adc YH,temp
ld temp,Y ;Load digit from buffer
ret
;Converts BCD to frequency value
;Input: [Dig+3]..[Dig+9] - BCD
;Out: FvalK,FvalL,FvalM
BCD2F: ldi YH,high(Dig+3) ;Load pointer
ldi YL,low(Dig+3)
ld FvalK,Y+
clr FvalL
clr FvalM
ldi Cnt,6
DoConv: ld temp,Y+
rcall mul10
dec Cnt
brne DoConv
ret
;multiplies FvalK,FvalL,FvalM with 10 and adds temp
mul10: mov tempA,FvalK ;make copy
mov tempB,FvalL
mov tempC,FvalM
lsl FvalK ;multiply original by 2
rol FvalL
rol FvalM
rcall Rl_ABC ;multiply copy by 2
rcall Rl_ABC ;multiply copy by 2 (4)
rcall Rl_ABC ;multiply copy by 2 (8)
add FvalK,tempA ;add copy to original
adc FvalL,tempB
adc FvalM,tempC
add FvalK,temp ;add temp
ldi temp,0
adc FvalL,temp
adc FvalM,temp
ret
Rl_ABC: lsl tempA ;multiply copy by 2
rol tempB
rol tempC
ret
;Fval validate
;If Fval>Fmax then Fval=Fmax
;If Fval<Fmin then Fval=Fmin
;Out: T = 0 if no action performed
Valid: clt ;Clear T flag
ldi temp,Low(Fmax) ;Check for Fmax limit
cp FvalK,temp
ldi temp,High(Fmax)
cpc FvalL,temp
ldi temp,Byte3(Fmax)
cpc FvalM,temp
brlo Max_OK
ldi FvalK,Low(Fmax) ;Load max limit value
ldi FvalL,High(Fmax)
ldi FvalM,Byte3(Fmax)
set ;Set T flag
rjmp V_done
Max_OK: ldi temp,Low(Fmin) ;Check for Fmin limit
cp FvalK,temp
ldi temp,High(Fmin)
cpc FvalL,temp
ldi temp,Byte3(Fmin)
cpc FvalM,temp
brsh V_done
ldi FvalK,Low(Fmin) ;Load min limit value
ldi FvalL,High(Fmin)
ldi FvalM,Byte3(Fmin)
set ;Set T flag
V_done: ret
;Converts frequency to BCD format
;Input: FvalK,FvalL,FvalM
;Out: [Dig+0]..[Dig+2] - blank, [Dig+3]..[Dig+9] - BCD
F2BCD: push tempX
mov tempA,FvalK
mov tempB,FvalL
mov tempC,FvalM
ldi Cnt,10
ldi YH,high(Dig)
ldi YL,low(Dig)
clr temp
ClrD: st Y+,temp ;output array clear
dec Cnt
brne ClrD
ldi Cnt,24 ;input bits count
H_Loop: lsl tempA
rol tempB
rol tempC
ldi Del,7
ldi YH,high(Dig+10)
ldi YL,low(Dig+10)
S_Loop: ld temp,-Y
in tempX,SREG
push tempX ;Save C
subi temp,-0x03 ;temp+3
sbrs temp,3
ld temp,Y
pop tempX
out SREG,tempX ;Restore C
rol temp
clc ;C <- 0
sbrc temp,4
sec ;C <- 1
andi temp,0x0f
st Y,temp
dec Del
brne S_Loop
dec Cnt
brne H_Loop
pop tempX
ret
;Calculate Freq
;Freq = Fval x Calib / 16777216
;Nominal Calib = 180143985
;for Ttimer = 4.000 uS
;
;m = mc x mp
;mc - CalibK,L,M,N
;mp - FvalK,L,M -> [MulB+0]..[MulB+2]
;m - [MulB+0]..[MulB+6]
MakeF: push tempX
ldi YH,High(MulB)
ldi YL,Low(MulB)
ldi Cnt,7
clr temp
ClrM: st Y+,temp ;Clear m
dec Cnt
brne ClrM
ldi Cnt,24 ;Load cycle counter
mov temp,FvalM
lsr temp
sts MulB+2,temp ;Init mp
mov temp,FvalL
ror temp
sts MulB+1,temp
mov temp,FvalK
ror temp
sts MulB+0,temp
M24_32: brcc NoAdd
ldi YH,High(MulB+3)
ldi YL,Low(MulB+3)
ld temp,Y
lds tempX,CalibK
add temp,tempX
st Y+,temp
ld temp,Y
lds tempX,CalibL
adc temp,tempX
st Y+,temp
ld temp,Y
lds tempX,CalibM
adc temp,tempX
st Y+,temp
ld temp,Y
lds tempX,CalibN
adc temp,tempX
st Y+,temp
NoAdd: ldi YH,High(MulB+7)
ldi YL,Low(MulB+7)
ldi Cnt1,7
RRY: ld temp,-Y
ror temp
st Y,temp
dec Cnt1
brne RRY
dec Cnt
brne M24_32
;FreqK,L,M,N = [MulB+3]..[MulB+6] + 0.5
ldi YH,High(MulB+2)
ldi YL,Low(MulB+2)
ldi Cnt,0x80
ld temp,Y+
add temp,Cnt
clr Cnt
cli ;Interrupts disable
ld FreqK,Y+
adc FreqK,Cnt
ld FreqL,Y+
adc FreqL,Cnt
ld FreqM,Y+
adc FreqM,Cnt
ld FreqN,Y+
adc FreqN,Cnt
sei ;Interrupts enable
pop tempX
ret
;Loads 10 chars from RAM buffer (Dig) to LCD controller
LCD: bbrc FLAGS,Edit,LCDa ;Jump to display if not edit mode
cpi tempX,COD_NO
brne LCDa ;Jump to display if key pressed
bbrc Tm_10,Blb,Dblf ;Check bit Blb of 10 ms timer
bbrs FLAGS,Blnk,Lre ;Blb = 1, off blinking digit
stbr FLAGS,Blnk ;Set blank flag
tst BliTM ;Advance blink timer
breq LCD0
dec BliTM
rjmp LCD0
Dblf: bbrc FLAGS,Blnk,Lre ;Blb = 0, on blinking digit
clbr FLAGS,Blnk ;Clear blank flag
rjmp LCD0
LCDa: clbr FLAGS,Blnk ;Blinking not used, clear blank flag
bbrc FLAGS,D_UPD,Lre ;Check update flag
LCD0: ldi Cnt,10 ;Load digits counter
ldi YH,high(Dig) ;Load pointer
ldi YL,low(Dig)
clt
LCD1: ld temp,Y+ ;Load char
bbrc FLAGS,Edit,LCD4 ;Skip if not edit mode
cp Cnt,Pos ;Check position
brne LCD4 ;Edit position not match
set
bbrc FLAGS,Blnk,LCD4 ;Skip if digit must be on
clr temp ;Load blank code
rjmp LCD3 ;Jump to display
LCD4: tst temp ;Check char for zero
brne LCD2 ;non-zero char
brtc LCD3 ;skip if leading zero
ldi temp,10 ;non-leading zero, load "0" code
LCD2: set ;set non-zero char flag
LCD3: rcall LCDLD ;Load LCD controller
dec Cnt ;Next digit
brne LCD1
clbr FLAGS,D_UPD ;Clear display update flag
Lre: ret
;Loads char from temp to LCD controller
LCDLD: push Cnt
ldi Cnt,4
swap temp
LDL: rol temp
brcs LD1
LD0: cbi PORTD,SD
rjmp STR
LD1: sbi PORTD,SD
STR: sbi PORTD,SC
ldi Del,5
HNG1: dec Del
brne HNG1
cbi PORTD,SC
ldi Del,10
HNG2: dec Del
brne HNG2
dec Cnt
brne LDL
ldi Del,25
HNG3: dec Del
brne HNG3
cbi PORTD,SD
pop Cnt
ret
;Local keyboard scan
;Out: temp - scan code
;
SCAN: clr temp
sbis PIND,K_UP
stbr temp,0
sbis PIND,K_DN
stbr temp,1
sbis PIND,K_LF
stbr temp,2
sbis PIND,K_RT
stbr temp,3
ret
Размещено на Allbest.ru
Подобные документы
Сфера застосування мікроконтролерів. Розробка джерела високостабільної напруги з мікропроцесорним керуванням. Написання програми на мові ASSEMBLER. Огляд досвіду розробки подібних приладів на мікропроцесорах, написання програм системного характеру.
курсовая работа [220,6 K], добавлен 31.07.2011Цифрові аналізатори спектра випадкових сигналів. Перетворення Фур’є. Амплітуда і форма стиснутого сигналу. Гетеродинний аналізатор спектру. Транспонований (стиснутий у часі) сигнал. Цифрові осцилографи та генератори синусоїдних сигналів та імпульсів.
учебное пособие [217,6 K], добавлен 14.01.2009Математичний опис цифрових фільтрів, їх структурна реалізація, етапи розроблення. Візуалізація вхідного сигналу, методика та напрямки аналізу його частотного складу. Розробка специфікації та синтез цифрового фільтра. Фільтрація вхідного сигналу.
курсовая работа [1,2 M], добавлен 01.06.2013Аналогові та цифрові системи відеоспостереження. Розробка програмної системи АСУ. Обгрунтування вибору Trace Mode. Розробка загальної структури керування. Загальні визначення, послідовність дій по реалізації. Тестування програмного забезпечення АСУ.
курсовая работа [1,5 M], добавлен 06.11.2016Загальні принципи побудови генераторів. Структурна, принципова і функціональна схема генератора пилкоподібної напруги. Генератори пилкоподібної напруги на операційних підсилювачах. Розрахунок струмостабілізуючого елемента на операційному підсилювачі.
курсовая работа [126,4 K], добавлен 21.01.2012Розробка цифрової радіорелейної системи передачі на базі обладнання Ericsson mini-link TN. Створення мікрохвильових вузлів мереж безпроводового зв'язку. Розробка DCN для передачі інформації сторонніх систем управління. Дослідження профілів даної РРЛ.
контрольная работа [807,7 K], добавлен 05.02.2015Характеристика цифрових комбінаційних пристроїв та їх види. Схемні ознаки проходження сигналів. Цифрові пристрої з пам’яттю та їх основні типи. Властивості та функціональне призначення тригерів. Розробка перетворювача коду по схемі дешифратор-шифратор.
курсовая работа [1,7 M], добавлен 08.07.2012Методи моделювання динамічних систем. Огляд методів синтезу. Математичне забезпечення вирішення задачі системи управління. Моделювання процесів за допомогою пакету VisSim. Дослідження стійкості системи управління. Реалізація програмного забезпечення.
дипломная работа [3,8 M], добавлен 07.11.2011Технічні вимоги до засобів автоматизації, характеристики вхідних та вихідних сигналів контурів управління. Аналіз технологічного об'єкту управління: формування вимог до технічних засобів автоматизації, характеристика вхідних і вихідних сигналів контурів.
курсовая работа [73,7 K], добавлен 19.02.2010Розробка структурної схеми мікропроцесора. Узгодження максимальної вхідної напруги від датчиків з напругою, що може обробити МПСза допомогою дільника напруги та аналогового буферного повторювача. Система тактування та живлення. Організація виводу даних.
курсовая работа [354,3 K], добавлен 14.12.2010