实例介绍
【实例简介】nokia5110接在cc2530上
#define uint unsigned int
#define uchar unsigned char
/*
RST 复位
CE 片选
DC 数据/指令
DIN 串行数据线
CLK 串行时钟线
VCC 3.3V电源
BL 背光控制端,可以不接
GND 地线
*/
#define LCD_RST P1_7
#define LCD_CE P1_6
#define LCD_DC P1_5
#define LCD_DIN P1_3
#define LCD_CLK P1_2
void LCD_Init(void);//初始化I/O口
void LCD_WriteByte(uchar dat, uchar command);//写数据
void LCD_Set_XY(uchar X, uchar Y);//设置X,Y
void LCD_Clear(void);//清屏
//通用显示函数,适合自定义大小格式
void LCD_display(uchar X,uchar Y,uchar row,uchar col,uchar *data);
void LCD_WriteChar(uchar x,uchar y,uchar c);//发送char
void LCD_WriteString(uchar X,uchar Y,char *s);//发送string
void LCD_WriteNum(uchar X,uchar Y,uint num);//发送num
void LCD_Write_16X16Font(uchar Y,uchar X,uchar *address);//发送16*16字
void LCD_Write_16X8Font(uchar Y,uchar X,uchar *address);//发送16*8字
void LCD_Write_48X48Font(uchar Y,uchar X,uchar *address);//发送48*48字
uchar fu[]={//48*48的福字
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x1C,0x7C,0xF8,0xF0,0xE0,0x00,0x00,
0x00,0x00,0x00,0x30,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x78,0x7C,0x78,0x70,0x60,0x00,0x00,0x00,
0x00,0x00,0x30,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x73,0x77,0xF3,0xF8,0xFC,
0x78,0x70,0x00,0x00,0x00,0x00,0x00,0x06,0xFE,0xFC,0xFC,0x1C,0x1C,0x1C,0x1C,0x1C,
0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0xFE,0xFE,0xFE,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xFC,0xFF,0x7F,0xEF,0xE1,
0xC0,0x80,0x80,0x00,0xC0,0xC0,0x80,0x90,0xBF,0x9F,0x9F,0x8E,0x8E,0x8E,0x8E,0x8E,
0x8E,0x8E,0x8E,0x8E,0x8E,0x9F,0x9F,0x9F,0x9F,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0xC0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0xFF,0xFF,0xFF,0x00,0x00,0x03,
0x0F,0x1F,0x0F,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,
0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,
0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x3F,0x3F,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x1F,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1F,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00};
//16*8的C
uchar C[]={0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00};
//16*8的 % 符号
uchar baifenbi[]={0xF0,0x08,0xF0,0x80,0x60,0x18,0x00,0x00,0x00,0x31,0x0C,0x03,0x1E,0x21,0x1E,0x00};
uchar wen[]=//16*16的“温 ”
{0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00};
uchar du[]={//16*16的“度 ”
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00};
uchar shi[]={//16*16的“湿 ”
0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00};
unsigned char font6x8[][6] = //ASCII码
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp 0
{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! 1
{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // " 2
{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # 3
{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ 4
{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // % 5
{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // & 6
{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' 7
{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( 8
{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) 9
{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * 10
{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // 11
{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // , 12
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // - 13
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // . 14
{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // / 15
{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 16
{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 17
{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 18
{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 19
{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 20
{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 21
{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 22
{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 23
{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 24
{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 25
{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // : 26
{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; 27
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // < 28
{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // = 29
{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // > 30
{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? 31
{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ 32
{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A 33
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B 34
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C 35
{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D 36
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E 37
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F 38
{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G 39
{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H 40
{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I 41
{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J 42
{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K 43
{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L 44
{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M 45
{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N 46
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O 47
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P 48
{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q 49
{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R 50
{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S 51
{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T 52
{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U 53
{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V 54
{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W 55
{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X 56
{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y 57
{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z 58
{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ 59
{ 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 60
{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] 61
{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ 62
{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ 63
{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // ' 64
{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a 65
{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b 66
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c 67
{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d 68
{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e 69
{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f 70
{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g 71
{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h 72
{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i 73
{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j 74
{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k 75
{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l 76
{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m 77
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n 78
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o 79
{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p 80
{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q 81
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r 82
{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s 83
{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t 84
{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u 85
{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v 86
{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w 87
{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x 88
{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y 89
{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z 90
{ 0x00, 0x00, 0xff, 0xff, 0x00, 0x00 }, // || 91
{ 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08 }, // <- 92
{ 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08 }, // -> 94
{ 0x04, 0x02, 0xff, 0x02, 0x04, 0x00 }, // up 94
{ 0x00, 0x20, 0x40, 0xff, 0x40, 0x20 }, // down 95
{ 0x00, 0x01, 0x01, 0xFF, 0x81, 0x81 }, //ADC Series上用的上划线
{ 0x00, 0x80, 0x80, 0xFF, 0x80, 0x80 } //ADC Series上用的下划线
};
void LCD_Init(void)
{
unsigned char i;
P1SEL &=~0xEC;//配置为通用I\O口
P1DIR |= 0xEC;//配置为输出模式
LCD_RST=0; //复位
for(i=0;i<150;i ); //微微延时等待稳定
LCD_RST=1; //释放复位
LCD_WriteByte(0x21, 0);// 使用扩展命令设置LCD模式
LCD_WriteByte(0xc2, 0);// 设置偏置电压,修改可改变5110点阵显示的亮度
LCD_WriteByte(0x13, 0);//1:48
LCD_WriteByte(0x06, 0); //设置温度系数
LCD_WriteByte(0x20, 0); // 使用基本命令。并设置V=0,水平寻址
LCD_Clear(); // 清屏
LCD_WriteByte(0x0c, 0);//设定显示模式,正常显示(普通显示)
LCD_CE=0; //5110片选有效,允许输入数据
}
void LCD_WriteByte(unsigned char dat, unsigned char command)
{
unsigned char i;
LCD_CE=0; //5110片选有效,允许输入数据
if (command == 0) //写命令
LCD_DC=0;
else
LCD_DC=1; //写数据
for(i=0;i<8;i )//传送8bit数据
{
if(dat&0x80)
LCD_DIN=1;
else
LCD_DIN=0;
LCD_CLK=0;
dat = dat << 1;
LCD_CLK=1;
}
LCD_CE=1; //禁止5110
}
void LCD_Set_XY(unsigned char X, unsigned char Y)
{
LCD_WriteByte(0x40 | Y, 0);// column 列
LCD_WriteByte(0x80 | X, 0);// row 行
}
void LCD_Clear(void)
{
unsigned char t;
unsigned char k;
LCD_Set_XY(0, 0);//设置RAM起始地址
//5110 lcd是48*84个点,而列是每一位管理8个列点
for(t=0;t<6;t )//6bit*84=6*8*84个点
{
for(k=0;k<84;k )
{
LCD_WriteByte(0x00,1);
}
}
}
void LCD_WriteChar(unsigned char x,unsigned char y,unsigned char c)
{
unsigned char i;
//ASCII码中字符的编码 -32 就刚好对应 font6x8 数组的行号
c -= 32; //数组的行号
LCD_Set_XY(x,y);
for(i=0; i<6; i )
{
LCD_WriteByte(font6x8[c][i], 1);
}
}
void LCD_WriteString(unsigned char X,unsigned char Y,char *s)
{
while(*s)
{
LCD_WriteChar(X,Y,*s);
s ;
X = 6;
}
}
void LCD_WriteNum(unsigned char X,unsigned char Y,unsigned int num)
{
unsigned char str[8],i=0,len=0;
unsigned int temp;
temp = num;
while(temp)
{
temp /=10;
len ;
}
if(!num)
{
len ;
str[0]=0x30;
}
str[len] = 0;
while(num)
{
str[len-i-1] = num 0x30;
num /=10;
i ;
}
LCD_WriteString(X,Y,(char *)str);
}
void LCD_Write_16X16Font(unsigned char Y,unsigned char X,unsigned char *address)
{
unsigned char i;
LCD_Set_XY(X,Y);
for(i=0;i<16;i ) {LCD_WriteByte(*address,1);address ;}
LCD_Set_XY(X, Y);
for(i=0;i<16;i ) {LCD_WriteByte(*address,1);address ;}
}
void LCD_Write_48X48Font(unsigned char Y,unsigned char X,unsigned char *address)
{
unsigned char i,j;
LCD_Set_XY(X,Y);
for (j=0;j<6;j ){
for(i=0;i<48;i ){LCD_WriteByte(*address,1);address ;}
LCD_Set_XY(X, Y);
}
}
void LCD_Write_16X8Font(unsigned char X,unsigned char Y,unsigned char *addss)
{
unsigned char i;
LCD_Set_XY(X,Y);
for(i=0;i<8;i ) {LCD_WriteByte(*addss,1);addss ;}
LCD_Set_XY(X, Y);
for(i=0;i<8;i ) {LCD_WriteByte(*addss,1);addss ;}
}
/*
这个函数可以自己设定显示的内容的大小,需用取模软件得到待显示的数据;
在取模时需注意取模方式,我这里所有的取模都设置是(纵向取模、字节倒序)方式
*/
// 设置 X,Y起点; 行、列大小 数组地址名
void LCD_display(uchar X,uchar Y,uchar row,uchar col,uchar *data)
{
uchar i,j;
for(i=0;i<row;i )
{
for(j=0;j<col;j )
{
LCD_Set_XY(X j,Y i);
LCD_WriteByte(* data,1);
}
}
}
void main()
{
LCD_Init();
while(1)
{
LCD_Write_16X16Font(0,0,wen);
LCD_Write_16X16Font(0,16,du);
LCD_WriteChar(32,1,':');// y x ;
LCD_WriteNum(40,9,2);
LCD_WriteNum(46,9,9);
LCD_WriteChar(52,1,'.');// y x .
LCD_WriteNum(58,9,7);
LCD_WriteNum(64,9,6);
LCD_WriteChar(72,1,'.');
LCD_Write_16X8Font(72,0,C);
LCD_Write_16X16Font(3,0,shi);
LCD_Write_16X16Font(3,16,du);
LCD_WriteChar(32,4,':');
LCD_WriteNum(40,28,2);
LCD_WriteNum(46,28,9);
LCD_WriteChar(52,4,'.');// y x .
LCD_WriteNum(58,28,7);
LCD_WriteNum(64,28,6);
LCD_Write_16X8Font(72,3,baifenbi);
}
}
【实例截图】
#define uint unsigned int
#define uchar unsigned char
/*
RST 复位
CE 片选
DC 数据/指令
DIN 串行数据线
CLK 串行时钟线
VCC 3.3V电源
BL 背光控制端,可以不接
GND 地线
*/
#define LCD_RST P1_7
#define LCD_CE P1_6
#define LCD_DC P1_5
#define LCD_DIN P1_3
#define LCD_CLK P1_2
void LCD_Init(void);//初始化I/O口
void LCD_WriteByte(uchar dat, uchar command);//写数据
void LCD_Set_XY(uchar X, uchar Y);//设置X,Y
void LCD_Clear(void);//清屏
//通用显示函数,适合自定义大小格式
void LCD_display(uchar X,uchar Y,uchar row,uchar col,uchar *data);
void LCD_WriteChar(uchar x,uchar y,uchar c);//发送char
void LCD_WriteString(uchar X,uchar Y,char *s);//发送string
void LCD_WriteNum(uchar X,uchar Y,uint num);//发送num
void LCD_Write_16X16Font(uchar Y,uchar X,uchar *address);//发送16*16字
void LCD_Write_16X8Font(uchar Y,uchar X,uchar *address);//发送16*8字
void LCD_Write_48X48Font(uchar Y,uchar X,uchar *address);//发送48*48字
uchar fu[]={//48*48的福字
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x1C,0x7C,0xF8,0xF0,0xE0,0x00,0x00,
0x00,0x00,0x00,0x30,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x78,0x7C,0x78,0x70,0x60,0x00,0x00,0x00,
0x00,0x00,0x30,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x73,0x77,0xF3,0xF8,0xFC,
0x78,0x70,0x00,0x00,0x00,0x00,0x00,0x06,0xFE,0xFC,0xFC,0x1C,0x1C,0x1C,0x1C,0x1C,
0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0xFE,0xFE,0xFE,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xFC,0xFF,0x7F,0xEF,0xE1,
0xC0,0x80,0x80,0x00,0xC0,0xC0,0x80,0x90,0xBF,0x9F,0x9F,0x8E,0x8E,0x8E,0x8E,0x8E,
0x8E,0x8E,0x8E,0x8E,0x8E,0x9F,0x9F,0x9F,0x9F,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0xC0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0xFF,0xFF,0xFF,0x00,0x00,0x03,
0x0F,0x1F,0x0F,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,
0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,
0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x3F,0x3F,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x1F,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1F,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00};
//16*8的C
uchar C[]={0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00};
//16*8的 % 符号
uchar baifenbi[]={0xF0,0x08,0xF0,0x80,0x60,0x18,0x00,0x00,0x00,0x31,0x0C,0x03,0x1E,0x21,0x1E,0x00};
uchar wen[]=//16*16的“温 ”
{0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00};
uchar du[]={//16*16的“度 ”
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00};
uchar shi[]={//16*16的“湿 ”
0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00};
unsigned char font6x8[][6] = //ASCII码
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp 0
{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! 1
{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // " 2
{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # 3
{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ 4
{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // % 5
{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // & 6
{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' 7
{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( 8
{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) 9
{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * 10
{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // 11
{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // , 12
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // - 13
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // . 14
{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // / 15
{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 16
{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 17
{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 18
{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 19
{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 20
{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 21
{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 22
{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 23
{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 24
{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 25
{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // : 26
{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; 27
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // < 28
{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // = 29
{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // > 30
{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? 31
{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ 32
{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A 33
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B 34
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C 35
{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D 36
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E 37
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F 38
{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G 39
{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H 40
{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I 41
{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J 42
{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K 43
{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L 44
{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M 45
{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N 46
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O 47
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P 48
{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q 49
{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R 50
{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S 51
{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T 52
{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U 53
{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V 54
{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W 55
{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X 56
{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y 57
{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z 58
{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ 59
{ 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 60
{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] 61
{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ 62
{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ 63
{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // ' 64
{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a 65
{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b 66
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c 67
{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d 68
{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e 69
{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f 70
{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g 71
{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h 72
{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i 73
{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j 74
{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k 75
{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l 76
{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m 77
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n 78
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o 79
{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p 80
{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q 81
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r 82
{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s 83
{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t 84
{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u 85
{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v 86
{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w 87
{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x 88
{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y 89
{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z 90
{ 0x00, 0x00, 0xff, 0xff, 0x00, 0x00 }, // || 91
{ 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x08 }, // <- 92
{ 0x08, 0x08, 0x08, 0x2a, 0x1c, 0x08 }, // -> 94
{ 0x04, 0x02, 0xff, 0x02, 0x04, 0x00 }, // up 94
{ 0x00, 0x20, 0x40, 0xff, 0x40, 0x20 }, // down 95
{ 0x00, 0x01, 0x01, 0xFF, 0x81, 0x81 }, //ADC Series上用的上划线
{ 0x00, 0x80, 0x80, 0xFF, 0x80, 0x80 } //ADC Series上用的下划线
};
void LCD_Init(void)
{
unsigned char i;
P1SEL &=~0xEC;//配置为通用I\O口
P1DIR |= 0xEC;//配置为输出模式
LCD_RST=0; //复位
for(i=0;i<150;i ); //微微延时等待稳定
LCD_RST=1; //释放复位
LCD_WriteByte(0x21, 0);// 使用扩展命令设置LCD模式
LCD_WriteByte(0xc2, 0);// 设置偏置电压,修改可改变5110点阵显示的亮度
LCD_WriteByte(0x13, 0);//1:48
LCD_WriteByte(0x06, 0); //设置温度系数
LCD_WriteByte(0x20, 0); // 使用基本命令。并设置V=0,水平寻址
LCD_Clear(); // 清屏
LCD_WriteByte(0x0c, 0);//设定显示模式,正常显示(普通显示)
LCD_CE=0; //5110片选有效,允许输入数据
}
void LCD_WriteByte(unsigned char dat, unsigned char command)
{
unsigned char i;
LCD_CE=0; //5110片选有效,允许输入数据
if (command == 0) //写命令
LCD_DC=0;
else
LCD_DC=1; //写数据
for(i=0;i<8;i )//传送8bit数据
{
if(dat&0x80)
LCD_DIN=1;
else
LCD_DIN=0;
LCD_CLK=0;
dat = dat << 1;
LCD_CLK=1;
}
LCD_CE=1; //禁止5110
}
void LCD_Set_XY(unsigned char X, unsigned char Y)
{
LCD_WriteByte(0x40 | Y, 0);// column 列
LCD_WriteByte(0x80 | X, 0);// row 行
}
void LCD_Clear(void)
{
unsigned char t;
unsigned char k;
LCD_Set_XY(0, 0);//设置RAM起始地址
//5110 lcd是48*84个点,而列是每一位管理8个列点
for(t=0;t<6;t )//6bit*84=6*8*84个点
{
for(k=0;k<84;k )
{
LCD_WriteByte(0x00,1);
}
}
}
void LCD_WriteChar(unsigned char x,unsigned char y,unsigned char c)
{
unsigned char i;
//ASCII码中字符的编码 -32 就刚好对应 font6x8 数组的行号
c -= 32; //数组的行号
LCD_Set_XY(x,y);
for(i=0; i<6; i )
{
LCD_WriteByte(font6x8[c][i], 1);
}
}
void LCD_WriteString(unsigned char X,unsigned char Y,char *s)
{
while(*s)
{
LCD_WriteChar(X,Y,*s);
s ;
X = 6;
}
}
void LCD_WriteNum(unsigned char X,unsigned char Y,unsigned int num)
{
unsigned char str[8],i=0,len=0;
unsigned int temp;
temp = num;
while(temp)
{
temp /=10;
len ;
}
if(!num)
{
len ;
str[0]=0x30;
}
str[len] = 0;
while(num)
{
str[len-i-1] = num 0x30;
num /=10;
i ;
}
LCD_WriteString(X,Y,(char *)str);
}
void LCD_Write_16X16Font(unsigned char Y,unsigned char X,unsigned char *address)
{
unsigned char i;
LCD_Set_XY(X,Y);
for(i=0;i<16;i ) {LCD_WriteByte(*address,1);address ;}
LCD_Set_XY(X, Y);
for(i=0;i<16;i ) {LCD_WriteByte(*address,1);address ;}
}
void LCD_Write_48X48Font(unsigned char Y,unsigned char X,unsigned char *address)
{
unsigned char i,j;
LCD_Set_XY(X,Y);
for (j=0;j<6;j ){
for(i=0;i<48;i ){LCD_WriteByte(*address,1);address ;}
LCD_Set_XY(X, Y);
}
}
void LCD_Write_16X8Font(unsigned char X,unsigned char Y,unsigned char *addss)
{
unsigned char i;
LCD_Set_XY(X,Y);
for(i=0;i<8;i ) {LCD_WriteByte(*addss,1);addss ;}
LCD_Set_XY(X, Y);
for(i=0;i<8;i ) {LCD_WriteByte(*addss,1);addss ;}
}
/*
这个函数可以自己设定显示的内容的大小,需用取模软件得到待显示的数据;
在取模时需注意取模方式,我这里所有的取模都设置是(纵向取模、字节倒序)方式
*/
// 设置 X,Y起点; 行、列大小 数组地址名
void LCD_display(uchar X,uchar Y,uchar row,uchar col,uchar *data)
{
uchar i,j;
for(i=0;i<row;i )
{
for(j=0;j<col;j )
{
LCD_Set_XY(X j,Y i);
LCD_WriteByte(* data,1);
}
}
}
void main()
{
LCD_Init();
while(1)
{
LCD_Write_16X16Font(0,0,wen);
LCD_Write_16X16Font(0,16,du);
LCD_WriteChar(32,1,':');// y x ;
LCD_WriteNum(40,9,2);
LCD_WriteNum(46,9,9);
LCD_WriteChar(52,1,'.');// y x .
LCD_WriteNum(58,9,7);
LCD_WriteNum(64,9,6);
LCD_WriteChar(72,1,'.');
LCD_Write_16X8Font(72,0,C);
LCD_Write_16X16Font(3,0,shi);
LCD_Write_16X16Font(3,16,du);
LCD_WriteChar(32,4,':');
LCD_WriteNum(40,28,2);
LCD_WriteNum(46,28,9);
LCD_WriteChar(52,4,'.');// y x .
LCD_WriteNum(58,28,7);
LCD_WriteNum(64,28,6);
LCD_Write_16X8Font(72,3,baifenbi);
}
}
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论