Главная » Статьи » Proton PICBasic |
Применение динамической индикации. Пример 2 - Управление 3 +nРазр.
В данном примере рассмотрим организацию вывода значения счетчика на ССИ и использованием сдвигового регистра 74HC595. Данный регистр хорош тем, что позволяет сэкономить 5 выводов от МК, а при применении двух регистров можно организовать восьмиразрядную ССИ с использованием всего трех выводов от МК. Здесь также имеются некоторые нюансы: 1) Вывод числа должен организовываться таким образом, чтобы первым с регистр загонялось число, а потом уже зажигаться разряд. Иначе при зажженном разряде будет подмигивание индикатора. Это происходит из-за того, что биты в регистр загоняются последовательно и последовательно проходят от вывода к выводу 2) Для отображения числа на разряде - данные после поступления нужно защелкнуть подав 1 на соответствующий вывод. Схема устройства: Код счетчика с отображением процесса счета на ССИ: 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 SH_CP PORTB.0 Symbol DS PORTB.1 Symbol ST_CP PORTB.2 Symbol R1 PORTC.0 'разряд индикатора Symbol R2 PORTC.1 'разряд индикатора Symbol R3 PORTC.2 'разряд индикатора Symbol R4 PORTC.3 'разряд индикатора 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 'и отправляем на табличную конвертацию R4 = 1 'Зажигаем 1-й справа разряд индикатора DelayMS 2 'Задержка для отображения цифры R4 = 0 'Гасим разряд ' n = Ind Dig 1 'Выделяем из числа десятки GoSub Convert 'и отправляем на табличную конвертацию R3 = 1 'Зажигаем 2-й справа разряд индикатора DelayMS 2 'Задержка для отображения цифры R3 = 0 'Гасим разряд ' n = Ind Dig 2 'Выделяем из числа сотни GoSub Convert 'и отправляем на табличную конвертацию R2 = 1 'Зажигаем 3-й справа разряд индикатора DelayMS 2 'Задержка для отображения цифры R2 = 0 'Гасим разряд ' n = Ind Dig 3 'Выделяем из числа тысячи GoSub Convert 'и отправляем на табличную конвертацию R1 = 1 'Зажигаем 4-й справа разряд индикатора DelayMS 2 'Задержка для отображения цифры R1 = 0 'Гасим разряд Return '--------------------------------------------------------------------------------------------------- Convert: Value = LookUpL n, [192,249,164,176,153,146,130,248,128,144] SHOut DS, SH_CP, msbfirst, [Value] ST_CP = 1 ST_CP = 0 Return Что можно сделать здесь еще?: - добавить точку на определенный разряд (для примера на второй справа): -//- Dim dot as byte dot = 128 ‘ %10000000 -//- n = Ind Dig 1 'Выделяем из числа десятки Value = LookUpL n, [192,249,164,176,153,146,130,248,128,144] SHOut DS, SH_CP, msbfirst, [Value + dot] ST_CP = 1 ST_CP = 0 R3 = 1 'Зажигаем 2-й справа разряд индикатора DelayMS 2 'Задержка для отображения цифры R3 = 0 'Гасим разряд - Зажечь определенный символ на разряде: If x = 0 then SHOut DS, SH_CP, msbfirst, [Value]: endif If x = 1 then SHOut DS, SH_CP, msbfirst, [118]: endif ‘ символ H Замечания по коду: Вместо строк Код
R4 = 1 DelayMS 2 R4 = 0 Можно применить всего одну: Код
PulsOut R4 , 200 ' Где 200 - время присутствия импульса на ноге. Расчетное время равно 200*10uS=2mS В данном случае размер исполняемого кода для одного разряда увеличится на три программных слова Прикрепления:как прикрепить файл проекта? В следующем примере рассмотрим динамическую индикацию по трем проводам с использованием двух 74HC595 Похожие материалы: Применение динамической индикации. Пример 1 - Управление 8 +nРазр, Применение динамической индикации. Пример 3 - Управление по трем проводам, Применение динамической индикации. Пример 4 - Сдвиговый регистр 74НС164, Статическая индикация. Пример 5 – Управление 3 + nРазр
Воздуховоды – это одна из важных частей вентиляционной системы. Крупный рыночный сегмент занят оцинкованными изделиями, на которые обычно пускается листовой металл. Воздуховоды здесь необходимы не только для транспортировки воздуха – при наличии дополнения определенными установками формируются системы подготовки воздуха. Среди них можно назвать комплексы, обеспечивающие обеззараживание, охлаждение или подогрев, а также иные функции. | |
Просмотров: 8607 | Комментарии: 5 | |
Всего комментариев: 5 | |
| |