单片机控制led灯广告屏课程设计

洛阳理工学院机械设计周实验报告

Z090355第二组:组长:薛栋栋(Z09035520)

组员:冯海洋(Z09035515) 张永垒(Z09035513) 卢长泉(Z09035541) 王璐(Z09035506) 崔志伦(Z09035504)

目录

中文摘要............................................................................2

英文摘要............................................................................2

绪论...................................................................................3

第一章 设计思路.目的和方案的确定..............................4

1.1设计思路.....................................................................4

1.2设计目的.....................................................................5

1.3方案的确定..................................................................5

第二章 主要元器件介绍..................................................6

2.1 STC89C55................................................................6

2.2发光二极管.................................................................6

第三章 电路图.程序框图................................................6

第四章 电路分析及原理..................................................6

4.1电路分析......................................................................9

4.2电路原理......................................................................9

结 论..............................................................................10

参考文献.........................................................................10

附录: C语言程序.............................................................11 1

中文摘要

随着改革的不断深入,社会主义市场经济的不断繁荣和发展,个大中小城市都在进行亮化工程。个人企业为宣传自己企业的形象和产品,均采用广告手法之一:流水灯来实现这一目的.当我们夜晚走在大街上,马路两旁各色各样的流水灯广告均可以见到,一种是采用霓虹灯管做成的各种形状和多种彩色的灯管,另一种为日光等管或白炽灯管作为光源,另配大型广告语或宣传画来达到宣传的效果。这些灯的亮灭,闪烁时间及流动方向等均可以通过单片机来达到控制的要求. (关键字: 广告灯、STC89C55RD+单片机、c程序设计)

English Abstract

With the deepening of reform, the socialist market economy, increasing prosperity and development of cities during the months Xinhuanet lighting project. Individual companies to promote their corporate image and products are one of advertising practices: water lights to achieve this purpose. When we walk in the streets at night, the road on both sides of a great variety of water can see the lights all advertising, a is made of neon tubes of various shapes and a variety of color tubes, and the other for sunlight, such as a pipe or tube as the incandescent light source, language or reprovision a large poster advertising to achieve the effect of publicity. Out of these bright lights, flashing all the time and the flow direction can be achieved through the single-chip control. (Keyword: Advertisement lamp STC89C55RD+Singlechip c Program Design)

2

绪 论

在现在诸多的娱乐场所、理发店、宾馆、饭店、公司等的门外,都可以看到各式各样的广告流水灯。所谓“广告流水灯”,就是将一系列的有颜色的广告灯串联接在一起,然后令这些灯按一定的次序逐个或者几个的一次点亮和熄灭。由于各灯点亮和熄灭,产生的效果就像流动的水一样,因此,就称这类广告灯为“广告流水灯”。生活中广告流水灯的形式和点亮的次序是多种多样的。有单一颜色的几个灯按固定的次序来点亮的,有多个不同颜色的灯构成某一图案依次点亮的,也有多排广告灯按多种组合好的次序循环点亮的等。我设计的广告流水灯,就是这些广告灯中的类型。

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。在大学学习期间,完成了前期的单片机基础知识学习以后,从大三开始将理论学习和实践相结合,逐步完成了一些系统的设计与制作。但以前在制作课件时只是学一点做一点,没有系统的总结经验。此次的论文撰写我认真对以前的单片机应用过程中的问题进行了回顾和总结,使自己的经验得到了理论上的升华,这些都将是自己今后进一步发展的宝贵财富。

为了实现用单片机对广告灯实现控制,我用单片机着手对广告灯进行编程,画出接线图、流程图和写出指令表再运行程序,然后根据实际情况对程序进行调试与完善。在这次的课程中,我发现单片机在工业控制中的作用很大,它能使人的控制转变成自动控制,大大地降低了产品的成本,很大地提高生产效率。

3

第一章 设计思路.目的和方案的确定

1.1设计思路

生活中广告流水灯的形式和点亮的次序是多种多样的。有单一颜色的几个灯按固定的次序来点亮的,有多个不同颜色的灯构成某一图案依次点亮的,也有多排广告灯按多种组合好的次序循环点亮的等。我的设计就是这些广告灯中的最基本类型。首先通过互联网看到有关流水灯的资料,然后看到一个电路图,用单片机的8个引脚(P1.0—P1.7)接8个发光二极管。如图1.1:

图 1.1

最后经过我们小组的集体考虑,我们决定将其稍微复杂点,利用32个发光二极管构成“发光风扇”使“发光风扇”出现顺时针旋转、逆时针旋转、闪烁三种状态。如图

单片机控制led灯广告屏课程设计

1.2

单片机控制led灯广告屏课程设计

4

1.2设计目的

(1)在学习了《单片机原理及应用》课程后,为了加深对理论知识的理解,学

习理论知识在实际中的运用,培养动手能力和解决实际问题的能力。进一步理解和消化书本知识,运用所学知识和技能进行简单的设计。

(2)熟悉Keil软件的调试和仿真。

(3)通过实验提高对单片机的认识。

(4)通过实验提高焊接、布局、电路检查能力。

(5)通过实验提高软件调试能力。

(6)进一步熟悉和掌握单片机的结构及工作原理。

(7)掌握在单片机系统中各个引脚的作用。

(8)掌握数据输出程序的设计方法。

(9)学习8051芯片及LED的使用。

(10)通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,

解电路参数 的计算方法。

(11)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

(12)通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片 机应用系统的全过程,为今后从事相应打下基础。

(13)通过课程设计提高应用能力,分析问题和解决问题的能力。

(14)培养查阅资料的习惯,训练和提高自学,独立思考的能力。

(15)能够正确理解课程设计的题目和意义,全面思考问题。

(16)运用科学合理的方法,认真按时完成。

1.3方案的确定

方案一:

X-Y记录仪,利用多个步进电机的正反转,再加以自制机械类产品(齿轮条、滑轮机构、传动机构等)的辅助,实现平面内运动效果。设计重点为步进电机的控制。

方案二:

遥控风扇设计,利用小电机,胶水、塑料板等物品,自制电机可以带动的风扇模型,再使用单片机红外控制,使风扇随着遥控器的控制,出现想要的旋转或停止状态。设计重点在于利用单片机的知识去遥控控制。

方案三:

流水灯设计,本设计以8051单片机为核心并用它来控制发光二极管双灯点亮 5

循环的实验装置,用8051单片机控制32个发光二极管发光,实现亮点以12HZ频率在高、低位循环移动。通过Keil软件、仿真,并能从中掌握通过软件控制发光二极管的思路和技巧。这次设计重点就在于利用单片机的知识去控制系统的运行。

根据我们小组成员的成员的集体投票表决,最后一致同意方案三的设计。

第二章 主要元器件介绍

2.1 STC89C55RD+

STC89C55RD+与ATMEL89C51通用,是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用STC公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存

储单元,功能强大的微型计算机的

STC89C55RD+可为许多嵌入式控制应用

系统提供高性价比的解决方案。

STC89C55RD+具有如下特点:40个

引脚,4k Bytes Flash片内程序存储器,

128 bytes的随机存取数据存储器(RAM),

32个外部双向输入/输出(I/O)口,5个

中断优先级2层中断嵌套中断,2个16位

可编程定时计数器,2个全双工串行通信

口,看门狗(WDT)电路,片内时钟振荡器。

此外,STC89C55RD+设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

2.2发光二极管

单片机控制led灯广告屏课程设计

6

发光二极管简称为LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管,在电路及仪器中作为指示灯,或者组成文字或数字显示。磷

砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅

二极管发黄光。

它是半导体二极管的一种,可以把电能转化成光

能;常简写为LED。发光二极管与普通二极管一样

是由一个PN结组成,也具有单向导电性。当给发光

二极管加上正向电压后,从P区注入到N区的空穴

和由N区注入到P区的电子,在PN结附近数微米

内分别与N区的电子和P区的空穴复合,产生自发

辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。

50年前人们已经了解半导体材料可产生光线的基本知识,第一个商用二极管产生于19xx年。LED是英文light emitting diode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。

发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。 当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。

单片机控制led灯广告屏课程设计

7

第三章 电路图.程序框图

电路图

单片机控制led灯广告屏课程设计

程序框图

单片机控制led灯广告屏课程设计

8

第四章 电路分析及原理

4.1电路分析

STC89C55RD+单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3

口,每个口有8位(8根引脚),共32根。每一根引脚都可以编程,比如用来控

制电机、交通灯、霓虹灯等,开发产品时就是利用这些可编程引脚来实现我们想

要的功能:

PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7

P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7

P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7

P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7

P1口通常作为通用I/O口使用。作为输出口时,由于电路内部已经带上拉

电阻,因此无需外接上拉电阻;作为输入口时,也需先向锁存器写入“1”。是一

个标准的I/O口。但这里,我采用的却是P2口的P2.0~P2.3四个引脚控制四页风

扇,没有其它原因,完全是个人爱好。

单片机控制led灯广告屏课程设计

4.2电路原理

将32个发光二极管组成的发光风扇的四个扇面,分别接在单片机P1端口的

P2.0-P2.3引脚上,注意发光二极管有长短两个引脚,分别表示正负极,其中较

短的负极与单片机引脚相连,较长的为正极,通过限流电阻与Vcc相连。

接上5V的电源,合上总开关,通电后由32个发光二极管组成的四页风扇按

照预定的程序进行有规律的亮,依次显示效果分为顺时针旋转20次,逆时针旋

转20次,闪烁20次,再循环。

9

结 论

MCS-51单片机,体积小,重量轻,抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量,来开发所希望的单片机应用系统

课程设计是大学学习阶段一次非常难得的理论与实际相结合的机会,通过这次的设计,我摆脱了单纯的理论知识学习状态,.通过试验进一步理解和消化了书本知识,分析每个语句的含义,运用所学知识进行简单的程序设计。 了解了在单片机系统中扩展简单I/O接口的方法. 外部中断技术的基本使用方法,掌握了中断处理程序的编程方法。在毕业设计过程中,不断调试程序和修改程序,提高了对单片机的应用能力,分析问题和解决问题的能力。实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际问题的能力,同时也提高我查阅文献资料、设计手册、设计规范以及电脑制图等其他专业能力水平,提高是有限的但提高也是全面的,正是这一次设计让我积累了无数实际经验,使我的头脑更好的被知识武装了起来,也必然会让我在未来的工作学习中表现出更高的应变能力,更强的沟通力和理解力。

顺利如期的完成本次课程设计给了我很大的信心,让我了解专业知识的同时也对本专业的发展前景充满信心,通过对单片机的系统学习。对一些广告灯的设计做了一些必要的改进。同时对自己的改进也做了真实的仿真。达到了预期的目的。但是在改进的过程里也发现了自己的很多的不足。这会在以后的学习生活里不断提高,逐步完善自己。

参考文献

[1] 汪贵平等.新编单片机原理及应用.北京:机械工业出版社,2009

[2] 朱德荣等.单片机原理及接口技术.北京:科学出版社,2008

[3] 杜志强等.单片机原理及应用.郑州:郑州大学出版社,2008

[4] 郭天祥.51单片机C语言教程.北京:电子工业出版社,2009

10

附录: 程序代码

/*共阴极 此程序显示四页闪光风扇,依次显示效果为逆时针转-顺时针转-全亮-全灭*/

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit led0=P2^0;//绿1

sbit led1=P2^1;//红1

sbit led2=P2^2;//绿2

sbit led3=P2^3;//红2

/*******延时函数*************/

void delay( uint i )

{

uchar j;

for( i; i > 0; i--)

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

}

main()

{

while(1) //无限循环

{

uint ims,imv,ima;

for(ims=20;ims>0;ims--)

{

/*逆时针转*/

led0=0;

led1=1;

led2=1;

led3=1;

delay(200);

led0=1;

led1=0;

led2=1;

led3=1;

11

delay(200);

led0=1;

led1=1;

led2=0;

led3=1;

delay(200);

led0=1;

led1=1;

led2=1;

led3=0;

delay(200);

}

for(imv=20;imv>0;imv--) {

/*顺时针转*/

led0=1;

led1=1;

led2=1;

led3=0;

delay(200);

led0=1;

led1=1;

led2=0;

led3=1;

delay(200);

led0=1;

led1=0;

led2=1;

led3=1;

delay(200);

led0=0;

led1=1;

led2=1;

led3=1;

delay(200);

}

ima=0;

while(ima<=20) //闪烁20次 {

12

/*全灭*/ led0=1; led1=1; led2=1; led3=1;

delay(500); /*全亮*/ led0=0; led1=0; led2=0; led3=0;

delay(500); ima++; }

}

}

13