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

📄 lcdtest.c

📁 MSP430F1611+LCD12864_st7920+Key刚完成调试.请有需要的朋下载!
💻 C
📖 第 1 页 / 共 2 页
字号:

 char  logopaw[40*40/8]={
/*--  调入了一幅图像:梅花鹿脚 --*/
/*--  宽度x高度=40x40  --*/   
0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x0F,0x80,0x38,0x00,0x00,
0x1F,0xC0,0xFC,0x00,0x00,0x1F,0xC1,0xFC,0x00,0x00,0x1F,0xE1,0xFE,0x00,0x00,0x3F,
0xE3,0xFE,0x00,0x00,0x3F,0xE3,0xFE,0x00,0x00,0x3F,0xE3,0xFE,0x00,0x00,0x1F,0xE7,
0xFE,0x00,0x00,0x1F,0xE7,0xFC,0x00,0x00,0x1F,0xE7,0xFC,0x00,0x0F,0x0F,0xE7,0xF8,
0x00,0x1F,0x8F,0xE3,0xF8,0x00,0x3F,0xC7,0xC3,0xF0,0xF0,0x3F,0xE1,0x01,0xE1,0xF8,
0x3F,0xE0,0x00,0x03,0xF8,0x3F,0xF0,0x00,0x07,0xF8,0x3F,0xF0,0x00,0x07,0xFC,0x1F,
0xF0,0x18,0x0F,0xF8,0x1F,0xF0,0xFE,0x0F,0xF8,0x0F,0xF1,0xFF,0x0F,0xF8,0x07,0xE3,
0xFF,0x8F,0xF8,0x03,0xC7,0xFF,0xCF,0xF0,0x00,0x0F,0xFF,0xEF,0xE0,0x00,0x1F,0xFF,
0xF7,0xC0,0x00,0x3F,0xFF,0xF0,0x00,0x00,0x3F,0xFF,0xF8,0x00,0x00,0x7F,0xFF,0xFC,
0x00,0x00,0x7F,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFE,0x00,
0x00,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFC,0x00,0x00,
0x7F,0xE3,0xF8,0x00,0x00,0x1E,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};


void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;
  System_Init();
  Init_Port();    //for PCF8563
  //LCD_Graphic(20,3,logopaw,40/8,40); //画一个图形
  //LCD_ReadGraphic(15,2,logopaw,40,40);    不能用
    
  Calt_Disp_Init();
  
  WR_PCF8563_Data();
 // Show_Picture(32,44,logopaw,40/8,40,0);   //在中间显示 位图
  //Show_Picture(12,64+20,logopaw,40/8,40,0);
  //Fill_Area(0,0,10,27,1);
  //Fill_Area(32,12,7,10,1);
  _EINT();
  while(1)
  {
    Intrrupt_Key_Pro(); 
   PCF8563_get_BCDtime(time);      //调试时在这个函数处step over(F10),Watch PCF_time 和 time可以看到读出来的时钟
   Get10B_2(time);                 //
      //Get10B(PCF_time); 
    //for(uchar i=0;i<6;i++)//此时给出的应是地址
    //{
     //   LCD_Text(2,1,Get_AscII);     //OK  将时间显示在整行上面.
        
      //for(uchar i=0;i<6;i+2)
      //{
   
     //分别显示秒分时日月年,可写成单独函数.来写入到任意行与列数据
     //  LCD_Text_SigBT(3,0,&Get_AscII[0]);  //显示单个字符---显示年
     //  LCD_Text_SigBT(3,1,&Get_AscII[2]);  //显示单个字符---显示月
     //  LCD_Text_SigBT(3,2,&Get_AscII[4]);  //显示单个字符---显示日
     //  LCD_Text_SigBT(3,3,&Get_AscII[6]);   ////显示单个字符---显示时
     //  LCD_Text_SigBT(3,4,&Get_AscII[8]);   //显示单个字符---显示分
     //  LCD_Text_SigBT(3,5,&Get_AscII[10]);  //显示单个字符---显示秒
      
   for(uchar i=0;i<6;i++)     //只能对确知的0~3行进行显示.
   {
    LCD_Text_SigBT(3,1+i,&Get_AscII[i*2]); 
     
   }
   Disp_Row_Line_Posit(1,1,&Get_AscII[0]);
   Disp_Row_Line_Posit(1,3,&Get_AscII[2]);
   Disp_Row_Line_Posit(1,5,&Get_AscII[4]);
   Disp_Row_Line_Posit(2,1,&Get_AscII[6]);
   Disp_Row_Line_Posit(2,3,&Get_AscII[8]);
   Disp_Row_Line_Posit(2,5,&Get_AscII[10]);
  // Disp_Row_Line_Poist(1,1,&Get_AscII[2]);       //可显示任一行任一列的任意时间值.
       //LCD_Text_SigBT(3,i+1,&Get_AscII[i+1]);  //显示单个字符
       
      //} 
      //LCD_Text(2,1,RealTime);      //如果不行,将RealTime折分成两个数组.分别显示
   //}
   //for(uchar j=6;j<12;j++)
   //{
   //   LCD_Text(3,1+j-6,&RealTime[j]); 
   //}
      Delay_PCF8563(10);
    //LCD_Text(2,1,PCF_time);
  };
}


void Calt_Disp_Init()
{ 
  LCD_Text(0,1,text);  
  //对于时钟日历:   
  LCD_Text(1,0,Calt_N_2);   // 20  位置:0
  LCD_Text(1,2,Calt_Y);     // 年   位置:2
  LCD_Text(1,4,Calt_M);     //月    位置:4
  LCD_Text(1,6,Calt_D);     //日    位置:6
  LCD_Text(2,2,Calt_H);
  LCD_Text(2,4,Calt_Min);
  LCD_Text(2,6,Calt_Sec); 
}
 //可显示任一行任一列的任意时间值.   一个特定的值
void Disp_Row_Line_Posit(unsigned char Row,unsigned char Line,unsigned char*Value)
{
  if(Row>3||Line>7)
    return ;
  else
  {
   LCD_Text_SigBT(Row,Line,Value);    
  }  
}

void Get10B_2(unsigned char *time)
{
 // uchar j=0;
 //  uint temp;
  for(uchar s=0;s<12;s++)
  {
   Get_Value[s]=*time++;        //将数据复制  
  }
   
   for(uchar t=0;t<12;t++)         //每个项目值加0x30得到想要在LCD12864液晶上显示的ASCII值.
   {
     Get_AscII[11-t]=Get_Value[t];
   }
   for(uchar t=0;t<12;t++)
   {
     Get_AscII[t]+=0x30;     
   }   
  //uchar i;
  //for(i=0;i<12;i++)
  //{
   //Get_AscII[12-i]=time[i]+'0'; 
  //}  
}
/*
unsigned char  BCDGet(unsigned char *Copyof_PCF_time)
{
  uchar j=0,temp;
  for(uchar s=0;s<6;s++)
  {
    temp=Copy_PCF_time[s];
    BCD10Time[j++] = temp%10;     //低位在前,高位在后. 在后面将值反过来
    BCD10Time[j++] = temp/10;    
  }
}
*/
  // 将高位与低位分开,然后置于相反地.
  //加'0'
void Get10B(unsigned char *PCF_time)
{  uchar j=0;
   uint temp;
  for(uchar s=0;s<6;s++)
  {
   Copy_PCF_time[s]=*PCF_time++;        //将数据复制  
  }
    
   for(uchar s=0;s<6;s++)
  {
    temp=(unsigned int)Copy_PCF_time[s];
    BCD10Time[j++] = (unsigned char)temp%0x10;     //低位在前,高位在后. 在后面将值反过来
    BCD10Time[j++] = (unsigned char)temp/0x10;
  }
   //*RealTime = *time;
  //BCDGet(Copy_PCF_time);
   for(uchar t=0;t<12;t++)         //每个项目值加0x30得到想要在LCD12864液晶上显示的ASCII值.
   {
     RealTime[11-t]=BCD10Time[t];
   }
   for(uchar t=0;t<12;t++)
   {
     RealTime[t]+=0x30;     
   } 
}
void Init_Port(void)
{
  P3SEL=0x00;   // iic
  P3DIR=BIT3;   // iic
  P4DIR=0x01;
  P4SEL=0;
  //P5SEL &=~BIT0;
  //P5DIR |=BIT0;
  //P5OUT &=~BIT0;
 //return;
}

⌨️ 快捷键说明

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