|
// A B C D 对应P1.0; P1.1 ; P1.2; P1.3
//--------------------------------
#include "reg52.h"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CLK =P1^5 ; //74HC595移时钟
sbit STB =P1^4 ; // 74HC595锁存信号
sbit Red=P1^6 ; //红色数据输出引脚低电平有效
sbit Greed=P1^7; //全屏控制使能0,低电平有效
sbit OE = P0^0; //全屏使能
uchar SendData; //要发送的数据变量
uchar hang; //行扫描变量 (半屏只有16行,所以hang=0到15)
uchar code zhong[]=
{
0x00,0x00,0x01,0x80,0x20,0x86,0x3F,0xFE,0x60,0x1C,0x1F,0xF8,0x07,0x18,0x0D,0xB8,0x33,0xE0,0x06,0xF0,0x19,0xD0,0x63,0x58,0x0C,0x4E,0x3A,0xC4,0x41,0xC0,0x00,0x00
};
uchar code guo[]=
{
0x00,0x00,0x01,0x80,0x01,0x80,0x3F,0xF8,0x3F,0xF8,0x31,0x98,0x3F,0xF8,0x3F,0xF8,0x31,0x98,0x31,0x98,0x3F,0xF8,0x01,0x80,0x01,0x87,0x01,0xFE,0x00,0xFC,0x00,0x00
};
uchar code ren[]=
{
0x00,0x80,0x18,0xF0,0x18,0xD8,0x35,0x96,0x27,0xFE,0x6D,0xB0,0x7B,0xB4,0x5B,0xFE,0x11,0xB0,0x3F,0xB4,0x31,0xFE,0x07,0xB0,0x3D,0xB2,0x71,0xFF,0x01,0x80,0x01,0x00
};
uchar code min[]=
{
0x08,0x40,0x1C,0xE0,0x18,0xC4,0x1C,0xFC,0x35,0x58,0x37,0x70,0x74,0x78,0x55,0xAF,0x17,0x70,0x14,0xF8,0x15,0xB8,0x16,0x6E,0x15,0xDC,0x13,0x70,0x17,0xC0,0x0C,0x00
};
uchar code zhu[]=
{
0x00,0x00,0x0C,0x00,0x06,0xBE,0x7F,0xE6,0x33,0x24,0x1B,0x24,0x1A,0x2C,0x7F,0xEC,0x21,0x24,0x3F,0xA6,0x31,0x22,0x31,0x3E,0x3F,0x2E,0x31,0x20,0x31,0x20,0x00,0x20
};
//------------------------------------
//----------字发送子程序-----------
void SendByte()
{
uchar m;
for(m=0;m<8;m++)
{
CLK = 0;
Red =(SendData & 0x80); //红屏显示
Greed =0;//(SendData & 0x80); //红屏显示
SendData =SendData<<1;
CLK = 1; //移位时钟上升沿
}
}
//-----------------------------------
//----------行扫描子程序-------------
void RowsCan(void)
{
if (hang>=16)
{
hang =0x00;
}
P1 = P1 & 0xf0;
P1 = P1 | hang;
hang++;
}
//---------------------------------------
//----------初始化-----------------
void initial(void)
{
OE = 1;
Red = 1;
Greed = 1;
SendData = 0x00;
hang = 0x00;
}
//;---------主程序循环--------------
void main()
{
int m,t=0;
int k=0;
initial();
while(1)
{
for(m=t;m<2+t;m++)///////////
{
SendData=zhong[m];
SendByte();
}
for(m=t;m<2+t;m++)//////////////////////
{
SendData=guo[m];
SendByte();
}
for(m=t;m<2+t;m++)//////////////////////////////////
{
SendData=ren[m];
SendByte();
}
for(m=t;m<2+t;m++)//////////////////
{
SendData=min[m];
SendByte();
}
for(m=t;m<2+t;m++)/////////////////////////
{
SendData=zhu[m];
SendByte();
}
OE = 1;
RowsCan(); //行扫描
STB = 0;
STB =1; //上升沿数据锁存
OE = 0;
t=t+2;
if(t==32)
{t=0;}
}
}
这是静态显示的程序,可以帮我在这改吗?我真的看不懂 |
|