基于51单片机的心形流水灯

心形流水灯套件

1  设计目的

(1)掌握单片机芯片AT89C51的基本功能和使用。

(2)熟悉Proteus仿真软件的使用,了解各元件的功能及作用。

(3)了解音乐的基本知识。

(4)提高数字电子电路的综合应用能力。

(5)掌握Keil软件的使用方法,以及如何创建文件和编写程序。

(6)提高焊接能力以及实际问题分析能力。

2 设计思路

(1)设计一个用单片机控制的心形流水灯系统;

(2)LED灯数量为32个;

(3)将仪器焊接到电路板上;

(4)可以实现循环点亮,依次熄灭的基本功能;

(5)可以实现对角闪亮,间隔闪亮,顺时针闪亮,逆时针闪亮,同时闪亮等多种功能。

3方案论证

1、单片机芯片的比较与选择

单片机作为该电路的主要控制器芯片,即整个系统的控制核心部分,主要是负责控制LED灯的不同变化速度以及变化效果。因此对单片机芯片的选择,必须要求其功耗低、数据转换速率快。

方案一:采用STC89C51单片机。40个引脚,8k Bytes Flash片内程序存储器, 256 bytes的随机存取数据存储器(RAM), 32个外部双向输入/输出(I/O)口, 5个中断优先级2层中断嵌套中断, 2个16位可编程定时计数器, 2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

方案二:选择TI公司生产的MSP430F149系列单片机系统。此款单片机具有低电压、超低功耗的特点,工作电压在3.6-1.8V之间,具有强大的功能和高效的运算处理能力。

方案选择:由于STC89C51芯片价格便宜,支持在线下载程序而且MSP430F149系列单片机的功能已经远远高于我们本系统,操作不便。

综合考虑,我们选择方案一。

4 设计过程

4.1硬件设计

单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。电子琴是现代电子技术与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。

本设计是以AT89C51单片机为核心控制元件,把51单片机的4个I/O口与32个5mm高亮LED灯相接,通过单片机控制各I/O引脚的高低电平控制LED的亮灭从而形

成各种不同亮灭的花样。

(1)单片机控制模块

硬件电路要以单片机作为主芯片,针对本设计的功能和用途,采用AT89S51单片机更好,实现功能完全,性价比较高,更适合本设计。具体电路如图2所示。

 

(2)74HC245

 

5电路仿真与结果分析

5.1电路原理图

                        

5.2 心形流水灯测试图

                                      

5.2 电路仿真图

 

 

5.3结果分析

根据仿真结果可知,本次课程设计能够准确并彻底的完成设计要求,完成了心形流水灯的设计,实现了LED灯的循环点亮、依次熄灭等基本功能,并且还实现了对角闪亮、间隔闪亮、顺时针闪亮,逆时针闪亮等多种功能。

6设计体会

这次课程设计我们换过几种方案,我们刚开始是选择完全的数字电路来实现,但我们做好仿真时,发现一个问题,频率不能很好的把握,指导老师说这在实物中更难把握,建议我们用单片机来实现,尽管我们现在还没有学习单片机的相关知识,但在老师的指导下,我们查阅相关的资料,进行相关的学习,最终我们实现了设计的要求,并且还新增了一些功能,同时还解决了第一次关于频率的问题,总体来说,此次课程设计使我们收获良多,虽然课程设计的过程中遇到了很多困难与问题,但我们最终还是完成了设计的任务及要求。具体来说可以分为以下几点:第一,不够细心,不够严谨;第二,因对课本理论的掌握度不够导致编程出现错误;第三,硬件方面,刚开始有的程序模块不能实现预期的效果,对于有的硬件,在实物制作过程中焊了比较多的排线,同时对于整体各元器件的布局都有很高的要求。不过在向同学请教,各方面都有了不同程度的改善;第四,在做人方面,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力和决心,有足够的挑战困难的勇气,就没有什么办不到的。这次课程设计中我们完成了基本任务,使我们有了一定的成就感,也使我们进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤, 初步掌握了单片机仿真软件Proteus的使用方法和键盘,同时也掌握了撰写课程设计报告的方法。总之,通过这次课程设计,我们都清楚明白了自己的能力有多深,想提高还得归于多锻炼,多动手,多向别人学习。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附件

实物图

完整程序:

 #include<reg51.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar code table0[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//P0-P7依次点亮

uchar code table1[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//P0-P7依次熄灭

uchar code table2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//P7-P7依次点亮

uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//P7-P7依次熄灭

uchar temp,aa,bb,temp,temp1;

void delay(uint z);

void h();

void hh();

void hhh();

void hhhh();

void init();

void main()//主函数

{

 init();

    while(520)//大循环

 {

  h();

  hh();

  hhh();

  hhhh();

 }

}

void delay(uint z)//延时函数

{

 uint x,y;

 for(x=z;x>0;x--)

  for(y=110;y>0;y--);

}

void h()

{

 for(aa=0;aa<3;aa++)

 {

  for(bb=0;bb<8;bb++)

  {

   P0=table0[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P1=table0[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P3=table0[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P2=table0[bb];

   delay(50);

  }

  delay(500);

  for(bb=0;bb<8;bb++)

  {

   P0=table1[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P1=table1[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P3=table1[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P2=table1[bb];

   delay(50);

  }

 }

 for(aa=0;aa<3;aa++)

 {

  for(bb=0;bb<8;bb++)

  {

   P2=table2[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P3=table2[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P1=table2[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P0=table2[bb];

   delay(50);

  }

  delay(500);

  for(bb=0;bb<8;bb++)

  {

   P2=table3[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P3=table3[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P1=table3[bb];

   delay(50);

  }

  for(bb=0;bb<8;bb++)

  {

   P0=table3[bb];

   delay(50);

  }

 }

}

void hh()

{

 for(bb=0;bb<3;bb++)

 {

  for(aa=0;aa<8;aa++)

  {

   P0=table0[aa];

   P2=table2[aa];

   delay(100);

  }

  for(aa=0;aa<8;aa++)

  {

   P3=table2[aa];

   P1=table0[aa];

   delay(100);

  }

  for(aa=0;aa<8;aa++)

  {

   P2=table3[aa];

   P0=table1[aa];

   delay(100);

  }

  for(aa=0;aa<8;aa++)

  {

   P1=table1[aa];

   P3=table3[aa];

   delay(100);

  }

 }

}

void init()

{

 P1=P2=P3=P0=0x00;

 delay(1000);

 P1=P2=P3=P0=0xff;

 delay(200);

 temp=0xfe;

 temp1=0x7f;

}

void hhh()

{

 for(bb=0;bb<10;bb++)

 {

  for(aa=0;aa<8;aa++)

  {

   P0=temp;

   temp=_crol_(temp,1);

   delay(40);

  }

  P0=0xff;

  for(aa=0;aa<8;aa++)

  {

   P1=temp;

   temp=_crol_(temp,1);

   delay(40);

  }

  P1=0xff;

  for(aa=0;aa<8;aa++)

  {

   P3=temp;

   temp=_crol_(temp,1);

   delay(40);

  }

  P3=0xff;

  for(aa=0;aa<8;aa++)

  {

   P2=temp;

   temp=_crol_(temp,1);

   delay(40);

  }

  P2=0xff;

 } 

}

void hhhh()

{

 for(aa=0;aa<30;aa++)

 {

  P0=P1=0x00;

  delay(100);

  P1=P0=0xff;

  P2=P3=0x00;

  delay(100);

  P2=P3=0xff;

 }

}

  • 11
    点赞
  • 7
    评论
  • 94
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;">期末</span><span style="font-size:14px;background-color:#fbeeb8;">考点</span><span style="font-size:14px;">都对应</span><span style="font-size:14px;background-color:#fbeeb8;">详解视频</span><span style="font-size:14px;">,</span><span style="font-size:14px;"><span style="color:#e03e2d;">基础阶段</span></span><span style="font-size:14px;">内容全面,语言通俗易懂(翻译书中的语言为</span><span style="font-size:14px;background-color:#fbeeb8;">人话)</span><span style="font-size:14px;">,</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;">老师精心研究</span><span style="font-size:14px;background-color:#fbeeb8;">百份</span><span style="font-size:14px;">考卷,总结每一个考点,同时结合你肯定可以听懂的骚话,</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;background-color:#fbeeb8;">扫清你的数据库系统盲区</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;"><span style="color:#e03e2d;">真题阶段</span></span><span style="font-size:14px;">为你提供</span><span style="font-size:14px;background-color:#fbeeb8;">解题思路</span><span style="font-size:14px;">,培养你的</span><span style="font-size:14px;background-color:#fbeeb8;">解题思维</span><span style="font-size:14px;">,同时</span><span style="font-size:14px;background-color:#fbeeb8;">点明考点</span><span style="font-size:14px;">,结合文档进行重点解读,加深你的印象.</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;color:#3598db;">只为你的高分,我们交个朋友!让每位学生都可以学的起!!</span> </h4> <p> <span style="font-size:14px;color:#3598db;"><img src="https://img-bss.csdnimg.cn/202103040423318088.png" alt="" width="788" height="450" /></span> </p>
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值