找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用51单片机控制LED显示屏模块,看不懂程序,求各位大神帮忙一下

[复制链接]
跳转到指定楼层
楼主
ID:94827 发表于 2016-1-2 22:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NOP     _nop_()


sbit OE     = P1^0;
sbit A1     = P1^4;
sbit B1     = P1^5;

sbit SHCP=P1^6;    //11脚SHCP    移位时钟
sbit STCP=P1^7;    //12脚STCP    锁存时钟
sbit DATA=P3^1;           //数据输入

uchar code table[10][32]=
{{0xFE,0xF7,0xBD,0xF7,0xC8,0x77,0xDB,0x77,0xF8,0x01,0xFB,0x77,0x18,0x37,0xDB,0x57,
  0xD0,0x57,0xDE,0x77,0xDD,0x77,0xD5,0x77,0xCB,0x77,0xD7,0x77,0xED,0x57,0xFE,0xEF},            //谢

{ 0xFE,0xF7,0xBD,0xF7,0xC8,0x77,0xDB,0x77,0xF8,0x01,0xFB,0x77,0x18,0x37,0xDB,0x57,
  0xD0,0x57,0xDE,0x77,0xDD,0x77,0xD5,0x77,0xCB,0x77,0xD7,0x77,0xED,0x57,0xFE,0xEF}
};          //谢

//数据串行输入
void serial_input(uchar dat)   
{
        uint m;
                for(m=0;m<8;m++)
                {
                        if(dat & 0x80)
                                DATA=1;
                        else
                                 DATA=0;
                        SHCP=0;        
                        SHCP=1;                                 
                                        NOP;
                        NOP;
                        SHCP=0;
                        NOP;
                        NOP;
                        dat=dat<<1;
                }

}

/*******************************************************************************************/
//并出
void serial_output()
{
        STCP=1;                 
        NOP;
        NOP;
        STCP=0;        
}  
//行显控制
void HC138_scan(uchar temp)
{
   OE=1;
   A1=0x01 & temp;
   B1=0x01 &(temp>>1);
}
/*******************************************************************************************/
/*******************************************************************************************/
//整屏显示
void display()
{
        uint i,j,k;
        for(k=0;k<4;k++)                  //显示的四行
                {        
                        for(j=0;j<2;j++)          //显示3、4列
                        {
                                for(i=0;i<2;i++)      // 显示1、2列
                                {
                                        serial_input(table[j][3*8+2*k+i]);         
                                        serial_input(table[j][2*8+2*k+i]);                        
                                        serial_input(table[j][1*8+2*k+i]);               
                                        serial_input(table[j][0*8+2*k+i]);
                                }
                        }
                                serial_output();
                                HC138_scan(k);
                }
}

/*******************************************************************************************/
/*******************************************************************************************/

/*******************************************************************************************/
/*******************************************************************************************/
void main()
{
        while(1)
        {

                display();                 
        }
}

这是程序,由于我技术有限,看不懂。望各位大神指导一下。

P10单元板电路图_完整 (2).pdf

187.51 KB, 下载次数: 111

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

使用道具 举报

沙发
ID:85702 发表于 2016-1-4 22:58 | 只看该作者
楼主要先说是哪些看不懂.如果都看不懂.那楼主还是多看下一些基础书吧
回复

使用道具 举报

板凳
ID:94827 发表于 2016-1-5 19:29 | 只看该作者
额,我没说清楚
serial_input(table[j][3*8+2*k+i]);         
serial_input(table[j][2*8+2*k+i]);                        
serial_input(table[j][1*8+2*k+i]);               
serial_input(table[j][0*8+2*k+i]);
就是这些,主要就是不明白括号里的是什么意思
回复

使用道具 举报

地板
ID:193466 发表于 2017-4-27 13:20 | 只看该作者
楼主做的是p10的屏吗?电路图在哪里找到的?
回复

使用道具 举报

5#
ID:194171 发表于 2017-4-27 13:54 来自手机 | 只看该作者
输入的吧
回复

使用道具 举报

6#
ID:111634 发表于 2017-4-27 15:35 | 只看该作者
没基础就去看有注释的程序。即使有基础看别人的程序也很累。
回复

使用道具 举报

7#
ID:194225 发表于 2017-4-27 15:51 | 只看该作者
serial_input(table[j][3*8+2*k+i]);         
serial_input(table[j][2*8+2*k+i]);                        
serial_input(table[j][1*8+2*k+i]);               
serial_input(table[j][0*8+2*k+i]);
这些括号里面是得到前面定义的二维数组里定义的数据,楼主可以百度二维数组看看。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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