高级会员
主题
帖子
积分971
阅读权限30
注册时间2013-3-6
最后登录1970-1-1
在线时间 小时
|
/*
* 程序名称:P10户外LED屏显示控制
* 主控型号:STC89C52RC
* 晶 振:11.0592MHZ
*
*/
#include "AT89X52.h"
#define SBIT sbit
#define BIT bit
#define LEDLINEPORT P2
typedef unsigned char INT8U;
typedef unsigned int INT16U;
SBIT LEDOE = P1^0; //显示允许
SBIT SCLK = P1^1; //时钟
SBIT STR = P1^2; //锁存
SBIT RDATA = P1^3; //数据
code unsigned char HZ[] =
{
0xFD,0xFD,0xFD,0xFC,0xFD,0xFD,0xC0,0xDF,0xDF,0xDF,0xC0,0xFF,0xDB,0xDD,0xBD,0x7F,
0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0x0F,0xEF,0xEF,0xEF,0x0F,0xFF,0x77,0xBB,0xBB,0xFB,/*"点",0*/
0xFF,0x83,0xBB,0xB4,0xB7,0xAF,0xB6,0xB6,0xBB,0xBB,0xBB,0x94,0xAF,0xBF,0xBF,0xBF,
0xBF,0xBF,0xBF,0x01,0x7F,0x5F,0xDF,0x03,0xDF,0xDF,0xDF,0x01,0xDF,0xDF,0xDF,0xDF,/*"阵",1*/
0xFF,0xE0,0xEF,0xEF,0xE0,0xEF,0xEF,0xE0,0xFB,0xBB,0xDB,0xEB,0xEB,0xFB,0x00,0xFF,
0xFF,0x0F,0xEF,0xEF,0x0F,0xEF,0xEF,0x0F,0xBF,0xBB,0xBB,0xB7,0xAF,0xBF,0x01,0xFF,/*"显",0*/
0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0xFE,0xEE,0xEE,0xDE,0xBE,0x7E,0xFA,0xFD,
0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xEF,0xF7,0xFB,0xFD,0xFD,0xFF,0xFF,/*"示",1*/
};
void SPIWriteToOneChar(unsigned char Write_Data)
{
unsigned char I = 0x00;
for (I = 0x00;I < 8;I++)
{
RDATA = Write_Data & 0x80;
SCLK = 1;
SCLK = 0;
Write_Data <<= 1;
}
}
void main(void)
{
unsigned char I = 0x00;
unsigned char J = 0X00;
unsigned int M = 0x00;
unsigned int COUNT;
unsigned char MM = 0;
// LEDOE = 0;
while(M++ < 2)
{
for (I = 0;I < 4;I++)
{
for (J = 0;J < 32;J++)
{
SPIWriteToOneChar(0X00);
}
STR = 1;
LEDLINEPORT = I;
LEDOE = 1;
STR = 0;
COUNT = 20000;
while(COUNT--);
}
}
M = 0;
I = 0;
J = 0;
MM = 0X80;
while(MM > 0)
{
for (I = 0;I < 4;I++)
{
for (J = 0;J < 32;J++)
{
SPIWriteToOneChar(~MM);
}
STR = 1;
LEDLINEPORT = I;
LEDOE = 1;
STR = 0;
COUNT = 100;
while(COUNT--);
}
if (++M == 20)
{
MM >>= 1;
M = 0;
}
}
I = 0;
J = 0;
while(1)
{
for (I = 0;I < 4;I++)
{
LEDOE = 0;
SPIWriteToOneChar(HZ[(6-J)*2+I]);
SPIWriteToOneChar(HZ[(4-J)*2+I]);
SPIWriteToOneChar(HZ[(2-J)*2+I]);
SPIWriteToOneChar(HZ[ J *2+I]);
SPIWriteToOneChar(HZ[(14-J)*2+I]);
SPIWriteToOneChar(HZ[(12-J)*2+I]);
SPIWriteToOneChar(HZ[(10-J)*2+I]);
SPIWriteToOneChar(HZ[(8 -J)*2+I]);
SPIWriteToOneChar(HZ[(22-J)*2+I]);
SPIWriteToOneChar(HZ[(20-J)*2+I]);
SPIWriteToOneChar(HZ[(18-J)*2+I]);
SPIWriteToOneChar(HZ[(16-J)*2+I]);
SPIWriteToOneChar(HZ[(30-J)*2+I]);
SPIWriteToOneChar(HZ[(28-J)*2+I]);
SPIWriteToOneChar(HZ[(26-J)*2+I]);
SPIWriteToOneChar(HZ[(24-J)*2+I]);
SPIWriteToOneChar(HZ[(38-J)*2+I]);
SPIWriteToOneChar(HZ[(36-J)*2+I]);
SPIWriteToOneChar(HZ[(34-J)*2+I]);
SPIWriteToOneChar(HZ[(32-J) *2+I]);
SPIWriteToOneChar(HZ[(46-J)*2+I]);
SPIWriteToOneChar(HZ[(44-J)*2+I]);
SPIWriteToOneChar(HZ[(42-J)*2+I]);
SPIWriteToOneChar(HZ[(40 -J)*2+I]);
SPIWriteToOneChar(HZ[(54-J)*2+I]);
SPIWriteToOneChar(HZ[(52-J)*2+I]);
SPIWriteToOneChar(HZ[(50-J)*2+I]);
SPIWriteToOneChar(HZ[(48-J)*2+I]);
SPIWriteToOneChar(HZ[(62-J)*2+I]);
SPIWriteToOneChar(HZ[(60-J)*2+I]);
SPIWriteToOneChar(HZ[(58-J)*2+I]);
SPIWriteToOneChar(HZ[(56-J)*2+I]);
STR = 1;
LEDLINEPORT = I;
LEDOE = 1;
STR = 0;
COUNT = 100;
while(COUNT--);
}
}
}
|
|