?? 上卷簾顯示郭少斌.c
字號:
#include <reg52.h>
#define BLKN 2
#define uchar unsigned char
#define uint unsigned int
uchar i,j,k;
//uint i;
sbit G =P2^7;
sbit RCK=P2^6;
sbit SCLR=P2^5;
void delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
uchar code bmp[][32]=
{
{
0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x01,0x04,0xFF,0xFE,0x00,0x10,
0x1F,0xF8,0x10,0x10,0x10,0x10,0x1F,0xF0,0x09,0x20,0x11,0x18,0x65,0x08,0x02,0x00
},//景
{
0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x3F,0xF8,0x02,0x00,0xFF,0xFE,0x04,0x40,
0x09,0x20,0x39,0x30,0xC5,0x4E,0x03,0x84,0x0D,0x60,0x11,0x10,0x05,0x00,0x02,0x00
},//泰
{
0x08,0x20,0x08,0x24,0xFF,0xFE,0x08,0x20,0x04,0x90,0x24,0xF8,0x25,0x00,0x26,0x40,
0x24,0x20,0x04,0x08,0x3F,0xFC,0x24,0x48,0x24,0x48,0x24,0x48,0xFF,0xFE,0x00,0x00
} //藍
};
uchar data dispram[32]; //顯示緩存
void main()
{
SCON=0x00; //串口工作模式0;移位寄存器方式
TMOD=0x01; //定時器T0工作方式1:16位方式
TR0=1; //啟動定時器t0
P1=0x3f; //P1端口初值:允許接收、鎖定、顯示
IE=0x82;
while(1)
{
for(i=0;i<3;i++)
{
for(j=0;j<16;j++)
{
for(k=0;k<15;k++)
{
dispram[k*BLKN]=dispram[(k+1)*BLKN];
dispram[k*BLKN+1]=dispram[(k+1)*BLKN+1];
}
dispram[30]=~bmp[i][j*BLKN];
dispram[31]=~bmp[i][j*BLKN+1];
delay(100);
}
}
}
}
void leddisplay(void) interrupt 1 using 1
{
uchar i,j=BLKN; //設定顯示屏刷新率62.5幀/s
TH0=0xfd;
TL0=0xf0;
i=P1; //讀取當前顯示的行列
i=++i&0x0f; /*行數自動加一,屏蔽高4位 ,注意P1.0,P1.1,P1.2,P1,3控制行的顯示,
通過4線16線譯碼器,對16行進行控制*/
do
{
j--;
SBUF=dispram[i*BLKN+j]; //送顯示數據,SBUF串行數據緩沖寄存器
while(!TI); /*串行發送停止位的開始時,由內部硬件使T11,向CPU發出中斷請求
,在中斷服務程序中,必須用軟件使其清0*/
TI=0;
}
while(j); //完成一行數據的發送
G=1; //消隱(關閉顯示)
P1&=0xf0; //行號端口清0
RCK=1; //顯示數據打入輸出鎖存器
P1|=i; //寫入行號
RCK=0; //鎖存顯示數據
G=0; //打開顯示
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -