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

📄 12864.txt

📁 51单片机的程序
💻 TXT
字号:
/*---------------------------------------------------------------------------- 
函数功能:    本函数用于在液晶屏幕上在指定坐标位置(x,y)显示单个点阵字符的操作。 
函数入口参数:x ----------------- X轴坐标,其数值范围:x ≤63。 
              y ----------------- Y轴坐标,其数值范围:y ≤7。 
              *pdc_address ------ 显示字符点阵数据存储地址,即指向存储点阵数据的指针。 
              dc_row_num -------- 显示字符行点数,其数值范围:x ≤127。 
              dc_column_num ----- 显示字符列点数,其数值范围:x ≤63。 
备注:        ①.参数 y(Y轴坐标)的数值范围:y ≤7。 
              ②.在移植程序时,请注意 *pdc_address 参数前的 flash 关键字,此关键字 
               为 CodeVision AVR C 所扩充,在移植时要做相应修改。 
----------------------------------------------------------------------------*/ 
void LCDM_Display_Character(unsigned char x,                        /* X轴坐标 */  
                            unsigned char y,                        /* Y轴坐标 */  
                            const unsigned char flash *pdc_address, /* 字符点阵数据存储地址 */  
                            const unsigned char dc_row_num,         /* 显示字符行点数 */  
                            const unsigned char dc_column_num)      /* 显示字符列点数 */ 
                      
{ 
  register unsigned char i_counter;             /* 行循环计数器变量 */  
  register unsigned char j_counter;             /* 列循环计数器变量 */  
  register unsigned char temp;                  /* 临时寄存器变量 */ 
  register unsigned char temp_LCD_PORT;         /* 临时数据寄存器变量 */ 

  LCDM_Display_Open();                          /* 打开液晶显示屏幕 */ 
  LCDM_SetStartLine(0);                         /* 设置显示开始行为第一行 */ 
  j_counter = dc_column_num/LCDM_LCD_PORTBits;  /* 列循环次数=字符列点数÷字符位长 */ 
  temp = x + dc_row_num;                        /* 字符行宽范围=X轴坐标+显示字符行点数 */ 
  if (temp 0) 
   { 
     for (i_counter=dc_row_num; i_counter>0; i_counter--) 
          /* 行循环次数=字符行点数 */ 
     { 
      temp_LCD_PORT = *(pdc_address++);   /* 输入显示字符点阵数据 */ 
      LCD_WriteData(temp_LCD_PORT, LCD_CS1); /* 将显示字符点阵数据写入液晶显示屏幕 */ 
     } 
     LCD_WriteCommand(x, LCD_CS1);           /* X轴坐标退回到设置点 */ 
     y = y + 1;                        /* 显示页数(Y轴坐标)+1 */ 
     LCD_WriteCommand(y, LCD_CS1); 
     j_counter--; 
   }   
  } 
  else                                /* 否则字符行宽范围即在芯片2和芯片1之间 */ 
  { 
    if (x >= LCDM_MaxRowDot)            /* 字符行宽范围是否全部在芯片2内? */ 
    { 
     x = x - LCDM_MaxRowDot;             /* X轴坐标=X轴坐标-芯片1的最大行点阵数 */ 
     x = x + LCDM_Yaddress_1;            /* 设置X轴坐标 */ 
     LCD_WriteCommand(x, LCD_CS2); 
     y = y + LCDM_LCD_PORTPage_1;            /* 设置Y轴坐标 */ 
     LCD_WriteCommand(y, LCD_CS2); 
     while (j_counter>0) 
     { 
      for (i_counter=dc_row_num; i_counter>0; i_counter--) 
            /* 行循环次数=字符行点数 */ 
      { 
        temp_LCD_PORT = *(pdc_address++);   /* 输入显示字符点阵数据 */ 
        LCD_WriteData(temp_LCD_PORT, LCD_CS2); /* 将显示字符点阵数据写入液晶显示屏幕 */ 
      } 
      LCD_WriteCommand(x, LCD_CS2);           /* X轴坐标退回到设置点 */ 
      y = y + 1;                        /* 显示页数(Y轴坐标)+1 */ 
      LCDM_WriteCommand(y, LCD_CS2); 
      j_counter--; 
     }   
   }   
   else 
   { 
     temp = x + LCDM_Yaddress_1;         /* 设置X轴坐标 */ 
     LCD_WriteCommand(temp, LCD_CS1); 
     y = y + LCDM_LCD_PORTPage_1;            /* 设置Y轴坐标 */ 
     LCD_WriteCommand(y, LCD_CS1); 
     while (j_counter>0) 
     { 
      for (i_counter=(LCDM_MaxRowDot-x); i_counter>0; i_counter--) 
           /* 芯片1行循环次数=芯片1的最大行点阵数-X轴坐标 */ 
      { 
        temp_LCD_PORT = *(pdc_address++);   /* 输入显示字符点阵数据 */ 
        LCD_WriteData(temp_LCD_PORT, LCD_CS1); /* 将显示字符点阵数据写入液晶显示屏幕 */ 
      } 
       temp = 0 + LCDM_Yaddress_1;       /* 设置芯片2的X轴坐标为起点 */ 
      LCD_WriteCommand(temp, LCD_CS2); 
      LCD_WriteCommand(y, LCD_CS2);           /* 设置芯片2的Y轴坐标 */ 
      for (i_counter=(x + dc_row_num - LCDM_MaxRowDot); i_counter>0; i_counter--) 
           /* 芯片2行循环次数=X轴坐标+显示字符行点数-芯片1的最大行点阵数 */ 
      { 
        temp_LCD_PORT = *(pdc_address++);   /* 输入显示字符点阵数据 */ 
        LCD_WriteData(temp_LCD_PORT, LCD_CS2); /* 将显示字符点阵数据写入液晶显示屏幕 */ 
      } 
       temp = x + LCDM_Yaddress_1;       /* 芯片1的X轴坐标退回到设置点 */ 
      LCD_WriteCommand(temp, LCD_CS1); 
      y = y + 1;                        /* 显示页数(Y轴坐标)+1 */ 
      LCD_WriteCommand(y, LCD_CS1); 
      j_counter--; 
     }  
    } 
  } 





/*---------------------------------------------------------------------------- 
函数功能:    本函数用于在液晶屏幕上显示欢迎和警告页的操作。运行完本函数将显示: 
              “欢迎”------------------ 第一页,64×64点阵。 
              “郑重警告”-------------- 第二页,32×32点阵。 
              “本产品和嵌入的软 ------- 第三页,16×16点阵。 
                件受著作权法及国 
                际著作权条约和其 
                它知识产权法和条 
                约的保护,未经其 
                所有者的书面授权 
                不得擅自复制或传 
                播,否则将受到在 
                法律许可的范围内 
                最大可能的起诉。” 
              “欢迎使用”-------------- 第四页,32×32点阵。 
备注:        本函数也是演示对上面函数如何使用的范例。 
----------------------------------------------------------------------------*/ 
void Welcome_Advise_Show(void) 
{ 
  register Uchar8 i;                /* 循环计数器变量 */ 
  register Uchar8 j;                /* 循环计数器变量 */ 
  register Uchar8 k;                /* 循环计数器变量 */ 
  LCDM_initialization();              /* 初始化操作 */ 
  LCDM_BackgroundLight(ON);           /* 打开液晶模块背景灯 */ 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 显示“欢”字符 */ 
  LCDM_Display_Character(0,0,&Welcome_64_64[0][0],64,64); 
  delay_ms(500); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 显示“欢迎”字符 */ 
  LCDM_Display_Character(64,0,&Welcome_64_64[1][0],64,64); 
  delay_ms(500); 
  LCDM_Display_Character(0,0,&Welcome_64_64[0][0],64,64); 
  delay_ms(2000); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 显示“郑重警告”字符 */ 
  LCDM_Display_Character(0,2,&SeriousAdvise_32_32[0][0],32,32); 
  LCDM_Display_Character(32,2,&SeriousAdvise_32_32[1][0],32,32); 
  LCDM_Display_Character(64,2,&SeriousAdvise_32_32[2][0],32,32); 
  LCDM_Display_Character(96,2,&SeriousAdvise_32_32[3][0],32,32); 
  delay_ms(1800); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 向上一行滚动显示“郑重警告”字符 */ 
  LCDM_Display_Character(0,1,&SeriousAdvise_32_32[0][0],32,32); 
  LCDM_Display_Character(32,1,&SeriousAdvise_32_32[1][0],32,32); 
  LCDM_Display_Character(64,1,&SeriousAdvise_32_32[2][0],32,32); 
  LCDM_Display_Character(96,1,&SeriousAdvise_32_32[3][0],32,32); 
  delay_ms(1800); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 再向上一行滚动显示“郑重警告”及第三页第一行字符 */ 
  LCDM_Display_Character(0,0,&SeriousAdvise_32_32[0][0],32,32); 
  LCDM_Display_Character(32,0,&SeriousAdvise_32_32[1][0],32,32); 
  LCDM_Display_Character(64,0,&SeriousAdvise_32_32[2][0],32,32); 
  LCDM_Display_Character(96,0,&SeriousAdvise_32_32[3][0],32,32); 
  for (i=0; i<8;i++) 
  { 
   LCDM_Display_Character(i*16,6,&AdviseContLCD_ENt_16_16[0],16,16); 
  } 
  delay_ms(1800); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 再向上一行滚动显示“郑重警告”及第三页第一行和第二行字符 */ 
  LCDM_Display_Character(0,0,&SeriousAdvise_32_32[0][32],32,24); 
  LCDM_Display_Character(32,0,&SeriousAdvise_32_32[1][32],32,24); 
  LCDM_Display_Character(64,0,&SeriousAdvise_32_32[2][32],32,24); 
  LCDM_Display_Character(96,0,&SeriousAdvise_32_32[3][32],32,24); 
  for (j=0; j<2;j++) 
  { 
   for (i=0; i<8;i++) 
   { 
     LCDM_Display_Character(i*16,j*2+4,&AdviseContLCD_ENt_16_16[i+j*8][0],16,16); 
   } 
  } 
  delay_ms(1800); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 显示第三页第一行、第二行和第三行字符 */ 
  for (j=0; j<3;j++) 
  { 
   for (i=0; i<8;i++) 
   { 
     LCDM_Display_Character(i*16,j*2+2,&AdviseContLCD_ENt_16_16[i+j*8][0],16,16); 
   } 
  } 
  delay_ms(1800); 
  /* 滚动显示第三页字符 */ 
  for (k=0; k<7;k++) 
  { 
   for (j=0; j<4;j++) 
     { 
      for (i=0; i<8;i++) 
      { 
        LCDM_Display_Character(i*16,j*2,&AdviseContLCD_ENt_16_16[k*8+i+j*8][0],16,16); 
      } 
     } 
   delay_ms(1800); 
  } 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 滚动显示第三页最后三行字符 */ 
  for (j=0; j<3;j++) 
   { 
     for (i=0; i<8;i++) 
     { 
      LCDM_Display_Character(i*16,j*2,&AdviseContLCD_ENt_16_16[7*8+i+j*8][0],16,16); 
     } 
   } 
  delay_ms(1800); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 滚动显示第三页最后二行字符 */ 
  for (j=0; j<2;j++) 
   { 
     for (i=0; i<8;i++) 
     { 
      LCDM_Display_Character(i*16,j*2,&AdviseContLCD_ENt_16_16[8*8+i+j*8][0],16,16); 
     } 
   } 
  delay_ms(1800); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 滚动显示第三页最后一行字符 */ 
  for (i=0; i<8;i++) 
  { 
   LCDM_Display_Character(i*16,0,&AdviseContLCD_ENt_16_16[9*8+i][0],16,16); 
  } 
  delay_ms(1800); 
  LCDM_AllScreLCD_ENLCD_PORT(0x00,64,64);     /* 清屏 */ 
  /* 显示“欢迎使用”字符 */ 
  LCDM_Display_Character(0,2,&WelcomeUse_32_32[0][0],32,32); 
  LCDM_Display_Character(32,2,&WelcomeUse_32_32[1][0],32,32); 
  LCDM_Display_Character(64,2,&WelcomeUse_32_32[2][0],32,32); 
  LCDM_Display_Character(96,2,&WelcomeUse_32_32[3][0],32,32); 
  delay_ms(4000); 
  LCDM_BackgroundLight(OFF);          /* 关闭液晶模块背景灯 */ 
} 

⌨️ 快捷键说明

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