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

2007-1-16 04:59 5715 8 9 分类: MCU/ 嵌入式

8×8点阵用来显示简单的汉字还凑合,于是编了个16×16的试试看。下面是该实验的简单总结:


1、Proteus中的8×8Dot LED Matrix有些是共阴,有些的是共阳的,实验中采用的红色共阴8×8点阵管四只;(究竟是共阴还是共阳用5V电源调试,6.9版中支持静态显示,记得先前6.7版不能静态显示,非用一定频率的方波调试阳极不可。)


2、代码中按行显示编码,逐行由上到下刷新,刷新频率约为30hz;


3、将8×8点阵管看作一个黑框,8个阳极(行)输入当成数据编码输入,而8个阴极输入当成位选端(选啥哩 ?当然是8行中的某一行或者某几行了。),这样,8×8点点阵管的每一(行)就相当于一个Digit,与七段数码异曲同工了;


4、实验中,采用了两个74ls138(Proteus中暂时还么74ls154这4-in,16-out的仿真模型,否则软硬兼施也就方便多了)以产生位选信号,P1^3和P^7作为两芯片的使能信号;P0,P2分别输出16bit的行编码信号,这样,总共用了3个P口,还剩一个P3口可以用来作别的;当然实验也可以裸奔,不扩展两个138直接用P1、P3两口16根线输出作位选,不过这样一来4-P口32根线消耗殆尽,再无扩展的余地;


5、实验中程序例程:


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


#include    //文件包含
#include


#define RowL  P0
#define RowR  P2
#define Digit P1


sbit EN_UP = P1^3;
sbit EN_DN = P1^7;


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

typedef unsigned char int8u;


/*************************************************
    模块级变量申明                
*************************************************/
/*--  文字:  大  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
//int8u gRowBuf_up[16] = { 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
//             0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80};
//int8u gRowBuf_dn[16] = { 0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,
//             0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04};
/*--  文字:  家  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
//int8u gRowBuf_up[16] = {0x02,0x00,0x01,0x00,0x3F,0xFE,0x40,0x04,0x5F,0xE8,0x01,0x00,0x02,0x00,0x0F,0x20};
//int8u gRowBuf_dn[16] = {0x72,0xB0,0x04,0xC0,0x19,0xC0,0x66,0xB0,0x18,0x8E,0x60,0x84,0x05,0x00,0x02,0x00};


/*--  文字:  爱  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
int8u gRowBuf_up[16] = {0x00,0xF8,0x3F,0x90,0x12,0x10,0x09,0x20,0x3F,0xFE,0x22,0x02,0x42,0x00,0x3F,0xFC};
int8u gRowBuf_dn[16] = {0x04,0x00,0x07,0xF0,0x0C,0x20,0x0B,0x40,0x10,0xC0,0x63,0x30,0x8C,0x0E,0x30,0x04};


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


/*******************************************************************************
*** 函 数 名: void main(void)
*** 功能描述:
*** 全局变量:
*** 输  入:
*** 输  出:
*** 创 建 人:huangtiexiong     日期:2006-11-28
*** 修 改 人:           日期:2006-11-28
*** 函数说明: 刷新频率30hz,可以更高至50hz~100hz;
/******************************************************************************/
void main(void)
{
 int8u i;
 while(1)
 {
  EN_UP = 1;
  EN_DN = 0;
  for(i=0;i<16;i++)
  {
   Digit = ((i/2) | 0x08);
   RowL = gRowBuf_up[i++];
   RowR = gRowBuf_up;
   Delay2ms();
   }
  
  EN_UP = 0;
  EN_DN = 1; 
  for(i=0;i<16;i++) 
  {
   Digit = (((i/2)<<4) | 0x80);
   RowL = gRowBuf_dn[i++];
   RowR = gRowBuf_dn;
   Delay2ms();
   }
  }
 }


// 延时2毫秒,12M晶振;
void Delay2ms()
{
 int8u i;
 int8u j;
 for(i=0;i<2;i++)
 for(j=0;j<200;j++)
 {
  _nop_();
  _nop_();
  }
 }
/*******************************************************************************
****                              End Of File
*******************************************************************************/


6、Proteus仿真抓图:


点击看大图


 

文章评论1条评论)

登录后参与讨论

用户4257 2007-3-27 22:07

Thanks for your working!

相关推荐阅读
用户68356 2007-06-10 09:23
canopen
我申请了恒润科技的试用光盘(VectorDemoCDV8.3),里边coe_canopen.exe因损坏无效,是不是每张光盘都这样?...
用户68356 2007-05-19 03:39
本博公告
本博暂停更新,稍后就回。欢迎访问:canopen.onlyblog.com...
用户68356 2007-03-14 22:17
ARM7TDMI-S后缀解释
T:Thumb代码支持,16bits指令结构;D:Debug硬件调试模块支持;M:加强的乘法操作支持(硬件乘法器),64位乘法结果;I:EmbededICE Logic,支持片上断点和调试点;S:sy...
用户68356 2007-03-14 04:44
老子-道德经
老子道德经--白话文注解:http://www.xet.cn/_game/lib/01_laozi/...
用户68356 2007-03-08 00:56
ARM完整定义
     ARM是英国一家电子公司的名字,全名的意思是Advanced RISC Machine。ARM首创了chipless的生产模式,即该公司既不生产芯片,也不设计芯片,而是设计出高效的IP内核,...
用户68356 2007-03-08 00:24
CPU基本概念
1.主频       主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出...
我要评论
1
8
关闭 站长推荐上一条 /2 下一条