说明:此函数在LaunchPad测试过可用。可以显示图片(单色位图bmp),汉字,基本常用字符数字字母。接口在程序有说明,汉字取模软件用
图片取模用PCtoLCD2002.exe提取
以下是函数部分,分为main.c nokia5110.h zimo.h三个文件。
//------------------------------------------main.c-----------------------------------------------//
#include <msp430g2553.h>
#include "nokia5110.h"
unsigned char table[]={"0123456789"};
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR=0xff;
RES_0;
delay_us(100);
RES_1;
LCD_init();
LCD_clear();
while(1)
{
// LCD_set_XY(0,0);
// LCD_write_char(table[3]);
LCD_write_picture();
}
}
//------------------------------------Nokia5110.h--------------------------------------------//
/*
** NOKIA5110驱动函数** MSP430G2553
** --namedhx
** 31/07/13
*/
//
//
// P1.1->RES// P1.2->SCE
// P1.3->DC
// P1.4->SDIN
// P1.5->SCLK
//
//
#include <msp430g2553.h>
//#include "math.h"
#include "zimo.h"
#define CPU_F ((double)1000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
/*----------------IO口定义---------------------*/
#define RES_1 P1OUT|= BIT1;//复位
#define RES_0 P1OUT&=~BIT1;
#define SCE_1 P1OUT|= BIT2;//片选
#define SCE_0 P1OUT&=~BIT2;
#define DC_1 P1OUT|= BIT3; //1-写数据,0-写命令
#define DC_0 P1OUT&=~BIT3;
#define SDIN_1 P1OUT|= BIT4;//串行数据输入
#define SDIN_0 P1OUT&=~BIT4;
#define SCLK_1 P1OUT|= BIT5;//串行数据时钟
#define SCLK_0 P1OUT&=~BIT5;
/*----------------------------------------------*/
/*----------使用SPI接口写数据到LCD------------
-----------传送一个字节8bit-------------------*/
void LCD_write_byte(unsigned char dat,unsigned char com)
{
unsigned char i;
SCE_0;
if(com==1)//1-ata
{DC_1;}
else
{DC_0;} //0-dcommand
for(i=0;i<8;i++)
{
if(dat&0x80)
{SDIN_1;}
else
{SDIN_0;}
dat=dat<<1;
SCLK_1;//时钟信号
SCLK_0;
}
DC_1;
SDIN_1;
SCE_1;
}
/*---------------LCD_init-----------------*/
void LCD_init(void)
{
RES_0;
delay_ms(1);
RES_1;//复位LCD
LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
LCD_write_byte(0xd0,0);//设定液晶偏置电压
LCD_write_byte(0x20,0);//使用基本指令
LCD_write_byte(0x0C,0);//设定显示模式,正常显示
}
/*----------LCD_set_XY -----X:0~83 Y:0~5------------*/
void LCD_set_XY(unsigned char X,unsigned char Y)
{
LCD_write_byte(0x40 | Y, 0);// column
LCD_write_byte(0x80 | X, 0);// row
}
/*------------------LCD_clear----------------------*/
void LCD_clear(void)
{
unsigned char j,k;
LCD_set_XY(0,0);
for(j=0;j<6;j++)
{
for(k=0;k<84;k++)
{
LCD_write_byte(0x00,1);//把屏幕所有点显示空白,即清屏
}
}
}
/*--------------LCD_write_char-------------*/
void LCD_write_char(unsigned char c)
{
unsigned char line;
c -= 32;
for (line=0; line<6; line++)
{
LCD_write_byte(font6x8[c][line], 1);
}
}
/*----------------LCD_write_String ----------------------*/
void LCD_write_string(unsigned char X,unsigned char Y,char *s)
{
LCD_set_XY(X,Y);
while (*s)
{
LCD_write_char(*s);
s++;
}
}
//显示12(宽)*16(高)点阵列汉字等半角类
void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c)
{
unsigned char i;
LCD_set_XY(row*6, page);// 列,页
for(i=0; i<12;i++)
{
LCD_write_byte(hanzi[c*24+i],1);
}
LCD_set_XY(row*6, page+1);// 列,页
for(i=12; i<24;i++)
{
LCD_write_byte(hanzi[c*24+i],1);
}
}
//打点函数
void LCD_write_point(unsigned int x,unsigned int y)
{
unsigned int y1,y2,y3,y4=1,i;
y1=y/8;y2=1+y-8*y1;y3=5-y1;
for(i=0;i<(8-y2);i++)
{
y4*=2;
}
LCD_set_XY(x,y3);
LCD_write_byte(y4,1);
}
/*****************************************
名称:Draw_circle (在任意位置画圆)
说明:使用Bresenham法画1/8个圆,在用对称性画出其他的7/8个圆
按下图把圆分为8份
0
7 1
6 2
5 3
4
*****************************************/
void LCD_write_circle(unsigned char x0,unsigned char y0,unsigned char r)
{
int a,b;
int di;
a=0;
b=r;
di=3-2*r; //判断下个点位置的标志
while(a<=b)
{
LCD_write_point(x0-b,y0-a); //3
LCD_write_point(x0+b,y0-a); //0
LCD_write_point(x0-a,y0+b); //1
LCD_write_point(x0-b,y0-a); //7
LCD_write_point(x0-a,y0-b); //2
LCD_write_point(x0+b,y0+a); //4
LCD_write_point(x0+a,y0-b); //5
LCD_write_point(x0+a,y0+b); //6
LCD_write_point(x0-b,y0+a);
a++;
/***使用Bresenham算法画圆**/
if(di<0)
di +=4*a+6;
else
{
di +=10+4*(a-b);
b--;
}
LCD_write_point(x0+a,y0+b);
}
}
//显示图片
void LCD_write_picture() //row:列 page:页 dd:字符
{
unsigned char i,page,c=0;
for(page=0;page<6;page++)
{
LCD_set_XY(0, page);// 列,页
for(i=0; i<84;i++)
{
LCD_write_byte(picture[c*84+i],1);
}
c++;
}
}
//-------------------------------------------------------zimo.h-------------------------------------------------//
const unsigned char font6x8[][6] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %
{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
{ 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55
{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g
{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j
{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p
{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y
{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines
};
unsigned char hanzi[]=
{
0x88,0xD2,0x24,0x50,0xE4,0x9C,0x44,0xA7,//液
0x5C,0x94,0x74,0x04,0x00,0x0F,0x00,0x00,
0x0F,0x08,0x08,0x05,0x02,0x05,0x08,0x08,
0x00,0xC0,0x40,0x5F,0xD5,0x15,0x15,0xD5,//晶
0x5F,0x40,0xC0,0x00,0x00,0x0F,0x05,0x05,
0x0F,0x00,0x00,0x0F,0x05,0x05,0x0F,0x00,
};
const unsigned char picture[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFC,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
0x7F,0xF0,0xF0,0xF8,0xF8,0xF8,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF8,0xFE,0xFF,0x0F,0x03,0x01,0x01,0xE0,0xF8,0x38,0x3C,0x3C,
0xFC,0xCC,0xDC,0xF8,0xF8,0x70,0x00,0x00,0x01,0x87,0xFF,0xFF,0xFE,0xFC,0xFC,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0F,0x0E,0x1C,0x18,0x18,
0x31,0x33,0x32,0x32,0x33,0x33,0x33,0x31,0x39,0x18,0x1C,0x1C,0x1E,0x1F,0x0F,0x0F,
0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00/*"C:\Users\Administrator\Desktop\QQ截图20130731145714.bmp",0*/
};