Gyenes Károly

Mikroszámítógépek a járműtechnikában


8. sz. melléklet

A programbillentyű kezelést valósít meg
 
// 4x4 Key (P1) to Virtual LCD Dr Gyenes Károly 2020/03/22.
#include "compiler_defs.h"
// Compiler dependent macros
#include "C8051F020_defs.h"
// SFR declarations
#include "TS_vInterface.h"
// ToolStick Virtual Tools Interface
typedef unsigned char byte;
typedef unsigned int word;
// Function Prototypes
void PORT_Init(void);
void LCD_Init(void);
void Delay(void);
byte getkey(void);
// Main Routine
void main (void)
{
byte b=0;
// Segéd változó
PORT_Init();
SilabsInit020();
LCD_Init();
P1MDOUT = 0xF0;
// P1.0 .. P1.3 IN; P1.4..P1.7 Push-pull OUT
P1 = 0x0F;
while (1)
{
b = getkey();
LCD_DataWrite (b);
Delay();
}
}
void PORT_Init(void)
{
WDTCN = 0xDE;
// Disable Watchdog Timer
WDTCN = 0xAD;
P5 = 0x0F;
P74OUT = 0x08;
// P5[7:4] - LEDs D1-D4
XBR2 = 0x40;
// Enable crossbar
}
void LCD_Init(void)
{
LCD_ControlWrite(0x0C);
// Display ON, Cursor OFF
LCD_ControlWrite(0x01);
// Clear LCD
LCD_ControlWrite(0x06);
// Entry mode increment without shift
}
void Delay(void)
{
volatile unsigned long i,j;
for (i=0;i<100;i++)
for(j=0;j<1000;j++);
}
byte getkey(void)
{
byte rch=0;
// Lokális segédváltozó
P1MDOUT = 0xF0;
// P1.0 .. P1.3 IN; P1.4..P1.7 Push-pull OUT
P1 = 0x0F;
// Outs = 0
while (P1 == 0x0F);
// Vár egy gomblenyomást
if (P1 != 0x0F)
// Gomb lenyomás történt
{
P1MDOUT = 0x70;
// Oszlop D7 = 0
P1 = 0x7F;
if (P1 != 0x7F) rch= P1;
else
{
P1MDOUT = 0xB0;
// Oszlop D6 = 0
P1 = 0xBF;
if (P1 != 0xBF) rch= P1;
else
{
P1MDOUT = 0xD0;
// Oszlop D5 = 0
P1 = 0xDF;
// Outs = 1
if (P1 != 0xDF) rch= P1;
else
{
P1MDOUT = 0xE0;
// Oszlop D4 = 0
P1 = 0xEF;
// Outs = 1
if (P1 != 0xEF) rch= P1;
}
}
}
}
P1MDOUT = 0x0F;
P1 = 0x0F;
while (P1 != 0x0F);
// Vár a felengedésre
switch (rch)
// Dekódolás
{
case 238 : rch = '1'; break;
case 237 : rch = '2'; break;
case 235 : rch = '3'; break;
case 231 : rch = 'A'; break;
case 222 : rch = '4'; break;
case 221 : rch = '5'; break;
case 219 : rch = '6'; break;
case 215 : rch = 'B'; break;
case 190 : rch = '7'; break;
case 189 : rch = '8'; break;
case 187 : rch = '9'; break;
case 183 : rch = 'C'; break;
case 126 : rch = '*'; break;
case 125 : rch = '0'; break;
case 123 : rch = '#'; break;
case 119 : rch = 'D'; break;
default: rch = 0;
}
return(rch);
}
// End Of File
 

Mikroszámítógépek a járműtechnikában

Tartalomjegyzék


Kiadó: Akadémiai Kiadó

Online megjelenés éve: 2021

ISBN: 978 963 454 711 2

A kötet elsősorban a BME Közlekedésmérnöki Kar mesterszakos hallgatói számára készült az azonos nevű tárgy segédleteként, de hasznos lehet a logisztika, elektrotechnika és számítástechnika témái iránt érdeklődő hallgatók számára is. A szerző azoknak a mechatronika, elektronika és számítástechnika iránt elkötelezett hallgatóknak ajánlja, akik TDK-munkát készítenek, de hasznos lehet a diplomamunkát írók és az államvizsgára felkészülők számára is.

Hivatkozás: https://mersz.hu/gyenes-mechatronika-es-mikroszamitogepek//

BibTeXEndNoteMendeleyZotero

Kivonat
fullscreenclose
printsave