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

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

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

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

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

Diplom.doc

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

goto nekn3  ;то следующие действия пропускаются

 

btfss WMODE, 5 ;если выбран MODE1,

goto $+6  ;то следующие действия пропускаются

bsf WMODE, 0 ;выбрать MODE1

bcf WMODE, 1

bcf WMODE, 2 ;обнулить управляющие биты

bcf WMODE, 3

goto nekn3

 

bcf WMODE, 0 ;выбрать MODE2, если был выбран MODE1

bsf WMODE, 1 ;

bsf WMODE, 5 ;выбран MODE2

bsf WMODE, 4 ;сбросить счетчик просмотренных результатов

 

nekn3 nop

 

 

btfss PORTB, 4  ;если не нажата кнопка ОЧИСТИТЬ ПАМЯТЬ

goto nekn4  ;то следующие действия пропускаются

bsf WMODE, 6 ;установить бит, инициирующий вызов функции очистки памяти

bsf WMODE, 0 ;перейти в MODE1

bcf WMODE, 1

nekn4 nop

 

 

 

bcf PORTB, 5  ;записать 0 в источники прерываний

bcf PORTB, 6  ;чтобы исключить несоответствие

bcf PORTB, 7  ;и выйти из прерывания

 

bsf STATUS, 5  

bsf STATUS, 6

bcf INTCON, 0  ;сбросить флаг прерывания

 

bcf STATUS, 5

bcf STATUS, 6

movf STATUS_TMP  ;восстановить значения основных регистров

movwf STATUS

movf W_TMP, W

 

 

retfie    ;выход из прерывания и возвращение в main

 

 

 

main nop

 

 

goto start

 

table addwf PCL

retlw 0x4f ;О

retlw 0x63 ;c

retlw 0xB3 ;в

retlw 0x65 ;e

retlw 0xe6 ;щ

retlw 0x65 ;e

retlw 0xbd ;н

retlw 0xbd ;н

retlw 0x6f ;o

retlw 0x63 ;c

retlw 0xbf ;т

retlw 0xc4 ;ь

retlw 0x3a ;:

 

retlw 0xa8 ;П

retlw 0x79 ;у

retlw 0xbb ;л

retlw 0xc4 ;ь

retlw 0x63 ;с

retlw 0x61 ;а

retlw 0xe5 ;ц

retlw 0xb8 ;и

retlw 0xc7 ;я

retlw 0x3a ;:

 

retlw 0xb8 ;и

retlw 0xb7 ;з

retlw 0xbc ;м

 

retlw 0x63 ;с

retlw 0x6f ;o

retlw 0x78 ;х

retlw 0x70 ;р

 

retlw 0xbe ;п

retlw 0x70 ;р

retlw 0x65 ;e

retlw 0xe3 ;д

 

retlw 0x63 ;с

retlw 0xbb ;л

retlw 0x65 ;e

retlw 0xe3 ;д

 

retlw 0x4f ;О

retlw 0xb6 ;ж

retlw 0xb8 ;и

retlw 0xe3 ;д

retlw 0x61 ;а

retlw 0xbd ;н

retlw 0xb8 ;и

retlw 0x65 ;е

 

retlw 0x43 ;С

retlw 0x6f ;o

retlw 0x78 ;х

retlw 0x70 ;р

retlw 0x61 ;а

retlw 0xbd ;н

retlw 0x65 ;е

retlw 0xbd ;н

retlw 0x6f ;o

 

 

 

;******** ИНИЦИАЛИЗАЦИИЯ КОНТРОЛЛЕРА  LCD********************************************************

start movlw 00000111b ;

movwf Cmcon  ;выключить компараторы и включить эти пины как цифровые входы/выходы

clrf PORTB  ;инициализация защелок порта А

clrf PORTD  ;инициализация защелок порта В

bcf STATUS,6 ;

bsf STATUS,5 ;Перейти в 1-й банк (установить в 1 5-й бит регистра STATUS).

movlw 11111000b ;Записать конфигурацию порта B в аккумулятор (W).

movwf TRISB  ;Скопировать конфигурацию порта B из W в регистр TrisA

movlw 00000000b ;Записать конфигурацию порта D в аккумулятор (W).

movwf TRISD  ;Скопировать конфигурацию порта D из W в регистр TRISB.

bcf STATUS,5 ;Перейти в 0-й банк (установить в 0 5-й бит регистра STATUS).

;******** ИНИЦИАЛИЗАЦИЯ ЖКИ ***************************************************************************

;******** Пауза более 30 мс + FUNCTION SET **************************************************************

movlw 00111000b ;DB7...DB0=00111000

movwf M_byte  ;записать это значение в байт сообщения

call in_port  ;запись в порт

bcf PORTB, 1 ;RS=0

bcf PORTB, 2 ;RW=0

call pause3

call zapis               ;

;******** Пауза более 39 мкс *****************************************************************************

call pause1

;******** Продолжение инициализации DISPLAY ON/OFF MODE **************************************************

movlw 00001110b ;DB7...DB0=00001110

movwf M_byte  ;записать это значение в байт сообщения

call in_port  ;запись в порт

call zapis  ;

;******** Пауза более 39 мкс *****************************************************************************

call    pause1

;******** Продолжение инициализации  DISPLAY CLEAR ********************************************************

movlw 00000001b ;DB7...DB0=00000001

movwf M_byte  ;записать это значение в байт сообщения

call in_port  ;запись в порт

call zapis  ;

;******** Пауза более 1,53 мс ****************************************************************************

call pause2

;******** Продолжение инициализации  ENTRY MODE SET *******************************************************

movlw 00000110b ;DB7...DB0=00000110

movwf M_byte  ;записать это значение в байт сообщения

call in_port  ;запись в порт

call zapis  ;

;******** Пауза более 1,53 мс ****************************************************************************

call pause2

call pause1

;******** Продолжение инициализации DISPLAY ON/OFF CONTROL SET *******************************************************

movlw 00001100b ;DB7...DB0=00001100

movwf M_byte  ;записать это значение в байт сообщения

call in_port  ;запись в порт

call zapis  ;

;******** Пауза более 39 мкс *****************************************************************************

call pause1

;******** Инициализация дисплея закончена  ****************************************************************

;******** Вывод ******************************************************************************************

 

 

 

movlw 0  ;обнулить

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

 

bsf STATUS, 5

bsf STATUS, 6

movlw 10001000b ;разрешены только прерывания по изменению сигнала на RB4:RB7

movwf INTCON  ;выводы RB5, RB6 и RB7 соответствуют кнопкам КНОПКА1, КНОПКА2 и РЕЖИМ соотв.

bcf STATUS, 5

bcf STATUS, 6

 

 

;если память очищена, и в  ней нет ни одного значения, в т.ч. номера первой незанятой  ячейки 

;который хранится в нулевой  ячейке памяти EEPROM,

;в эту ячейку записывается  значение 1

 

movlw 0x2100

call dataread

movwf M_byte

movlw 0xFF

subwf M_byte, 0

btfsc STATUS, 2

 

goto clrmem

 

movlw 0x01  ;если в нулевой ячейке памяти

subwf M_byte  ;записано 01 (память пуста)

btfsc STATUS, 2 ;установить бит

bsf WMODE, 7 ;означающий, что память пуста, в 1

 

 

 

bsf WMODE, 0 ;при включении выбрать режим

bcf WMODE, 1 ;MODE1

 

 

waiti nop   ;ожидание,

 

btfsc WMODE, 6 ;если пользователь захотел очистить память,

goto clrmem  ;очистить память

 

btfsc WMODE, 7 ;если память очищена, то перейти

goto MODE1  ;в MODE1

 

btfsc WMODE, 0 ;переход в режим MODE1

goto MODE1  ;если 0 бит WMODE = 1

 

btfsc WMODE, 1 ;переход в режим MODE2

goto MODE2  ;если 1 бит WMODE = 1

 

goto waiti

 

;

 

MODE1 nop

 

bcf WMODE, 6 

 

clrf osv1

clrf osv2

clrf kpuls

bcf WMODE, 5 ;выбран MODE1

 

movlw 00000001b ;очистить экран

movwf M_byte  ;

bcf PORTB, 1

call in_port  ;

call zapis  ;

bsf PORTB, 1

call pause3

 

call defaultprint ;вывести слова "Освещенность" и "Пульсация"

call knmode1  ;вывести названия кнопок в MODE1

 

waitizm btfsc WMODE, 5 ;если вдруг пользователь захочет перейти в другой режим,

goto waiti  ;перейти в цикл ожидания выбора режима

btfsc WMODE, 6 ;если пользователь захочет очистить память

call clrmem  ;очистить память

btfss WMODE, 2 ;ожидание нажатия кнопки "изм",

goto waitizm  ;которая инициирует процесс измерения

 

call printwait

call izm  ;измерение

metka3 nop

call nprintwait

 

call output  ;вывод на экран

bcf WMODE, 2 ;сброс флага инициации измерения в 0

 

bcf WMODE, 3

 

waits btfsc WMODE, 5 ;если пользователь захочет перейти в другой режим,

goto waiti  ;перейти в цикл ожидания выбора режима

btfsc WMODE, 6 ;если пользователь захочет очистить память

goto waiti  ;очистить память

btfsc WMODE, 2 ;если пользователь нажмет кнопку измерения

goto MODE1  ;вернуться в начало MODE1

btfss WMODE, 3 ;ожидание нажатия кнопки "сохр"

goto waits  ;которая инициирует сохранение результата в память

 

call tomem  ;сохранить результат

bcf WMODE, 3 ;сбросить флаг инициации сохранения в 0

bcf WMODE, 7 ;память не пуста

call printsaved ;вывести сообщение о том, что измерение сохранено

 

bcf WMODE, 0 ;сбросить флаг выбора режима

 

goto waiti   ;и перейти в режим ожидания

 

 

 

 

 

MODE2 nop

 

bsf WMODE, 5 ;выбран MODE2

 

movlw 00000001b ;очистить экран

movwf M_byte  ;

bcf PORTB, 1

call in_port  ;

call zapis  ;

call pause3

 

call knmode2  ;вывести названия кнопок в MODE2

call defaultprint ;вывести слова "Освещенность" и "Пульсация"

btfsc WMODE, 4 ;если бит сброса счетчика просмотренных результатов установлен в 1,

clrf shift  ;сбросить счетчик просмотренных сообщений

bcf WMODE, 4 ;обнулить флаг

call frommem  ;вывод результатов из памяти на экран

 

 

movlw 0

movwf M_byte

 

 

DivAdr movlw 1

addwf M_byte

movlw 3  ;подсчет номера измерения

subwf ADDR, 1

btfss STATUS, 2

goto DivAdr

 

 

movlw 0

movwf EminH

movf M_byte, W

movwf EminL

call bintodec ;результат нужно вывести в десятичном виде

 

movlw 0x9e  ;выбор позиции символа на экране

movwf M_byte

call in_port

bcf PORTB, 1

call zapis

call pause1

 

movlw 0x30  ;чтобы не выводить на экран 01, 02, 03 и т.д.

subwf X2, 0  ;вместо 1, 2, 3 соответственно

btfsc STATUS, 2 ;перед выводом на экран

goto znnom1  ;первый символ проверяется

;на соответствие нулю 

 

movf X2, W

movwf M_byte

call in_port

bsf PORTB, 1

call zapis

call pause1

 

znnom1 movf X1, W

movwf M_byte

call in_port

bsf PORTB, 1

call zapis

call pause1

 

 

bcf WMODE, 1 ;сбросить флаг выбора режима

 

goto waiti   ;и перейти к циклу ожидания выбора режима

 

 

clrmem bsf STATUS, 5

bsf STATUS, 6

bcf INTCON, 7

bcf STATUS, 5

movlw 0x2100

movwf EEADR

movlw 0x01

movwf EEDATA

call datawrite

call pause3

bsf WMODE, 7

bsf STATUS, 5

bsf STATUS, 6

bsf INTCON, 7

bcf STATUS, 5

bcf STATUS, 6

goto MODE1  ;после очистки памяти программа возвращается в MODE1

 

 

 

;функция вывода значений на экран

 

output  movf osv1, W  ;старший байт

movwf EminH

movf osv2, W  ;младший байт

movwf EminL

call bintodec ;представить в десятичной форме

 

movlw 0x8e  ;выбор позиции символа на экране

movwf M_byte

call in_port

bcf PORTB, 1

call zapis

call pause1

 

movlw 0x30  ;чтобы не выводить на экран 01, 02, 03 и т.д.

subwf X4, 0  ;вместо 1, 2, 3 соответственно

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