#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dischar[]={
0xF,0xDF,0xF9,0xCF,0xFB,0xBF,0xC0,0x07,
0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,
0xC0,0x07,0xDE,0xF7,0xFE,0xFF,0x00,0x01,
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,
0xFF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBB,
0xE0,0x01,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,
0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,
0xDF,0xEF,0xDF,0xEF,0xBF,0xEF,0x7F,0xEF,
0xEF,0xFF,0xEF,0x07,0xEF,0x77,0x01,0x77,
0xEF,0x77,0xEF,0x77,0xC7,0x77,0xCB,0x77
,0xAB,0x77,0xAF,0x77,0x6E,0xF7,0xEE,0xF5,
0xED,0xF5,0xED,0xF5,0xEB,0xF9,0xEF,0xFF,
};
/***********端口定义*****************/
sbit A1 =P2^0;
sbit B1 =P2^1;
sbit C1 =P2^2;
sbit D1 =P2^3;
sbit EN1=P2^4;
sbit LS595_SHC=P1^0; //SHcp 锁存时钟-----74HC595
sbit LS595_STC=P1^1; //STcp 移位时钟-----74HC595
sbit LS595_DS =P1^2; //DSI 数据---------74HC595
/**********nms延时子程序*************/
void Delay_Nms(uint n)
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<20;j++)
;
}
/**********发送一字节数据*************/
void SendOneByte(uchar content)
{
uchar i;
for(i=0;i<8;i++)
{
LS595_DS=(bit)(content & 0x80); //判断输出数据
LS595_SHC=0; //初始化移位时钟
content<<=1; //更新数据
LS595_SHC=1;
}
}
/***********主函数********************/
void main(void)
{
uchar i;
uchar j;
uchar k;
uchar ycode;
EN1=1; //不使能154译码器
while(1)
{ for(j=0;j<3;j++)
{
for(k=0;k<50;k++)
{
for(i=0;i<16;i++)
{
LS595_STC=0;
SendOneByte(dischar[i*2+j*32]); //译码显示
SendOneByte(dischar[i*2+j*32+1]); //译码显示
LS595_STC=1; //数据已准备好
P2=i|0XF0; //开启扫描的行数据
EN1=0; //打开行输出
Delay_Nms(4);
EN1=1; //关闭行输出
}
}
}
}
}
|