⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nokia5110.c

📁 单边带调幅对讲机程序 msp430单片机控制 实现无线数据传输
💻 C
字号:
#include"NOKIA_5110.H"

const unsigned char font6x8[][6] =
{
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp(空格)  32 
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !	   33
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "	   34
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #	   35
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $	   36
    { 0x23, 0x13, 0x08, 0x64 ,0x62 ,0x00 },   // %	   37
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &	   38
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '	   39
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (	   40
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )	   41
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *	   42
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +	   43
    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // ,	   44
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // -	   45
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .	   46
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /	   47
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0	   48
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1	   49
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2	   50
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3	   51
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4	   52
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5	   53
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6	   54
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7	   55
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8	   56
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9	   57
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :	   58
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;	   59
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <	   60
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =	   61
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >	   62
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?	   63
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @	   64
    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A	   65
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B	   66
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C	   67
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D	   68
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E	   69
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F	   70
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G	   71
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H	   72
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I	   73
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J	   74
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K	   75
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L	   76
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M	   77
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N	   78
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O	   79
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P	   80
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q	   81
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R	   82
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S	   83
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T	   84
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U	   85
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V	   86
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W	   87
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X	   88
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y	   89
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z	   90
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [	   91
    { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55	   92
    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ]	   93
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^	   94
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _	   95
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '	   96
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a	   97
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b	   98
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c	   99
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d	   100
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e	   101
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f	   102
    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g	   103
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h	   104
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i	   105
    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j	   106
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k	   107
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l	   108
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m	   109
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n	   110
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o	   111
    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p	   112
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q	   113
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r	   114
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s	   115
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t	   116
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u	   117
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v	   118
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w	   119
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x	   120
    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y	   121
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z	   122
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines	123
};
unsigned char XHQD[][6]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : A
  宽×高(像素): 6×8
  字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/6字节
  数据转换日期  : 2008-11-18 18:11:39
------------------------------------------------------------------------------*/
  {0x00,0x00,0xC0,0xC0,0x00,0x00},
  {0x00,0x00,0xF0,0xF0,0x00,0x00},
  {0x00,0x00,0xFC,0xFC,0x00,0x00},
  {0x00,0x00,0xFF,0xFF,0x00,0x00}
};
void NOKIA5110_delay(void)                 //延时函数
  {
   unsigned int i;				   
   for(i=0;i<670;i++);
   }

/*-----------------------------------------------------------------------
NOKIA5110_w_byte  : 使用SPI接口写数据到LCD
输入参数:data    :写入的数据;
          command :写数据/命令选择;
-----------------------------------------------------------------------*/
void NOKIA5110_w_byte(unsigned char dat, unsigned char command)
  {
    unsigned char i;
    LCD_CE_L;
       if (command == 0)
     	LCD_DC_L ;     // 传送命令
    else
     	LCD_DC_H;	    // 传送数据
     								   
		for(i=0;i<8;i++)
		{
			if(dat&0x80)
				SDIN_H;
			else
				SDIN_L;
			SCLK_L;
			dat = dat << 1;
			SCLK_H;
		}
     LCD_CE_H;
  }
/*-----------------------------------------------------------------------
NOKIA5110_clear  : LCD清屏函数
-----------------------------------------------------------------------*/
void NOKIA5110_clear(void)
  {
    unsigned int i;
    NOKIA5110_w_byte(0x0c, 0);			
    NOKIA5110_w_byte(0x80, 0);			
    for (i=0; i<504; i++)
       NOKIA5110_w_byte(0, 1);			
  }

/****************************************************
NOKIA5110_init: LCD 初始化
*****************************************************/
void NOKIA5110_init(void)
  {
            // 产生一个让LCD复位的低电平脉冲
   LCD_RST_L;
   NOKIA5110_delay();  // 关闭LCD	
   LCD_RST_H;		  
   LCD_CE_L;
   NOKIA5110_delay();  // 使能LCD  	
   LCD_CE_H;  
   NOKIA5110_delay();

    NOKIA5110_w_byte(0x21, 0);	// 使用扩展命令设置LCD模式
    NOKIA5110_w_byte(0xc8, 0);	// 设置偏置电压
    NOKIA5110_w_byte(0x06, 0);	// 温度校正
    NOKIA5110_w_byte(0x13, 0);	// 1:48
    NOKIA5110_w_byte(0x20, 0);	// 使用基本命令
    NOKIA5110_clear();	            // 清屏
    NOKIA5110_w_byte(0x0c, 0);	// 设定显示模式,正常显示
    LCD_CE_L;	                // 关闭LCD
  }


/*-----------------------------------------------------------------------
NOKIA5110_set_XY : 设置LCD坐标函数
输入参数:X:0-83
          Y:0-5
-----------------------------------------------------------------------*/
void NOKIA5110_set_XY(unsigned char X, unsigned char Y)
  {
    NOKIA5110_w_byte(0x40 | Y, 0);        // 列(竖) 
    NOKIA5110_w_byte(0x80 | X, 0);        // 行(横)
  }

/*-----------------------------------------------------------------------
NOKIA5110_draw_bmp : 位图绘制函数
输入参数:X、Y    :位图绘制的起始X、Y坐标;
          *map    :位图点阵数据;
          Pix_x   :位图像素(长)
          Pix_y   :位图像素(宽)
-----------------------------------------------------------------------*/
void NOKIA5110_draw_bmp(unsigned char X,
                        unsigned char Y,
						unsigned char *map,
                        unsigned char Pix_x,
						unsigned char Pix_y)
  {
    unsigned int i,n;
    unsigned char row,h;
	h=Y;
    
    if (Pix_y%8==0) 
	    row=Pix_y/8;      //计算位图所占行数
    else
        row=Pix_y/8+1;
    
    for (n=0;n<row;n++)
      {
      	NOKIA5110_set_XY(X,h);
        for(i=0; i<Pix_x; i++)
          {
            NOKIA5110_w_byte(map[i+n*Pix_x], 1);
          }
        h++;				 //换行
		if(h>=6) h=0;                        
      }      
  }	
void Write_shuzi(unsigned char X,unsigned char Y,unsigned char *shuzi)
  {
   unsigned char i,n;
    for(n=0;n<2;n++)
	  {
	    NOKIA5110_set_XY(X,Y);
		 for(i=0; i<8; i++)
          {
            NOKIA5110_w_byte(shuzi[i+n*8], 1);
          }
        Y++;
		
		}
		}				 //换行

void Write_hanzi(unsigned char X,unsigned char Y,unsigned char *hanz)
  {
   unsigned char i,n;
    for(n=0;n<2;n++)
	   {
	    NOKIA5110_set_XY(X,Y);
		 for(i=0; i<16; i++)
          {
            NOKIA5110_w_byte(hanz[i+n*16], 1);
          }
        Y++;				 //换行
	//	if(h>=6) h=0;    
	   }
  }

/*-----------------------------------------------------------------------
NOKIA5110_w_char: 显示英文字符
输入参数:c   :显示的字符;
-----------------------------------------------------------------------*/
void NOKIA5110_w_char(unsigned char c)
  {
    unsigned char line;
	c-= 32;    //字母所在的行数
	for (line=0; line<6; line++)
    NOKIA5110_w_byte(font6x8[c][line], 1);
  }
/*-----------------------------------------------------------------------
NOKIA5110_w_char_string  : 英文字符串显示函数
输入参数:*s      :英文字符串指针;
          X、Y    : 显示字符串的位置,x 0-83 ,y 0-5
-----------------------------------------------------------------------*/
void NOKIA5110_w_char_string(unsigned char X,unsigned char Y,char *str)
  {
    NOKIA5110_set_XY(X,Y);
    while (*str) 
      {    
	   NOKIA5110_w_char(*str);
	   str++;
       }
  }

void NOKIA5110_w_Symbol(unsigned char h)
{   unsigned char line;
  for (line=0; line<6; line++)
    NOKIA5110_w_byte(XHQD[h][line], 1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -