用单片机设计一个东西的步骤 (用单片机做出一个产品)

跳动的心

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是实心跳动的心。