找回密码
 立即注册

QQ登录

只需一步,快速开始

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

点阵静止显示

[复制链接]
跳转到指定楼层
楼主
ID:539093 发表于 2019-5-18 20:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <intrins.h>

sbit LEDARRAY_LAT = P3^6;
sbit LEDARRAY_CLK = P3^5;
sbit LEDARRAY_DI = P3^4;

//函数或者变量声明
extern void Delay_ms(unsigned int n);
extern void Send_Byte( unsigned char dat);

//定义变量
unsigned char temp = 0xfe;
unsigned char KEY_NUM = 0;

unsigned char Display_word[4][4] = {
0x00,0x48,0x2A,0x8E,0xFB,0x0E,0x2A,0x48, //亲
0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C, //心
};



//****************************************************
//主函数
//****************************************************
void main()
{
    unsigned int i;
    unsigned char j,k;
    while(1)
    {
        for(i = 0 ; i < 1000 ; i++)
        {
            temp = 0x7f;
            for(j = 0 ; j < 2 ; j++)        //显示前两个字母
            {
                for(k = 0 ; k < 4 ; k++)        //一个字母4BYTE
                {
                    Send_Byte(temp);            //列选择
                    Send_Byte(Display_word[j][k]);          //行数据
                    LEDARRAY_LAT = 1;                   //锁存数据
                    _nop_();
               
                    LEDARRAY_LAT = 0;
                    _nop_();
                    temp = (temp>>1)|0x80;
                }
            }
        }

        for(i = 0 ; i < 1000 ; i++)
        {
            temp = 0x7f;
            for(j = 2 ; j < 4 ; j++)        //显示前两个字母
            {
                for(k = 0 ; k < 4 ; k++)        //一个字母4BYTE
                {
                    Send_Byte(temp);            //列选择
                    Send_Byte(Display_word[j][k]);          //行数据
                    LEDARRAY_LAT = 1;                   //锁存数据
                    _nop_();

                    LEDARRAY_LAT = 0;
                    _nop_();
                    temp = (temp>>1)|0x80;
                }
            }
        }
        

    }
}

//****************************************************
//发送一个字节数据
//****************************************************
void Send_Byte( unsigned char dat)
{
    unsigned char i;
    LEDARRAY_CLK = 0;
    _nop_();
    LEDARRAY_LAT = 0;
    _nop_();

    for( i = 0 ; i < 8 ; i++ )
    {
        if( dat&0x01 )
        {
            LEDARRAY_DI = 1;
        }
        else
        {
            LEDARRAY_DI = 0;
        }

        LEDARRAY_CLK = 1;               //上升沿发送数据
        //              _nop_();
        LEDARRAY_CLK = 0;
        //              _nop_();
               
        dat >>= 1;         
    }
}



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

使用道具 举报

沙发
ID:1 发表于 2019-5-19 19:29 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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