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

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



Применение динамической индикации. Пример 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 'Гасим разряд
'---------------------------------------------------------------------------------------------------  
  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

Замечания по коду:
Вместо строк

Code

  R4 = 1
  DelayMS 2
  R4 = 0

Можно применить всего одну:
Code

PulsOut R4 , 200 ' Где 200 - время присутствия импульса на ноге. Расчетное время равно 200*10uS=2mS

В данном случае размер исполняемого кода для одного разряда увеличится на три программных слова

Прикрепления:как прикрепить файл проекта?

В следующем примере рассмотрим динамическую индикацию по трем проводам с использованием двух 74HC595

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

Источник:

Категория: Proton PICBasic | Добавил: S_moke (10.01.2012) | Автор: S_moke E W
Просмотров: 731 | Комментарии: | Теги: | Рейтинг: 5.0/2
Всего комментариев: 4
0  
4 Stok   (20.03.2012 12:30)
Спасибо! Очень помогло! А можете так же написать для индикатора с общим катодом?

0  
3 mikhail09p   (11.01.2012 15:50)
Файлы проекта отправьте модератору demanik, он разместит. wink
Хорошая работа! Большое спасибо! applause

0  
2 S_moke   (11.01.2012 08:54)
Да, извиняюсь - публиковал в спешке, поэтому сейчас исправлю.

0  
1 mikhail09p   (11.01.2012 05:45)
Уважаемый S_moke, Вы ошиблись, код программы тут из предыдущего примера:
Применение динамической индикации. Пример 1 - Управление 8 +nРазр.

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


Статистика


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

tesla88

Поиск

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