Продолжаем опыты с PIC16F887 – для новичков в радиоделе

May 5, 2014 by admin Комментировать »

Выше говорилось об отображении результатов измерения напряжения на индикаторе В конструкторе IE-ROBOPICA используется жидкокристаллический индикатор Вот программа для вывода сообщений на ЖКИ:

char *text1 = &quotHellow"

char *text2 = &quotPOBOPICA" // извините за опечатку

// Lcd pinout settings sbit LCD_RS at RD2_bit sbit LCD_EN at RD3_bit sbit LCD_D7 at RD7_bit sbit LCD_D6 at RD6_bit sbit LCD_D5 at RD5_bit sbit LCD_D4 at RD4_bit

// Pin direction

sbit LCD_RS_Direction at TRISD2_bit sbit LCD_EN_Direction at TRISD3_bit sbit LCD_D7_Direction at TRISD7_bit sbit LCD_D6_Direction at TRISD6_bit sbit LCD_D5_Direction at TRISD5_bit sbit LCD_D4_Direction at TRISD4_bit

void main() { Lcd_Init()

Lcd_Cmd(_LCD_CURSOR_OFF) while(1)

{

Lcd_Out(1,1,text1) Lcd_Out(2,1,text2) Delay_ms(5000) Lcd_Cmd(_LCD_CLEAR) Delay_ms(500)

}

}

Текст немного отличается от того, что представлен в руководстве, но это связано с изменением среды разработки Текст, выводимый на индикатор, это строки символов строка заключается в двойные кавычки Вот проверка программы:

Рис 395 Проверка программы в Proteus

Загрузив программу в микроконтроллер макетной платы, я получаю тот же результат А вот попытка написать текст кириллицей оказывается неудачной – не поддерживает таблица кодов ЖКИ кириллицу Но это и не столь важно

Библиотечные функции использует и среда разработки Flowcode

Эти функции скрыты в макросах компонентов Добавляя компонент LCDDisplay в проект, вы получаете доступ к библиотеке функций этого компонента Теперь, вставляя макросы компонента в программу, вы можете использовать все доступные для этого компонента функции

Ниже приведена программа, повторяющая, в сущности, программу, написанную на языке Си

Можно проверить, скомпилировав программу, что она работает точно так же, как и предыдущая Конечно, если подключение выводов микроконтроллера выбрано таким же Для проверки можно использовать программу ISIS, что в предыдущем случае – достаточно указать новый hex-файл

Рис 396 Программа вывода сообщения в среде Flowcode

Выше мы говорили о чтении напряжения и выводе значения на ЖКИ В руководстве есть пример такого чтения напряжения, а конструкторе даже есть потенциометр, который можно подключить к порту А, чтобы проделать необходимые эксперименты Есть и программа:

/***********************************/

/** Отображает данные АЦП с RA3 на ЖКИ*/

/***********************************/ char data_[6]

int x

// Lcd pinout settings sbit LCD_RS at RD2_bit sbit LCD_EN at RD3_bit sbit LCD_D7 at RD7_bit sbit LCD_D6 at RD6_bit sbit LCD_D5 at RD5_bit sbit LCD_D4 at RD4_bit

// Pin direction

sbit LCD_RS_Direction at TRISD2_bit sbit LCD_EN_Direction at TRISD3_bit sbit LCD_D7_Direction at TRISD7_bit sbit LCD_D6_Direction at TRISD6_bit sbit LCD_D5_Direction at TRISD5_bit sbit LCD_D4_Direction at TRISD4_bit

void main()

{

Delay_ms(1000)

Lcd_Init()

ANSEL = 0xFF // PORTA ==> PORTA ==> Аналоговый TRISA = 0xFF // PORTA ==> PORTA ==> вход

Lcd_Cmd(_LCD_CURSOR_OFF) // Курсор ЖКИ выключен Lcd_Out(1,1,&quotSENSOR1 = &quot) // Показать текст ADCON0=0b11001101 // Выбор режима: Analog1 RC_Mode и ADON while(1)

{ ADCON0GO=1

while(ADCON0GO)

x= (ADRESH*4)+(ADRESL/64)

WordToStr(x,data_) Lcd_Out(1,10,data_) Delay_ms(100)

}

}

Программу я скопировал из текста руководства в электронном виде Правка, как и выше, коснулась добавления подключения ЖКИ и исправления инициализации (не должно быть параметров), добавления подчёркивания в команде: Lcd_Cmd(_LCD_CURSOR_OFF)

Параметры в новой библиотеке MicroC PRO должны, как я понимаю, начинаться с подчёркивания

И ещё один казус, который мне кажется довольно характерным: копировал текст  я  из руководства, чтобы вставить в программу MicroC PRO было быстрее и удобнее И получилось следующее:

Рис 397 Сообщение об ошибках при компиляции программы

Чем же программа не угодила компилятору Откуда такое нашествие ошибок

Пусть вас не удивляет негодование компилятора Он прав Кавычки в строке ”SENSOR1 = “ – это неправильные кавычки Компилятор их не знает, и знать не желает Достаточно исправить их: &quotSENSOR1 = &quot, – чтобы трансляция прошла успешно

Это очень хороший пример того, что в программировании нет мелочей, нет места небрежности И что одна ошибка, может быть, в самом начале текста программы, приводит к тому, что компилятор перестаёт понимать остальное

Но вернёмся к опыту чтения аналоговых данных с выводом полученного значения на экран ЖКИ

В программе ISIS (Proteus) я выводил сообщение Можно использовать эту же программу для проверки, нужно только поменять hex-файл и добавить потенциометр, подключив его ползунок к входу RA3

Рис 398 Проверка программы чтения напряжения

Меняя положение ползунка, можно прочитать все значения от 0 до 1023 Конечно, если вы захотите использовать эту программу в качестве программы вольтметра, вам следует позаботиться о том, чтобы преобразовать полученные значения (числа) в соответствующие значения напряжения Напряжение должно меняться от 0 до 5 вольт Это интересная и полезная задача

И, чтобы не складывалось впечатление, что я выдумываю всё (далеко не всё), что, уговаривая вас проверять всё на макетной плате, сам этого не делаю… Проверяю:

Рис 399 Проверка работы программы на макете

И ещё – обратите внимание на последнюю цифру Она выглядит не вполне чёткой Фотоаппарат уловил мгновение, когда эта цифра меняла своё значение с 6 на 7 Это то, о чём я говорил раньше, предлагая усреднять несколько значений, когда их изменения становятся критичными В данном случае это не столь важно, поскольку и при измерении напряжения мультиметром можно видеть, как меняется напряжение, но столь незначительно, что на это не обращаешь внимания

Мы проделали ряд экспериментов, описанных в руководстве к конструктору IE-ROBOPICA Эти эксперименты можно повторить и с самостоятельно собранной макетной платой

Мы научились определять события, фиксируемые микроконтроллером, и реагировать на них с помощью звукового сигнала Попутно мы выяснили, что новая версия среды разработки MicroC PRO требует внимательного с ней ознакомления, поскольку синтаксис некоторых функций претерпел изменения

Мы убедились, что предложенные программы можно создать и в других средах разработки Но встроенные в среду разработки библиотеки могут отличаться набором своих функций Используя собственную макетную плату и иную, чем в конструкторе, среду разработки, следует самостоятельно придумать опыты, которые можно осуществить, используя возможности конкретной среды разработки

Мы могли убедиться, что компиляторы языка Си, работающие с микроконтроллерами, ориентированы на эту работу Их можно назвать и специализированными компиляторами Но это в большей мере, скорее, относится к библиотекам, чем, собственно, к языку Си С языком Си особенных изменений не происходит, используем мы его для создания прикладных программ операционной системы или для создания программ для микроконтроллера

Наконец, мы проверили, что можем прочитать напряжение и вывести полученное значение на жидкокристаллический индикатор Посмотрим, пригодится ли это при создании робота

Источник: Гололобов ВН,- Самоучитель игры на паяльнике (Об электронике для школьников и не только), – Москва 2012

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты