Операции начальной настройки
1.выполним начальную настройку устройства: устанавливаем связи между выводами порта МК и входами дисплея;
2. вносим выводимый текст в программу.
Операции составляющие тело программы
1.выводим текст на дисплей;
2.сдвигаем текст на дисплее вправо;
3.сдвигаем текст на дисплее влево;
4.переходим к началу цикла.
Программа на Си
//установка соединений дисплея
1. sbit LCD_RS at PORTC2_bit;
2. sbit LCD_EN at PORTC3_bit;
3. sbit LCD_D4 at PORTC4_bit;
4. sbit LCD_D5 at PORTC5_bit;
5. sbit LCD_D6 at PORTC6_bit;
6. sbit LCD_D7 at PORTC7_bit;
// установка направления передачи
7. sbit LCD RS Direction at DDRC2 bit;
8. sbit LCD EN Direction at DDRC3 bit;
9. sbit LCD D4 Direction at DDRC4 bit;
10. sbit LCD D5 Direction at DDRC5 bit;
11. sbit LCD D6 Direction at DDRC6 bit;
12. sbit LCD D7 Direction at DDRC7 bit;
// ввод текста
13. Char txt1[]=”MikroElektronika”;
14. Char txt2[]=”BigAVR6”;
15. Char txt3[]=”LCD4bit”;
16. Char txt4[]=” Example”;
17. Char i;
18. Void Move_Delay ( ) {
19. Delay_ ms (500);
}
20. Void main ( ) {
21. Lcd_ Init (); // инициализация модуля DS1820
22. Lcd_ Cmd( LCD_CLEAR); // очистка экрана
23. Lcd_ Cmd (LCD_CURSOR_OFF); // выключение курсора
// вывод текста на экран
24. Lcd_Out (1,6,txt3);
25. Lcd_Out (2,6,txt4);
26. Delay_ ms(2000);
27.Lcd_ Cmd( LCD_CLEAR);
28.Lcd_Out (1,6,txt1);
29.Lcd_Out (1,6,txt2);
30.Delay_ ms(2000);
//перемещение текста
31.For (i=0, I<4, i++) {
32.Lcd_Cmd (LCD_SHIFT_RIGHT); // сдвиг текста вправо
33.Move_Delay ( ); // задеожка текста на дисплее
}
34.While (1) {
35.For (i=0, I<7, i++) {
36.Lcd_Cmd (LCD_SHIFT_LEFT); // сдвиг текста влево
37.Move_Delay ( ); // задержка
}
38.For (i=0, I<7, i++) {
39.Lcd_Cmd (LCD_SHIFT_RIGHT); // сдвиг текста вправо
40.Move_Delay ( ); //задержка
}
}
При проектирование программ удобно пользоваться готовыми функциями для взаимодействия МК с различными устройствами, которых предоставляют разработчики компиляторов. Эти функциии избавят нас от необходимости их описания и тем самым упрощают процесс составления программы. Некоторые из этих функций мы используем в нашей программе.
В начале программы устанавливается связь между выводами порта МК и входами дисплея (пункты 1-6). Например, функция sbit LCD_RS at PORTC2_bitустанавливает связьмежду выводом RS LCD и выводом 2 порта С.
Следующая группа функций ( пункты 7-12) определяют направление передачи. Например, функция sbit LCD_EN Direction at DDRC3_bitопределяет канал 3 порта С как выход, подключенный к входу EN дисплея.
В пунктах 13-17 объявлены символьные массивы txt, как байтовые целые, с внесением в них соответствующих текстовых значений.
Далее следует описание функции задержки (пункт 18). Эта новая функция использует стандартную функцию Delay ms ( ),которая обеспечивает задержку 500мс. Она будет нами использована в программе.
С пункта 20 начинается главная функция main. В начале выполняется инициализация дисплея Для этого используем функцию Lcd_Init ( ).Эта функция устанавливает все нужные значения параметров дисплея ( пункт 21).
В пункте 22 гасится экран. Используем функцию Lcd_Cmd (LCD CLEAR). В пункте 23 выключаем курсор.
В пунктах 23 и 24 осуществляется вывод текста на дисплей. Используем функцию Lcd_Out (строка, столбец, выводимый текст). Эта функция выводит текст на экран, начиная с позиции указанной в скопках в виде параметров. Первым - указывается строка, вторым- столбец, третим- массив содержащий выводимый текст. Первая функция выводит текст содержащийся в массиве txt3 на первую строку, вторая функция - текст содержащийся в массиве txt4 во вторую строку.
Делаем задержку на 2000 мс, чтобы текст можно было прочесть (пункт 26), затем стираем экран (пункт 27) и выводим следующий текст содержащийся в массивах txt1 и txt2 ( пункты 28 и 29). Снова делаем задержку (пункт 30).
Далее выполняется сдвиг текста. Организуем цикл For (пункт 31). В цикле используется функция Lcd_Cmd (LCD_SHIFT_RIGHT)(пункт 32),которая сдвигает текст на екране на одну позицию вправо. При завершении цикла текст будет сдвинут на четыре позиции. Даетм задержку на 500 мс ( используя ранее определенную функцию Move_ Delay).
Далее выполняем сдвиги текста влево и вправо в бесконечном цикле. Используем оператор While (1).В начале будем сдвигать текст влево в цикле For ( пункт 35). В каждом шаге цикла выполняется функция Lcd_Cmd (LCD_SHIFT_LEFT),которая сдвигает текст влева на одну позицию. После завершения цикла текст будет смещен на семь позиции влево. Дадим задержку ( пункт 37).
Далее сдвигается текста вправо. В цикле For ( пункт 38) используется знакомая нам функцияLcd_Cmd (LCD_SHIFT_RIGHT).При завершении цикла текст перемещается на экране на 7 позиции вправо.
Следует переход к началу цикла While, описанная нами процедура сдвига повторяется.
Дата добавления: 2016-12-27; просмотров: 2381;