花样流水灯课程设计.docx

上传人:b****6 文档编号:4815994 上传时间:2022-12-09 格式:DOCX 页数:10 大小:244.57KB
下载 相关 举报
花样流水灯课程设计.docx_第1页
第1页 / 共10页
花样流水灯课程设计.docx_第2页
第2页 / 共10页
花样流水灯课程设计.docx_第3页
第3页 / 共10页
花样流水灯课程设计.docx_第4页
第4页 / 共10页
花样流水灯课程设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

花样流水灯课程设计.docx

《花样流水灯课程设计.docx》由会员分享,可在线阅读,更多相关《花样流水灯课程设计.docx(10页珍藏版)》请在冰豆网上搜索。

花样流水灯课程设计.docx

花样流水灯课程设计

课程论文之有琴礁磷创作

花样流水灯的设计

课程

单片机技术及系统设计

学生姓名

学号

所在学院

所在班级

任课教师

提交时间

2014年5月25日至2014年5月30日

一.前言

1.1设计概述………….......................................................................

(2)

设计主要功能………………………………………………………………………………

(2)

二.设计过程

…………………………………………………(3)

…………………………………………………(5)

三体会

…………………………………………………………………………….(5)

四.文献

4.1参考文献………………………………………………………………………………….(6)

五.附录

…………………………………………………………………………….(7)

…………………………………………………………………………………(7)

摘要:

当今时代是一个新技术层见叠出的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

关键词:

单片机控制系统流水灯

一.前言

1.1设计概述

整个系统工作由软件程序控制运行,根据需要,可以上电后系统经过初始化,进入用户设定模式状态。

于AT89C51单片机的彩灯控制方案,实现对LED灯的控制。

本方案以AT89C52单片机作为主控核心,与驱动等模块组成核心主控制模块。

在主控模块上设有晶振电路和8个LED灯,根据需要编写若干种亮灯模式,根据各种亮灯时间的分歧需要,在分歧时刻输出灯亮或灯灭的控制信号

设计主要功能

通过发光二极管显示分歧的花样,而且可以通过按键来控制流水灯的速度通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过P3口的俩管脚P3.2和P3.3第二功能,即外部中断来使CPU响应,达到控制流水灯的目的

二.设计过程

2.1.1时钟电路单片机内部具有一个高增益反相放大器,用于构成振荡器。

通常在引脚XTALl和XTAL2跨接石英晶体和两个抵偿电容构成自激振荡器,结构图2中X1、C1、C2。

可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,抵偿电容通常选择30nF左右的瓷片电容

2.1.2复位电路单片机小系统常采取上电自动复位和手动按键复位两种方式实现系统的复位操纵。

上电复位要求接通电源后,自动实现复位操纵。

手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操纵使单片机复位。

其结构如下图。

上电自动复位通过电容C3充电来实现。

手动按键复位是通过按键将电阻R9与VCC接通来实现。

2.1.3外部中断0和外部中断1电路

通过外部的输入信号来实现流水灯的速度的加速和减速。

2.1.48个LED灯的结构

2.2.1系统软件的组成

(1)键盘扫描程序:

检测是否有按键按下,有按键按下则记录按下键的键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。

(2)功能转移程序:

对检测到的按键值进行判断,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即加速功能和减速的功能。

2.2.2通过外部中断程序实现速度的调整,由复位口实现电路的原来的速度。

三体会

通过这次课程设计我学到了很多东西,我更加体会到理论知识与动手能力相结合的重要性,而且设计过程中使我懂得在设计程序之前,务需要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源:

懂得设计的关键是要有一个清晰的思路和一个完整的软件流程图。

在设计程序时,不克不及妄想一次就将整个程序设计好,“反复修改,不竭改进”是程序设计的必经之路。

要养成注释程序的好习惯,一个程序的完美与否不但仅是实现功能,而应该让人一看就能明白你思路,这样也为资料的保管和交流提供了方便。

整个设计的过程中,还是碰到了一些问题。

比方,对于键盘的延时防抖问题不克不及较好的解决;设计中我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,在动手的过程中,不但能增强实践能力,而且在理论上可以有更深的认识

当今社会,由单片机芯片控制各种硬件工作的技术日益成熟,并普及在交通、化工、机械等各个领域。

而流水灯这项技术在生活中应用更为广泛,较为贴近生活。

以前在路上夜景中经罕见到各种流水灯,感觉很漂亮,通过此次编程以后才知道了原理,让我有一种学以致用的成就感!

很开心!

流水灯控制的设计所需要的知识不但吻合了我们本学期对于单片机这门课程的学习,而且对于我们以前所学习的如数码管显示、LEG灯等知识也是一次很好地运用,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。

总的来说,这次设计获益良多。

四.文献

【1】周美娟肖来胜单片机技术及系统设计编著清华大学出版社出版

【2】单片机实验指导书广东海洋大学

五.附录

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharj,k;

voiddelay(intms)

{uchari;

while(ms--)

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

}

ucharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,

0xff,0xe7,0xc3,0x81,0x00,0x7e,0x3c,0x18,

0x00,};

voidEXINTinit()

{

EA=1;EX0=1;EX1=1;IT0=1;IT1=1;

}

voidmain()

{

EXINTinit();P0=0xfe;

while

(1)

{

switch(k)

{

case0:

{

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

{

if(k!

=0)break;

P0=tab[j];

delay(300);

}

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

{

if(k!

=0)

break;

P0=tab[j+16];

delay(300);

}

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

{

if(k!

=0)

break;

P0=tab[j+32];

delay(300);

}

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

{

if(k!

=0)

break;

P0=0x00;

delay(300);

}

for(j=8;j>0;j--)

{

if(k!

=0)

break;

P0=0x55;

delay(300);

P0=0xaa;

delay(300);

}

}break;

case1:

{

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

{

if(k!

=1)

break;

P0=tab[j];

delay(100);

}

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

{

if(k!

=1)

break;

P0=tab[j+16];

delay(100);

}

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

{

if(k!

=1)

break;

P0=tab[j+32];

delay(100);

}

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

{

if(k!

=1)

break;

P0=0x00;

delay(100);

}

for(j=8;j>0;j--)

{

if(k!

=1)

break;

P0=0x55;

delay(300);

P0=0xaa;

delay(100);

}

};break;

case2:

{

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

{

if(k!

=2)

break;

P0=tab[j];

delay(600);

}

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

{

if(k!

=2)

break;

P0=tab[j+16];

delay(600);

}

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

{

if(k!

=2)

break;

P0=tab[j+32];

delay(600);

}

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

{

if(k!

=2)

break;

P0=0x00;

delay(600);

}

for(j=8;j>0;j--)

{

if(k!

=2)

break;

P0=0x55;

delay(600);

P0=0xaa;

delay(600);

}

};break;

default:

break;

}

}

}

voidEX0INT()interrupt0

{

k=1;

}

voidEX1INT()interrupt2

{k=2;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1