电子之都

电脑版
提示:原网页已由神马搜索转码, 内容由www.dzdu.com提供.
查看:2006|回复:0

STC90C52RC驱动P10LED屏的程序

[复制链接]
发表于 2020-6-29 20:40:10|显示全部楼层|阅读模式

注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。

您需要 登录才可以下载或查看,没有帐号?快速注册

x
STC单片机通过串口,在系统控制P10,16*32的单色LED。


//STC单片?/动P10LED屏的程序
///p10半户外1/4扫描


#include< reg52.h>
#include< intrins.h>

#define uchar unsigned char
#define uint  unsigned int
#define NOP     _nop_()

//1=OE     2 =A
//3       4 =B
//5       6
//7       8 =CLK
//9       10=STB
//11     12=DR
//13     14
//15     16

//-------------------------------------------------------------
sbit OE     = P2^0;

sbit AA     = P2^1;
sbit BB     = P2^2;

sbit CLK =P2^3;   //11脚CLK   移位时钟
sbit STB =P2^4;   //12脚STB   锁存时钟

sbit DR=P2^5;         //数据输入


//----------------谢谢-------------0=亮 1=灭----------------------------------------------
uchar code table[10][32]=
{

//第1单元--------------左边16*16=256字阵                            
{
//第1列,第2列
0xfe,0xfd,//第1行数据-
     0xfb,0xf7,//第2行数据--
       0xef,0xdf,//第3行数据---
           0xbf,0x7f,//第4行数据----

0xe0,0xF0,//第1行数据-
     0xc0,0xf8,//第2行数据--
       0x80,0xfc,//第3行数据---
           0x00,0xfe,//第4行数据----
  
0x00,0x00,//第1行数据-
     0x00,0x00,//第2行数据--
       0x00,0x00,//第3行数据---
           0x00,0x00,//第4行数据----

0x00,0x00,//第1行数据-
     0x00,0x00,//第2行数据--
       0x00,0x00,//第3行数据---
           0x00,0x00 //第4行数据----
},

//第2单元-------------右边16*16=256字阵
//第3列,第4列
{
0xFE,0xF7,//第1行数据-
     0xBD,0xF7,//第2行数据--
       0xC8,0x77,//第3行数据---
           0xDB,0x77,//第4行数据----

0xF8,0x01,//第1行数据-
     0xFB,0x77,//第2行数据--
       0x18,0x37,//第3行数据---
           0xDB,0x57,//第4行数据----

0xD0,0x57,//第1行数据-
     0xDE,0x77,//第2行数据--
       0xDD,0x77,//第3行数据---
           0xD5,0x77,//第4行数据----

0xCB,0x77,//第1行数据-
     0xD7,0x77,//第2行数据--
       0xED,0x57,//第3行数据---
           0xFE,0xEF //第4行数据----
}
};

/*******************************************************************************************/
void Delay_ms(uint tt)
{unsigned int i,j;for(i=0;i<tt;i++)for(j=0;j<100;j++);;} //


/*******************************************************************************************/
//数据串行输入
void serial_input(uchar dat)  
{
       uint m;
OE=1;//输出使能
AA=0;//行选择,只选择第一行,全屏有4个第一行
BB=0;
          
//一字节数据分成BIT数据 一位位输出。
for(m=0;m<8;m++)
           {
               if(dat& 0x80)DR=1;else DR=0;
                
               CLK=0;      
               CLK=1; NOP;NOP;//=1高电平
               CLK=0; NOP;NOP;//=0低电平
              
//--------------------------------------------------
STB=1; NOP; NOP;//上升沿,锁存器转移数据
STB=0;  // 低电平时锁存数据    
//----------------------------
Delay_ms(50);//延时
dat=dat<<1;//数据左移一位,输出2BIT
           }

}




/*******************************************************************************************/
/*******************************************************************************************/
void main()
{
unsigned int i;
serial_input(0x7f);
for(i=0;i<16;i++)
{
serial_input(0xff);
}  
while(1)
     {
serial_input(0x7f);
for(i=0;i<16;i++)
{
serial_input(0xff);
}  
     // serial_input(0xef);        
     }

}

//*********一个LED 逐次在第一行扫描一遍**********************************************
//unsigned int i;
//serial_input(0x7f);
//for(i=0;i<16;i++)
//{
//serial_input(0xff);
//}  
//while(1)
     // {

     // serial_input(0xef);        
     // }

//}


手机版|家电维修技术论坛( 鄂ICP备09003585号-2)

GMT+8, 2024-6-6 06:58, Processed in 0.050967 second(s), 5 queries , Gzip On, MemCache On.

Qiji. All Rights Reserved


服务条款| 站长声明