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

📄 nokia5110.c

📁 msp430单片机驱动诺基亚5110液晶程序
💻 C
📖 第 1 页 / 共 2 页
字号:
            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();*/  
       
}  

⌨️ 快捷键说明

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