心形流水灯设计报告-_第1页
心形流水灯设计报告-_第2页
心形流水灯设计报告-_第3页
心形流水灯设计报告-_第4页
心形流水灯设计报告-_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、山东英才学院51单片机课程设计心形流水灯学 院信息工程学院专业班级本科电子信息工程学生姓名指导教师2019年04月02日设计要求:o 设计一个用单片机控制的心形流水灯系统;o LED灯数量为32个;o 可以实现循环点亮、依次熄灭的基本功能;o 可以实现对角闪亮、间隔闪亮、顺时针闪亮、逆时针闪亮等多种功能(也可自行增加功能)。学生需要完成的任务:完成心形流水灯电路设计,利用Keil软件编写程序,Proteus软件进行电路功能仿真,并将仿真结果采用录屏形式生成视频,视频类型建议用.mp4格式,大小不超过200M。目录目录3一、总体方案设计- 1 -1、单片机的选择- 1 -2、LED灯控制方式的比

2、较与选择- 1 -3、硬件设计- 1 -二、电路原理图设计- 2 -1、时钟电路- 2 -2、复位电路- 2 -3、显示电路- 3 -4、电源电路- 4 -三、程序设计- 6 -1、Keil 软件介绍- 6 -2、程序编写设计- 6 -3、程序调试- 7 -4、电路功能仿真- 8 -附件:- 10 -1、程序代码:- 10 -2、小组成员任务分配表- 16 -一、总体方案设计1、单片机的选择单片机作为该电路的主要控制器芯片,是整个系统核心部分,主要负责控制LED灯的亮灭变化的速度以及变化效果。89c51单片机共有32个I/O口,能够满足32个流水灯的设计需求;另外80c51具有4k字节的FLA

3、SH闪存和128字节的RAM,编写的程序很小,非常能够满足设计的需求;除此之外,89c51单片机还具有灵活性高且廉价的特点,综合考虑,选择89c51芯片作为设计的方案。2、LED灯控制方式的比较与选择 方案一:采用位操作的方式对32个i/o口进行操作方案二:采用总线的方式对32个i/o口进行操作由于采用位操作的方式,还需要声明32个i/o口,另外在写程序的时候语句较多,过程繁琐;而采用总线操作的方式,则不需要声明i/o口,与位操作相比,采用总线的方式在程序编写时能用很少的语句实现相同的功能效果;所以,选择方案二,即采用总线操作的方式对32个i/o口操作。3、硬件设计时钟电路复位电路AT89C5

4、1显示电路图1-3.1电 源心形流水灯设计所需的系统应该具有:由32个发光二极管组成的显示电路、由晶振和电容组成的时钟电路、电源、复位电路即软件部分。心形流水灯的硬件设计框图如图1-3.1所示- 16 -二、电路原理图设计1、时钟电路单片机内有一个由反相放大器所构成的振荡电路, XTAL1 和 XTAL2 分别为振荡电路的输入端和输出端。 在 XTAL1 和 XTAL2 引脚上外接石英晶体和微调电容构成并联振荡回路。晶振频率设置为 11.0592MHZ, 作用是产生时钟信号。 单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率纸上。

5、电容值为 30pF, 可以起到频率微调作用。时钟电路如图2-1.1所示:图2-1.12、复位电路图2-2.1当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始值操作,复位后程序计数器PC=0000H,即复位后将从程序储存器的0000H单元读取第一条指令码,通俗的讲,就是单片机重新开始命令,防止程序走偏。复位电路如图2-2.1所示:3、显示电路单片机的 P0 口为 8 位的漏极开路的双向 I/O 口,当 P0口作为普通的 I/O 口使用时,需要上拉电阻,这时为准双向口。 P1 、P2、 P3 都为 8 位的准双向口,具有内部上拉电阻。图 6 为显示电路,单片机 I/O 口一对一直

6、接控制 LED 灯,显示电路中的 32 个电阻既为上拉电阻,也起到电路分压作用,防止烧坏元器件。显示电路如图2-3.1所示图2-3.14、电源电路图2-4.1本次课程设计,单片机正常工作要求输出电压为稳定的 5V,输出电压能够适应所带负载的启动项能。并且电路还必须简单可靠,能够输出足够大的电流,但是不至于会烧坏元器件。我们采用 USB 取电,4.8V 锂电池供电。电源电路如图所示, 两个电阻起到滤波作用, 两个电阻的作用是平衡电路中的电流,以免在只有 1 个 LED 灯亮时烧坏元器件。电源电路如图2-4.1所示。 32心形流水灯原理图三、程序设计1、Keil 软件介绍本次课程设计,我们采用Ke

7、il软件进行C语言编程。Keil软件是美国Keil Software公司开发的,它适合 WindowsXP、Win7 等系统,具有可视化操作界面,使用方便简单,并且支持 C51 语言、汇编语言以及两者混合编程等多种方式的单片机设计,KeilC51 在兼容标准 C 语言的基础上,又增加了很多与 51系列单片机硬件相关的编译特性,其生成的程序代码运行的速度快,所需的存储器空间小。Keil 软件已被完全集成到一个功能强大的全新环境中,该开发环境集成了文件编译处理、编译链接、项目管理、工具引用、和仿真软件模拟器等多种功能。 Keil 软件具有丰富的库函数,同时也带有功能强大的集成开发调试工具,可以自动

8、识别所编写程序的语法错误,编译效率也很高, 能将源文件编译为二进制机器语言代码,其软件调试仿真功能也很强大,能通过单步、设置断点等功能让编程者了解 CPU 正在进行的程序,并能监控各变量以及各寄存器是否符合编程者的要求。2、程序编写设计单片机的应用系统由硬件和软件组成,在硬件原理图搭建完成上电之后,暂时还不能看到流水灯循环点亮的现象,还需要编写程序控制单片机管脚电平的高低变化,来实现 LED 灯的各种亮灭功能。其程序流程图3-2.1如图所示:例如,先将 P0、P1、P2、P3 全部置 1,即通入高电平,用 16 进制表示为 0XFF,则 32个 LED 灯全部处于熄灭状态。然后给 P0 口赋值

9、 0X7F,即只有 P0.0 处于低电平时,LED1 灯点亮。使用延时函数 delay,并设置延时时间为0.2秒,延时时间一到 P0 口的值就变为 0X3F, 即 P0.0和 P0.1都为高电平, LED2 也开始点亮,如此循环 P0口控制的8 个 LED 灯全部点亮,当高电平变为低电平时, LED 灯熄灭。P1、P2、P3 口控制的 LED灯闪亮和熄灭原理同 P0 口一样,所以就可以看到 LED 灯的流水效果了。图3-2.1程序设计流程图3、程序调试在程序编写好了之后,需要连接工程并编译,经过反复的检查、编译、调试,程序没有错误后,最后获得目标代码 Hex文件。将程序代码文件调入 Prote

10、us软件,进行电路功能仿真,并根据仿真结果进行程序的修改和完善。所以程序的调试就显得至关重要。其中,将每个闪烁的部分都写成一个子函数,直接在主函数中调用即可实现闪烁的花样和效果,各子函数与主函数的结构框图如图3-3.1所示:4、电路功能仿真在各部分电路设计的基础上,按照总体电路图在 Proteus上一一进行器件选择,并连接。将电路连接好后,为各个器件选择合适的参数,然后调入已编译好的目标代码Hex 文件,启动仿真。根据 LED 灯是否发亮,判断所设计的电路是否可以实现 32 个 LED灯依次点亮、依次熄灭、对角闪亮、对角熄灭、间隔闪亮、间隔熄灭等多种功能。电路仿真的结果为 32 个 LED 灯

11、依次发亮、依次熄灭,并可以实现多种亮灭功能。仿真电路图附件:1、程序代码:#include#include /库函数#define uint unsigned int#define uchar unsigned char/宏定义void delay(uint xms)/延时函数uint i,j;for(i=xms;i0;i-)for(j=110;j0;j-);void zys(uint t)/左右闪烁while(t-)P3=P2=0x00;delay(500);P3=P2=0xff;P1=P0=0x00;delay(500);P1=P0=0xff;void qs(uint t)/全部闪亮whi

12、le(t-)P0=P1=P2=P3=0xff;delay(300);P0=P1=P2=P3=0x00;delay(300);P1=P2=P3=P0=0xff;void ycdl(uint t)/依次点亮uchar code table=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00;uint i;while(t-)for(i=0;i8;i+)P0=tablei;delay(200);for(i=0;i8;i+)P1=tablei;delay(200);for(i=0;i8;i+)P2=tablei;delay(200);for(i=0;i8;i+)P3=tabl

13、ei;delay(200);void ycxm (uint t)/依次熄灭uchar code table=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00;uint i;while(t-)P0=P1=P2=P3=0x00;for(i=0;i8;i+)P0=tablei;delay(200);for(i=0;i8;i+)P1=tablei;delay(200);for(i=0;i8;i+)P2=tablei;delay(200);for(i=0;i8;i+)P3=tablei;delay(200);void jgs(uint t)/间隔闪烁while(t-)P0=

14、P1=P2=P3=0xaa;delay(500);P0=P1=P2=P3=0xaa;delay(500);P0=P1=P2=P3=0xff;delay(200);void sszs(uint t)/顺时针闪烁uchar a,i;while(t-)a=0xfe;for(i=0;i8;i+)P0=a;delay(200);a=_crol_(a,1);P0=0xff;a=0xfe;for(i=0;i8;i+)P1=a;delay(200);a=_crol_(a,1);P1=0xff;a=0xfe;for(i=0;i8;i+)P2=a;delay(200);a=_crol_(a,1);P2=0xff;

15、a=0xfe;for(i=0;i8;i+)P3=a;delay(200);a=_crol_(a,1);P3=0xff;void nszs(uint t)/逆时针闪烁uchar a,i;while(t-)a=0x7f;for(i=0;i8;i+)P3=a;delay(200);a=_cror_(a,1);P3=0xff;a=0x7f;for(i=0;i8;i+)P2=a;delay(200);a=_cror_(a,1);P2=0xff;a=0x7f;for(i=0;i8;i+)P1=a;delay(200);a=_cror_(a,1);P1=0xff;a=0x7f;for(i=0;i8;i+)P

16、0=a;delay(200);a=_cror_(a,1);P0=0xff;void djs1(uint t)/对角闪烁2个顺时针uchar i;uchar code table=0xf0,0xe1,0xc3,0x87,0x0f,0x1f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe1,0xc3,0x87,0x0f,0x1f,0x3f,0x7f,0xff;while(t-)for(i=0;i17;i+)P0=P2=tablei;P1=P

17、3=tablei+17;delay(200);for(i=0;i17;i+)P1=P3=tablei+17;P0=P2=tablei;delay(200);delay(300);P0=P1=P2=P3=0xff;void djs2(uint t)/对角闪4个逆时针uchar i;uchar code table=0x0f,0x87,0xc3,0xe1,0xf0,0x78,0x3c,0x1e,0x0f;while(t-)for(i=0;i9;i+)P1=P2=P3=P0=tablei;delay(200);void sxhx(uint t)/从上往下画心uchar code table=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;uint i;while(t-)for(i=0;i8;i+)P0=tablei;P3=tablei+8;delay(200);for(i=0;i8;i+)P1=tablei;P2=tablei+8;delay(200);P1=P2=P3=P0=0xff;delay(300);void main()while(1)ycdl(1);ycxm(1);jgs(3);sszs(1);nszs(1);djs1(1);djs2(3);zys(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论