Телефонный номеронабиратель
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ
УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА
(национальный исследовательский университет) (СГАУ)
ФАКУЛЬТЕТ №5
кафедра радиотехнических устройств
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту по дисциплине:
«Цифровые устройства»
Телефонный номеронабиратель
Выполнил
Студент Евдокимов Н.М. группа 542
Руководитель
проекта Корнилин Д.В.
Работа защищена с оценкой______________
САМАРА 2012
РЕФЕРАТ
Курсовой проект.
Пояснительная записка: 27 с., 21 рис., 6 источников, 1 приложение.
Графическая документация: 1Л А4.
СИГНАЛ, МИКРОКОНТРОЛЛЕР, ЦАП, КЛАВИАТУРА, СХЕМА, АЛГОРИТМ, ПРОГРАММА, ФАЙЛ БЛОК ПИТАНИЯ.
Производится выбор микроконтроллера для устройства формирования положительных прямоугольных импульсов, а так же выполняется разработка принципиальной схемы. Выбор вспомогательных элементов конструкции и расчет токов и напряжений в устройстве. Составлен алгоритм программы. Разработана программа для микроконтроллера. Была произведена разработка блока питания для данного устройства.
Содержание
Введение
Первые микроконтроллеры компании MICROCHIP PIC16C5x появились в конце 80-х годов и благодаря своей высокой производительности и низкой стоимости составили серьёзную конкуренцию производимым в то время 8-разрядным МК с CISC-архитектурой.
Первое, что привлекает внимание в PIC-контроллерах — это простота и эффективность. В основу концепции PIC, единую для всех выпускаемых семейств, была положена RISC-архитектура с системой простых однословных команд, применение встроенной памяти программ и данных и малое энергопотребление.
Система команд базового семейства PIC18 содержит только 75 команд. Это сыграло свою роль в популяризации PIC-контроллеров. Все команды (кроме команд перехода) выполняются за один машинный цикл (или четыре машинных такта) с перекрытием по времени выборок команд и их исполнения, что позволяет достичь производительности до 5 MIPS при тактовой частоте 48 МГц.
Микроконтроллеры PIC имеют симметричную систему команд, позволяющую выполнять операции с любым регистром, используя любой метод адресации. Разработчики MICROCHIP так и не смогли отказаться от структуры с регистром-аккумулятором, необходимым участником всех операций с двумя операндами. Зато теперь пользователь может сохранять результат операции на выбор, где пожелает, в самом регистре-аккумуляторе или во втором регистре, используемом для операции.
Большинство PIC-контроллеров выпускаются с однократно программируемой памятью программ OTP с возможностью внутрисхемного программирования или масочным ROM. Для целей отладки предлагаются версии с ультрафиолетовым стиранием. Полное количество выпускаемых модификаций PIC-контроллеров составляет порядка пятисот наименований. Как утверждает MICROCHIP, продукция компании перекрывает весь диапазон применений 8-разрядных микроконтроллеров.
Особый акцент MICROСHIP делает на максимально возможное снижение энергопотребления для выпускаемых микроконтроллеров. При работе на частоте 4 МГц PIC-контроллеры, в зависимости от модели, имеют ток потребления меньше 1,5 мА, а при работе на частоте 32,768 КГц — ниже 15 мкА. Поддерживается “спящий” режим работы. Диапазон питающих напряжений PIC-контроллеров составляет 2,0...6,0 В.
Из программных средств отладки наиболее известны и доступны различные версии ассемблеров, а также интегрированная программная среда MPLAB. Российские производители программаторов и аппаратных отладочных средств также уделяют внимание PIC-контроллерам. Выпускаются как специализированные программаторы, такие как PICPROG, программирующие почти весь спектр PIC-микроконтроллеров, так и универсальные: UNIPRO, СТЕРХ, поддерживающие наиболее известные версии PIC.
1 Разработка структурной схемы устройства
Составим структурную схему проектируемого устройства.
Рисунок 1 — Структурная схема устройства
Основной задачей решаемой при составлении структурной схемы является определение, и рациональное совмещение блоков устройства, которые подключаются к микроконтроллеру.
Проектируемое устройство содержит следующие узлы:
Кварцевый резонатор, работает как тактирующее устройство микроконтроллера. Резонатор обеспечивает наиболее удобную, подходящую частоту тактового генератора.
Матричная клавиатура на 12 клавиш со схемой организации 3х4.
МК — микроконтроллер PIC18F2550.
Формирователь — представляющий собой электронный ключ.
Блок питания — для преобразования постоянного напряжения 12В в напряжение 5В.
2
Разработка принципиальной схемы
устройства
Принципиальная электрическая схема и перечень использованных элементов приведены в приложении А.
Устройство состоит из:
- микроконтроллера;
- клавиатуры;
- формирователя;
- блока питания.
2.1 Микроконтроллер PIC18F2550
Характеристики PIC18F2550:
- Высокоскоростная RISC архитектура.
- 75 инструкций.
- Все команды выполняются за один цикл, кроме инструкций переходов, выполняемых за два цикла.
- Тактовая частота (макс.)
DC – 48 МГц, тактовый сигнал,
- 32к FLASH памяти программ.
256 байт EEPROM памяти данных.
- Система прерываний (13 источников).
- 8-уровневый аппаратный стек.
- Прямой, косвенный и относительный режим адресации.
- Сброс по включению питания (POR).
- Таймер сброса (PWRT) и таймер ожидания запуска генератора (OST) после включения питания.
- Сторожевой таймер WDT с собственным RC генератором.
- Режим энергосбережения SLEEP.
- Выбор параметров тактового генератора.
- Высокоскоростная, энергосберегающая CMOS FLASH/EEPROM технология.
- Программирование в готовом устройстве (используется два вывода микроконтроллера).
- Широкий диапазон напряжений питания от 2,0 В до 5,5 В.
- Повышенная нагрузочная способность портов ввода/вывода (25мА).
- Малое энергопотребление:
– < 0.6 мА 3.0В, 4.0МГц,
– 20 мкА 3.0В. 32кГц,
– < 1мкА в режиме энергосбережения (SLEEP).
Характеристики периферийных модулей:
- Таймер 0: 8-разрядный таймер/счетчик с 8-разрядным программируемым предделителем.
- Таймер 1: 16-разрядный таймер/счетчик с возможностью подключения внешнего резонатора.
- Таймер 2: 8-разрядный таймер/счетчик с 8-разрядным программируемым предделителем и выходным делителем.
- Два модуля сравнение/захвата/ШИМ (ССР):
– 16-разрядный захват (макс. разрешающая способность 12,5 нс),
– 16-разрядное сравнение (макс. разрешающая способность 200 нс),
– 10-разрядный ШИМ.
- Многоканальный 10-разрядный АЦП.
- Последовательный синхронный порт MSSP (ведущий/ведомый режим), SPI (ведущий/ведомый режим), I2C.
- Последовательный синхронно-асинхронный приемопередатчик USART с поддержкой детектирования адреса.
- Детектор пониженного напряжения (BOD) для сброса по снижению напряжения питания (BOR).
Основные температурные и электрические характеристики МК PIC18F2550 приведены в таблице 2.1.
Таблица 2.1 Температурные и электрические характеристики МК PIC16F876
Название параметра (характеристики) |
Значение |
Предельная рабочая температура |
от –55°С до +125ºС |
Температура хранения |
от –65°С до +150ºС |
Напряжение VDD относительно VSS |
от –0,3 В до +7,5 В |
Напряжение относительно VSS |
от 0 В до +14 В |
Напряжение на остальных выводах относительно VSS |
от –0,3 В до VDD+0,3 В |
Максимальный ток вывода VSS |
300 мА |
Максимальный ток вывода VDD |
250 мА |
Макс. выходной ток стока канала ввода/вывода |
25 мА |
Макс. выходной ток истока канала ввода/вывода |
25 мА |
Макс. выходной ток стока |
200 мА |
Максимальный выходной ток истока |
200 мА |
Цоколёвка МК приведена на рисунке 2.1.
Рисунок 2 — Цоколевка PIC18F2550
Назначение используемых выводов приведены в таблице 2.2.
Таблица 2.2 Назначение используемых выводов МК
Обозн. вывода |
Номер выв. |
Назначение вывода |
OSC1, OSC2 |
9, 10 |
Подключается кварцевый резонатор |
1 |
Вход сброса МК | |
Vdd |
20 |
Положительное напряжение питания |
Vss |
8, 19 |
Общий вывод |
RA0 |
2 |
Порт A |
RB0…RB6 |
21..27 |
Порт B |
RX |
18 |
Выход последовательного порта, используется как выход генератора |
Кварцевый резонатор (ZQ1) служит для увеличения стабильности генерируемой частоты. Конденсаторы C1 и C2 предназначены для согласования работы кварцевого резонатора и микроконтроллера. Их емкость составляет 15 пФ для частоты 4 МГц.
Вывод MCLR МК соединен с питанием для сброса при включении питания.
2.2 Клавиатура
Клавиатура представляет собой матрицу клавиш размером 3х4, в ячейках которой находятся кнопки.
При опросе клавиатуры микроконтроллер работает следующим образом. На линиях RB3-RB6 логические единицы, как и на RB0-RB2. Через порты RB3-RB6 осуществляется перебор строк клавиатуры низкими логическими уровнями. Каждый раз после переключения строки считывается состояние линий RB0-RB2. Низкий уровень на этих линиях может появиться, только если нажата клавиша. Зная номер текущего активной строки, и определив номер столбца, в которой обнаружен нулевой уровень, можно определить номер нажатой клавиши.
Организация клавиш представлена на рисунке 3.
Рисунок 3 — Организация клавиатуры
Клавиша «#» служит для воспроизведения последнего набранного номера.
2.3 Формирующее устройство
В качестве формирующего устройства будем использовать электронный ключ. Исходя из задания, на нагрузке в 100Ом должен формироваться меандр амплитудой 25В. Используя эти данные рассчитаем ключ.
E=Uкэ нас+U; E=1+25=26В
Uвх0+Iкб0maxRmax > Uбэотс
Uвх1= Uбэотс + IбRб
Iб > =2,5млА
Исходя из расчётов, можно выбрать транзистор КТ3117A(Iкmax=400мА), R2=100Ом,
R3=750Ом (выбираем из ряда E24)
2.4 Блок питания
Для преобразования напряжения с12В на 5В а так же его стабилизации выберем стабилизатор компенсационного типа КР142ЕН5А, функциональная схема которого приведена на рисунке 4.
Рисунок 4 — стабилизатор компенсационного типа КР142ЕН5А
Схема включения К142ЕН5А приведена на рисунке 5.
Рисунок 5 — схема включения КР142ЕН5А
3
Разработка алгоритма управляющей
программы
При включении устройства происходит его инициализация. По умолчанию длительность импульса равна 100мс.
Из переменной NewKey считывается номер нажатой кнопки.
По линии RA0 выдается логическая единица и организуется модуляция заданного тона, в зависимости от номера нажатой кнопки, с помощью таймера 2 организуется постоянная длительность импульса 100мс.
Опрашивается клавиатура. Если есть нажатые клавиши, то их коды заносятся в память. По нажатию клавиши «#» из памяти воспроизводятся последний набранный номер длиной 24 символа. После этого процесс повторяется.
Общий алгоритм управляющей программы представлен на рисунке 6.
Рисунок 6 — Общий алгоритм управляющей программы
Рисунок 7 — Алгоритм подпрограммы инициализации портов
Рисунок 8 — Алгоритм подпрограммы инициализации таймера
Рисунок 9 — Алгоритм подпрограммы опроса клавиатуры
Рисунок 10— Алгоритм подпрограммы сканирования клавиатуры
Рисунок 11 — Алгоритм подпрограммы генерации
4 Разработка управляющей программы
LIST
TempC EQU 0x0c ; Временные регистры общего применения
TempD EQU 0x0d
TempE EQU 0x0e
PABuf EQU 0x20
PBBuf EQU 0x21
Count EQU 0x0f ; Счетчик,
MsdTime EQU 0x10 ; Старший байт.
LsdTime EQU 0x11 ; Младший байт,
KeyFlag EQU 0x12 ; Флаг клавиатуры,
keyhit EQU 0 ; Бит 0 - значит, клавиша нажата,
DebnceOn EQU 1
noentry EQU 2 ; Нет клавиши = 0.
ServKey EQU 3 ; Бит 3 - значит, обработка клавиши.
Debnce EQU 0x13
NewKey EQU 0x14
WBuffer EQU 0x2f
T EQU 100
T_IMPULS EQU 0x15
ODIN EQU 0x17
DES EQU 0x18
StatBuffer EQU 0x2e
OptionReg EQU 1
PCL EQU 2
; Макрос сохранения байта состояния и содержимого рабочего регистра в буфере
push macro
movwf WBuffer
swapf WBuffer
swapf STATUS, w
movwf StatBuffer
endm
; Макрос считывания байта состояния и содержимого рабочего регистра из буфера,
pop macro
swapf StatBuffer,w
movwf STATUS
swapf WBuffer, w
endm
org 0
goto Start ; Старт;
org 4; Сохраняем рабочий регистр и регистр состояния в момент прерывания.
push
movwf WBuffer
swapf WBuffer
swapf STATUS, w
movwf StatBuffer
;extern ServiceInterrupts
call ServiceInterrupts
pop
swapf StatBuffer,w
movwf STATUS
swapf WBuffer, w
retfie
Start
call InitPorts
call InitTimers
loop
btfsc KeyFlag,ServKey ; Проверка флага нажатия,
call ServiceKey ; Да, тогда обработка
call Generate; выдача импульса
goto loop
; Подпрограмма обработки нажатия клавиши. Msd - старшая цифра, Lsd - младшая цифра.
ServiceKey
movf NewKey,w ; Считывание регистра NewKey.
movwf TempE ; Сохранение в TempE.
swapf MsdTime,w ; Считывание Msd и перестановка полубайтов.
andlw B'11110000'; Обнуление младшего полубайта,
movwf MsdTime ; Сохранение,
swapf LsdTime,w ; Считывание Lsd и перестановка полубайтов,
andlw B'00001111' ; Обнуление старшего полубайта.
iorwf MsdTime ; Логическое сложение с Msd.
swapf LsdTime,w ; Считывание Lsd и перестановка полубайтов.
andlw B'11110000' ; Обнуление младшего полубайта,
iorwf TempE,w ; Логическое сложение с TempE.
movwf LsdTime ; Сохранение,
bcf KeyFlag,ServKey ; Сброс флага нажатии.
return ; Возврат
InitPorts
bsf STATUS,RP0 ; Банк 1.
movlw 1 ; RAO цифровые порты,
clrf TRISA ; RA0 - выходы,
clrf TRISB ; RB0-RB7 - выходы,
bcf STATUS,RP0 ; банк 0
clrf PORTA ; Обнуление порта A
clrf PORTB ; Обнуление порта В
return ; Возврат
; Частота тактового генератора - 4,096 MГц, частота командных циклов - 1,024 МГц что с предварительным делителем на 32 осуществляет инкрементацию RTCC каждые 31,25 мс.
;Модуль счета таймера - 96, поэтому прерывание будет происходить каждые 5 мс.
InitTimers
clrf MsdTime ; Сброс MsdTime
clrf LsdTime ; и IsdTime.
clrf KeyFlag ; Сброс флагов,
bcf STATUS,RP0 ; Банк 1.
movlw B'10000100' ; Предварительное деление на 32.
movwf OptionReg ;
bcf STATUS,RP0 ; Банк 0.
movlw B'00100000' ; Разрешение прерывания таймера,
movwf INTCON;
movlw .96 ; Предзагрузка таймера,
movwf TMR0 ; Начало счета,
retfie ; Выход из прерывания.
ServiceInterrupts
btfsc INTCON, T0IF ; Прерывание таймера?
goto ServiceRTCC ; Да, обработка.
clrf INTCON ; Нет, сброс INTC0N,
bsf INTCON,T0IF ; Разршение прерывания от таймера.
return ;
ServiceRTCC
movlw .96 ; Инициализация таймера,
movwf TMR0 ;
bcf INTCON,T0IF ; Сброс флага прерываний таймера,
btfsc PORTA, 0 ; Если бит 0 порта А равен единице,
call ScanKeys ; быстрое сканирование клавиатуры
return
; Сканируем клавиатуру 4x3 и выдаем номер клавиши в NewKey, ели клавиша была нажата. Если нет, обнуляем указатель keyhit. Подпрограмма устраняет «дребезг контактов». Клавиатура сканируется каждые 20 м
ScanKeys
btfss KeyFlag, DebnceOn ; Задержка окончена?
goto Scan1 ; Да, тогда сканирование клавиатуры.
decfsz Debnce ;Нет, тогда уменьшаем счетчик задержки
return ; Возвращаемся, если не 0
bcf KeyFlag, DebnceOn ; Сброс флага
return ; и возврат.
Scan1
call SavePorts ; Сохранение портов,
movlw B'1110111' ; Загрузка TempD.
movwf TempD ;
ScanNext
movf PORTB, w ;
bcf INTCON,RBIF ; Сброс флага прерывания от порта B
rrf TempD ; Правый сдвиг TempD.
btfss STATUS,C ; Перенос = 1?
;goto NoKey ; Нет, тогда окончание
movf TempD,w ; ИЛИ TempD и w
movwf PORTB ; и выдача в P0RT_B.
nop
btfss INTCON,RBIF ; Значение флага прерывания от порта В равно 1?
goto ScanNext ; Нет, тогда продолжаем,
btfsc KeyFlag, keyhit ; Последняя клавиша отпущена?
goto SKreturn ; Нет, тогда выход.
bsf KeyFlag,keyhit ; Устанавливаем флаг нажатия новой клавиши,
swapf PORTB,w ; Считывание порта 8-
movwf TempE ; Сохранение в TempE.
call GetKeyValue ; Считывание значения клавиши от 0 до F,
movwf NewKey ; Сохранение в NewKey.
bsf KeyFlag, ServKey ; Установка флага обработки клавиш,
bsf KeyFlag,DebnceOn ;
movlw 4
movwf Debnce ;: Изменение времени задержки.
call RestorePorts ; Возмещение портов,
return ; NoKey
bcf KeyFlag,keyhit ; Сброс флага,
goto SKreturn
; Соответствие номеров клавиш, строк, столбцов и портов.
GetKeyValue
clrf TempC ;
btfss TempD,3 ; Первая строка,
goto RowValEnd ;
incf TempC;
btfss TempD,2 ; Вторая строка.
goto RowValEnd ;
incf TempC ;
btfss TempD, 1 ; Третья строка.
RowValEnd
btfss TempE,0 ; Первый столбец?
goto GetValCom ; Да, считывание клавишей 1,2,3
btfss TempE, 1 ; Второй столбец?
goto Get456 ; Да. считывание 4,5,6
btfss TempE, 2 ; Третий столбец?
goto Get789 ; Да, считывание 7,8,9
Get0
bsf TempC,2 ;
Get789
bsf TempC, 3 ;
goto GetValCom ;
Get456
bsf TempC,2 ;
GetValCom
movf TempC, w ; Таблица номеров клавиш.
addwf PCL;
retlw 1;
retlw 2;
retlw 3;
retlw 4;
retlw 5;
retlw 6;
retlw 7;
retlw 8;
retlw 9;
retlw 0A ;
retlw 0;
; Сохраняем состояния портов А и В во время сканирования клавиатуры, SavePorts
SavePorts
movf PORTA, w
movwf PABuf ; Сохраняем Порт A.
movf PORTB, w
movwf PBBuf ; Сохраняем порт В.
movlw 0xff ; На всех линиях порта B высокий уровень,
movwf PORTB
bsf STATUS,RP0 ; Банк 1.
bcf OptionReg,7; Разрешаем подключение подтягивающих резисторов
movlw b'10001111' ; Младшие четыре разряда порта B входы,
movwf TRISB; старшие - входы.
bcf STATUS,RP0 ; Банк 0
return;
;Восстанавливаем порты А и B после сканирования клавиатуры,
RestorePorts
movf PBBuf,w; Восстановление содержимого
movf PORTB,w; порта В.
movf PABuf,w; Восстановление содержимого
movwf PORTA ; порта А.
bsf STATUS, RP0; Банк. 1.
bsf OptionReg, 7 ; Запрет "подтягивающих" резисторов,
clrf TRISA ; Все линии порта А - выходы,
clrf TRISB ; Все линии порта B выходы.
bcf STATUS,RP0 ; Банк 0
return
Generate
;загрузка в таймер значения 100мс
movlw -d'255'
;загрузка в таймер 1 значения константы
movwf TMR2L;
movlw 0xff
movwf TMR2H
;запуск таймера
bsf T1CON,TMR1ON
;ожидание переполнения
;загрузка в таймер
movlw LsdTime
;загрузка в таймер 2 значения нажатой кнопки
movwf TMR2L;
movlw 0xff
movwf TMR2H
;выдать лог. 1 на RC7
bsf TRISA,1
;запуск таймера
bsf T2CON,TMR2ON
;ожидание переполнения
wait1
movf TMR2H,w
BTFSS STATUS,Z
goto wait1
bsf TRISA,1
;выдать лог 0 на RC7
bcf T2CON,TMR2ON
;сброс переполнения
bcf STATUS,TMR1IF
;останов таймера
movlw -d'155';сразу отнимаем 100 от константы
subwf TMR2L,w
;загрузка длительности паузы
movwf TMR1L;
movlw 0xff
movwf TMR2H
;запуск таймера
bsf T2CON,TMR2ON;
;ожидание переполнения
wait2
movf TMR1H,w;
BTFSS STATUS,Z;
goto wait2
;останов таймера
bcf T2CON,TMR2ON
;сброс переполнения
bcf STATUS,TMR2IF
;останов таймера
bcf T1CON,TMR1ON
;сброс переполнения
bcf STATUS,TMR1IF
return
end
Заключение
В результате выполнения курсового проекта был разработан электронный телефонный номеронабиратель, а так же следующая документация:
- структурная схема,
- принципиальная электрическая схема,
- алгоритм функционирования устройства,
- алгоритм работы программы МК,
- листинг программы.
Разработанная конструкция отличается простотой схемотехнического решения, небольшим количеством использованных в схеме комплектующих элементов, является практически универсальной и может легко изменяться и расширяться.
Список использованной литературы
1 Фрунзе, А.В. Микроконтроллеры? Это же просто! [Текст]/А.В. Фрунзе
Т.1 – М.:ООО «ИД СКИМЕН», 2002. - 336 с.
2 Ульрих, В. А. Микроконтроллеры PIC18X7XX. [Текст]/ В. А. Ульрих
Изд. 2-е – М.: Наука и техника, 2002. - 320 с.
Приложение А
(обязательное)
Схема электрическая принципиальная