#include "hardware.h" // подключение специальных заголовков и определений
void delay(U32 ticks) //задержка для ожидания готовности ЖКИ
{
for(; ticks; —ticks)
asm ("nop");
}
}
void lcd_pulse_E() //импульс стробирования записи/чтения ЖКИ {
delay(100);
LCD_E_SET; // фронт импульса стробирования записи/чтения ЖКИ delay(lOO);
LCD_E_CLR; // спад импульса стробирования записи/чтения ЖКИ
delay(100);
}
void lcd_send_byte(U8 byte) //передача в ЖКИ байта {
if (BIT_TEST(byte,4)) LCD_D4_SET; //---------------------
else LCD_D4_CLR; // if (BIT_TEST(byte,5)) LCD_D5_SET; // else LCD_D5_CLR; //
if (BIT_TEST(byte, 6)) LCD_D6_SET; // передача старшей тетрады else LCD_D6_CLR; // if (BIT_TEST(byte,7)) LCD_D7_SET; // else LCD_D7_CLR; //
lcd_pulse_E(); //---------------------
if (BIT_TEST(byte,0)) LCD_D4_SET; //---------------------
else LCD_D4_CLR; // if (BIT_TEST(byte,1)) LCD_D5_SET; //
else LCD_D5_CLR; // передача младшей тетрады
if (BIT_TEST(byte, 2) ) LCD_D6_SET; // else LCD_D6_CLR; // if (BIT_TEST(byte,3)) LCD_D7_SET; // else LCD_D7_CLR; //
lcd_pulse_E(); //---------------------
}
// запись в ЖКИ одного символа данных по произвольному адресу ОЗУ ЖКИ //если ЖКИ опрашивается, то команды "lcd_opros();" надо раскомментировать, //а команды "delay(3000);" закомментировать, в противном случае - наоборот void lcd_pro_data(U8 date, U8 addr) {
LCD_RW_CLR; //режим записи в ЖКИ
LCD_RS_CLR; //будет передаваться команда
BIT_SET(addr,7); //будет передаваться адрес ОЗУ ЖКИ
lcd_send_byte(addr); //передача адреса
//delay(3000); //задержка 50 мкс для готовности ЖКИ
lcd_opros(); -//ожидание готовности ЖКИ
LCD_RS_SET; //будут передаваться данные
if (date < 10) lcd_send_byte(date + 0x30); //передается десятичная цифра else lcd_send_byte(date); //передается символ (не цифра)
//delay(3000); //задержка 50 мкс для готовности ЖКИ
lcd_opros(); //ожидание готовности ЖКИ
}
// запись в ЖКИ одного символа данных по текущему адресу ОЗУ ЖКИ
//если ЖКИ опрашивается, то команду "lcd_opros();" надо раскомментировать,
//а команду "delay(3000);" закомментировать, в противном случае - наоборот
void lcd_tek_data(U8 date)
{
LCD_RW_CLR; //режим записи В ЖКИ
LCD_RS_SET; //будут передаваться данные
if (date < 10) lcd_send_byte(date + 0x30); //передается десятичная цифра else lcd_send_byte(date); //передается символ (не цифра)
//delay(3000); //задеряка 50 мкс для готовности ЖКИ
lcd_opros(); //ожидание готовности ЖКИ
}
void lcd_com(U8 comand) // запись в ЖКИ команды
//если ЖКИ опрашивается, то команду "lcd_opros();" надо раскомментировать, //а команду "delay(108000);" закомментировать, в противном случае - наоборот {
LCD_RW_CLR; //режим записи в ЖКИ
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |