Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Программа опроса клавиатуры и вывода сообщения на LCD индикатор




/* Драйвер LCD дисплея для стенда TB51M */

 

#include <at89c51xd2.h>//Описание регистров контроллера

#include <stdio.h>

#include <intrins.h> // Библиотека, содержащая _nop_

void BeepBeep();

#include <KBDDriv.c> // Драйвер клавиатуры

#define Read 1

#define Write 0

#define Data_Reg 1

#define Com_Reg 0

#define E_Strobe E=1; _nop_(); E=0

#define Line_0 0

#define Line_1 1

 

#define Tic -(11592/120*5) // 1 мс

#define HP 1

 

/* Описание аппаратных средств */

/* LCD индикатор подключен к порту P0 */

 

/* Биты управления */

sbit RS = P2^0;// Переключение регистра: данные/команда

sbit RW =P2^1;// Переключение режима: чтение/запись

sbit E =P3^5; // Строб записи

sbit BUSY=P0^7;// Бит занятости в регистре состояния

sbit Beep =P3^3;

code unsigned char Text0[] = "LCD Test";

code unsigned char Text1[] = "Hello!";

data unsigned char txtbuf[10];

 

/* Подпрограммы обслуживания дисплея */

/* Ожидания сброса флага занятости */

void Wait_BW (void)

{

P0 = 0xFF; // Сброс порта для чтения

RW = Read; // Режим - чтение

RS = Com_Reg; // Регистр команды

E = 1; // Открыть регистр для чтения

Продолжение приложения

while (BUSY == 1){} // Ждать готовность дисплея

E = 0; // Отключить шину данных

}

/* Вывод байта в регистр команды*/

void Put_Com (unsigned char Command){

Wait_BW(); // Ждать готовность

RW = Write; // Режим - запись

RS = Com_Reg; // Регистр команды

P0 = Command; // Данные в порт

E_Strobe; // Строб записи в регистр

}

// Вывод данных

void Put_Data(unsigned char Data){

Wait_BW(); // Ждать готовность

RS = Data_Reg; // Регистр данных

RW = Write; // Режим - запись

P0 = Data; // Данные в порт

E_Strobe; // Строб записи данных

}

 

void LCD_Init (void) {

E = 0;

Put_Com (0x38);

Put_Com (0x0C);

Put_Com (0x06);

Put_Com (0x01);

}

 

void Timer_Init(void){

TMOD = 0x01;

}

 

void Delay(unsigned char Dl){

do {

TH0 = (Tic >> 8);

TL0 = Tic;

TR0 = 1;

while(!TF0);

TF0 = 0;

TR0 = 0;

} while (--Dl);

}

 

Окончание приложения

void BeepBeep(){

unsigned char i;

for (i=0; i<100;i++){

Beep = 0;

Delay(HP);

Beep = 1;

Delay(HP);}

}

 

void Put_String(unsigned char Str[],unsigned char Line) {

data char i;

data unsigned char C;

if(Line) Put_Com(0xC0);

else Put_Com(0x80);//Номер строки

i = 0; // Счетчик символов

do { // Цикл вывода строки

C = Str[i++];

Put_Data(C);

} while (Str[i]!= 0); // Признак конца - 0

}

void PrintKeyKode(char Key) {

data int N;

N = sprintf(txtbuf,"Key:0x%2bX",Key);

Put_String(txtbuf,0);

}

void main (void) {

unsigned char Key,i;

Timer_Init();

LCD_Init();

Put_String(Text0,Line_0);

Put_String(Text1,Line_1);

 

for (i=0; i<50;i++) Delay(100);

// Put_Com (0x01);

while(1){

Key = GetKey();

if (Key) {

PrintKeyKode(Key);

Key = 0;

}

};

}


Основы микропроцессорной техники: методические указания к выполнению лабораторных работ для студентов направления 210100 - “Электроника и наноэлектроника”

 

 

АЛЕКСАНДР ИВАНОВИЧ ВЛАСОВ

 

 

Научный редактор В.Ф. Зотин

Редактор издательства

Компьютерный набор А.И. Власов

 

Темплан 2015 г., п.

Подписано в печать . Формат 60х84 1/16. Бумага офсетная. Офсетная печать. Усл. печ.л. 1,52. Уч.-изд.л. 1,52. Тираж 10 экз. Заказ . Бесплатно.

 

Издательство Брянского государственного технического университета

241035, Брянск, бульвар 50-летия Октября, 7, БГТУ. 58-82-49.

Лаборатория оперативной полиграфии БГТУ, ул. Институтская, 16.


Поделиться:

Дата добавления: 2015-04-05; просмотров: 60; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты