综合技术交流
直播中

ss

6年用户 8762经验值
擅长:电源/新能源 制造/封装 RF/无线
私信 关注
[经验]

如何利用单片机制作一颗跳动的心

  跳动的心
  8×8点阵屏可以显示简单的图形符号,还记得前面显示心形图案吗?将你的大作呈现在小伙伴面前,是不是很得意呢?我们看到这个制作,都很好奇,咱们能不能让它跳起来,更有动感呢?
  跳动的心,很有创意。有创意就要付出行动。一起学习吧!
  首先设计两幅心形图案,
  
  实“心”图案一
  
  实“心”图案二
  如果在程序中设计上1秒中显示图案一,下1秒显示图案二,不停循环显示,是不是看到的就是一颗跳动的心呢?
  
  电路参照图
  1.程序设计
  #include 《reg52.h》//头文件
  #defi ne uchar unsigned char
  #defi ne 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;//装入初值,50ms
  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是实心跳动的心。

更多回帖

发帖
×
20
完善资料,
赚取积分