Разработка светодиодной матрицы
Общие принципы разработки устройств на микроконтроллерах и внедрения их в производство. Принцип действия матриц на основе светодиодов. Разработка функциональной схемы устройства управления светодиодной матрицей с использованием микроконтроллера.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 15.07.2010 |
Размер файла | 6,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
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 Cr2
movwf T_ext ; загрузить значение для внешнего цикла
cikl2 movlw Cr1
movwf T_int ; загрузить значение для внутреннего цикла
cikl3 decfsz T_int,1 ; если T_int = 0, следующая команда пропускается
goto cikl3 ; внутренний цикл
decfsz T_ext,1 ; если T_ext = 0, следующая команда пропускается
goto cikl2 ; внешний цикл
return
end
ПРИЛОЖЕНИЕ В
Программа для создания эффекта «Вращающийся крест»
;--------------------------------------------------------------------------------------------------------------------------
list p = 16f628a
__config 03F30h ; 11111100110001 - защиты памяти нет, низковольтное программирование запрещено,
; сброс по питанию запрещен, RA5/-MCLR работает как -MCLR, таймер вкл-я питания включен,
; сторожевой таймер - выключен, генератор - внутренний
;********* Переменные ************************************
CBLOCK 0x20 ; Начальный адрес блока
Temp ; обменник , 20h
Adr ; адрес фрейма в EEPROM или ОЗУ , 21h
T_int ; счетчик для паузы , 22h
Strok ; байт текущего состояния строк , 23h
Stolb ; байт текущего состояния столбцов , 24h
Fr_sch ; счетчик фреймов , 25h
Fr_cikl ; счетчик показов одного фрейма , 26h
Fr_kol ; количество фреймов , 27h
Fr_cikl_kol ; количество показов одного фрейма , 28h
;----- Свободная память ОЗУ в нулевом банке от 29h до 7Fh ---------------------------------
;----- Из этих 86 своб-х байт в первые 30 мы будем грузить наши фреймы ------------------
ENDC ;
;******** Константы ***************************************
Status equ 03h ; Регистр выбора банка
TrisA equ 05h ; Регистр выбора направления работы выводов порта А
TrisB equ 06h ; Регистр выбора направления работы выводов порта В
PortA equ 05h ; Регистр управления защелками порта А
PortB equ 06h ; Регистр управления защелками порта В
Cmcon equ 1Fh ; вкл/выкл компараторов
F equ 1 ; Результат направить в регистр.
FSR equ 04h ; регистр адреса при косвенной адресации
INDF equ 0h ; регистр косвенной адресации
Cr equ .50 ; значение счетчика для паузы
EEADR equ 1Bh ; адрес EEPROM
EECON1 equ 1Ch ; управляющий регистр для работы c EEPROM
EEDATA equ 1Ah ; регистр данных из/в EEPROM
;********************************************************
; Пусть у нас RA1, RA2, RA3, RA6, RA7 - выход строки
; RB3, RB4, RB5, RB6, RB7 - выходы столбцы
;********************************************************
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
;--------------------------------------------------------------------------------------------------------------------------
ПРИЛОЖЕНИЕ Д
Схема электрическая принципиальная светодиодной матрицы
Подобные документы
Разработка цифровых часов, отображающих время посредством светодиодной индикации. Выбор и обоснование структурной схемы и электрорадиоэлементов: резисторов, светодиодов. Определение средней наработки на отказ. Процесс программирования PIC-контроллера.
дипломная работа [1,1 M], добавлен 12.05.2016Назначение и область применения светодиодной информационной панели. Разработка структурной и принципиальной схемы. Блок (система) электропитания. Разработка печатной платы. Компоновка проектируемого устройства. Поиск и устранение неисправностей в проекте.
дипломная работа [65,4 K], добавлен 17.11.2010Характеристика элементов архитектуры и технических параметров микроконтроллера ATiny2313. Описание принципа работы светодиодной гирлянды и расчет её электрической цепи. Расчет и разработка электрической принципиальной схемы светодиодной гирлянды.
контрольная работа [492,3 K], добавлен 25.05.2014Особенности проектирования микропроцессорного устройства "Цифровой осциллограф". Выбор микроконтроллера, описание периферийных устройств. Разработка принципиальной схемы устройства и программы для микроконтроллера, осуществляющей все функции устройства.
курсовая работа [923,5 K], добавлен 24.12.2012Анализ влияния напряжения питания на работу микроэлектронных устройств. Принцип действия и характеристика устройств контроля напряжения. Выбор типа микроконтроллера. Функции, выполняемые супервизором. Разработка алгоритма и структурной схемы устройства.
диссертация [3,1 M], добавлен 29.07.2015Порядок описания и разработки структурной и функциональной схемы микропроцессорной системы на основе микроконтроллера К1816ВЕ31. Обоснование выбора элементов, разработка принципиальной схемы данной системы, программы инициализации основных компонентов.
курсовая работа [260,4 K], добавлен 16.12.2010Разработка и выбор функциональной схемы датчика электромагнитного расходомера. Формирование и исследование аналоговой, цифровой схемы. Расчет блока питания устройства. Порядок разработки алгоритма работы и программного обеспечения микроконтроллера.
курсовая работа [1,9 M], добавлен 19.08.2012Разработка функциональной и принципиальной схемы устройства, расчет его силовой части. Разработка системы управления: микроконтроллера, элементов системы, источники питания. Моделирование работы преобразователя напряжения, программного обеспечения.
дипломная работа [2,4 M], добавлен 22.08.2011Разработка структурной функциональной схемы устройства, его аппаратного обеспечения: выбор микроконтроллера, внешней памяти программ, устройства индикации, IGBT транзистора и драйвера IGBT, стабилизатора напряжения. Разработка программного обеспечения.
курсовая работа [495,1 K], добавлен 23.09.2011Разработка и описание структурно-функциональной схемы к динамику. Принципы построения устройства синтезатора звуковых сообщений, работа с таймером микроконтроллера. Выбор элементной базы. Разработка программного обеспечения, алгоритм и листинг программы.
курсовая работа [387,9 K], добавлен 24.12.2012