基于AT89C51单片机的花样彩灯.docx

上传人:b****2 文档编号:3125340 上传时间:2023-05-05 格式:DOCX 页数:19 大小:147.08KB
下载 相关 举报
基于AT89C51单片机的花样彩灯.docx_第1页
第1页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第2页
第2页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第3页
第3页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第4页
第4页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第5页
第5页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第6页
第6页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第7页
第7页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第8页
第8页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第9页
第9页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第10页
第10页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第11页
第11页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第12页
第12页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第13页
第13页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第14页
第14页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第15页
第15页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第16页
第16页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第17页
第17页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第18页
第18页 / 共19页
基于AT89C51单片机的花样彩灯.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于AT89C51单片机的花样彩灯.docx

《基于AT89C51单片机的花样彩灯.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的花样彩灯.docx(19页珍藏版)》请在冰点文库上搜索。

基于AT89C51单片机的花样彩灯.docx

基于AT89C51单片机的花样彩灯

 

物理与电子信息学院

课程设计Ⅳ

基于AT89C51单片机的花样彩灯仿真分析

 

姓名:

班级:

电子科学与技术

学号:

指导老师:

时间:

2011年1日6日

 

内容摘要:

随着电子技术的迅速发展,单片机得到了越来越多的应用。

本设计用单片机89S51结合LED(发光二极管)制作了一个广告移动彩灯,它由一块89S51组成,通过逐次扫描其中一块的P2.0--P2.7口,从而依次实现彩灯轮流点亮、逐点点亮、间隔点亮。

关键词:

LED彩灯;AT-89C51单片机;彩灯控制器

Abstract:

Alongwiththeelectronictechnologyrapiddevelopment,themonolithicintegratedcircuitobtainedmoreandmoremanyapplications.HereIusedmonolithicintegratedcircuit89C51tounifyLED(lightemitterdiode)tomanufactureabeltmusicbroadcastfunctionadvertisementmigrationcoloredlanternwiththeloudspeaker,itwascomposedbytwo89C51,throughgraduallyscannedtogetherP3.0--P3.2mouth,judgedwhetherhadthepressedkeytopressdown,unifiedtheportscanningandthepressedkeyscanning,thusrealizedthecoloredlanterntolighten,tolighten,thegappointbypointinturninturnlightens.

Keywords:

LEDlantern;AT-89C51single-chipmicrocomputer;Lanterncontroller

 

1绪论

近年来,彩灯对于美化、亮化城市有着不可轻视的重要工作。

因此作为城市装饰的彩灯需求量越来越大,对与彩灯的技术和花样也越来越高。

但传统的彩灯控制电路一般是由数字电路组成,这种彩灯控制器电路结构复杂、成本较高、功率损耗大,此外从功能效果上看,彩灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。

因此有必要对现有的彩灯控制器进行改进。

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

LED彩灯具有成本低、发光纯度高、发光热量小、耗电量低、超长寿命的特点。

所以利用单片机作LED彩灯控制,不仅是使控制花样、路数大大增加,成本也很低,而且对环境能源没有污染,有着很大的发展前景。

本方案是一种基于AT-89C51单片机的彩灯控制方案,实现对LED彩灯的控制。

主要以AT-89C51单片机作为主控核心与发光二极管、晶振、复位、电源等组成电路,利用软件编辑实现彩灯流水灯的效果。

2系统设计

2.1设计任务与要求

2.1.1设计任务

(1)设计一个基于单片机的花样彩灯;

(2)在设计过程中,选择1~2个单元电路使用仿真软件(例如Proteus等)进行仿真调试;

(3)用计算机绘制所有的电路图。

2.1.2设计要求

(1)设计一个花样彩灯。

(2)彩灯至少有7种工作模式。

(3)当按下按键后,模式可以复位。

2.2方案的选择与论证

2.2.1总体设计方案

方案一:

采用各类数字电路来组成键盘控制系统,进行信号处理,如选用CPLD等可编程逻辑器件。

本方案电路复杂,灵活性不高,效率低,不利于系统的扩展,对信号处理比较困难。

方案二:

过单片机控制二极管的闪烁,通过中断来改变模式同时串行输出数码管。

P0,P1口接16个二极管,P3口接扩展板的数码显示接口。

该方案简单,易于设计和控制。

3系统硬件设计

按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。

AT-89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:

4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT-89C51单片机时无须外扩存储器。

因此,本彩灯控制系统实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

其具体硬件组成如图1所示。

图1彩灯硬件原理图

从图1中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要让接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。

因此,要实现彩灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做彩灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“彩灯”效果了。

3.1控制器模块

本系统控制器芯片采用AT89C51单片机,其管脚图如图3所示。

D8-D6:

数据输入线。

RESET:

复位端口。

T0,T1:

计数器端口外部计数脉冲输入线。

XTAL1,XTAL2:

时钟电路。

VCC:

供电电压。

GND:

接地。

图389C51功能说明图

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51具有以下特性:

与MCS-51兼容,4K字节可编程闪烁存储器,寿命:

1000写/擦循环,数据保留时间:

10年,全静态工作:

0Hz-24MHz,三级程序存储器锁定,128×8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式、片内振荡器和时钟电路。

 

3.2按键模块

采用如下所示电路来实现控制花样彩灯的复位,按下开关,单片机复位,花样彩灯按模式一闪烁。

 

电源电路有三端稳压器7805和电容组成,外部电池供电,BAT接7V左右的电压,稳压输出5V的电压。

电源电路如图4所示。

图4.电源电路

3.4LED显示模块

LED显示电路由单片机89C51的P0口,P1口和P2口与发光二极管相连,低电平二极管发光。

LED显示电路如图2所示。

图2.LED显示电路

3.5硬件元件清单

系统元器件清单见表2。

表2系统元器件清单

器件

数量

器件

数量

AT89C51

1

晶振器

1

LED

8

排阻(4.7k)

8

电容(30pF)

2

电阻(100k)

1

电容(10uF)

1

开关

1

4软件设计与仿真

本系统程序包括主程序、键盘扫描子程序、发送键码子程序、发送数据子程序、接收命令子程序等。

主程序用于系统初始化,子程序调度等。

键盘扫描子程序用于扫描键盘状态,将被按键的位置号存入缓冲器中。

发送键码子程序用于将缓冲区键的接通码或断开码发送给单片机接口。

发送数据子程序用于将数据发给单片机接口。

接收命令子程序用于接收单片机接口发来的键盘命令。

4.1主程序设计

程序流程图:

中断程序:

主程序:

4.2仿真软件简介

Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

(1)实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

(2)支持主流单片机系统的仿真。

目前支持的单片机类型有:

ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。

(3)提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2、MPLAB等软件。

(4)具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

Proteus7.5是目前最好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、AD/DA、部分SPI器件、部分IIC器件等)。

软件编译采用KEILC51软件,KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

4.3仿真结果

先按复位键,系统初始化,然后8个LED开始按照要求闪烁,分别按下列模块点亮:

模块1:

循环单向闪烁,只有一个灯亮

模块2:

循环单向闪烁,只有两个灯亮

模块3:

循环往复闪烁,只有一个灯亮

模块4:

全亮全灭

模块5:

顺次点亮或者熄灭,多个灯亮

模块6:

顺次点亮或者熄灭,多个灯亮,一次点亮两个

模块7:

双端对称往返闪烁

4.4系统调试

在调试过程中主要是对程序的修改,特别是延时子程序。

开始延时较短时,当按下开关时,LED开始闪烁。

如果延时较长则LED闪烁更慢。

通过修改程序,将延时调到适中,系统正常工作。

4.5误差分析

设定预设值后,记录模式一的数据,每次送出的数据是不同,具体的数据如下表1所示

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

说明

L8

L7

L6

L5

L4

L3

L2

L1

 

1

1

1

1

1

1

1

0

L1亮

1

1

1

1

1

1

0

1

L2亮

1

1

1

1

1

0

1

1

L3亮

1

1

1

1

0

1

1

1

L4亮

1

1

1

0

1

1

1

1

L5亮

1

1

0

1

1

1

1

1

L6亮

1

0

1

1

1

1

1

1

L7亮

0

1

1

1

1

1

1

1

L8亮

后面几种模式的实验结果基本和理论值一样,没什么误差。

 

结束语

该设计是以AT-89C51单片机为主控芯片,与发光二极管、晶振电路、复位电路和电源电路组成,通过程序控制彩灯流水花样。

本文所给程序实现的功能比较简单,旨在抛砖引玉,可以在此基础上扩展成更复杂的彩灯控制,比如键盘控制流水花样、控制流水灯显示数字或图案等等。

通过花样彩灯的制作,给我最大的体会是对一个程序整体的把握和控制,只有将子程序有效的结合起来,才能完成设计的目的。

另外,在程序的调试过程中,我也遇到了很多意想不到的困难,在老师的帮助和自己的不懈努力下,我对伟福这款仿真软件有了更深的认识,将困难一一克服,使程序编译成功,仿真实现。

附录:

程序清单

#include

#defineuintunsignedint

voiddelay(uint);

main()

{

uintfre=0x04;

uintfre1,fre2;

uintcomp1=0xfe,comp2=0x80;

while

(1)

{

/*-------------------------------------------------------------

模块一:

循环单向闪烁,只有一个灯亮

执行3次,转入下一种闪烁

------------------------------------------------------------*/

P1=0xfe;

while(1!

=fre--)

{

fre1=0x08;

while(1!

=fre1--)

{

delay(30000);

P1<<=1;

P1|=0x01;

if(P1==0x7f)

{

delay(30000);

P1=0xfe;

}

}

}

/*-------------------------------------------------------------

模块2:

循环单向闪烁,只有两个灯亮

3次,转入下一种闪烁执行

-------------------------------------------------------------*/

P1=0xfc;

while(3!

=fre++)

{

fre2=0x04;

while(1!

=fre2--)

{

delay(30000);

P1<<=2;

P1|=0x03;

if(P1==0x3f)

{

delay(30000);

P1=0xfc;

}

}

}

/*-------------------------------------------------------------

模块3:

循环往复闪烁,只有一个灯亮

执行3次,转入下一种闪烁

-------------------------------------------------------------*/

P1=0xfe;

fre1=0x04;

while(1!

=fre1--)

{

while(P1!

=0x7f)

{

delay(30000);

P1<<=1;

P1|=0x01;

}

while(P1!

=0xfe)

{

delay(30000);

P1>>=1;

P1|=0x80;

}

}

/*-------------------------------------------------------------

模块4:

全亮全灭

执行3次,转入下一模块

-------------------------------------------------------------*/

while(3!

=fre1++)

{

delay(30000);

P1=0x00;

delay(30000);

P1=0xff;

}

/*-------------------------------------------------------------

模块5:

顺次点亮或者熄灭,

多个灯亮,执行3次,转入下一模块

-------------------------------------------------------------*/

while(1!

=fre1--)

{

P1=0xfe;

while(P1!

=0x00)

{

delay(30000);

P1<<=1;

}

delay(30000);

P1=0x80;

while(P1!

=0xff)

{

delay(30000);

P1>>=1;

P1|=0x80;

}

}

/*-------------------------------------------------------------

模块6:

顺次点亮或者熄灭,多个灯亮,

一次点亮两个,执行3次,转入下一模块

-------------------------------------------------------------*/

while(3!

=fre1++)

{

P1=0xfc;

while(P1!

=0x00)

{

delay(30000);

P1<<=2;

}

delay(30000);

P1=0xc0;

while(P1!

=0xff)

{

delay(30000);

P1>>=2;

P1|=0xc0;

}

delay(30000);

}

/*-------------------------------------------------------------

模块7:

双端对称往返闪烁

执行3次,进行下一轮循环

-------------------------------------------------------------*/

P1=0x7e;

delay(30000);

while(1!

=fre1--)

{

fre2=0x00;

while(6!

=fre2++)

{

P1=0xff;

comp1<<=1;

comp1|=0x01;

comp2>>=1;

P1&=comp1;

P1^=comp2;

delay(3000000);

if(P1==0xe7)

{

comp1<<=1;

comp1|=0x01;

comp2>>=1;

}

if(comp2==0x01)

{

comp1=0xfe;

comp2=0x80;

}

}

}

}

}

voiddelay(uintcnt)

{

while(cnt--);

}

参考文献

[1]王幸之钟爱琴.AT89系列单片机原理与接口技术[M].北京:

北京航空航天大学出版社,2004.

[2]谭浩强.C程序设计(第二版)[M].北京:

清华大学出版社,1999.

[3]赵亮.单片机C语音编程与实例[M].北京:

人民邮出版社,2004.

[4]房小翠、王金凤.单片机实用系统设计技术[M].北京:

国防工业出版社,1999.

[5]康华光.电子技术基础数字部分(第四版)[M].北京:

高等教育出版社,1998.

[6]张毅刚.单片机原理及应用[M].北京:

高等教育出版社,2003.

[7]李广第,朱月秀,王秀山.单片机基础[M].北京:

北京航空航天大学出版社,2001.

[8]杨振江.A/D、D/A转换器接口技术与实用电路[M].西安:

西安电子科技大学出版社.

[9]梅笙,李玮.基于AT89C52控制的数控直流电流源的设计[J].电子测试,2007

(2):

19-23.

[10]张鑫.单片机原理及应用[M].电子工业出版社,2005.

[11]MatthewR,RobinT.Microprocessorcontrolledpowersupply[J].ElectronicWorldWirelessWorld,1994,95(1639):

524~527.

[12]KuoBC.Automaticcontrolsystem[M].3thed.NewJersy PrenticeHall,1975.

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2