您的位置:首页 > 其它

基于LaunchPad的Nokia5110显示

2013-08-02 23:14 337 查看
说明:此函数在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 },   //
4000
#

    { 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*/

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MSP430