- UID
- 1093011
- 阅读权限
- 1
- 推广
-
- 幽默
-
- 注册时间
- 2019-9-11
- 最后登录
- 1970-1-1
|
注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。
您需要 登录 才可以下载或查看,没有帐号?快速注册
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);
// }
//}
|
|