二木之长牛 2019-07-13 10:56 采纳率: 0%
浏览 1521
已结题

51单片机如何在8*8双色点阵上显示数字(使用矩阵键盘输入)

希望大神们给出完整的,能在51单片机上运行的程序,使用C语言编写。

  • 写回答

1条回答

  • wsnjjq 2019-07-13 11:06
    关注

    这有一个8×8的点阵程序,需要现在是数字的或定义几个数组就行了

    //点阵显示 亲 - 桃心(形状)
    #include
    #include

    //点阵模块接口定义
    sbit LEDARRAY_LAT = P3^6;//储存寄存器时钟
    sbit LEDARRAY_CLK = P3^5;//移位寄存器时钟输入端
    sbit LEDARRAY_DI = P3^4;//串行数据输入端

    //二维数组 内含字摸代码,取摸方式和软件都在本目录内
    unsigned char code Display_word[2][8] = {
    0x00,0x48,0x2A,0x8E,0xFB,0x0E,0x2A,0x48,//亲
    0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C //桃心(形状)
    };

    //SPI通信函数 发送一个直接数据给点阵模块
    void Send_Byte( unsigned char dat)
    {
    unsigned char i;//循环次数变量
    LEDARRAY_CLK = 0;//拉低移位时钟
    nop();

    LEDARRAY_LAT = 0;//拉低储存时钟
    nop();

    for( i = 0 ; i < 8 ; i++ ) //循环8次写入一个字节数据
    {
        if( dat&0x01 )
        {
            LEDARRAY_DI = 1;    
        }
        else
        {
            LEDARRAY_DI = 0;
        }
    
        LEDARRAY_CLK = 1;               //上升沿发送数据
        //              _nop_();
        LEDARRAY_CLK = 0;
        //              _nop_();
    
        dat >>= 1;          
    }       
    

    }

    void main()
    {
    unsigned char k, temp;
    unsigned int i;//i的数值越大显示停留的时间就越久
    while(1)
    {
    //亲
    for(i = 0 ; i < 1000 ; i++)
    {
    temp = 0x7f;
    for(k = 0 ; k < 8 ; k++) //一个字母8BYTE
    {
    Send_Byte(temp); //列选择
    Send_Byte(Display_word[0][k]); //行数据
    LEDARRAY_LAT = 1; //锁存数据
    nop();

                LEDARRAY_LAT = 0;
                _nop_();
                temp = (temp>>1)|0x80;
            }
        }
            //桃心(形状) 
        for(i = 0 ; i < 1000 ; i++)
        {
            temp = 0x7f;
            for(k = 0 ; k < 8 ; k++)        //一个字母4BYTE
            {
                Send_Byte(temp);            //列选择
                Send_Byte(Display_word[1][k]);          //行数据
                LEDARRAY_LAT = 1;                   //锁存数据
                _nop_();
    
                LEDARRAY_LAT = 0;
                _nop_();
                temp = (temp>>1)|0x80;
            }
        }   
    }
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 镍氢电池充电器设计实物使用原理
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号