рефераты рефераты
Главная страница > Дипломная работа: Разработка светодиодной матрицы  
Дипломная работа: Разработка светодиодной матрицы
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Дипломная работа: Разработка светодиодной матрицы

 org 0

;******** Установка направл-я работы порта A: RA7, RA6 - выходы, RA5, RA4, RA3 - входы, RA2, RA1, RA0 - выходы

;******** Установка направл-я работы порта B: RB7, RB6, RB5, RB4, RB3, RB2 - выходы, RB1, RB0 - входы *********

start movlw .7 ;

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

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

 movlw .248 ; 11111000

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

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

 movlw .49 ; Записать конфигурацию порта A в аккумулятор (W). .49=00110001

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

 movlw .7 ; Записать конфигурацию порта В в аккумулятор (W). .3=00000111

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

 bcf Status,0 ; Сбросить флаг переноса (С) (после старта он может быть любым)

;******** Загрузка данных для фреймов из EEPROM в ОЗУ *******************************************************

;--------- Сначала прочитаем первый байт - узнаем, сколько фреймов надо считать ------------------

 movlw .0 ; банк менять не надо, мы уже в первом банке

 movwf EEADR ; установить адрес для чтения из EEPROM

bsf EECON1,0 ; чтение

 movf EEDATA,0 ; запись прочитанного байта в аккумулятор

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

 movwf Fr_kol ; сохранение прочитанного байта в Fr_kol

;-------- Fr_kol*5+1 - узнаем сколько байт надо считать --------------------------

 rlf Fr_kol,0 ; умножаем на 2

 movwf Temp

 rlf Temp,0 ; еще на 2 (после этой команды в аккумуляторе Fr_kol*4)

 addwf Fr_kol,0 ; после этого в аккумуляторе Fr_kol*5

 movwf Temp ; сохраняем это значение в Temp

 incf Temp,1 ; теперь Temp=Fr_kol*5+

;---------- Считываем Fr_kol*5+1 байт ----------------------------------------------

 movlw 28h ; считанные данные сохраняем начиная с этого адреса (первый байт в Fr_cikl_kol и далее...)

 movwf FSR ; адрес для косвенной адресации

 movlw .1 ; начинаем читать EEPR

 movwf Adr ; с адреса 1

zagruzka bsf Status,5 ; перейти в первый банк

 movwf EEADR ; загружаем из аккумулятора адрес для чтения из EEPROM

 bsf EECON1,0 ; чтение

 movf EEDATA,0 ; запись прочитанного байта в аккумулятор

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

 movwf INDF ; сохраняем считанный байт по адресу, записанному в FSR

 incf FSR,1 ; увеличиваем адрес ОЗУ

 incf Adr,1 ; увеличиваем адрес EEPROM

 movf Adr,0 ; загружаем адрес EEPROM в аккумулятор

 decfsz Temp,1 ; если считали все байты - следующая команда пропускается

 goto zagruzka

;**************************************************************************************************

;******** Основная прога **************************************************************************

effect movlw 29h ; загружаем адрес начала первого фрейма в ОЗУ (2h) в переменную Adr

 movwf Adr ;

 movf Fr_kol,0 ; загружаем кол-во фреймов

 movwf Fr_sch ; в счетчик фреймов

show movf Fr_cikl_kol,0 ; загружаем кол-во показов одного фрейма

 movwf Fr_cikl ; в счетчик показов фрейма

povtor call show_frame ; показываем один фрейм Fr_cikl кол-во раз

 decfsz Fr_cikl,1

 goto povtor

 movlw .5 ; переходим к следующему фрейму (сдвигаем Adr на 5)

 addwf Adr,1

 decfsz Fr_sch,1 ; уменьшаем счетчик фреймов для показа

 goto show ; если не все наборы показаны, то переходим к следующему

 goto effect ; если все, то начинаем сначала

;*********************************************************************************************

;********* Процедура показа одного фрейма ****************************************************

show_frame movf Adr,0 ; загружаем в FSR адрес начала фрейма

 movwf FSR

 movlw b'00000001' ; начинаем с первой строки

 movwf Strok

show_next movf INDF,0 ; загружаем набор столбцов для выбранной строки

 movwf Stolb ; аккумулятор в stolb

 call in_ports

 call pause

 call erase

 incf FSR,1 ; следующий набор строк

 rlf Strok,1 ; переходим на следующую строку

btfss Strok,5 ; если 5-й бит strok = 1, то следующая команда пропускается

 goto show_next

 return

;******** Процедура включения строк и столбцов в соответствии с байтами Strok и Stolb ************

in_ports btfsc Stolb,0 ; если 0-й бит stolb = 0, то следующая команда пропускается

 bcf PortB,3 ; RB3=0 - вкл.1 столбец

 btfss Stolb,0 ; если 0-й бит stolb =1, то следующая команда пропускается

 bsf PortB,3 ; RB3=1 - выкл. 1 столбец

;--------------------------------------

 btfsc Stolb,1 ; если 1-й бит stolb = 0, то следующая команда пропускается

 bcf PortB,4 ; RB4=0 - вкл. 2 столбец

 btfss Stolb,1 ; если 1-й бит stolb =1, то следующая команда пропускается

 bsf PortB,4 ; RB4=1 - выкл. 2 столбе

;--------------------------------------

 btfsc Stolb,2 ; если 2-й бит stolb = 0, то следующая команда пропускается

 bcf PortB,5 ; RB5=0 - вкл. 3 столбец

 btfss Stolb,2 ; если 2-й бит stolb =1, то следующая команда пропускается

 bsf PortB,5 ; RB5=1 - выкл. 3 столбец

;--------------------------------------

 btfsc Stolb,3 ; если 3-й бит stolb = 0, то следующая команда пропускается

 bcf PortB,6 ; RB6=0 - вкл. 4 столбец

 btfss Stolb,3 ; если 3-й бит stolb =1, то следующая команда пропускается

 bsf PortB,6 ; RB6=1 - выкл. 4 столбец

;--------------------------------------

 btfsc Stolb,4 ; если 4-й бит stolb = 0, то следующая команда пропускается

 bcf PortB,7 ; RB7=0 - вкл. 5 столбец

 btfss Stolb,4 ; если 4-й бит stolb =1, то следующая команда пропускается

 bsf PortB,7 ; RB7=1 - выкл. 5 столбец

;-------- Строки -----------------------------------------------------------

 btfsc Strok,0 ; если 0-й бит strok = 0, то следующая команда пропускается

 bsf PortA,2 ; RA2=1 - вкл.1 строку

 btfss Strok,0 ; если 0-й бит strok =1, то следующая команда пропускается

 bcf PortA,2 ; RA2=0 - выкл.1 строку

;--------------------------------------

 btfsc Strok,1 ; если 1-й бит strok = 0, то следующая команда пропускается

 bsf PortA,3 ; RA3=1 - вкл.2 строку

 btfss Strok,1 ; если 1-й бит strok =1, то следующая команда пропускается

 bcf PortA,3 ; RA3=0 - выкл.2 строку

;--------------------------------------

 btfsc Strok,2 ; если 2-й бит strok = 0, то следующая команда пропускается

 bsf PortA,1 ; RA1=1 - вкл.3 строку

 btfss Strok,2 ; если 2-й бит strok =1, то следующая команда пропускается

 bcf PortA,1 ; RA1=0 - выкл.3 строку

;--------------------------------------

 btfsc Strok,3 ; если 3-й бит strok = 0, то следующая команда пропускается

 bsf PortA,7 ; RA7=1 - вкл.4 строку

 btfss Strok,3 ; если 3-й бит strok =1, то следующая команда пропускается

 bcf PortA,7 ; RA7=0 - выкл.4 столбец

;--------------------------------------

 btfsc Strok,4 ; если 4-й бит strok = 0, то следующая команда пропускается

 bsf PortA,6 ; RA6=1 - вкл.5 строку

 btfss Strok,4 ; если 4-й бит strok =1, то следующая команда пропускается

 bcf PortA,6 ; RA6=0 - выкл.5 строку

 return

;****** Пауза ******************************************************

pause movlw Cr

 movwf T_int ; загрузить кол-во циклов задержки

cikl3 decfsz T_int,1 ; если T_int = 0, следующая комада пропускается

 goto cikl3 ; внутренний цикл

 return

;****** Гашение всех светодиодов ***********************************

erase movf Strok,0

 movwf Temp

 movlw .0

 movwf Stolb

 movwf Strok

 call in_ports

 movf Temp,0

 movwf Strok

 return

;*******************************************************************************************************

 org 2100h ; EEPROM память

 de .6, .40 ; кол-во фреймов и кол-во показов одного фрейма (скорость)

 de b'00000100', b'00000100', b'00011111', b'00000100', b'00000100' ; первый фрейм

 de b'00001000', b'00000101', b'00001110', b'00010100', b'00000010' ; второй фрейм

 de b'00001000', b'00001011', b'00000100', b'00011010', b'00000010' ; третий фрейм

 de b'00010001', b'00001010', b'00000100', b'00001010', b'00010001' ; четвертый фрейм

 de b'00000010', b'00011010', b'00000100', b'00001011', b'00001000' ; пятый фрейм

 de b'00000010', b'00010100', b'00001110', b'00000101', b'00001000' ; шестой фрейм

 end

;--------------------------------------------------------------------------------------------------------------------------


ПРИЛОЖЕНИЕ Д

Схема электрическая принципиальная светодиодной матрицы


Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21

рефераты
Новости