基于LaunchPad的Nokia5110显示

来源:互联网 发布:php连接mssql 编辑:程序博客网 时间:2024/05/16 08:54

说明:此函数在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*/
};

原创粉丝点击