Basic для PIC микроконтроллеров Пн, 21.05.2012, 14:57



Переводчик/Translator

   
Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Swordfish
Проекты на PIC, программы для которых написаны на Basic в программе SwordFish
Proton PICBasic
Проекты на Proton+ PICBasic.
Microbasic
Интересные проекты на Microbasic
PICBasicPro
Проекты пользователей на PIC микроконтроллерах, программы для которых написаны в PICBasicPro
PIC Simulator IDE
Программы, написанные в PICSimulatorIDE
Bascom
Данный раздел предназначен для размещения статей, относящихся к разработкам на АВР на Basic в среде Bascom
Ассемблер, Си
Проекты на ассемблере или Си
Полезные материалы
Здесь размещаются статьи об электронике в целом. Полезные приемы и способы решения различных задач.

Облако тегов
Протон термометр авто ик Brestart flowcode дисплей Давление света ЗУ мнемоники компилятор графическое программирование команды Ключ подключение interrupt ошибки печатная плата box Library Call BCD плата Swordfish IR Decode Программирование Pascal Logger picbasicpro терморегулятор статья полезные материалы protonheadermaker онлайн инструменты утилиты mikrobasic протеус даташит АЦП Ассемблер IR NEC система исчисления КМОП рисование CF_INIT TMR0 стабилизатор ds18B20 Термологгер примеры хилинский datasheet ёмкость Woodman блок питания Программа ASIN Asm...Endasm LM35 INT PDU справка PureBasic MicroBasic онлайн-инструменты пульт ДУ Измерение баском разводка Nokia 3310 книги термостат Ультразвук свет PICBASIC программы USB Basic разработка Plugin сервис PROTON таймер порт Button programmer светодиодный индикатор резонатор кнопки процессор HID задержка Siemens PIC статьи Pic Basic com порт температура лекарство Конвертер MPLAB разрешение паяльная станция Delphi подсчет дизайн rfPIC Проекты Busin picsimulatoride Плагин Branch сигнализация ATX таймеры пример compiler кнопка bascom led ремонт ИК NEC Visual Basic 6 Bstop схема разводка плат proteus LCD lдисплей библиотеки отладчик датчик справочник прибор IR симулятор динамическая индикация бейсик для PIC прерывания акустика ASCII бейсик PIC16F84 AVR замок PCB отладка измерения интересное Visual Basic программатор

Главная » Статьи » Статьи и проекты » Proton PICBasic

[ Добавить статью ]



Применение динамической индикации. Пример 4 - Сдвиговый регистр 74НС164

В этой статье рассмотрим работу сдвигового регистра 74HC164. Этот регистр так же как и 74HC595 предназначен для последовательного приема и параллельного отображения данных. Также подходит в случае, когда нужно сэкономить порты. Стоимость его (в Витебске) ненамного дороже 595-го - 6,1RUR против 5,8RUR.
Рассмотрим внутреннюю схему регистра:



Как видно, он мало чем отличается от 595-го, но есть пара особенностей:


  • Отсутствует вход защелки данных, поэтому может наблюдаться мерцание символов при отправке и отображении числа.
  • В регистре присутствует вход для сброса принятых данных (см. комментарии в коде)
  • Суммарный отдаваемый ток равен 50мА, поэтому необходимо рассчитывать резисторы т.о. чтобы ток через каждый отдельный сегмент не превышал 6,25мА (с учетом точки).


Расположение выводов на мой взгляд уступает 595-му...

Схема из предыдущих примеров, но с использованием двух сдвиговых регистров 74HC164:



Ну и сам код:

'Счетчик c динамической индикацией на сдвиговом регистре 74HC164
Device 16F876A
'----------------------------Предустановки----------------------------------------------------------
Config CP_OFF, DEBUG_OFF, WRT_OFF, CPD_OFF, LVP_OFF, BODEN_OFF, PWRTE_ON, WDT_OFF, HS_OSC
Xtal 4
'----------------------------------Настройки портов-------------------------------------------------
PortB_Pullups = off 'Выключить подтяжку резисторов к порту PORTB
TRISA = %11111111
TRISB = %00000000
TRISC = %00000000
PORTB = %00000000
PORTC = %00000000
'-----------------------------------Конфигурация переменных-----------------------------------------
Symbol Rst = PORTB.0 'Вывод для сброса сдвигового регистра
Symbol Clock = PORTB.1 'Вывод для тактовых импульсов для сдвигового регистра
Symbol DTA = PORTB.2 'Вывод для передачи данных для сдвигового регистра
Dim Value As Byte 'Переменная для осуществления табличного конвертирования числа
Dim Ind As Word 'Переменная для вывода индицируемого значения величин в Portb
Dim n As Byte 'Переменная для выделения из числа нужного разряда
Dim i As Word 'Переменная для счетчика цифр
Dim j As Byte 'Переменная для организации задержки счета
'-------------------------------------Главная программа---------------------------------------------
Start:
For i = 0 To 9999 Step 1
For j = 0 To 10 Step 1
DelayMS 1
Ind = i
GoSub DI
Next j
Next i
GoTo Start
End
;------------------------------Подпрограмма динамической индикации----------------------------------
DI:
n = Ind Dig 0 'Выделяем из числа единицы
GoSub Convert 'и отправляем на табличную конвертацию
Rst = 1 'Сбрасываем сдвиговые регистры сигналом RESET
SHOut DTA, Clock, msbfirst, [8] 'Проталкиваем в нижний регистр бит для зажигания разряда № 4
SHOut DTA, Clock, msbfirst, [Value] 'Проталкиваем в верхний регистр сконвертированный код для единиц
DelayMS 2 'Задержка для отображения разряда 4
Rst = 0 'Отпускаем сброс
'
n = Ind Dig 1 'Выделяем из числа десятки
GoSub Convert 'и отправляем на табличную конвертацию
Rst = 1 'Сбрасываем сдвиговые регистры сигналом RESET
SHOut DTA, Clock, msbfirst, [4] 'Проталкиваем в нижний регистр бит для зажигания разряда № 3
SHOut DTA, Clock, msbfirst, [Value] 'Проталкиваем в верхний регистр сконвертированный код для десятков
DelayMS 2 'Задержка для отображения разряда 3
Rst = 0 'Отпускаем сброс
'
n = Ind Dig 2 'Выделяем из числа сотни
GoSub Convert 'и отправляем на табличную конвертацию
Rst = 1 'Сбрасываем сдвиговые регистры сигналом RESET
SHOut DTA, Clock, msbfirst, [2] 'Проталкиваем в нижний регистр бит для зажигания разряда № 2
SHOut DTA, Clock, msbfirst, [Value] 'Проталкиваем в верхний регистр сконвертированный код для сотен
DelayMS 2 'Задержка для отображения разряда 2
Rst = 0 'Отпускаем сброс
'
n = Ind Dig 3 'Выделяем из числа тысячи
GoSub Convert 'и отправляем на табличную конвертацию
Rst = 1 'Сбрасываем сдвиговые регистры сигналом RESET
SHOut DTA, Clock, msbfirst, [1] 'Проталкиваем в нижний регистр бит для зажигания разряда № 1
SHOut DTA, Clock, msbfirst, [Value] 'Проталкиваем в верхний регистр сконвертированный код для тысяч
DelayMS 2 'Задержка для отображения разряда 1
Rst = 0 'Отпускаем сброс
'-------------------------------Подпрограмма табличной конвертации числа----------------------------
Convert:
Value = LookUpL n, [192,249,164,176,153,146,130,248,128,144]
Return

Замечания по коду: как видно, отличий очень мало от предыдущего примера. Если использовать всего один сдвиговый регистр, то итоговый код индикации будет аналогичен, рассмотренному в примере 2. В этом случае мерцания не будет, поскольку разряды могут включаться в нужное время (после вывода цифры в регистр)

Прикрепления:

Поделись с миром:

Источник:

Категория: Proton PICBasic | Добавил: S_moke (11.01.2012) | Автор: S_moke E W
Просмотров: 1379 | Комментарии: | Теги: | Рейтинг: 5.0/5
Всего комментариев: 2
0  
2 MiXaS   (10.02.2012 10:33)
+1

+2  
1 vanish   (11.01.2012 20:16)
+1

Форма входа
Логин:
Пароль:


Статистика


Онлайн всего: 7
Гостей: 6
Пользователей: 1

tesla88

Поиск

Copyright Slazonger © 2012Создать сайт бесплатно