原创 点阵式LED汉字显示8×8

2007-1-16 02:33 4923 10 10 分类: MCU/ 嵌入式

实物图:


54e586aa-2790-4991-9c83-2e8765fcf668.jpg


原理:


4e3ba3db-9229-4488-9ee5-c22e5b8491ef.jpg


内部原理:


点击看大图


例程:


/******************************************************************************/
/**
/** 模 块 名: -------------------BootLoader.C--------------------------------
/**            -----------------8×8汉字显示模块------------------------------*/
/** 功能描述:
/**
/** 创 建 人: huangtiexiong    日期:2006-11-28   */
/** 修 改 人:                  日期:2006-11-28   */
/** 其他说明:
/******************************************************************************/


#include    //文件包含
#include


#define Row P0
#define Col P2


#define ResetBit(byte,i) byte &= (~(0x01<

typedef unsigned char int8u;


/*************************************************
    模块级变量申明                
*************************************************/
/*这是“中”的字模;该字模由LEDDOT生成;字模的提取方式为:逐行提取;
字模的显示方式为:单字单行显示;生成的字模格式:C51十六进制 */
int8u gRowBuff2[8] = {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10};


/*这是“化”的字模;该字模由LEDDOT生成;字模的提取方式为:逐行提取;
字模的显示方式为:单字单行显示;生成的字模格式:C51十六进制 */
int8u gRowBuff3[8] = {0x48,0x4A,0xCE,0xCC,0x58,0x68,0x49,0x4E};


/*这是“大”的字模;该字模由LEDDOT生成;字模的提取方式为:逐行提取;
字模的显示方式为:单字单行显示;生成的字模格式:C51十六进制 */
int8u gRowBuff1[8] = {0x10,0x10,0xFF,0x10,0x18,0x28,0x46,0x82};


void Delay5ms(void);
/*************************************************
    子函数定义                 
*************************************************/


/*******************************************************************************
*** 函 数 名: void main(void)
*** 功能描述:
*** 全局变量:
*** 输  入:
*** 输  出:
*** 创 建 人:huangtiexiong     日期:2006-11-28
*** 修 改 人:           日期:2006-11-28
*** 函数说明: 刷新频率25hz,可以更高至50hz~100hz;
/******************************************************************************/
void main(void)
{
 int8u i;
  int sec="0";
 while(1)
 {
  Col = 0xff;
    sec++;
    if(sec <= 100)  //每个汉字显示四秒;
     {
    for(i=0;i<8;i++)
    {
     Col = 0xff;
     ResetBit(Col,i);  //扫描第i列;
     Row = gRowBuff1; //送显示码;
     Delay5ms();
     }
      }
    else if((sec > 100) && (sec <= 200))  
     {
    for(i=0;i<8;i++)
    {
     Col = 0xff;
     ResetBit(Col,i);  //扫描第i列;
     Row = gRowBuff2;
     Delay5ms();
     }
      }
    else if(sec <= 300)
     {
    for(i=0;i<8;i++)
    {
     Col = 0xff;
     ResetBit(Col,i);  //扫描第i列;
     Row = gRowBuff3;
     Delay5ms();
     }
      }
    else
     {
      sec = 0;
      }  
   
  }
 }


// 延时5毫秒;
void Delay5ms()
{
 int8u i;
 int8u j;
 for(i=0;i<5;i++)
 for(j=0;j<200;j++)
 {
  _nop_();
  _nop_();
  }
 }
/*******************************************************************************
****                              End Of File
*******************************************************************************/


附Proteus仿真图:


点击看大图

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条