找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3305|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机proteus仿真:16*16LED显示一个汉字

[复制链接]
跳转到指定楼层
楼主
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程序:

  1. #include


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

  6.   void delay()
  7.   {
  8.   unsigned char i,j;
  9.   for(i=0;i<2;i++)
  10.    for(j=0;j<255;j++);

  11.   }

  12. main()
  13. {
  14. unsigned char i,j;
  15. while(1)
  16. {
  17.    j=0;
  18.    for(i=0;i<=15;i++)
  19.    {
  20.    P1=i;
  21.    P2=tab0[j];
  22.    P0=tab0[++j];
  23.    delay();
  24.    P2=0x00;
  25.    P0=0x00;
  26.    j++;
  27.    }

  28. }

  29. }

复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:211018 发表于 2017-6-14 08:49 | 只看该作者
楼主程序文件和仿真文件能私发下吗?我刚学想研究下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表