找回密码
 立即注册

QQ登录

只需一步,快速开始

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

Proteus仿真8*8LED点阵屏为何不能显示第一个点?

[复制链接]
跳转到指定楼层
楼主
本人新手,自学51单片机驱动8*8LED点阵屏,遇难题如下:
仿真图如下:

请问为什么LED点阵屏左上角第一个点不亮,而且斜线错位,最右下角的点也不亮?
修改数组元素顺序为:
unsigned char code led0[]={0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x01};
再仿真OK!如下图所示:


按8*8LED点阵屏显示原理,不用修改数组元素顺序,就能显示上图所示“\”图案,但实际仿真,显示的是第一幅图片所示的图案,请高手赐教为什么?谢谢!

  1. #include<reg51.h>//单片机头文件
  2. void delay1ms(unsigned int ms);//延时ms函数声明
  3. unsigned char code led0[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//字码表(LED屏显对角斜线“\”)
  4. void main()//主函数
  5. {
  6. unsigned char H,i;        //定义变量
  7. while(1)
  8.    {
  9.          H=0x01; //行变量赋初值
  10.          for(i=0;i<8;i++)//行扫描
  11.          {
  12.          P1=H; //行数据送P1口
  13.          P0=led0[i];//列数据送P0口
  14.          delay1ms(1);//延时1毫秒
  15.          H<<=1; //向下移动一行
  16.          }
  17.         }
  18. }
  19. void delay1ms(unsigned int ms)//延时函数
  20. {
  21. unsigned int i,j;//定义变量
  22. for(i=0;i<ms;i++)
  23. for(j=0;j<110;j++);
  24. }
复制代码

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

使用道具 举报

沙发
ID:213173 发表于 2020-3-9 17:08 | 只看该作者
这是仿真软件的缺陷所致,降低扫描速度试试。改用595驱动LED点阵屏就可以解决。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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