找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机是自已提前自学的,我在网上看完了的课程里面,没有点阵的内容,求学习资料

[复制链接]
跳转到指定楼层
楼主
还有就是我自已尝试模仿了一下别人写的程序,并修改了一些,但是显示不了我想要显示的字,求大佬赐教。以下是程序和电路图
#include<reg51.h>
unsigned int zimo[]={
0x7F,0xBF,0xCF,0xE1,0xEF,0xEF,0xEF,0x00,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,
0xBF,0xBF,0xBD,0xBD,0xBD,0xBD,0xBD,0x80,0xBD,0xBD,0xBD,0xBD,0xBD,0xBF,0xBF,0xFF,
0xFF,0xFF,0xFF,0x01,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x01,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x00,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0x1F,0xFF,0x00,0xEF,0xDF,0xF7,0xF7,0xF7,0x00,0xF7,0xF7,0x07,0xFF,0xFF,0xFF,
0xFE,0xFF,0xFF,0x00,0xFF,0x7E,0xBE,0xCE,0xF2,0xFC,0xF2,0xCE,0xBE,0x7E,0x7E,0xFF,
0xFF,0xFF,0x1F,0x63,0x7B,0x7B,0x7B,0x0B,0x7D,0x7D,0x7C,0x7D,0x7F,0x7F,0xFF,0xFF,
0xFF,0xDF,0xEF,0xF7,0xF9,0xBF,0x7F,0x80,0xFF,0xFF,0xFD,0xFB,0xF7,0xCF,0xFF,0xFF
};
int time=0;
int flag=0;
int num=0;
int s=9;
int counter=120;
void delay(unsigned int i)
{
        while(i--);
}
void t0()
{
        TMOD=0X01;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        TR0=1;
        ET0=1;
        EA=1;
}
void display(unsigned char qian,unsigned char hou,int col)
{
if(col==1)  
{
   P3=0x7f;
   P1=0xff;
}
else if(col==2)
{
   P3=0xbf;
   P1=0xff;
}
else if(col==3)
{
   P3=0xdf;
   P1=0xff;
}
else if(col==4)  
{
   P3=0xef;
   P1=0xff;
}
else if(col==5)  
{
   P3=0xf7;
   P1=0xff;
}
else if(col==6)  
{
   P3=0xfb;
   P1=0xff;
}
else if(col==7)  
{
   P3=0xfd;
   P1=0xff;
}else if(col==8)  
{
   P3=0xfe;
   P1=0xff;
}else if(col==9)  
{
   P3=0xff;
   P1=0x7f;
}else if(col==10)  
{
   P3=0xff;
   P1=0xbf;
}else if(col==11)  
{
   P3=0xff;
   P1=0xdf;
}else if(col==12)  
{
   P3=0xff;
   P1=0xef;
}else if(col==13)  
{
   P3=0xff;
   P1=0xf7;
}else if(col==14)  
{
   P3=0xff;
   P1=0xfb;
}else if(col==15)  
{
   P3=0xff;
   P1=0xfd;
}else if(col==16)  
{
   P3=0xff;
   P1=0xfe;
}
P2=qian;
P0=hou;
}

void main()
{   t0();
        while(1)
              {
                                        int t=0;
                                        for(t=0;t<16;t++)
                                        {
                                                display(zimo[(t+flag)*2],zimo[(t+flag)*2+1],t+1);
                                                delay(10000);
                                        }
     }
}
void zd() interrupt 1
{
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        time++;
        if(time==s)
        {
                num++;
                flag=flag+1;
                if(num>counter)
                {
                        num=0;
                        flag=0;
                }
                time=0;
         }
}

无标题.png (366 KB, 下载次数: 51)

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

使用道具 举报

沙发
ID:23606 发表于 2020-7-9 08:20 | 只看该作者
动态扫描,是不是延时过长
display(zimo[(t+flag)*2],zimo[(t+flag)*2+1],t+1);
                                                delay(10000);
回复

使用道具 举报

板凳
ID:792340 发表于 2020-7-9 09:41 | 只看该作者
YJGG 发表于 2020-7-9 08:20
动态扫描,是不是延时过长
display(zimo[(t+flag)*2],zimo[(t+flag)*2+1],t+1);
                       ...

不是啊,延时我改成短一点的也不行
回复

使用道具 举报

地板
ID:23606 发表于 2020-7-9 18:07 | 只看该作者
你先试着点亮一个点的LED灯,看能否点亮,确定硬件电路是否正常
回复

使用道具 举报

5#
ID:792340 发表于 2020-7-9 18:21 | 只看该作者
YJGG 发表于 2020-7-9 18:07
你先试着点亮一个点的LED灯,看能否点亮,确定硬件电路是否正常

做这个点阵之前就已经点亮过了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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