Главное меню

Карта сайта
Главная
Курсовые работы
Отчеты по практикам
Лабораторные работы
Методические пособия
Рефераты
Дипломы
Лекции



Электронная записная книжка

 

Приложение А

#include <at89c51xd2.h> // подключение системной библиотеки

#define EN P4_0 // резервирование имени для вывода порта «Enable» ЖКИ

#define RS P4_1 // резервирование имени для вывода порта «Register Select» ЖКИ

#define RW P4_2 // резервирование имени для вывода порта «Read/Write» ЖКИ

#define BUSY P3_7 // резервирование имени для вывода порта «D7» ЖКИ

//При занятом устройстве бит D7 установлен в «1»

unsigned char STATE; // переменная состояния готовности ЖКИ

wait_lcd() // функция готовности дисплея к приему следующей команды

{

do{

EN=1; //начало передачи данных

RS=0; //режим интерпретации данных на линиях D0-D7 как комманда

RW=1; //режим чтения данных с ЖКИ

P3=0xFF;

STATE=BUSY; // копирование состояния бита D7 в переменную STATE

EN=0; //окончание передачи данных

} while(STATE!=0); //цикл прекращает работу когда бит D7 равен «0»

RW=0;

}

init_lcd() // функция инициализации дисплея

{

EN=1;

RS=0;

RW=0;

P3=0x38; //начальные установки ЖКИ (разрядность шины интерфейса 8-бит,

//количества строк на дисплее – две, и размера символов 5×8 точек).

EN=0;

wait_lcd(); //ожидание готовности ЖКИ

EN=1;

RS=0;

RW=0;

P3=0x0E; //включение дисплея и отображение курсора

EN=0;

wait_lcd();

EN=1;

RS=0;

RW=0;

P3=0x04; //задание режима ввода: направление перемещения курсора вправо

EN=0;

wait_lcd();

}

clr_lcd() //функция очистки дисплея

{

EN=1;

RS=0;

RW=0;

P3=0x01; // команда очистки дисплея (записывает код 0x20 (пробел) во все ячейки DDRAM)

EN=0;

wait_lcd();

}

write_char(unsigned char *c1) //функция записи байта на дисплей

{

EN=1;

RS=1;

RW=0;

P3=*c1;

EN=0;

wait_lcd();

}

main ()

{ int flag_simv=1; //флаг раскладки клавиатуры (англ./рус.)

init_lcd();

clr_lcd();

while(1)

{

if(P0==0xFE && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("1");

else write_char("!");

}

if(P0==0xFD && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("2");

else write_char("@");

}

if(P0==0xFB && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("3");

else write_char("#");

}

if(P0==0xF7 && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("4");

else write_char("$");

}

if(P0==0xEF && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("5");

else write_char("%");

}

if(P0==0xDF && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("6");

else write_char("^");

}

if(P0==0xBF && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("7");

else write_char("&");

}

if(P0==0x7F && P1==0xBF && P2==0xFF) write_char("8");

if(P0==0xFF && P1==0xBE && P2==0xFF)

{

if(flag_simv) write_char("9");

else write_char("(");

}

if(P0==0xFF && P1==0xBD && P2==0xFF)

{

if(flag_simv) write_char("0");

else write_char(")");

}

if(P0==0xFF && P1==0xAF && P2==0xFF) write_char("/");

if(P0==0xBF && P1==0xBF && P2==0xFF) write_char(">");

if(P0==0x7F && P1==0xBF && P2==0xFF)

{

if(flag_simv) write_char("<");

else write_char("|");

}

if(P0==0xFF && P1==0x6F && P2==0xFF) write_char("=");

if(P0==0xFF && P1==0x5F && P2==0xFF)

{

if(flag_simv==0) flag_simv=1;

else flag_simv=0;

}

if(P0==0xFE && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("Q");

else write_char("Й");

}

if(P0==0xFD && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("W");

else write_char("Ц");

}

if(P0==0xFB && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("E");

else write_char("У");

}

if(P0==0xF7 && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("R");

else write_char("К");

}

if(P0==0xEF && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("T");

else write_char("Е");

}

if(P0==0xDF && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("Y");

else write_char("Н");

}

if(P0==0xBF && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("U");

else write_char("Г");

}

if(P0==0x7F && P1==0xFF && P2==0xFE)

{

if(flag_simv) write_char("I");

else write_char("Ш");

}

if(P0==0xFF && P1==0xFE && P2==0xFE)

{

if(flag_simv) write_char("O");

else write_char("Щ");

}

if(P0==0xFF && P1==0xFD && P2==0xFE)

{

if(flag_simv) write_char("P");

else write_char("З");

}

if(P0==0xFF && P1==0xFB && P2==0xFE)

{

if(flag_simv) write_char("[");

else write_char("Х");

}

if(P0==0xFF && P1==0xF7 && P2==0xFE) write_char("+");

if(P0==0xFF && P1==0xDF && P2==0xFE) write_char(" ");

if(P0==0xFE && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("A");

else write_char("Ф");

}

if(P0==0xFD && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("S");

else write_char("Ы");

}

if(P0==0xFB && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("D");

else write_char("В");

}

if(P0==0xF7 && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("F");

else write_char("А");

}

if(P0==0xEF && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("G");

else write_char("П");

}

if(P0==0xDF && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("H");

else write_char("Р");

}

if(P0==0xBF && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("J");

else write_char("О");

}

if(P0==0x7F && P1==0xFF && P2==0xFD)

{

if(flag_simv) write_char("K");

else write_char("Л");

}

if(P0==0xFF && P1==0xFE && P2==0xFD)

{

if(flag_simv) write_char("L");

else write_char("Д");

}

if(P0==0xFF && P1==0xFD && P2==0xFD)

{

if(flag_simv) write_char(";");

else write_char("Ж");

}

if(P0==0xFF && P1==0xFB && P2==0xFD)

{

if(flag_simv) write_char("'");

else write_char("Э");

}

if(P0==0xFF && P1==0xF7 && P2==0xFD) write_char("-");

if(P0==0xFE && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("~");

else write_char("Ё");

}

if(P0==0xFD && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("Z");

else write_char("Я");

}

if(P0==0xFB && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("X");

else write_char("Ч");

}

if(P0==0xF7 && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("C");

else write_char("С");

}

if(P0==0xEF && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("V");

else write_char("М");

}

if(P0==0xDF && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("B");

else write_char("И");

}

if(P0==0xBF && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("N");

else write_char("Т");

}

if(P0==0x7F && P1==0xFF && P2==0xFB)

{

if(flag_simv) write_char("M");

else write_char("Ь");

}

if(P0==0xFF && P1==0xFE && P2==0xFB)

{

if(flag_simv) write_char(",");

else write_char("Б");

}

if(P0==0xFF && P1==0xFD && P2==0xFB)

{

if(flag_simv) write_char(".");

else write_char("Ю");

}

if(P0==0xFF && P1==0xFB && P2==0xFB)

{

if(flag_simv) write_char(":");

else write_char("?");

}

if(P0==0xFF && P1==0xF7 && P2==0xFB) write_char("*");

}

}