找回密码
 立即注册

QQ登录

只需一步,快速开始

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

闲着买了块P10(16*32)单色屏玩,程序网上找的,可不该亮的LED暗亮,怎么消隐。

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

sbit OE     = P2^7;          //21脚使能
sbit A1     = P2^0;          //22脚行选信号
sbit B1     = P2^1;          //23脚行选信号
sbit SHCP=P2^3;       //25脚SHCP    移位时钟
sbit STCP=P2^4;       //24脚STCP    锁存时钟
sbit DATA=P2^5;       //17脚红色数据输入

uchar code table[10][32]={{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xC7,0x99,0xBB,0x99,0x39,0xF9,0x39,0xE3,0x39,
                                                        0xE3,0x39,0xF9,0x39,0xFD,0x39,0x9D,0x39,0x99,0xBB,0xC3,0xC7,0xFF,0xFF,0xFF,0xFF},  //30
                                                   {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x7,0xE7,0xE3,0xE7,0xF1,0xE7,0xF1,0xE7,0xE3,
                                                    0xE0,0xF,0xE7,0xFF,0xE7,0xFF,0xE7,0xFF,0xE7,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF}};  //P


/*******************************************************************************************/
                                                 //数据串行输入

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();      
  }
}


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

使用道具 举报

沙发
ID:393255 发表于 2018-9-10 05:48 | 只看该作者
我也遇到了同样的问题,真希望有人能解决一下。
回复

使用道具 举报

板凳
ID:392682 发表于 2018-9-10 08:33 来自手机 | 只看该作者
void serial_output() { OE=1;STCP=1;  NOP; NOP; STCP=0;}      然后   再在主函数里加一点延迟试一试}
回复

使用道具 举报

地板
ID:392682 发表于 2018-9-10 08:37 来自手机 | 只看该作者
并行输出前,把之前亮的给消了,不知道令OE=0能否达到这效果。还有要加入一点延时函数,运行太快也快,人眼可能跟不上
回复

使用道具 举报

5#
ID:71233 发表于 2019-2-15 12:02 | 只看该作者
请问:你有P10显示屏的接口图吗
回复

使用道具 举报

6#
ID:476644 发表于 2019-2-15 15:32 | 只看该作者
有图吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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