找回密码
 立即注册

QQ登录

只需一步,快速开始

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

双色LED点阵显屏设计与制作

[复制链接]
跳转到指定楼层
楼主
ID:342515 发表于 2018-9-20 13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>   
#include <intrins.h>
/***********************************************************************************************/
unsigned char  segout[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //8列扫描代码,高电平有效
unsigned char code tab[]={0xff,0xcf,0xb7,0xbb,0xdd,0xbb,0xb7,0xcf};        //数据代码,低电平有效
sbit LATCH = P1^0;                            //点屏数的数据端口定义
sbit SRCLK = P1^1;
sbit SER   = P1^2;
sbit LATCH_B = P2^0;                     //点阵屏的公共端口定义
sbit SRCLK_B = P2^1;
sbit SER_B   = P2^2;
/************************************************************************************************
**函数名:delay(unsigned char i)       
**功  能:延时程序
************************************************************************************************/
void delay(unsigned char i)
{        unsigned char j,k;
                for(k=0;k<i;k++)
                {        for(j=0;j<255;j++);
                }
}
/************************************************************************************************
**函数名:sendbyte(unsigned char dat)       
**功  能:发送字节程序
************************************************************************************************/
void sendbyte(unsigned char dat)
{        unsigned char i;      
        for(i=0;i<8;i++)            //发送1个字节数据
        {        SRCLK=0;                        //为数据移位准备
                if(dat&0x80)                //发送1位数据
                        SER = 1;                //发送1
                else
                        SER = 0;            //发送0       
         dat<<=1;                          //左移数据,为下次发送数据准备
         SRCLK=1;                        //数据寄存器中的数据移位,不影响输出
    }      
}
/************************************************************************************************
**函数名:sendbyte2(unsigned char dat1,unsigned char dat2)
**功  能:发送2个字节程序,595级联,n个595,就需要发送n字节后锁存
************************************************************************************************/
void sendbyte2(unsigned char dat1,unsigned char dat2)
{        sendbyte(dat1);
        sendbyte(dat2);      
}
/************************************************************************************************
**函数名:out595(void)
**功  能:595级联发送数据后,锁存有效
************************************************************************************************/
void out595(void)
{        LATCH=0;                   //锁存输出
        _nop_();
        LATCH=1;
}
/************************************************************************************************
**函数名:send_com(unsigned char dat)
**功  能:发送点阵屏公共端控制码
************************************************************************************************/
void send_com(unsigned char dat)
{        unsigned char i;      
        for(i=0;i<8;i++)                  //发送1个字节
        {        SRCLK_B=0;                        //为数据移位准备
                if(dat&0x80)                //发送1位数据
                        SER_B = 1;                 //发送1
                else
                        SER_B = 0;                //发送0
        dat<<=1;
        SRCLK_B=1;                        //数据寄存器中的数据移位,不影响输出
    }
        LATCH_B=0;                            //输出锁存
        _nop_();
        LATCH_B=1;        
}
/************************************************************************************************
                                                                mian()
************************************************************************************************/
void main()
{        unsigned char i;
        while(1)
        {        for(i=0;i<8;i++)                                 //8列数据显示
                {        send_com(segout[i]);                //送公共端数据,即列扫描代码
                        sendbyte2(tab[i],0xff);                //送列数据,第1参数是绿色数据,第2参数是红色数据
                        out595();                                        //595锁存输出
                        delay(2);
                        sendbyte2(0xff,0xff);                //防止重影
                        out595();                                        //595锁存输出
                }
        }
}


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

使用道具 举报

沙发
ID:1 发表于 2018-9-20 16:43 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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