1. 程式人生 > >MSP430驅動諾基亞5110液晶屏完整程式

MSP430驅動諾基亞5110液晶屏完整程式

/************************************************

main()主函式

試驗名稱:test_nokia5110

試驗功能:測試nokia5110 LCD顯示
************************************************/
#include<msp430x14x.h>
#include"nokia5110.h"


#define uchar unsigned char
#define uint  unsigned int


//uchar ISR_Symbol=0,DAT=0X00;               //任務標誌
void Iint_Port1(void);


void main(void)
{       
        uchar a={'s'}; 
        uint i=56000;
WDTCTL = WDTPW + WDTHOLD;//停止看門狗定時器
        unsigned char p;
  
        WDTCTL=WDTPW+WDTHOLD;
        //使用XT2振盪器  8MHZ
         BCSCTL1&=~XT2OFF;         //開啟XT2振盪器
         do
            {
              IFG1 &= ~OFIFG;    // 清除振盪器失效標誌
              for (p = 0xFF; p > 0; p--); // 延時,等待XT2起振
            }
         while ((IFG1 & OFIFG) != 0);   // 判斷XT2是否起振
        while(i--)i=i;
        
   CCR0=100;   //10KHZ
   CCTL1=OUTMOD_7;
   CCR1=0;    //佔空比 CCR1/CCR0
   CCTL2=OUTMOD_7;
   CCR2=0;
   TACTL = TASSEL_2 + MC_1 + TAIE;// MCLK,定時器 A 增計數模式,且開中斷功能
   P3DIR=0xff;     
        LCD_init();
        
        Iint_Port1(); 
        Iint_Port1();                           //初始化p1.0
        _EINT();                                //開總中斷允許
      

        //LCD_one_char(10,5,a);
        //LCD_char_string(0,2," NOKIA is OK! ");
//LCD_char_string(0,0," CFE");
//LCD_char_string(0,3,"  20011-6-18   ");
        //WriteByteNokia(CMD, CONV_DISPLAY);
//LCD_num(20,5,49537); /**/
      
while(1)
          {
            //LPM3;                                 //進入低功耗模式3,I/O口中斷可將其喚醒
            //if((ISR_Symbol&BIT0)==BIT0)      {ISR_Symbol&=~BIT0;}    //中斷服務程式
            //else if((ISR_Symbol&BIT1)==BIT1) {ISR_Symbol&=~BIT1;}    //其他任務
           welcome_screen();
          };

  }
void Iint_Port1(void)
{
    //P2DIR=0XFF;
    //P2SEL=0X00;
    //P2OUT=0XFF;


    P1DIR=0X00;                         //設定為輸入方向
    P1SEL=0X00;                         //設定為普通I/O口功能
    P1IES|=0X06;                          //選擇下降沿觸發
    P1IE|=0X06;                           //開啟中斷允許
    P1IFG=0;                              //P1IES的切換可能使P1IFG置位,需清除

}

/************************************************************************************

ISR.C    子檔案

************************************************************************************/

#include<msp430x14x.h>
#include"nokia5110.h"
uint time;
uint v_right=0;
uint v_left=0;


#pragma vector=PORT1_VECTOR
__interrupt void R_B_ISR(void)
{   //P1IFG=0;                              //多源中斷,需靠軟體清除P1IFG




    //DAT^=0XFF;                         //取反
    //P2OUT=DAT;
    P2OUT=P1IFG;
    switch(P1IFG){
       case 0x01:break;
       case 0x02:
                {
                  v_right++;
                  break;
                } 
       case 0x04:
                {
                  v_left++;
                  break;
                }
       case 0x08:break;
       case 0x10:break;
       case 0x20:break;
       case 0x40:break;
       case 0x80:break;
       default:break;
       }
    P1IFG=0;


    //ISR_Symbol|=BIT0;                     //置任務標誌
    //_BIC_SR_IRQ(LPM3_bits);                    //將CPU從睡眠模式喚醒
}




// Timer_A3 中斷向量 (TAIV)處理程式
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
    switch( TAIV )
    {
      case 2: break;
      case 4: break;          //應用 switch 語句來處理多中斷源的向量
                      //向量列表通過 case 語句來分多中斷源的入口
                      // CCR1 比較/捕獲暫存器的中斷入口,本例子未用到。
                      // CCR2 比較/捕獲暫存器的中斷入口,本例子未用到。
      case 10: 
        {time++;
        if(time>5000)
        {
         time=0;
         
         //LCD_num(20,4,v_left*1.727);
         //LCD_num(20,5,v_right*1.727);
         P3OUT ^= 0x33;
         v_left=0;
         v_right=0;  
        }
        }
      break;
    }
}

/************************************************************************************************

nokia5110驅動子檔案,可以把圖片程式碼替換於此,進行圖片顯示

************************************************************************************************/

#include "nokia5110.h"
#include"zifu6x8.h"


//漢字編碼表,用LCD3310.exe軟體可以獲取漢字編碼
/*typedef struct typHZ_GB12//12*12 漢字字模顯示資料結構,一個漢字分為上下兩層
{
   char Index[2];//一個漢字佔兩個位元組
   char Msk[24];//一個漢字的編碼由24個十六進位制陣列成
}ujjyny;
struct typHZ_GB12 const  GB_12[] ={
"距",{0xEF,0x09,0xF9,0x4F,0x40,0xFF,0x49,0x49,0x49,0x79,0x01,0x00,0x07,0x04,0x03,0x02,0x02,0x07,0x04,0x04,0x04,0x04,0x04,0x00},
"離",{0x02,0x82,0xBE,0xA2,0xB6,0xEB,0xB6,0xA2,0xBE,0x82,0x02,0x00,0x00,0x07,0x00,0x02,0x03,0x02,0x02,0x03,0x04,0x07,0x00,0x00},
"溫",{0x89,0x72,0x00,0xC0,0x5F,0xD5,0x55,0xD5,0x55,0xDF,0x00,0x00,0x07,0x00,0x04,0x07,0x04,0x07,0x04,0x07,0x04,0x07,0x04,0x00},
"度",{0x00,0xFE,0x0A,0x8A,0xBE,0xAA,0xAB,0xAA,0xBE,0x0A,0x0A,0x00,0x06,0x01,0x04,0x04,0x04,0x03,0x02,0x03,0x04,0x04,0x04,0x00},
"角",{0x10,0x08,0xFC,0xAB,0xAA,0xFA,0xAE,0xAA,0xA8,0xF8,0x00,0x00,0x04,0x02,0x01,0x00,0x00,0x07,0x00,0x04,0x04,0x07,0x00,0x00},
"度",{0x00,0xFE,0x0A,0x8A,0xBE,0xAA,0xAB,0xAA,0xBE,0x0A,0x0A,0x00,0x06,0x01,0x04,0x04,0x04,0x03,0x02,0x03,0x04,0x04,0x04,0x00},
"張",{0xF2,0x92,0x92,0x9E,0x00,0x20,0xFF,0x28,0xE4,0x22,0x20,0x00,0x88,0xFF,0x48,0x00,0xFE,0x22,0xEA,0x2A,0xEA,0x2A,0xA2,0x00},
"振",{0x08,0x88,0x68,0xFF,0x48,0x80,0x68,0xFF,0x68,0x88,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
"林",{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};*/


const unsigned char   ceshi[] = {/*--  調入了一幅影象:C:\Users\lenovo\Documents\ceshi2.bmp  --*/
/*--  寬度x高度=84x48  --*/
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xF8,0xF0,0x80,0x80,0x80,0x80,0x80,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0xA0,0xA0,0xE0,0x70,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,
0x00,0x00,0x00,0x00,0xF0,0xF0,0x10,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0x30,0x70,0xC0,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x88,0x88,0x88,0x88,0xFF,0xFF,0x88,
0x88,0x88,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,
0x08,0x08,0xFF,0xFF,0x0B,0x08,0x08,0x08,0x08,0x0C,0x0C,0x08,0x00,0x00,0x00,0x02,
0x02,0x02,0xFF,0xFF,0x63,0x7B,0x3B,0x81,0xFF,0x7F,0x01,0x01,0xFF,0xFF,0x10,0x70,
0x60,0x00,0x00,0x00,0x10,0x18,0x48,0x4C,0x4E,0x4B,0xC9,0xC8,0xC8,0x48,0x48,0x4D,
0x4F,0x4E,0x66,0x2C,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
0x00,0x0F,0x0F,0x08,0x08,0x08,0x08,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x18,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x18,0x0C,0x06,0x03,0x01,0x08,0x08,0x0C,
0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x1C,0x0F,0x0B,0x09,
0x08,0x08,0x09,0x0B,0x0E,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
const unsigned char   welcome[] = {
 /*--  調入了一幅影象:C:\Documents and Settings\Administrator\桌面\感謝關注密友電子.bmp  --*/
/*--  寬度x高度=84x48  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x90,0xE0,
0x40,0x50,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x60,0xC0,0x00,0x00,0x80,
0xE0,0xB0,0x80,0x00,0x00,0x20,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,
0xC0,0x00,0x00,0x80,0x40,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
0xC0,0x80,0x00,0x00,0x00,0x00,0x20,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x38,0x0F,0x38,
0x2A,0x2A,0x9A,0x20,0x17,0x1C,0x36,0x62,0x40,0x60,0x00,0x00,0x08,0x08,0x0C,0xF4,
0x1C,0xA0,0x20,0xBF,0xEA,0x60,0xFF,0x04,0x24,0x44,0xFF,0x04,0x04,0x04,0x00,0x00,
0x20,0x20,0x20,0x12,0x92,0xF2,0x3E,0x53,0x91,0x19,0x19,0x18,0x10,0x00,0x00,0x00,
0x00,0x02,0x06,0x84,0xE0,0x30,0x00,0x02,0x22,0x22,0xFF,0x11,0x11,0x11,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x06,0x03,0x00,0x01,0x02,0x04,0x0C,0x09,0x08,0x0E,0x0C,0x01,0x03,0x02,0x00,0x00,
0x00,0x00,0x03,0x03,0x01,0x02,0x01,0x00,0x04,0x0C,0x07,0x00,0x04,0x0C,0x0F,0x00,
0x00,0x00,0x00,0x00,0x04,0x04,0x02,0x03,0x01,0x00,0x00,0x00,0x01,0x03,0x06,0x06,
0x04,0x04,0x00,0x00,0x00,0x00,0x02,0x07,0x00,0x02,0x02,0x02,0x02,0x02,0x03,0x01,
0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xB0,0xDC,0x08,0x48,0x88,0x18,0xA9,0xCB,0x74,0x24,0x84,
0x54,0xDC,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x90,0xF0,0xBF,0x9F,0x48,0x48,
0xCC,0x84,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x20,0xA1,0xFF,0x90,
0x10,0x10,0xF0,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x84,0x84,
0x84,0x92,0xFA,0x4E,0x46,0x42,0x40,0x60,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x08,0x04,0xF4,0xC2,0xC3,0x49,
0x7A,0x42,0x42,0x5B,0xF1,0x00,0x00,0x00,0x00,0x20,0x10,0x18,0x0C,0x06,0x23,0x21,
0x12,0x16,0x0C,0x0E,0x1B,0x31,0x60,0x60,0x40,0x40,0x40,0x00,0x00,0x00,0x01,0x07,
0x04,0x04,0x3F,0x62,0x42,0x46,0x43,0x40,0x40,0x78,0x30,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x60,0xC0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
const unsigned char   join[] = {
/*--  調入了一幅影象:C:\Documents and Settings\Administrator\桌面\密友電子誠邀您加入.bmp  --*/
/*--  寬度x高度=84x48  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,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,0x00,0x80,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x66,0x04,0xB4,0x4A,0x6A,0x93,0x8A,
0xA2,0x42,0x16,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x64,0x5C,0xA7,0x24,0x92,
0x72,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0x08,0x28,0xFF,0x94,0x94,0x84,
0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x22,0x22,0x22,0x29,0xF5,0x13,
0x11,0x10,0x10,0x10,0x00,0x00,0x00,0x20,0x20,0x92,0x74,0x00,0xF0,0x50,0xD0,0x1F,
0xE8,0x09,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x1C,
0x10,0x10,0x0E,0x08,0x08,0x1E,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x01,0x08,0x08,
0x04,0x02,0x01,0x02,0x04,0x04,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
0x07,0x08,0x08,0x08,0x08,0x08,0x08,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x08,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0A,0x05,
0x03,0x02,0x03,0x04,0x02,0x03,0x04,0x08,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x88,0x98,0x00,0x30,0x50,0xCC,0xB8,0xC0,0x30,0xEC,0x20,0x20,0x00,0x00,0x00,0x00,
0x40,0x20,0xF8,0x06,0xA0,0x50,0x0E,0xF8,0x08,0x48,0x98,0x00,0x00,0x00,0x00,0x00,
0x40,0x40,0xC0,0x7C,0x20,0xE0,0x00,0xC0,0x40,0x40,0x40,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x20,0xA0,0xC0,0x80,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,0x10,0x12,0x1D,0x10,0x19,0x17,0x2A,0x26,0x28,0x25,0x63,0x64,0x28,
0x20,0x00,0x00,0x00,0x30,0x18,0x03,0x08,0x10,0x24,0x29,0x23,0x20,0x30,0x24,0x04,
0x08,0x00,0x00,0x10,0x08,0x06,0x09,0x10,0x08,0x07,0x00,0x07,0x04,0x04,0x04,0x07,
0x00,0x00,0x00,0x20,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x03,0x04,0x08,0x30,
0x30,0x20,0x20,0x00,0x00,0x00,0x21,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
const unsigned char   TE[] = {
/*--  調入了一幅影象:C:\Documents and Settings\Administrator\桌面\技術交流群.bmp  --*/
/*--  寬度x高度=84x48  --*/
0x00,0x00,0x10,0xCC,0x08,0x68,0x94,0xD5,0x26,0x14,0x44,0x84,0x2C,0x44,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0xC8,0xB8,0x4F,0x48,0x24,0xE4,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0xF0,0x10,0x50,0xFF,0x28,0x28,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x40,0x44,0x44,0x44,0x52,0xEA,0x26,0x22,0x20,0x20,0x20,0x00,0x00,
0x00,0x00,0x20,0x20,0xFF,0x90,0x10,0x80,0x90,0x7F,0x48,0xC8,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x22,0x39,0x20,0xA0,0x1D,0x11,0x11,0x3C,
0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x02,0x11,0x10,0x08,0x85,0x02,0x05,0x08,0x08,
0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x0F,0x11,0x11,0x91,0x10,0x10,
0x10,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x0F,0x00,0x00,0x00,
0x80,0x80,0x00,0x00,0x00,0x02,0x02,0x11,0x1F,0x00,0x08,0x08,0x05,0x02,0x05,0x08,
0x18,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x90,0x50,0x30,0xFF,
0x28,0x48,0x89,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x44,0xA4,0x94,0x04,
0x85,0x6A,0x12,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x22,0x84,0x00,0xA4,0x34,
0xAC,0x24,0xDB,0x32,0x02,0x00,0x00,0x00,0x00,0x08,0xA8,0xEA,0xBE,0x55,0x55,0xDF,
0x80,0xA9,0xFA,0x94,0x95,0x84,0x80,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,
0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x01,0x03,0x02,0x02,0x00,0x00,0x00,0x00,0x08,
0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x18,0x10,0x10,0x10,0x00,0x00,0x00,0x04,0x06,
0x09,0x04,0x03,0x00,0x07,0x00,0x07,0x08,0x08,0x08,0x06,0x00,0x00,0x02,0x01,0x00,
0x03,0x02,0x01,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x02,0xFF,0x00,0x00,0x00,0x00,0x00,0x40,0xF8,0x24,0x12,0x11,
0xE1,0x00,0x00,0x00,0x00,0xFC,0x02,0x01,0x03,0xFC,0x00,0x00,0x00,0x00,0x0C,0x1A,
0x12,0x32,0xC0,0x00,0x00,0x00,0x00,0xDE,0x31,0x21,0x52,0x8C,0x00,0x00,0x00,0x04,
0x02,0x02,0xE2,0x1E,0x02,0x00,0x00,0x00,0x00,0x0C,0x1A,0x12,0x32,0xC0,0x00,0x00,
0x00,0xC0,0xB0,0x88,0x84,0xFF,0x80,0x00,0x00,0x00,0x08,0x3E,0x41,0x41,0xE2,0x7C,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x02,0x00,0x00,0x00,0x00,0x00,
0x03,0x04,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x03,0x00,0x00,
0x00,0x00,0x06,0x04,0x04,0x03,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x03,
0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x04,0x04,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x04,
0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00
};
const unsigned char CFE[]=
  {
/*--  調入了一幅影象:C:\Documents and Settings\Administrator\桌面\密友電子點陣圖.bmp  --*/
/*--  寬度x高度=84x48  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x60,0x30,0x98,0x8C,0xC6,0x73,0x31,0x98,0xCC,0x70,0x30,
0x80,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x88,0x88,0x88,0x88,
0x88,0xB8,0xA8,0x88,0x88,0x88,0xC8,0xC8,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
0x08,0x08,0x88,0xF8,0xAC,0x8E,0x8B,0x89,0x88,0x0C,0x0F,0x0B,0x09,0x0C,0x0E,0x0B,
0x09,0x0C,0x0E,0x0B,0x39,0xEC,0x0E,0x0B,0x08,0x0C,0x08,0x08,0x08,0x08,0x08,0x08,
0x08,0x08,0x08,0x08,0x08,0x48,0x48,0x48,0x48,0x28,0xA8,0x68,0x68,0x08,0x08,0x08,
0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
0x99,0x00,0x40,0x38,0x32,0xB2,0xAC,0x27,0x20,0xB0,0x24,0x0C,0x09,0x00,0x00,0x00,
0x00,0x00,0x80,0x41,0x31,0x19,0x27,0x49,0xC8,0xC8,0x3C,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x06,0x7E,0x42,0x42,0x4A,0xFF,0x48,0x49,0x61,0x3F,0x02,0x00,
0x80,0x00,0x00,0x00,0x00,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x0A,0xFD,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x40,0x40,0x48,0x4F,0xC8,0x48,0x48,0x45,0x44,0x44,0x45,0x4F,0x40,
0x40,0x40,0x40,0x40,0x42,0x41,0xC0,0x40,0x44,0x40,0x42,0xC1,0x41,0x41,0x43,0x46,
0x46,0x44,0x44,0x44,0x40,0x40,0x40,0xC0,0x40,0x40,0x40,0x40,0x40,0x47,0xC4,0x44,
0x44,0x44,0x44,0x44,0x47,0x40,0x40,0x40,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x44,
0x4C,0x4F,0x40,0x40,0x40,0xC0,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,0x0D,0x0D,0x0C,0x09,0x0E,0x0D,0x0D,0x0A,
0x0F,0x0B,0x0F,0x0A,0x0F,0x0F,0x0F,0x08,0x08,0x0D,0x0B,0x09,0x0F,0x09,0x0E,0x19,
0x1E,0x4B,0x6F,0x3A,0x9E,0xC9,0x6F,0x38,0x1E,0x89,0xEF,0x69,0x38,0x98,0xCF,0x6B,
0x3F,0x98,0xCF,0x68,0x3F,0x1B,0x0F,0x08,0x0F,0x0D,0x09,0x0D,0x0D,0x08,0x0B,0x09,
0x0E,0x09,0x0D,0x0A,0x0E,0x09,0x0D,0x08,0x0E,0x08,0x0E,0x09,0x0D,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0C,0x06,0x33,0x19,0xCC,0x66,
0x33,0x19,0x0C,0x06,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
  };
const unsigned char bmp[]=
  {
/*--  調入了一幅影象:C:\Documents and Settings\Administrator\桌面\Nokia5110\Nokia5110\Software\Zimo21\圖片檔案\6.bmp  --*/
/*--  寬度x高度=40x40  --*/
0xC0,0x00,0x80,0x80,0x80,0x80,0x40,0xA0,0xE8,0xF4,0x7E,0x7A,0x5F,0x7D,0x4E,0xDF,
0xCE,0xCF,0xCF,0xCF,0x0F,0x0F,0x07,0x07,0x07,0x07,0x07,0x07,0xBF,0xF5,0xC0,0x00,
0x80,0x00,0x80,0x60,0xD0,0xF8,0xD6,0xBD,0xF7,0xFD,0xF7,0xFE,0xFB,0xFE,0xFF,0x5F,
0x07,0x19,0x08,0x7C,0x9E,0x9C,0xFC,0xE4,0xE4,0x58,0x18,0x31,0x03,0x05,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x8A,0x97,0x2F,0xBD,0x3F,0x75,0xFD,0xEA,0xD3,0xC7,0x1F,
0x5F,0x17,0x3F,0xEF,0xBF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3F,
0x73,0x73,0x7F,0x7F,0xBC,0x73,0x8F,0x7A,0xD5,0x00,0x00,0x00,0x03,0xFE,0xAB,0xFF,
0xF0,0x40,0x00,0x00,0x00,0x00,0x00,0x0A,0x20,0x04,0x28,0x00,0x10,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x00,0xA0,0x40,0xA8,0xD0,0xEA,0x54,0xFB,0x54,0xFF,0x55,
0xAD,0xFF,0x5D,0xAE,0xFC,0x5F,0xBE,0xFF,0xFF,0xFF,0x7D,0x1C,0xA0,0x50,0xA0,0x50,
0xA0,0x50,0xA0,0x50,0xA0,0x58,0xA0,0xFC,0xF0,0xFE,0xF8,0xFE,0xFD,0xFE,0x7F,0x5F,
0x17,0x01,0x0F,0x7F,0x1F,0x1D,0x07,0x05
  };
const unsigned char mr[]=
  {
/*--  調入了一幅影象:C:\Documents and Settings\Administrator\桌面\鳴人.bmp  --*/
/*--  寬度x高度=84x48  --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9B,0xAB,0x07,0x63,0x43,0x83,0xCB,0x93,0x4B,0xBC,
0xA0,0x20,0x00,0xFF,0xFF,0xFF,0x3F,0x00,0xC0,0xE0,0xF8,0xFC,0x7C,0x00,0x00,0x00,
0x00,0x00,0x40,0x10,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xD0,0x18,0x00,0xCC,
0x0C,0x0C,0xE0,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x40,0x00,0x00,
0x00,0x00,0xF8,0xF0,0xE0,0x80,0x00,0x01,0xFF,0xFF,0x8F,0x0F,0xFE,0xFC,0xF8,0xF2,
0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xC3,0x3A,0xB0,0xD0,0x20,0x38,
0x08,0x8B,0x6C,0xBD,0x9B,0x88,0xB0,0x07,0xCF,0x0F,0x1C,0x1F,0x3F,0x3F,0x7F,0x7F,
0x78,0xC0,0x80,0xF0,0xE4,0xC1,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x86,0x80,
0x8B,0x8A,0x8C,0x8D,0x84,0x80,0x81,0x81,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,
0xC0,0xC0,0xC1,0xC8,0xC0,0xE0,0xEC,0x7F,0x7F,0x7F,0xFF,0x1C,0x13,0xCF,0x63,0x00,
0x03,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xC7,
0xCB,0xFF,0xD0,0x31,0xF7,0x1E,0x44,0xFB,0x87,0xC7,0x82,0x48,0x83,0x20,0x80,0xC0,
0x00,0x00,0x00,0x00,0x00,0x01,0x20,0x01,0x71,0x51,0x01,0xC3,0x01,0xE1,0xA7,0x63,
0x43,0x0F,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x43,0x03,0x13,0x0B,0x4F,0x83,
0xA5,0xA1,0x87,0x81,0x81,0x01,0x71,0x50,0x50,0x01,0x00,0x00,0x00,0x00,0x07,0xC0,
0x08,0x09,0x12,0x00,0xE0,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFE,0xFE,0xFE,0xD5,0xC3,0xD3,0xD4,0xC3,0xFE,
0xF0,0xF1,0x82,0x25,0x20,0x10,0x00,0x00,0x08,0x00,0x00,0x00,0x84,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x20,
0x80,0x34,0x22,0x00,0x08,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xB9,0xD0,0xE8,0xFD,0xF4,0xE0,0x82,0x00,0x01,0x80,
0x40,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x41,0x01,0x00,0x02,0x04,
0x00,0xC0,0xF0,0xFC,0xF9,0xF0,0xFC,0xFE,0xFE,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFD,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0x08,0x00,
0x00,0x00,0x00,0x00,0x10,0x14,0x04,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,
0xE0,0xF0,0xF8,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  };


/*********************************
函式名稱: WriteByteNokia(uchar cmd_data,uchar lcd_cmd)寫指令
功能:寫入一個位元組
入口引數:cmd_data,lcd_cmd
返回引數:無
*********************************/


void WriteByteNokia(uchar cmd_data,uchar lcd_byte)
{
uchar i;


SCE_L();//NOKIA_SCE = LOW;
RST_H();//NOKIA_RST = HIGH;
        if(cmd_data)//NOKIA_DC  = cmd_data;
            DC_H();//命令OR資料
        else
            DC_L();

for (i=0;i<8;i++)
{
SCLK_L();//NOKIA_SCLK= LOW;
if ((lcd_byte&0x80) == 0x80)
SDIN_H();//NOKIA_SDIN = 1;
else
SDIN_L();//NOKIA_SDIN = 0;
lcd_byte = lcd_byte<<1;
SCLK_H();//NOKIA_SCLK= HIGH;
}
}


/*********************************
函式名稱: WriteNokia(uchar cmd_data,uchar lcd_byte)寫指令
功能:寫入一個字串
入口引數:cmd_data,lcd_cmd
返回引數:無
*********************************/
void WriteNokia(uchar cmd_data,uchar *lcd_byte)
{
uchar i;
SCE_L();//NOKIA_SCE = LOW;
RST_H();//NOKIA_RST = HIGH;
if(cmd_data)//NOKIA_DC  = cmd_data;
            DC_H(); //命令OR資料
        else
            DC_L();


while ((*lcd_byte) != '\0')
{
for (i=0;i<8;i++)
{
SCLK_L();//NOKIA_SCLK= LOW;
if (((*lcd_byte)&0x80) == 0x80)
SDIN_H();//NOKIA_SDIN = 1;
else
SDIN_L();//NOKIA_SDIN = 0;
*lcd_byte = (*lcd_byte)<<1;
SCLK_H();//NOKIA_SCLK= HIGH;
}
lcd_byte++;
}
}


/*********************************
函式名稱: SetAddr(uchar addr_x,uchar addr_y)
功能:設定RAM地址
入口引數:uchar addr_x,uchar addr_y
返回引數:無
*********************************/
void SetAddr(uchar addr_x,uchar addr_y)
{
WriteByteNokia(CMD,0x80+addr_x);//加上0x80和0x40是設定地址所必須的控制字
WriteByteNokia(CMD,0x40+addr_y);
}


/*********************************
函式名稱: ClearLcd(void)清除RAM
入口引數:無
返回引數:無
*********************************/
void ClearLcd(void)
{
uint i;

WriteByteNokia(CMD,0x80);//將地址指向原點
WriteByteNokia(CMD,0x40);


for (i=0;i<504;i++)
    {
WriteByteNokia(DAT,0x00);
    }
}
/*********************************
函式名稱: LCD_init(void)
功能:清屏
入口引數:無
返回引數:無
*********************************/
void LCD_init(void){


        DAT_IN_OUT|=0xff;//設定為輸出管腳
        OUTPUT|=0xff;
        //LED_L();        //開啟背光
        


WriteByteNokia(0,0x21);//初始化Lcd,功能設定使用擴充指令
WriteByteNokia(0,0xC6);//設定液晶偏置電壓
WriteByteNokia(0,0x06);//溫度校正
  WriteByteNokia(0,0x13);;//1:48
WriteByteNokia(0,0x20);//使用基本指令
WriteByteNokia(0,0x0C);//設定顯示模式,正常顯示
        
/*
        WriteByteNokia(CMD,EXT_INSTRUCTION); //選擇擴充套件指令集
WriteByteNokia(CMD,VOP_SET);//設定Vop
WriteByteNokia(CMD,TEMP);               //溫度校正
WriteByteNokia(CMD,BS);                 //設定偏置系統 1:48


//WriteByteNokia(CMD,STD_INSTRUCTION|VER_ADDR);//選擇標準指令集
        WriteByteNokia(CMD,STD_INSTRUCTION|HOR_ADDR);
WriteByteNokia(CMD,STD_DISPLAY);//選擇標準顯示模式
ClearLcd();
SetAddr(0,0); */


}
/*********************************
函式名稱: DisplayHz(uchar addr_x,uchar addr_y,uchar *hz)
功能:顯示漢字
入口引數:uchar addr_x,uchar addr_y,uchar *hz
返回引數:無
*********************************/
void DisplayHz(uchar addr_x,uchar addr_y,const unsigned char *hz)//漢字寬度為12,高度為12
{
uchar i=0,ch_with=12;


        SetAddr(addr_x,addr_y);
        for (i=0; i<ch_with*2;i++)
       {
         if (i==ch_with)
           {
            // if (i==0)
                  SetAddr(addr_x,addr_y+1);
            // else
              // SetAddr((addr_x+(ch_with+row)*i),addr_y+1);
              }
         WriteByteNokia(DAT,hz[i]);
       }


}


/*********************************
函式名稱: DisplayZf(uchar addr_x,uchar addr_y,uchar *zf)
功能: 顯示字元
入口引數:uchar addr_x,uchar addr_y,uchar *hz
返回引數:無
*********************************/
void LCD_char_string(uchar addr_x,uchar addr_y,uchar *zf)//字元寬度為6,高度為8
{
uchar j,i=0; //每行最多寫14個字元
while (*zf != '\0')
{
for (j=0;j<6;j++)
{
SetAddr(addr_x+i*6+j,addr_y);
WriteByteNokia(DAT,zifu6x8[*zf-0x20][j]);
}
zf++;
i++;
}

}
/*********************************
函式名稱:  LCD_write_char(uchar addr_x,uchar addr_y,uchar c)
功能: 在指定的位置顯示一個英文字元
入口引數:uchar addr_x,uchar addr_y,uchar c
返回引數:無
*********************************/
void LCD_one_char(uchar addr_x,uchar addr_y,uchar c)
  {
    unsigned char j;


    for (j=0; j<6; j++){
      SetAddr(addr_x+j,addr_y);
      WriteByteNokia(DAT,zifu6x8[c-0x20][j]);
    }
  }
/*********************************
函式名稱:  LCD_num(uchar addr_x,uchar addr_y,unsigned int num)
功能: 在指定的位置顯示資料
入口引數:uchar addr_x,uchar addr_y,unsigned int num
返回引數:無
*********************************/
void LCD_num(uchar addr_x,uchar addr_y,unsigned int num)
{
 unsigned char dat[7],i;
 dat[0]=num/10000+48;
 dat[1]=num%10000/1000+48;
 dat[2]=num%1000/100+48;
 dat[3]=num%100/10+48;
 dat[4]=num%10+48;
 dat[5]=32;
 dat[6]='\0';
 for(i=0;i<4;i++)
 {
   if(dat[i]==48)
         dat[i]=32;
   else break;
 }
LCD_char_string(addr_x,addr_y,dat);


}


/*-----------------------------------------------------------------------
LCD_draw_map      : 點陣圖繪製函式


輸入引數:X、Y    :點陣圖繪製的起始X、Y座標;
          *map    :點陣圖點陣資料;
          Pix_x   :點陣圖畫素(長)
          Pix_y   :點陣圖畫素(寬)


-----------------------------------------------------------------------*/


void LCD_draw_bmp(uchar addr_x,uchar addr_y,const unsigned char *map,
                  uchar Pix_x,uchar Pix_y)
  {
    unsigned int i,n;
    unsigned char row;


    if (Pix_y%8==0) row=Pix_y/8;    //計算點陣圖所佔行數
      else
        row=Pix_y/8+1;


    for (n=0;n<row;n++)
      {
        SetAddr(addr_x,addr_y);


        for(i=0; i<Pix_x; i++)
          {
            WriteByteNokia(DAT,map[i+n*Pix_x]);
          }
        addr_y++;                       //換行
      }
  }


void welcome_screen(void)//顯示圖片部分
{      int i=56000;
       /*LCD_draw_bmp(0,0,welcome,84,48);
       while(i--)i=i;
       while(i--)i=i;
       while(i--)i=i; 
        ClearLcd();
       LCD_draw_bmp(0,0,join,84,48);
       while(i--)i=i;
       while(i--)i=i;
       while(i--)i=i; 
       ClearLcd();
       LCD_draw_bmp(0,0,TE,84,48);
       while(i--)i=i;
       while(i--)i=i;
       while(i--)i=i; 
       ClearLcd();
       LCD_draw_bmp(0,0,CFE,84,48);
       while(i--)i=i;
       while(i--)i=i;
       while(i--)i=i; 
       ClearLcd();
       LCD_draw_bmp(17,0,bmp,40,40);
       while(i--)i=i;
       while(i--)i=i;
       while(i--)i=i; 
       ClearLcd();
       LCD_draw_bmp(0,0,mr,84,48);
       while(i--)i=i;
       while(i--)i=i;
       while(i--)i=i; 
       ClearLcd();*/
       LCD_draw_bmp(0,0,ceshi,84,48);
       while(1);
       /*while(i--)i=i;
       while(i--)i=i;
       while(i--)i=i; 
       ClearLcd();*/  
       
}  

/********************************************************************************************

自己編寫的5110.h檔案

********************************************************************************************/

#ifndef NOKIA5510_2008_02_23
#define NOKIA5510_2008_02_23
#include <msp430x14x.h>


#define uchar unsigned char
#define uint  unsigned int


#define RST  0X40            //復位             P5.6
#define SCE  0x01            //使能             P5.0
#define DC   0x10            //資料/命令選擇    P5.4
#define SDIN 0x02            //資料             P5.1
#define SCLK 0x08            //時鐘             P5.3
#define LED  0x20            //背光             P5.5
#define DAT_IN_OUT  P5DIR
#define OUTPUT      P5OUT


#define RST_H()  OUTPUT|=RST
#define RST_L()  OUTPUT&=~RST
#define SCE_H()  OUTPUT|=SCE
#define SCE_L()  OUTPUT&=~SCE
#define DC_H()   OUTPUT|=DC
#define DC_L()   OUTPUT&=~DC
#define SDIN_H() OUTPUT|=SDIN
#define SDIN_L() OUTPUT&=~SDIN
#define SCLK_H() OUTPUT|=SCLK
#define SCLK_L() OUTPUT&=~SCLK
#define LED_H()  OUTPUT|=LED
#define LED_L()  OUTPUT&=~LED


/*
sbitNOKIA_RST  = P1^0;
sbitNOKIA_SCE  = P1^1;//使能
sbitNOKIA_DC   = P1^2;//資料/命令選擇
sbitNOKIA_SDIN = P1^3;//資料
sbitNOKIA_SCLK = P1^4;//時鐘
*/
#define LOW0
#define HIGH       1
#define CMD0
#define DAT1




//初始化指令
#define STD_INSTRUCTION 0x20//標準指令集
#define EXT_INSTRUCTION 0x21//擴充套件指令集


#define VER_ADDR0x02//垂直定址
#define HOR_ADDR0x00//水平定址


#define STD_DISPLAY0x0c//標準顯示
#define BLANK_DISPLAY0x08//顯示空白
#define CONV_DISPLAY0x0d//反轉顯示


#define VOP_SET     0xb8//設定偏置電壓Vop  調節對比度
#define TEMP            0x06            // 溫度校正
#define BS              0x13            // 設定偏置系統


void WriteByteNokia(uchar cmd_data,uchar lcd_byte);
void WriteNokia(uchar cmd_data,uchar *lcd_byte);
void SetAddr(uchar addr_x,uchar addr_y);
void ClearLcd(void);
void DisplayHz(uchar addr_x,uchar addr_y,const unsigned char *hz);
void LCD_char_string(uchar addr_x,uchar addr_y,uchar *zf);
void LCD_init(void);
void LCD_one_char(uchar addr_x,uchar addr_y,uchar c);
void LCD_num(uchar addr_x,uchar addr_y,unsigned int num);
void LCD_draw_bmp(uchar addr_x,uchar addr_y,const unsigned char *map,uchar Pix_x,uchar Pix_y);
void welcome_screen(void);
#endif

/*********************************************************************************************************

由於5110沒有內建ASCII碼錶,所以使用時得手動編寫

*********************************************************************************************************/


// 6 x 8 font
// 1 pixel space at left and bottom
// index = ASCII - 32
#ifndef zifu
#define zifu




const unsigned char zifu6x8[][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
};
#endif