- •1. Операторы выбора языка c51: if и switch.
- •2. Операторы цикла языка с51: while, do…while, for.
- •3. Операторы перехода языка с51: break, continue, goto.
- •4. Программирование параллельным вводом/выводом в с51: операторы управления портами и отдельными разрядами портов. Примеры программ управления светодиодами и опроса контактов переключателей.
- •/* Программа управления светодиодом vd1 от кнопки sb1 */
- •5. Программирование таймеров микроконтроллеров mcs-51 на языке с51.
- •6. Программирование системы прерываний микроконтроллеров mcs-51 на языке с51.
- •7. Программирование последовательного ввода/вывода микроконтроллеров mcs-51 на языке с51.
- •8. Микроконтроллеры pic18: общая характеристика, особенности архитектуры и системы команд.
- •9. Язык с18 для pic-микроконтроллеров: структура программы, директивы препроцессора, ключевые слова.
- •10. Представление информации в языке с18: типы данных, переменные и константы.
- •11. Операции арифметические, поразрядные логические, логические и отношения в языке с18.
- •12. Операторы управления вычислительным процессом в языке с18.
- •13. Функции в языке с18: определение функции, прототип, библиотечные функции.
- •14. Функции формирования временных задержек в языке с18.
- •15. Программирование на языке с18 типовых функций управления и контроля: вывод информации в порт, управление отдельными разрядами портов, опрос переключателя.
- •16. Подключение жк-дисплея к pic-микроконтроллеру: структура жк-дисплея, функции управления дисплеем.
- •17. Аналого-цифровое преобразование в pic-микроконтроллерах: структура внутреннего ацп, функции управления ацп на языке с18.
- •18. Реализация широтно-импульсной модуляции в pic-микроконтроллерах: параметры шим, функции управления шим на языке с18.
- •Void ClosePwm1(void);
- •Void OpenPwm1(char period);
- •Void SetDcpwm1(unsigned int dutycycle);
- •19. Прерывания в pic18: источники прерываний, управляющие биты, программирование прерываний на языке с18.
- •20. Динамическое управление линейным дисплеем на семисегментных индикаторах в pic-микроконтроллерах.
- •21. Интерфейсы мпс: понятие и характеристики. Стандартные интерфейсы мпс.
- •22. Внешние интерфейсы мпс: основные параметры, последовательные и параллельные, синхронные и асинхронные, способы соединения устройств.
- •23. Интерфейс rs-232: назначение, основные технические характеристики, принципы передачи данных.
- •24. Интерфейс ирпс: назначение, основные технические характеристики, принципы передачи данных.
- •25. Интерфейсы rs-422 и rs-485: назначение, основные технические характеристики, принципы передачи данных.
- •26. Интерфейс spi: назначение, основные технические характеристики, принципы передачи данных.
- •27. Интерфейс i2c: назначение, основные технические характеристики, принципы передачи
- •28. Интерфейс can: общее описание и основные параметры, виды и форматы сообщений в can.
- •29. Интерфейс can: арбитраж, обнаружение и обработка ошибок, скорость передачи и длина сети.
20. Динамическое управление линейным дисплеем на семисегментных индикаторах в pic-микроконтроллерах.
Для отображения цифровой и буквенной информации в микроконтроллерных системах широко используются семисегментные индикаторы, которые бывают светодиодные, вакуумно-люминесцентные, жидкокристаллические, вакуумно-накаливаемые, газоразрядные. Наибольшее распространение получили семисегментные светодиодные индикаторы (ССДИ) ввиду большой яркости, малыми габаритами, способности работать в широком диапазоне температур, механической прочности. На рис. 1,а показано расположение и обозначение сегментов ССДИ. Семь отображающих элементов позволяют высвечивать десятичные и шестнадцатиричные цифры, некоторые буквы латинского и русского алфавитов, а также некоторые специальные знаки. При формировании, например, цифры 3 будут подсвечиваться сегменты a, b, c, d и g, а сегменты e и f останутся темными. При формировании буквы F будут подсвечиваться сегменты a, e, f и g, а темными останутся сегменты b, c и d.
По способу соединения отдельных светодиодов в ССДИ различают индикаторы с общими катодами (ОК) и с общими анодами (ОА). Их схемы внутренних соединений показаны на рис. 1,б, в. На рис. 1,г приведено условное графическое изображение ССДИ.
Рис. 1. Семисегментный светодиодный индикатор: а) - условное обозначение сегментов; б) индикатор с общими катодами (ОК); в) индикатор с общими анодами (ОА); г) условное графическое обозначение на схемах
При формировании символов в ССДИ требуются специальные семисегментные коды, которые отличаются от обычных позиционных двоичных кодов, используемых в МК. Для получения семисегментных кодов могут быть применены два метода:
аппаратурный;
программный.
Аппаратурный метод основан на использовании специальных микросхем преобразователей кодов, которые преобразуют двоичный позиционный код в семисегментный. В качестве таких преобразователей наиболее широко применяются микросхемы КР514ИД1 и КР514ИД2, которые обычно называют дешифраторами кода.
Микросхема КР514ИД1 используется для индикаторов с ОК, а КР514ИД2 – для индикаторов с ОА. Недостатком этих дешифраторов является то, что они позволяют получить только семисегментные коды десятичных цифр от 0 до 9. При этом на их входы должен подаваться двоично-десятичный код.
Программный метод получения семисегментного кода основан на том, что каждому сегменту индикатора поставлен в соответствие определенный бит D7, D6,…, D0 байта. Для индикаторов с ОК принято, что если этот бит равен 1, то сегмент светится. Определенные комбинации единичных значений битов формируют на индикаторе отображаемый символ, как это приведено в табл. 1.
Семисегментные коды для отображения символов от 0 до 9 для индикаторов с ОК
D7 h |
D6 g |
D5 f |
D4 e |
D3 d |
D2 c |
D1 b |
D0 a |
HEX |
Сим- Вол |
0 0 … 0 |
0 0 … 1 |
1 0 … 1 |
1 0 … 0 |
1 0 … 1 |
1 1 … 1 |
1 1 … 1 |
1 0 … 1 |
3F 06 … 6F |
0 1 … 9 |
Таблица семисегментных кодов обычно хранится в памяти программ.
Для отображения многосимвольной информации используются линейные (однострочные) дисплеи. Такие дисплеи представляют собой “линейку”, смонтированную из отдельных ССДИ. Число знакомест (позиций или разрядов) дисплея определяется в соответствии с требованиями к МКС.
Существует два способа организации МК с линейными дисплеями: статический и динамический (мультиплексный).
Первый требует наличие на входах каждого индикатора специальных буферных регистров для хранения кодов выводимых символов. Естественно, что с увеличением разрядности дисплея возрастает число дополнительных микросхем, а, следовательно, и стоимости МКС.
Второй способ (динамический) основан на том, что любой световой индикатор является инерционным прибором, а человеческому глазу отображаемая на дисплее информация, если ее обновлять с частотой не менее 20 раз в секунду, представляется неизменной. Динамический способ вывода информации на дисплей требует значительно меньших аппаратных затрат, но более сложного программного обеспечения.
rom near char table[ ] =
{
0x3F, 0x06, 0x5B,0x4F, 0x66, 0x6D,0x7D,0x07, 0x7F, 0x6F,
};
char count; // переменная-счетчик
void main(void)
{
char select; // код для выбора индикатора (его включения)
char a; // переменная-счетчик индикаторов дисплея
PORTB = 0xFF;
TRISB = 0; // настроить порт В на вывод
PORTC = 0;
TRISC = 0; // настроить порт С на вывод
count = 0;
while( 1 ) // бесконечный цикл вывода на дисплей
{
/* вывод цифр одновременно на все индикаторы дисплея */
POTRB = 0xFF; // гашение дисплея
PORTC = table[ count ]; // вывод на сегменты индикаторов
PORTB &= 0b11110000; // включение индикаторов дисплея
Delay10KTCYx(50); // задержка на 0,5 секунды
/* вывод цифр поочередно на индикаторы дисплея*/
select = 0b11111110; // код для выбора 1-го индикатора
for ( a = 0; a < 4; a++)
{
POTRB = 0xFF; // гашение дисплея
PORTC = table[ count ]; // вывод на сегменты индикаторов
PORTB = select; // включение индикатора
select = (select << 1) | 0b00000001; // сдвиг кода влево и вставка 1 в младший разряд
Delay10KTCYx(50); // задержка на 0,5 секунды
}
count++; // следующая цифра для вывода
if( count >= 10 )
count = 0;
} }