跳动的心
一、实物展示

二、程序代码

1、程序设计
#include <reg52.h>//头文件
#define uchar unsigned char
#define uint  unsigned int
uchar table[ ]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//P0
//uchar table1[ ]={0xFF,0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7};//P1  心形图案
uchar table11[]={0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7};
//uchar table2[ ]={0x99,0x66,0x7E,0x7E,0xBD,0xDB,0xE7,0xFF};//P1  心形图案 上移
uchar table22[]={0x99,0x00,0x00,0x00,0x81,0xC3,0xE7,0xFF};
uchar i,num;//定义变量
/*延时函数*/
void delay(uint a)
   {
    while(a--);
   }
/*主函数*/
void  main(  )
   {
   TMOD=0X01;//0000 0001//定时器0工作方式1
   TH0=0X3C;//装入初值    50毫秒
   TL0=0XB0;//装入初值
   EA=1;//打开总中断开关
   ET0=1;//打开定时器0中断开关
   TR0=1;//启动定时器0
   while(1)
         {
          if(num>=0&&num<=20)
         {
         for(i=0;i<8;i++)
         {
         P0=table[i];
         P1=table11[i];
           delay(30);
          }
         P1=0xff;
          }
         if(num>20&&num<=40)
         {
         for(i=0;i<8;i++)
         {
         P0=table[i];
         P1=table22[i];
           delay(30);
          }
         }
         }
   }
void timer0 ( )interrupt 1  //中断函数
{
  TH0=0X3C;//装入初值
  TL0=0XB0;//装入初值
  num++; //变量累加
  if(num>40)            
         {
         num=0;               
         } 
}
2、程序解释:
 if(num>=0&&num<=20)
“&&”逻辑与,num>=0&&num<=20含义是num>=0与num<=20同时满足,才能执行“{}”中的语句。
    激动人心的时刻即将到来,下载程序,跳动的心呈现在眼前。
采用table1与table2是空心跳动的心,采用table11与table22是实心跳动的心。