📄 nokia3310-lista4.txt
字号:
/*
POLITECHNIKA OPOLSKA
PROGRAM DO WYSWIETLACZA GRAFICZNEGO Z NOKI 3310 - LPH7779
PRACA DYPLOMOWA
MARCIN BAROWSKI
JANUSZ SZYMANSKI
2006/2007
*/
#include <msp430x44x.h>
// Definicje //
#define wyslij_komende 0
#define wyslij_znak 1
static const unsigned char FontLookup [][5] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp 0
{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! 1
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // " 2
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # 3
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ 4
{ 0xc4, 0xc8, 0x10, 0x26, 0x46 }, // % 5
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // & 6
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' 7
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( 8
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) 9
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * 10
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + 11
{ 0x00, 0x00, 0x50, 0x30, 0x00 }, // , 12
{ 0x10, 0x10, 0x10, 0x10, 0x10 }, // - 13
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // . 14
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // / 15
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 16
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 17
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 18
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 19
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 20
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 21
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 22
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 23
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 24
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 25
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // : 26
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; 27
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // < 28
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // = 29
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // > 30
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? 31
{ 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ 32
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A 33
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B 34
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C 35
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D 36
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E 37
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F 38
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G 39
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H 40
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I 41
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J 42
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K 43
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L 44
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M 45
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N 46
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O 47
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P 48
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q 49
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R 50
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S 51
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T 52
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U 53
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V 54
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W 55
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X 56
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y 57
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z 58
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ 59
{ 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 60
{ 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] 61
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ 62
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ 63
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // ' 64
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a 65
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b 66
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c 67
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, // d 68
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e 69
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f 70
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g 71
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h 72
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i 73
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j 74
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k 75
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l 76
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m 77
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n 78
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o 79
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p 80
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, // q 81
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r 82
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s 83
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t 84
{ 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u 85
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v 86
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w 87
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x 88
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y 89
{ 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z 90
{ 0x08, 0x6C, 0x6A, 0x19, 0x08 }, // { (gramotevichka) 91
{ 0x30, 0x4E, 0x61, 0x4E, 0x30 }, // | (urche) 92
{ 0x7E, 0x7E, 0x7E, 0x7E, 0x7E } // kvadratche 93
};
//-------------------------------Wysylanie LCD-----------------------------------//
void LCD(unsigned char dana, unsigned char kd)
{
P3OUT &=~ 1; // ZALACZ STEROWNIK LCD
if ( kd == wyslij_znak)
{
P3OUT = 4; //USTAWIENIE STEROWNIKA NA ZNAK
}
else
{
P3OUT =~ 5; //USTAWIENIE JAKO KOMENDA
}
U0TXBUF = dana; //WYSYLANIE DANYCH
while ((U0TCTL & TXEPT) == 0); // POCZKEJA AZ BUFOR BEDZIE GOTOWY
P3OUT = 1; //WYLACZ STEROWNIK LCD
}
//----------------------------Czyszczenie LCD--------------------------------------//
void LCDczysc(void)
{ int i;
for (i=0; i<504; i++) //Petla od 0 do 504
{ LCD(0,wyslij_znak ); // wyslij 0 do kazdej komorki LCD
}
}
//---------------------------------Opoznienie--------------------------------------//
void opoznienie(char i)
{
while (--i !=0); //dekrementuj "i" az bedzie rowne zero
}
//-------------------------------Pozycja LCD-----------------------------------------//
void LCDustaw(void)
{
LCD(0x80,wyslij_komende); // ustawianie pozycji
LCD(0x40,wyslij_komende); // wyswietlacza LCD
}
//---------------------------------LCD Napis----------------------------------------//
void LCDnapis(char *danaptr)
{
while (*danaptr)
{
char t;
unsigned int i;
unsigned char j;
j = (*danaptr);
for (i=0; i<5; i++)
{
t = FontLookup [j - 32][i]; // dopasuje adres zmiennej j do adresow tablicy
LCD(t,wyslij_znak); //wyslij dana pobrana z tablicy do LCDmemory
}
danaptr ++;
LCD(0,wyslij_znak); //przerwa jednego banku pomiedzy literami
}
}
//---------------------------------Main-------------------------------------------//
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
//USTAWIANIE W TRYB SPI//
U0CTL = 0x16; //SPI , 8 bit , master
U0TCTL = 0XB2; // 3-pin mode , brak polaryzacji , brak fazy
U0BR0 = 0X02; // UCLK/2
U0BR1 = 0X00;
UMCTL0 = 0X00;
ME1 = 0X40; //zalacz SPI0
//USTAWIANIE FUNKCJI PORTU P3//
P3DIR = 7; //Pierwsze 3 bity P3 ustaw jako wyjscie
P3SEL &=~ 1; //bit 0 funkcja podstawowa
P3SEL = 2; //bit 1 funkcja SPI
P3SEL &=~ 4; //bit 2 funkcja podstawowa (DC - nie potrzebne jest SPI)
P3SEL = 10; //bit 1 i 3 funkcja SPI
P3OUT = 1; // WYLACZENIE STEROWNIKA LCD
opoznienie(100);
//WYSYLANIE KOMEND DO LCD//
LCD(0x21, wyslij_komende); // rozszerzony zestaw komend H=1
LCD(0xC8, wyslij_komende); // ustawienie Vop (kontrastu)
LCD(0x06, wyslij_komende); // ustawienie wspol. temperaturowy
LCD(0x13, wyslij_komende); // ustawienie multipleksowania na 1:48
LCD(0x20, wyslij_komende); // przelonczenie na standardowe komendy H=0 oraz V=0
LCD(0x0C, wyslij_komende); // display control - tryb standartowy
LCDczysc();
LCDustaw();
LCDnapis("PracaDyplomowa 2006/2007 MarcinBarowskiJanusz Szymanski"); //<- wypisywany tekst na wyswietlaczu
for (;;);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -