找回密码
 立即注册

QQ登录

只需一步,快速开始

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

8051单片机控制8*8点阵时,不用译码器可以吗?

[复制链接]
跳转到指定楼层
楼主
ID:546210 发表于 2019-5-24 11:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8051单片机控制8*8点阵时,不用译码器可以吗?8*8总共灯的数量大于51单片机接口数量,但是又不会用译码器,有没有不用译码器实现控制的方法啊,比如显示特定两位数字之类的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:582173 发表于 2019-7-18 10:06 | 只看该作者
protuse可以做到的 8*8点阵阳极接P2口,阴极接P1口,用下面的代码就可以实现!
#define uchar unsigned char
void Init_int();
void Init_time();
void display(int yin,int yang);
uchar num_num[10][5]={{0xf0,0xf6,0xf6,0xf6,0xf0},                                  //0
                                          {0xf7,0xf7,0xf7,0xf7,0xf7},                                  //1
                                          {0xf0,0xfe,0xf0,0xf7,0xf0},                              //2
                                          {0xf0,0xfe,0xf0,0xfe,0xf0},                                  //3
                                          {0xf6,0xf6,0xf0,0xfe,0xfe},                                  //4
                                          {0xf0,0xf7,0xf0,0xfe,0xf0},                                  //5
                                          {0xf0,0xf7,0xf0,0xf6,0xf0},                                  //6
                                          {0xf0,0xfe,0xfe,0xfe,0xfe},                                  //7
                                          {0xf0,0xf6,0xf0,0xf6,0xf0},                                  //8
                                          {0xf0,0xf6,0xf0,0xfe,0xf0}};                                  //9
uchar num_zero[5]={0xf0,0xf6,0xf6,0xf6,0xf0};
uchar num_one[5]={0xfe,0xfe,0xfe,0xfe,0xfe};
uchar num_two[5]={0xf0,0xfe,0xf0,0xf7,0xf0};
uchar num_three[5]={0xf0,0xfe,0xf0,0xfe,0xf0};
uchar num_fore[5]={0xf6,0xf6,0xf0,0xfe,0xfe};
uchar num_five[5]={0xf0,0xf7,0xf0,0xfe,0xf0};
uchar num_six[5]={0xf0,0xf7,0xf0,0xf6,0xf0};
uchar num_seven[5]={0xf0,0xfe,0xfe,0xfe,0xfe};
uchar num_eight[5]={0xf0,0xf6,0xf0,0xf6,0xf0};
uchar num_nine[5]={0xf0,0xf6,0xf0,0xfe,0xf0};
unsigned int count,i=1,weiyi,timer,shu,n=1;


void main()
{
        Init_time();
        Init_int();
        while(1)
        {}
}

void Init_time()                                   //定时器初始化
{
        TMOD|=0x01;
        TH0=0xff;
        TL0=0x10;
        TR0=1;
        ET0=1;
        EA=1;       
}

void Init_int()                   //中断初始化
{
        EA=1;
        EX0=1;
        ET0=1;       
}

void time() interrupt 1                          //定时器函数
{
        TH0=0xfd;                     //50微秒
        TL0=0xa8;
        count++;
        if(count>8)
        {
                count=0;
                display(i-1,i);
                i++;
                if(i>5)
                i=1;
        }
        timer++;
        if(timer>250)
        {
                timer=0;
                weiyi++;
                if(weiyi>10)
                {
                        weiyi=0;
                        shu++;
                        if(shu>9)
                        shu=0;
                }
        }
}

void display(int yin,int yang)                   //显示函数
{
        P2 = 0x00;
        P1 = ~(~num_num[shu][yin]<<weiyi);
        if(weiyi<3)
        {
                P1 = ~(~num_num[shu][yin]>>3-weiyi);               
        }
        else
        {
                P1 = ~(~num_num[shu][yin]<<weiyi-3);
        }
        switch(yang)
        {
                case 0 : P2 = 0x01;break;
                case 1 : P2 = 0x02;break;
                case 2 : P2 = 0x04;break;
                case 3 : P2 = 0x08;break;
                case 4 : P2 = 0x10;break;
                case 5 : P2 = 0x20;break;
                case 6 : P2 = 0x40;break;
                case 7 : P2 = 0x80;break;
                default : P2 = 0x00; break;
        }               
}
回复

使用道具 举报

板凳
ID:95809 发表于 2020-2-5 09:11 来自手机 | 只看该作者
只要单片机有16个口就行,阳极接一组,比如P2口,阴极接一组,比如P0。
回复

使用道具 举报

地板
ID:679147 发表于 2020-2-6 11:12 | 只看该作者
可以,我之前就做过
回复

使用道具 举报

5#
ID:168996 发表于 2020-2-6 12:58 | 只看该作者
矩阵(并行,不用译码)接法,8+8个IO可行
回复

使用道具 举报

6#
ID:462827 发表于 2020-2-6 13:55 | 只看该作者
可以,不用译码器(74HC138等)还可以用其它锁存器的嘛,比如74HC595、74HC573等等,也可以直接单片机引脚加三级管直接驱动都行。

但是,如果你是用现成的板,那么它用了什么东西你就得用它的呀。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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