基于51单片机的花样心形型流水灯proteus仿真

本文介绍了如何使用51单片机设计一个花样心形型流水灯,并通过proteus软件进行仿真。硬件部分包括51单片机和LED组成的电路,程序设计部分未详细展开,提供了一个链接供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件仅供参考:

链接:https://pan.baidu.com/s/14rN-I12wxD0tKT9pHYeoNQ
提取码:2l80

硬件设计

仿真图如下:
基于51单片机,多个LED组成的硬件电路
在这里插入图片描述

程序设计

#include<reg52.h> 
#define uchar unsigned char
uchar flag=200;
///
uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移  向下
uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移  向上
uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移	 向下
uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移  向上
uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移  向下
uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff};

uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff};
uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};
uchar code Tab6[]={0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xff};
uchar code Tab7[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar code Tab8[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void shansuo();
void xl();
///
void delay(void)   
{
   unsigned char m,n;
	 for(m=0;m<flag;m++)
	  for(n=0;n<250;n++)	   
           ;
 }
///
 void hy1(void)  //点亮状态逆时针旋转90度(一个一个灭)
{
  unsigned char i;
  for(i=0;i<8;i++) 
    {
		P0=Tab11[i];P1=Tab22[i];
 	   P2=Tab11[i];P3=Tab22[i];
 		delay();
	 }
  for(i=0;i<8;i++) 
    {
		P0=Tab44[i];P1=Tab55[i];
 	   P2=Tab44[i];P3=Tab55[i];
 		delay();
	 }
}
///
 void hy2(void)  //暗中逆时针转360。(一个一个点亮)
{
  unsigned char i;
 for(flag=250;flag>0;flag=flag-50)
  {
	P0=0xff;P1=0xff;P2=0xff;P3=0xff;
	for(i=0;i<8;i++) 
    {
		P0=Tab11[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P2=Tab11[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
		P3=Tab22[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P1=Tab22[i];
		delay();
	 }
	}
flag=250;
}

 void hy3(void)  //点亮中逆时针转360°(一个一个灭)
{
  unsigned char i;
		flag=50;
		P0=0x00;P1=0x00;P2=0x00;P3=0x00;
  for(i=0;i<8;i++) 
    {
		P0=Tab44[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P2=Tab44[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
		P3=Tab33[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P1=Tab33[i];
		delay();
	 }
    flag=150;
}
///
 void hy4(void)  //点亮状态顺时针旋转90度(一个一个灭)
{
  unsigned char i;
  for(i=0;i<8;i++) 
    {
		P1=Tab11[i];P0=Tab22[i];
 	   P3=Tab11[i];P2=Tab22[i];
 		delay();
	 }
  for(i=0;i<9;i++) 
    {
		P1=Tab6[i];P0=Tab5[i];
 	   P3=Tab6[i];P2=Tab5[i];
 		delay();
	 }
}
/
 void hy2_1(void)  //暗中逆时针转90度。(一个一个点亮)
{
  unsigned char i;
		flag=200;
		P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  for(i=0;i<9;i++) 
    {
		P0=Tab11[i];
		delay();
	 }
		flag=110;
  for(i=0;i<9;i++) 
    {
 	   P2=Tab11[i];
		delay();
	 }
		flag=80;
  for(i=0;i<9;i++) 
    {
		P3=Tab22[i];
		delay();
	 }
		flag=80;
  for(i=0;i<9;i++) 
    {
 	   P1=Tab22[i];
		delay();
	 }
}

 void hy2_2(void)  //暗中逆时针转180度。(一个一个点亮)
{
  unsigned char i;
		P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  for(i=0;i<8;i++) 
    {
		P0=Tab11[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P2=Tab11[i];
		delay();
	 }
		P0=0xff;P2=0xff;
  for(i=0;i<8;i++) 
    {
		P3=Tab22[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P1=Tab22[i];
		delay();
	 }
		P1=0xff;P3=0xff;
}
///
 void hy2_3(void)  //暗中向下180。(一个一个点亮)
{
  unsigned char i;
		P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  for(i=0;i<8;i++) 
    {
		P0=Tab11[i];
 	   P1=Tab11[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P2=Tab11[i];
		P3=Tab11[i];
		delay();
	 }
///
    flag=100;
  for(i=0;i<8;i++) 
    {
		P2=Tab33[i];
 	   P3=Tab33[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P0=Tab33[i];
		P1=Tab33[i];
		delay();
    flag=200;
	 }
}
///
 void hy2_4(void)  //暗中逆时针转360。(一个一个点亮)
{
  unsigned char i;
		P0=0xff;P1=0xff;P2=0xff;P3=0xff;
  for(i=0;i<8;i++) 
    {
		P0=Tab11[i];
		P3=Tab22[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P2=Tab11[i];
		P1=Tab22[i];
		delay();
	 }
///
    flag=100;
for(i=0;i<8;i++) 
    {
		P0=Tab44[i];
		P3=Tab5[i];
		delay();
	 }
  for(i=0;i<8;i++) 
    {
 	   P2=Tab44[i];
		P1=Tab5[i];
		delay();
	 }
    flag=200;
}

.

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值