51proteus仿真:16x16LED显示一个汉字

51proteus仿真:16x16LED显示一个汉字

 

led显示屏滚动显示汉字的广告牌到处都是,其原理实际很简单。我们完全可以用51单片机来控制汉字的显示。

作为原理性试验,我只用4块8x8的led显示一个汉字“欢”.理解本实验,不难做滚动,轮流显示。

试验环境:proteus,keil

试验虚拟元器件:

4块MATRIX-8x8-RED

1块4-16译码器:74HC154

单片机:ATC89C52

排阻:RESPACK-8,因为用了P0口,所以要用上拉排阻.

本来还需要四块74ALS373拖动LED,但为了使实验简单,虚拟实验省去了4块74ALS373,做实物演示时要注意。

另外用软件“字模精灵”软件(百度上搜)来获取汉字的字模,一个汉字32字节数据,P2高8位,P0低八位.

四块led连结要注意:

上面两快led的行线为上8行,我用的是l1-l8,

下面两块的行线是l9--l16.

列从右到左分别是h1--h16.

轮流显示原理是:

第一次,i=0,第1行,送列数据0x00(P2),0x80(P0),那么第一行的P0第7位亮;

第二次,i=1,第二行,送列数据0x00,0x80,那么第二行的P0第7位亮;

第三次,i=2,第三行,送列数据0xfc,0x80,那么第三行的P2高7位亮,P0的最高位亮;

......如此依次点亮16行的led.

调整延迟时间,就会看到16行选定的led全亮,汉字就显示出来了。

仿真电路图(点击或下载看大图):

完整的C程序:

 

#include<reg51.h>


unsigned char code tab0[]={
0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,
0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00
};

  void delay()
  {
  unsigned char i,j;
  for(i=0;i<2;i++)
   for(j=0;j<255;j++);

  }

main()
{
 unsigned char i,j;
 while(1)
 {
   j=0;
   for(i=0;i<=15;i++)
   {
   P1=i;
   P2=tab0[j];
   P0=tab0[++j];
   delay();
   P2=0x00;
   P0=0x00;
   j++;
   }

 }

}

 

 

 

转载于:https://www.cnblogs.com/proteus/archive/2011/11/01/2231555.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值