📄 display.c
字号:
#include <Relpc764.h>
#include "linCmpSL.h"
#include "tja1020.h"
#include "seg7.h"
#include "Identifier.h"
#include "IIc\IIcDriver.h"
#include "IIc\Display\IIcDisplay.h"
//IIC-Adressen
#DEFINE IIcEepromAdr 80
extern data char IIcXmtdat;
data unsigned char i;
data unsigned char t;
data char dLED1, dLED2, dLED3, dLED4;
data char aktTemp, DispTemp, _aktTemp;
data char maxTemp, minTemp;
char data Stack[40];
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit Keyrow1 = P0^4;
sbit Keyrow2 = P0^5;
sbit Keyrow3 = P0^6;
sbit Keyrow4 = P0^7;
data char* LinDataPtr;
data char* IIcRcvptr;
data char* IIcXmtptr;
void writeTemp();
void LinSetToSleep()
{
P0_0 = 1;
P0_1 = 1;
return;
}
void LinWakeUp()
{
return;
}
void LinServiceRoutine()
{
asm{0xC0, 0xD0}; //Push PSW
asm{0xC0, 0xE0}; //Push ACC
asm{0xC0, 0x00}; //Push AR0
if (LinError==0)
{
if (LinFrameOk)
{
if (LinID==0x14)
aktTemp=LinDataPtr[0];
}
else if (LinIDreceived)
{
if (LinID==0x10)
{
LinDataPtr[0]=dLED1;
TI=1;
}
else if (LinID==0x11)
{
LinDataPtr[0]=dLED2;
TI=1;
}
else if (LinID==0x12)
{
LinDataPtr[0]=dLED3;
TI=1;
}
else if (LinID==0x13)
{
LinDataPtr[0]=dLED4;
TI=1;
}
}
}
else
{
LinError=0;
}
asm{0xD0, 0x00}; //Push AR0
asm{0xD0, 0xE0}; //Push ACC
asm{0xD0, 0xD0}; //Push PSW
return;
}
void writeMin()
{
SetCursor(0,2);
IIcXmtptr[0]=6;
IIcXmtptr[1]=0xED; //'m'
IIcXmtptr[2]=0xE9; //'i'
IIcXmtptr[3]=0xEE; //'n'
IIcXmtptr[4]=0xBA; //':'
IIcXmtptr[5]=0x91; //' '
WriteChars();
DispTemp=minTemp;
writeTemp();
}
void writeMax()
{
Home();
IIcXmtptr[0]=6;
IIcXmtptr[1]=0xED; //'m'
IIcXmtptr[2]=0xE1; //'a'
IIcXmtptr[3]=0xF8; //'x'
IIcXmtptr[4]=0xBA; //':'
IIcXmtptr[5]=0x91; //' '
WriteChars();
DispTemp=maxTemp;
writeTemp();
}
void writeAkt()
{
SetCursor(0,1);
IIcXmtptr[0]=6;
IIcXmtptr[1]=0xE1; //'a'
IIcXmtptr[2]=0xEB; //'k'
IIcXmtptr[3]=0xF4; //'t'
IIcXmtptr[4]=0xBA; //':'
IIcXmtptr[5]=0x91; //' '
WriteChars();
DispTemp=aktTemp;
writeTemp();
}
void writeTemp()
{
char cTemp;
char tenth, ones;
IIcXmtptr[0]=8;
if (DispTemp>127)
{
IIcXmtptr[1]=0xAD;//'-'
cTemp = ~DispTemp;
cTemp+=1;
}
else
{
IIcXmtptr[1]=0xAB;//'+'
cTemp=DispTemp;
}
tenth=cTemp/10;
ones=cTemp-tenth*10;
IIcXmtptr[2]=0xB0+tenth;
IIcXmtptr[3]=0xB0+ones;
IIcXmtptr[4]=0xC3; //'C'
IIcXmtptr[5]=0xE5; //'e'
IIcXmtptr[6]=0xEC; //'l'
IIcXmtptr[7]=0xAE; //'.'
WriteChars();
return;
}
char checkKeypad()
{
char maprow;
char scancolumn;
char keyval;
maprow = 0x10;
scancolumn = 0xF0;
keyval = 0xFC;//(-4)
Keyrow1=1;
Keyrow2=1;
Keyrow3=1;
Keyrow4=1;
while (maprow && (scancolumn == 0xF0))
{
switch (maprow)
{
case 0x10 : Keyrow1=0;
break;
case 0x20 : Keyrow1=1;
Keyrow2=0;
break;
case 0x40 : Keyrow2=1;
Keyrow3=0;
break;
case 0x80 : Keyrow3=1;
Keyrow4=0;
}
scancolumn=P1;
scancolumn&=0xF0;
maprow<<=1;
keyval += 4;
}
Keyrow4 =1;
switch (scancolumn)
{
case 0xE0: keyval +=1;
break;
case 0xD0: keyval +=2;
break;
case 0xB0: keyval +=3;
break;
case 0x70: keyval +=4;
break;
default: keyval = 0;
}
return (keyval);
}
void InitKeypad()
{
P0M1|=0xF0; //P1.4 - P1.7 = Open Drain
P0M2|=0xF0;
P1M1&=0x0F; //P0.4 - P0.7 = Quasi Bidirectional
P1M2|=0xF0;
P1|=0xF0;
P0|=0xF0;
}
void main()
{
SP=(char)Stack;
IIcXmtptr=&IIcXmtDat;
IIcRcvptr=&IIcRcvDat;
maxTemp=27;
minTemp=246;
aktTemp=0;
ETI = 1;
EA = 1;
P0M2|=0x0f;
LinDataPtr=&LinData;
InitTranceiver();
InitLinMac();
EA=1;
while (!aktTemp){};
_aktTemp=aktTemp;
DisplayInit();
ClearScreen();
dLED1=0;
dLED2=0;
dLED3=1;
dLED4=1;
writeMin();
writeAkt();
writeMax();
while (1)
{
if ((signed char)aktTemp>=(signed char)maxTemp)
{
dLED1=1;
dLED2=1;
}
else
{
dLED1=0;
dLED2=0;
}
if ((signed char)aktTemp<=(signed char)minTemp)
{
dLED3=0;
dLED4=0;
}
else
{
dLED3=1;
dLED4=1;
}
if (_aktTemp!=aktTemp)
{
writeMin();
writeAkt();
writeMax();
_aktTemp=aktTemp;
}
};
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -