Разработка устройства для измерения освещенности и коэффициента пульсации светового потока

Автор работы: Пользователь скрыл имя, 01 Ноября 2012 в 20:12, дипломная работа

Краткое описание

Освещение играет немаловажную роль как на производстве, так и в быту. От него зависит как сохранность здоровья персонала, так и непосредственно продуктивность его труда. Неправильное освещение может привести к серьезному ухудшению зрения, повышению утомляемости и, как следствие, снижение эффективности любой деятельности. В помещениях, где выполняются любые виды работ, и прилегающих территориях необходимо во-первых соблюдать определенные правила организации, и во-вторых — следить за уровнем освещенности, а так же уровнем пульсации светового потока от различных источников. Коэффициент пульсации освещенности (Кп) является характеристикой относительной глубины колебаний освещенности в результате изменения во времени светового потока источников света. Контроль уровня пульсации — очень важная организационная мера, т. к. несоблюдение требований по уровню коэффициента пульсации приводит к повышенной утомляемости, ухудшению зрения, и, как следствие, к ухудшению производственных показателей.

Вложенные файлы: 1 файл

Diplom.doc

— 4.02 Мб (Скачать файл)

minl0 btfsc EminL, 0

call adctomin

goto metka2

 

metka2 bcf STATUS, 5

bcf STATUS, 6

movf EmaxH, W ;сравнить новое значение с предыдущим максимумом

xorwf ADRESH, 0 ;с помощью операции побитового исключающего ИЛИ

movwf X1

btfsc X1, 1

goto maxh1

btfsc X1, 0

goto maxh0

 

movf EmaxL, W

bsf STATUS, 5

xorwf ADRESL, 0

bcf STATUS, 5

movwf X2

btfsc X2, 7

goto maxl7

btfsc X2, 6

goto maxl6

btfsc X2, 5

goto maxl5

btfsc X2, 4

goto maxl4

btfsc X2, 3

goto maxl3

btfsc X2, 2

goto maxl2

btfsc X2, 1

goto maxl1

btfsc X2, 0

goto maxl0

 

 

maxh1 btfss EmaxH, 1 ;и если новое значение больше, чем

call adctomax ;предыдущий максимум,

goto metka1  ;то переписать значение максимума

maxh0 btfss EmaxH, 0

call adctomax

goto metka1

maxl7 btfss EmaxL, 7

call adctomax

goto metka1

maxl6 btfss EmaxL, 6

call adctomax

goto metka1

maxl5 btfss EmaxL, 5

call adctomax

goto metka1

maxl4 btfss EmaxL, 4

call adctomax

goto metka1

maxl3 btfss EmaxL, 3

call adctomax

goto metka1

maxl2 btfss EmaxL, 2

call adctomax

goto metka1

maxl1 btfss EmaxL, 1

call adctomax

goto metka1

maxl0 btfss EminL, 0

call adctomax

goto metka1

 

adctomin movf ADRESH, W

movwf EminH

bsf STATUS, 5

movf ADRESL, W

bcf STATUS, 5

movwf EminL

goto metka1

 

adctomax movf ADRESH, W

movwf EmaxH

bsf STATUS, 5

movf ADRESL, W

bcf STATUS, 5

movwf EmaxL

goto metka1

 

;представить значение регистров  EminH и EminL

;в десятичном виде 

;и записать количество единиц,

;десятков, сотен и тысяч в  X1, X2, X3 и X4 соответственно

 

bintodec movlw 0x00

movwf X1

movwf X2

movwf X3

movwf X4

 

movlw 5

btfsc EminH, 1

addwf X3

movlw 1

btfsc EminH, 1

addwf X2

movlw 2

btfsc EminH, 1

addwf X1

 

movlw 2

btfsc EminH, 0

addwf X3

movlw 5

btfsc EminH, 0

addwf X2

movlw 6

btfsc EminH, 0

addwf X1

 

 

movlw 1

btfsc EminL, 7

addwf X3

movlw 2

btfsc EminL, 7

addwf X2

movlw 8

btfsc EminL, 7

addwf X1

 

 

btfsc X1, 4

call incX2

btfss X1, 3

goto zn7

btfsc X1, 2

call incX2

btfss X1, 3

goto zn7

btfsc X1, 1

call incX2

 

 

zn7 movlw 6

btfsc EminL, 6

addwf X2

movlw 4

btfsc EminL, 6

addwf X1

 

btfsc X1, 4

call incX2

btfss X1, 3

goto pzn6

btfsc X1, 2

call incX2

btfss X1, 3

goto pzn6

btfsc X1, 1

call incX2

 

pzn6 btfsc X2, 4

call incX3

btfss X2, 3

goto zn6

btfsc X2, 2

call incX3

btfss X2, 3

goto zn6

btfsc X2, 1

call incX3

 

zn6 movlw 3

btfsc EminL, 5

addwf X2

movlw 2

btfsc EminL, 5

addwf X1

 

btfsc X1, 4

call incX2

btfss X1, 3

goto pzn5

btfsc X1, 2

call incX2

btfss X1, 3

goto pzn5

btfsc X1, 1

call incX2

 

pzn5 btfsc X2, 4

call incX3

btfss X2, 3

goto zn5

btfsc X2, 2

call incX3

btfss X2, 3

goto zn5

btfsc X2, 1

call incX3

 

 

zn5 movlw 1

btfsc EminL, 4

addwf X2

movlw 6

btfsc EminL, 4

addwf X1

 

btfsc X1, 4

call incX2

btfss X1, 3

goto ppzn4

btfsc X1, 2

call incX2

btfss X1, 3

goto ppzn4

btfsc X1, 1

call incX2

 

ppzn4 btfsc X2, 4

call incX3

btfss X2, 3

goto pzn4

btfsc X2, 2

call incX3

btfss X2, 3

goto pzn4

btfsc X2, 1

call incX3

 

pzn4 btfsc X3, 4

call incX4

btfss X3, 3

goto zn4

btfsc X3, 2

call incX4

btfss X3, 3

goto zn4

btfsc X3, 1

call incX4

 

 

zn4 movlw 8

btfsc EminL, 3

addwf X1

 

btfsc X1, 4

call incX2

btfss X1, 3

goto ppzn3

btfsc X1, 2

call incX2

btfss X1, 3

goto ppzn3

btfsc X1, 1

call incX2

 

ppzn3 btfsc X2, 4

call incX3

btfss X2, 3

goto pzn3

btfsc X2, 2

call incX3

btfss X2, 3

goto pzn3

btfsc X2, 1

call incX3

 

pzn3 btfsc X3, 4

call incX4

btfss X3, 3

goto zn3

btfsc X3, 2

call incX4

btfss X3, 3

goto zn3

btfsc X3, 1

call incX4

 

 

zn3 movlw 4

btfsc  EminL, 2

addwf X1

 

btfsc X1, 4

call incX2

btfss X1, 3

goto ppzn2

btfsc X1, 2

call incX2

btfss X1, 3

goto ppzn2

btfsc X1, 1

call incX2

 

ppzn2 btfsc X2, 4

call incX3

btfss X2, 3

goto pzn2

btfsc X2, 2

call incX3

btfss X2, 3

goto pzn2

btfsc X2, 1

call incX3

 

pzn2 btfsc X3, 4

call incX4

btfss X3, 3

goto zn2

btfsc X3, 2

call incX4

btfss X3, 3

goto zn2

btfsc X3, 1

call incX4

 

 

zn2 movlw 2

btfsc EminL, 1

addwf X1

 

btfsc X1, 4

call incX2

btfss X1, 3

goto ppzn1

btfsc X1, 2

call incX2

btfss X1, 3

goto ppzn1

btfsc X1, 1

call incX2

 

ppzn1 btfsc X2, 4

call incX3

btfss X2, 3

goto pzn1

btfsc X2, 2

call incX3

btfss X2, 3

goto pzn1

btfsc X2, 1

call incX3

 

pzn1 btfsc X3, 4

call incX4

btfss X3, 3

goto zn1

btfsc X3, 2

call incX4

btfss X3, 3

goto zn1

btfsc X3, 1

call incX4

 

 

zn1 movlw 1

btfsc EminL, 0

addwf X1

 

btfsc X1, 4

call incX2

btfss X1, 3

goto ppzn0

btfsc X1, 2

call incX2

btfss X1, 3

goto ppzn0

btfsc X1, 1

call incX2

 

ppzn0 btfsc X2, 4

call incX3

btfss X2, 3

goto pzn0

btfsc X2, 2

call incX3

btfss X2, 3

goto pzn0

btfsc X2, 1

call incX3

 

pzn0 btfsc X3, 4

call incX4

btfss X3, 3

goto zn0

btfsc X3, 2

call incX4

btfss X3, 3

goto zn0

btfsc X3, 1

call incX4

 

zn0 nop

 

ASCII  movlw 0x30

addwf X1

addwf X2

addwf X3

addwf X4

 

return

 

 

 

incX2 movlw 1

addwf X2

movlw 10

subwf X1

return

incX3 movlw 1

addwf X3

movlw 10

subwf X2

return

incX4 movlw 1

addwf X4

movlw 10

subwf X3

return

 

 

;запись значений в память 

 

tomem  movlw 0x2100  ;прочитать значение нулевого адреса памяти,

call dataread ;в котором хранится адрес последней занятой значением ячейки + 1

bcf STATUS, 5

bsf STATUS, 6

addwf EEADR, 1 ;и записать это значение в EEADR

 

bcf STATUS, 6

movf osv1, W  ;записать значение старшего байта

bsf STATUS, 6 ;среднего значения освещенности

movwf EEDATA  ;в EEDATA

call datawrite ;инициировать запись

 

bsf  STATUS, 6

movlw 1  ;увеличить значение EEADR на 1

addwf EEADR, 1 ;и повторить

bcf STATUS, 6

movf osv2, W  ;записать значение младшего байта

bsf STATUS, 6 ;среднего значения освещенности

movwf EEDATA  ;в EEDATA

call datawrite

 

bsf  STATUS, 6

movlw 1  ;увеличить значение EEADR на 1

addwf EEADR, 1 ;и повторить запись

bcf STATUS, 6

movf kpuls, W ;записать значение коэффициента пульсации

bsf STATUS, 6 ;в EEDATA

movwf EEDATA

call datawrite

 

bsf  STATUS, 6

movlw 1  ;увеличить значение

addwf EEADR, 1 ;EEADR на 1

movlw 0x2100  ;вычесть из этого значения

subwf EEADR, 0 ;2100h

movwf EEDATA

movlw 0x2100  ;и записать

movwf EEADR  ;в нулевую ячейку памяти EEPROM

call datawrite

 

return

 

;функция вывода информации из  памяти на экран 

 

frommem  movlw 0  ;прочитать значение нулевой ячейки

movwf ADDR  ;памяти EEPROM

movlw 0x2100

call dataread

movwf X1

movf X1, W

addwf ADDR  ;добавить его к ADDR

movlw 0x20FD

addwf ADDR

movf shift, W ;так же добавить к ADDR

addwf ADDR  ;значение счетчика просмотренных результатов

 

movf ADDR, W  ;ограничение пролистываний измерений

subwf X1, 0  ;вверх

btfss STATUS, 2

goto $+4

movlw 3

subwf ADDR

subwf shift

 

movlw 0xFE  ;и вниз

subwf ADDR, 0

btfss STATUS, 2

goto $+4

movlw 3

addwf ADDR

addwf shift

 

 

 

movf ADDR, W  ;прочитать значение по адресу ADDR

call dataread

movwf osv1  ;записать его в старший байт среднего значения освещенности

movlw 1

addwf ADDR  ;увеличить значение ADDR

movf ADDR, W  ;прочитать значение по новому адресу

call dataread

movwf osv2  ;записать в младший байт среднего значения освещенности

movlw 1

addwf ADDR  ;увеличить ADDR

movf ADDR, W  ;

call dataread ;прочитать значение по новому адресу

movwf kpuls  ;записать значение в переменную, соответствующую коэффициенту пульсации

call output  ;вызвать функцию вывода информации на экран

 

return

Информация о работе Разработка устройства для измерения освещенности и коэффициента пульсации светового потока