-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtext.c
88 lines (75 loc) · 2.55 KB
/
text.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
void LCD_PUT_BYTE(byte x, byte y, byte data){
byte tmp_data;
byte page;
byte bite;
byte inv_data;
//Åñëè òî÷êà çà ïðèäåëàìè ýêðàíà âûõîäèì
if((x>MAX_X)|(y>MAX_Y)) return;
//Åñëè õ áîëüøå 63 âûáèðàåì âòîðîé êðèñòàë
if(x>=64){
ClrBit(LCD_CONTROL_PORT, E1);
SetBit(LCD_CONTROL_PORT, E2);
x=x-64;
}
else{
ClrBit(LCD_CONTROL_PORT, E2);
SetBit(LCD_CONTROL_PORT, E1);
}
//Îïðåäåëÿåì íà êàêîé ñòðàíèöå áóäåì âûâîäèòü áàéò
page=y/8;
bite=y%8;
//Âûáèðàåì îòêóäà áóäåì ñ÷èòûâàòü(òî ÷òî óæå åñòü íà ýêðàíå)
LCD_SET_PAGE(page);
LCD_SET_ADDRESS(x);
//Ñ÷èòûâàåì áàéò, 2 öèêëà, ò.ê. â ïåðâûé ðàç âûäàñò ìóñîð
tmp_data=ReadData();
tmp_data=ReadData();
//Çàíîâî âûáèðàåì àäðåññ
LCD_SET_PAGE(page);
LCD_SET_ADDRESS(x);
//Â çàâèñèìîñòå îò ìåòîäà âûâîäà ìåíÿåì áàéò è âûâîäèì
switch(met){
case MET_OR : {WriteData(tmp_data|(data<<bite)); break;}
case MET_XOR : {WriteData(tmp_data^(data<<bite)); break;}
case MET_NOT_OR : {WriteData(tmp_data| ((data^0xFF)<<bite)); break;}
case MET_NOT_XOR : {WriteData(tmp_data^((data^0xFF)<<bite)); break;}
}
//Åñëè ó áûë íå êðàòåí âîñüìè âûâîäèì îñòàâøèþñÿ ÷àñòü íàøåãî áàéòà
if(bite>0){
LCD_SET_PAGE(page+1);
LCD_SET_ADDRESS(x);
tmp_data=ReadData();
tmp_data=ReadData();
LCD_SET_PAGE(page+1);
LCD_SET_ADDRESS(x);
switch(met){
case MET_OR : {WriteData(tmp_data|(data>>(8-bite))); break;}
case MET_XOR : {WriteData(tmp_data^(data>>(8-bite))); break;}
case MET_NOT_OR : {WriteData(tmp_data|((data^0xFF)>>(8-bite))); break;}
case MET_NOT_XOR : {WriteData(tmp_data^((data^0xFF)>>(8-bite))); break;}
}
}
}
void LCD_PUTC(byte x, byte y, byte ch){
byte textL;
byte i;
// òàáëèöå àñêè ñèìâîëû èäóò íåñêîëüêî èíà÷å, ïîýòîìó ïðåîáðàçóåì
//íîìåð ñèìâîëà ïîä íàøóòàáëèöó
if(ch<0x90) textL=0x20;
else textL=0x60;
for(i=0; i<5; i++){
LCD_PUT_BYTE(x+i, y, sym[ch-textL][i]);
}
//Äëÿ ðàçäèëåíèÿ ñèìâîëîâ
LCD_PUT_BYTE(x+i, y, 0x00);
}
void LCD_PUTSF(byte x, byte y, flash unsigned char str[]){
byte i=0;
while(str[i]){
LCD_PUTC(x+i*5+i, y, str[i]);
i++;
}
}
void LCD_PUTI(byte x, byte y, byte ch){
LCD_PUTC(x,y,ch+48);
}