Аппаратные и программные средства встраиваемых систем



Pdf көрінісі
бет239/268
Дата07.01.2022
өлшемі3,23 Mb.
#18255
1   ...   235   236   237   238   239   240   241   242   ...   268

разделе 4.6 и его подразделах. 
 
Рисунок 95. Временная диаграмма для записи в регистр данных (DR) контроллера ЖКИ. На первом 
шаге мы производим загрузку регистра DATA_IND (при этом у нас появляются данные на выходах 
DB0..DB7). На втором шаге мы формируем нужные нам управляющие сигналы W, RS и E, производя 
запись в регистр C_IND расширителя портов. 
 
6.5.2  Пример программы 
В  приведенном  ниже  исходном  тексте  есть  некоторые  упрощения, 
сделанные  для  того,  чтобы  сделать  более  понятными  основные  операции, 
необходимые вам для работы с ЖКИ: 
1.  Необходимо  помнить,  что  в  учебном  стенде SDK-1.1 начальная 
инициализация  контроллера  ЖКИ  уже  выполнена  в  загрузчике.  В 
реальной системе вам придется программировать ее самостоятельно.  
2.  Время  выполнения  команд  контроллером  ЖКИ  не  равно  нулю  и  это 
нужно учитывать в своей программе. В самом простом варианте можно 
сформировать  задержки  после  выполнения  команд  (что  и  сделано  в 
функции main()). Величину  времени  различных  команд  можно 
посмотреть в разделе «Жидкокристаллический индикатор». 
В  приведенном  исходном  тексте  нет  описания  функции  работы  с 
регистрами ПЛИС (write_max). Драйвер ПЛИС представлен в разделе 6.2. 
/* Пример работы с ЖКИ для учебного стенда SDK-1.1 
 
Логическая '1' на входе ‘E’ позволяет передавать и принимать данные между 
микроконтроллером и контроллером ЖКИ. Логический ноль на входе RW позволяет 
записывать данные в контроллер ЖКИ, сигнал RS позволяет переключать регистры 
контроллера ЖКИ: 1 – данные, 0 – команды.  
*/ 
#define E 

// Сигнал разрешения 
'E'     
#define R 

// Сигнал чтения 
#define RS 

// Сигнал переключения в режим передачи данных 


 
256 
 
#define DATA_IND 
 
0x1 
// Регистр шины данных ЖКИ (ПЛИС) 
#define C_IND 
 
0x6 
// Регистр команд ЖКИ (ПЛИС) 
 
#define CLEAR 
 
0x01  // Команда очистки дисплея 
 
/*-------------------------------------------------------------------- 
lcd_clear 
---------------------------------------------------------------------- 
Очистка дисплея. 
 
Вход:      нет 
Выход:     нет 
Результат: нет 
------------------------------------------------------------------- */ 
void lcd_clear( void ) 

// Записываем в регистр шины данных ЖКИ ( DATA_IND )  
// команду очистки дисплея CLEAR 
 
  write_max( DATA_IND, CLEAR );  
 
// Создаём строб записи, для этого на сигнальную линию 'E'  
// выдаём короткий импульс 
 
 write_max( C_IND, E );   
 
 
 
// положительной полярности, на линии 'RS' держим  
// '0', чтобы попасть в регистр команд 
 
 write_max( C_IND, 0 );   
 
 

 
/*-------------------------------------------------------------------- 
lcd_putch 
---------------------------------------------------------------------- 
Вывод символа на ЖКИ. 
 
Вход:      char c – выводимый символ 
Выход:     нет 
Результат: нет 
------------------------------------------------------------------- */ 
void lcd_putch( char c )  
 
 

 
// Записываем в регистр шины данных ЖКИ ( DATA_IND ) код символа 
 
  write_max( DATA_IND, c ); 
 
// Создаём строб записи, для этого на сигнальную линию 'E'  
// выдаём короткий импульс 
 
 write_max( C_IND, RS | E );   
 
 
// положительной полярности, на линии 'RS' держим '1',  
// чтобы попасть в регистр данных                             
 
 write_max( C_IND, RS   );    

 
/*-------------------------------------------------------------------- 
main 
--------------------------------------------------------------------*/ 


 
257 
void main( void ) 

 unsigned short i = 0; 
 
 lcd_clear(); 
 
 for( i = 0; i < 300; i++ ); 
 
 lcd_putch( 'H' ); 
 lcd_putch( 'e' ); 
 lcd_putch( 'l' ); 
 lcd_putch( 'l' ); 
 lcd_putch( 'o' ); 
 lcd_putch( '!' ); 
 
 while( 1 ); 

 
 


 
258 


Достарыңызбен бөлісу:
1   ...   235   236   237   238   239   240   241   242   ...   268




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет