电子喷泉的设计说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计题目:电子喷泉的设计

设计者: 学号:

专业班级:电气工程及其自动化061班指导老师:

完成时间: 2009年6月25日

目录

一、预备知识 (1)

二、课程设计题目 (1)

三、课程设计的目的及基本的要求 (1)

四、设计容提要及说明 (2)

五、原理图及元件清单 (3)

六、单片机各引脚定义 (4)

七、系统程序流程图 (5)

八、电子喷泉设计的系统源程序 (6)

九、课程设计心得体会 (9)

十、参考文献 (11)

一、预备知识

1.1 51单片机原理

(1)51单片机的I/O口的使用原理和设置

(2)51单片机的定时器的设置

1.2 发光二极管及数码管的认识和使用

1.3 按键的判断和使用

1.4 51单片机开发环境的熟悉和使用

1.5 对于共阴/共阳数码管及发光二极管等器件的熟练使用

二、课程设计题目:电子喷泉的设计

三、课程设计的目的及基本的要求

单片机已经广泛的应用于人们的日常生活中,在各个领域中起到越来越重要的作用。因此,掌握单片机的基本功能是非常重要的技能。进行课程设计是加强实践,提高动手能力的重要环节,是将所学理论知识与实际联系起来的桥梁和纽带。通过课程设计:同时在软件编程、排错调试、焊接技术及相关仪器设备的使用等各个方面得到全面的提高。掌握单片机开发过程,为将来的实际工作打下一定得基础。

本课程设计以菲利普P89V51RB2单片机为基础,基本要求如下:

1、熟悉单片机的基本机构;

2、掌握共阴/共阳数码管及发光二极管的工作原理及使用方法;

3、掌握按键的判断及使用;

4、掌握菲利普P89V51RB2单片机的使用方法;

5、掌握单片机C 语言一般的编程技巧;

6、掌握单片机系统调试的一般步骤及方法;

7、熟悉掌握电路板的焊接及排错;

8、掌握程序的下载及调试。

四、设计容提要及说明

4.1 设计容

本次设计的题目要求基本容如下:

(1)按键K1:电子灯显示方式选择,每按一次,选择一种显示方式;

(2)按键K2:控制电子灯启动,停止;

(3)电子灯显示方式至少四种;方式选择在电子灯停止方式下有效。

4.2 设计说明

4.2.1 系统设计

根据设计题目的要求分析,系统分成四大部分:

(1)单片机的控制部分;

(2)电子喷泉控制部分;

(3)按键控制部分;

(4)显示控制部分;

其框图见图1:

图1 系统设计框图

五、原理图及元件清单

图2 电子喷泉原理

元件清单:

六、单片机各引脚定义

单片机控制部分采用菲利普P89V51RB2,两个按键的用途如下:

七、系统程序流程图

本设计程序流程:程序开始,发光二极管处于熄灭状态;当启动时,共阳级数码管显示“1”,程序首先进行显示方式选择;停止时,在复位前,数码管显示停留在最后那个状态。2个按键中,其中K2按键控制电子喷泉的二极管的启动/停止;K1按键控制电子喷泉的发光二极管的显示方式的转换。

主程序流程图如下:

接通电源,当按下K2时,电子喷泉开始显示第一种显示方式;按下K2键久一点让电子喷泉停止;再按下K1键,程序判断电子喷泉停止,显示方式进行切换;如此反复。

图3 主程序流程图

八、电子喷泉设计的系统源程序

/*功能拓展数码管显示(共阳)模式号利用P2口*/

#include "at89x51.h"

#include "intrins.h"

void xianshi();

void xueze();

sbit sp1 = P0^0; /*停止与启动 0启动 1停止*/

sbit sp2 = P0^1; /*模式选择 */

int mos = 1; /*模式寄存*/

int a,b; /*消抖变量*/

int qt=1; /*起停标志*/

int zy=0; /*左右或奇偶标志*/

int tm = 0xfe;

int L4=0;

int led[] = {0XC0,0XF9,0XA4,0XB0,0X99,

0X92,0X82,0XF8,0X80,0X90}; /*数码管编码*/ int K4[] = {0x7e,0xbd,0xdb,0xe7,0xdb,0xbd};

/*延时子程序 */

void delay()

{

int i, j, k;

for (i = 0; i < 20; i++)

{

for (j = 0; j < 20; j++)

{

for (k = 0; k < 148; k++);

}

}

}

/*主程序*/

void main()

{

P2=led[1];

while (1)

{

if(sp1 == 0)

{

for(a=5;a>0;a--)

for(b=248;b>0;b--); /*消抖*/

if (sp1 == 0)

{

qt = ~qt;

}

while(!sp1);

}

if(qt == 1)

{

xueze();

}

else

{

xianshi();

}

}

}

void xianshi()

{

switch (mos)

{

case 1: /*单一的左移*/

{

P1 = tm ;

delay();

tm = _crol_(tm,1);

break;

}

case 2: /*闪烁*/

{

P1 = 0X00;

delay();

P1 = 0XFF;

delay();

P1 = 0X00;

delay();

P1 = 0XFF;

delay();

break;

}

case 3: /*隔一个(奇偶)循环*/

{

P1 = tm ;

delay();

tm = _crol_(tm,2);

相关文档
最新文档