用8x8點陣屏,顯示“I LOVE YOU 生日快樂”,使用STC 89C52RD P1口和P0 口,有興趣的可以試試。
#include <reg51.h>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code digittab[][8]={
{0xff,0xbf,0xbd,0xbd,0x81,0xbd,0xbd,0xff}, //I
{0xff,0xf3,0xed,0xdd,0xbb,0xdd,0xed,0xf3}, //?
{0xff,0xff,0x81,0x7f,0x7f,0x7f,0x81,0xff}, //U
{0xbf,0xaf,0xab,0xab,0x80,0xab,0xa8,0xa7}, //生
{0xff,0xff,0x00,0x76,0x76,0x76,0x00,0xff}, //日
{0xbf,0xa3,0xc0,0xab,0xbf,0xcf,0x00,0xf3}, //快
{0xb7,0xd6,0xa5,0x05,0xe5,0xd1,0xbf,0xff}, //樂
};
unsigned int timecount;
unsigned char cnta;
unsigned char cntb;
void main(void)
{
TMOD=0x01;
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{;
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
P1=0XFF; //消除顯示重影問題
P0=~digittab[cntb][cnta];
P1=~(0x01<<cnta);
cnta++;
if(cnta==8)
{
cnta=0;
}
timecount++;
if(timecount==500)
{
timecount=0;
cntb++;
if(cntb==7)
{
cntb=0;
}
}
}
|