基于单片机控制的霓虹灯控制器毕业设计.docx
《基于单片机控制的霓虹灯控制器毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的霓虹灯控制器毕业设计.docx(25页珍藏版)》请在冰豆网上搜索。
基于单片机控制的霓虹灯控制器毕业设计
毕业设计
基于单片机控制的霓虹灯控制器
摘要:
本设计采用AT89S51单片机实现对霓虹灯的控制。
系统由单片机控制部分和显示部分组成。
显示部分的128个发光二极管成8行16列矩阵式分布。
单片机I/O口输出的信号经三极管放大驱动二极管发光。
不同的控制信号使发光二极管以不同的方式和花样显示。
关键字:
单片机发光二极管矩阵式
NeonLightControllerBasedonSinglechip
Abstract:
ThisdesignadoptssinglechipAT89S51tocontroltheneonlight.Thesystemismadeupofthepartofsinglechipcontrollerandthepartofshow.Thepartofshowis8linesof16rowmatrixtypes.SignalfromsinglechipisenlargedbytriodetransistortodrivetheLBD.ThedifferentcontrolsignalmakesLBDtogiveoutlightwiththepatternindifferentway.
Keyword:
singlechipLBDmatrix
第一章绪论
1.1霓虹灯发展历史
可以说霓虹灯的问世是建立在真空及气体放电的技术发展之上的。
回顾霓虹灯的发展历史追溯到中世纪时期。
1643年意大利物理学家托里切利首先完成了人类历史的第一次真空试验,继后,德国物理学家盖里克于1650年发明了真空的获得成为现实,为真空中的气体放电现象研究奠定了基础。
1838年英国科学家法拉弟关注真空中放电现象的研究的真正转折点是19世纪后半叶兴起的,1858年J.普吕克发表了真空管中的荧光作用论述,英国科学家克鲁克斯和希托夫等人先后开展了真空中放电现象的系统研究。
这一时期,在欧洲一些早期工业革命的国家对气体放电现象的研究十分活跃,特别对气体放电的丰富色彩纷纷进行应用性研究,这就是霓虹灯能够得心出现的历史背景。
1.2霓虹灯的原始模型
可以说霓虹灯的问世是建立在真空及气体放电的技术发展之上的。
回顾霓虹灯的发展历史追溯到中世纪时期。
1643年意大利物理学家托里切利首先完成了人类历史的第一次真空试验,继后,德国物理学家盖里克于1650年发明了真空的获得成为现实,为真空中的气体放电现象研究奠定了基础。
1838年英国科学家法拉弟关注真空中放电现象的研究的真正转折点是19世纪后半叶兴起的,1858年J.普吕克发表了真空管中的荧光作用论述,英国科学家克鲁克斯和希托夫等人先后开展了真空中放电现象的系统研究。
这一时期,在欧洲一些早期工业革命的国家对气体放电现象的研究十分活跃,特别对气体放电的丰富色彩纷纷进行应用性研究,这就是霓虹灯能够得心出现的历史背景。
到19世纪末叶,大约是在1893年以后,在欧洲一些城市分别流行着被称之为“摩尔”(Moll)霓虹灯和“盖塞拉”(Geissler)霓虹灯的原始模型的霓虹灯。
在维多利亚皇后60寿辰的庆典上就采用了盖塞拉霓虹灯管作为节日气氛的装饰照明使用。
这种原始模型霓虹灯采用石墨材料作电极,在管径为45mm的透明玻璃管内充入氮气和二氧化碳气。
前者发粉红色光、后者发白色光,弯成螺旋或文字图案,也很明亮。
由于充入的气体化学性质活泼,容易和电极起化学反应,石墨电极溅射率高,很快在玻璃管壁形成一层薄膜,吸收了填充的气体,使管内气压下降,因此这种霓虹灯的寿命很短,没有什么实用价值。
为了寻求早期霓虹灯寿命极短的解决办法,英、法的物理学家和化学家对惰性气体的研究作出了杰出的贡献。
1894年伦敦大学教授拉姆齐与雷利一起证明了氩的存在,并通过分馏空气得到氩;1895年鉴定了氦的化学性质;1898年拉姆齐教授又与M.特拉弗斯发现空气中存在氖,同年还用液态空气分馏法制取了氪、氡。
直到1902年法国科学家克洛德(Claude)发明用绝热膨胀法使空气液化,并用此法进行氖的工业分离,从此,开创了惰性气体的工业提取法。
用惰性气体代替活泼气体作为霓虹灯的填充气,不仅使霓虹灯的寿命提到了很大的延长,同时霓虹灯的色彩也更加丰富,这是霓虹灯发展进程中的一项重大技术突破。
1.3霓虹灯在我国的发展历程
霓虹灯在我国的第一次出现是1926年在上海最繁华的商业街---南京东路上的伊文思图书公司橱窗内陈列的英文“皇家牌”打字机霓虹灯广告。
1927年由上海远东化学制造厂---我国第一家霓虹灯制造厂为上海中央大旅社制作安装的中英文对照的霓虹灯招牌。
1930年自制成功霓虹灯电源变压器;1945年制成荧光粉;1951年试制出氩、氖等惰性气体,从此实现了霓虹灯用全部原料、器件的国产化。
'^9O n+A!
h1V1F
霓虹灯的兴旺发展总是和国家的兴旺繁荣联系在一起,同步出现的。
90年代在上海南京路已建成了一条霓虹灯十里长街;南京市和上海闸北区都在实施不夜城计划;大连市金州开发区为改善投资环境,通过举办全国霓虹灯大奖赛建成了一座五彩城。
如今天津、重庆、深州等大小城市也建成了以霓虹灯为主体装饰照明的商业、旅游城。
1.4单片机概述
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。
MCS-51单片机内部结构
8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
·数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
图1
·程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
·并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
·全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
·时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
下图是MCS-51系列单片机的内部结构示意图2。
图2
1.5MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
如图3
图3
Pin9:
RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。
8051的复位方式可以是自动复位,也可以是手动复位,见下图4。
此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
图4
·Pin30:
ALE/
当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。
而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。
如果单片机是EPROM,在编程其间,
将用于输入编程脉冲。
·Pin29:
当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
·Pin31:
EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
显然,对内部无程序存储器的8031,EA端必须接地。
在编程时,EA/Vpp脚还需加上21V的编程电压。
第二章系统设计
2.1设计要求
1.基本功能:
设计一个霓虹灯控制器,控制128个LBD,要求能控制形成多种图案或花样。
2.扩展功能:
红外遥控不同显示方案间的转换,加设语音芯片和音乐盒,在显示不同图案的同时发出不同的音乐和语音信息。
2.2总体设计方案
2.2.1设计思路
题目要求设计一个霓虹灯控制器,控制的灯数128个,并要形成多种图案和花样。
设计中控制部分由单片机完成,显示部分的LBD由单片机的输出控制信号经放大后驱动,形成不同的图案。
2.2.2方案论证与比较
1.显示部分设计方案论证与选择
方案一、采用移位寄存器扩展I/O口。
利用74HC595扩展单片机的输入输出口来接发光二极管,实现串行输入并行输出。
电路图如1.1.1所示。
此方案可扩展受控制的发光二极管的数量,但要控制128个LBD需要16个移位寄存器,需要芯片多,且PCB布局和布线不方便。
方案二、采用矩阵式分布。
利用单片机的p1口做行选信号,p2和p0口做列选信号,128个LBD构成8行,16列的矩阵。
详细电路图见单元电路设计中。
此方案能单独控制每一个LBD,也可单独控制每行或每列的LBD,可形成丰富的图案或花样,显示部分不需要格外的芯片,形成的电路简单,PCB的布局和布线也较容易和美观。
综上所述,考虑到要求控制的LBD不是太多,又矩阵式能形成较丰富的图案,PCB板的布局和布线也较美观,选择方案二。
驱动部分设计方案论证与选择
方案一、三极管一级驱动。
由1个9012驱动一行16个LBD。
正常发光时每个LBD的工作电流为10~15毫安,16×(10~15)=160~240毫安,这样大的电流一个三极管就能提供。
当一行同时亮时能满足发光工作要求。
当一个灯亮时,由于亮的时间非常短不会对LBD的工作造成影响。
方案二、功率放大芯片。
可以很好的实现放大和驱动,性能稳定,效果好,但价格较三极管高,电路较方案一也明显复杂。
综上所述,三极管驱动电路简单,性价比高,又能很好完成驱动作用,选择方案一。
图2.1.1寄存器扩展的电路图
2.2.3系统组成
系统总方框图如图1.2.3所示。
图2.2.3系统总方框图
单片机控制矩阵式排布的LBD按顺序循环显示。
系统共设计了7种显示图案或花样,分别是:
(1)由里到外和由外到里按圈依次亮
(2)奇次列和偶次列交错亮(3)以一列为轴顺时针扫射(4)以中间两列为轴分别向两边合拢(5)四种不同颜色的灯交错亮(6)单个灯以螺旋方式从最里圈向外亮(7)以相邻四列及相对的四列为一组交错亮。
第三章单元电路设计
3.1显示部分电路
显示部分主要由128个贴片发光二极管分成8圈,每圈16个组成,相当于8行16列的矩阵。
这些发光二极管共有四种颜色,分别是红,黄,蓝,绿。
每圈用同一种颜色,从里到外分别是绿红黄蓝绿红黄蓝排布。
每行16个LED的阳极连接在一起引出8行输出分别接单片机I/O口的P1.0~P1.7口;每列8个LED的阴极连接在一起引出16列输出分别接单片机P0.0~P0.7和P2.0~P2.7口。
电路图如图2.1所示。
图3.1显示部分电路图
3.2控制部分电路
控制部分主要是由单片机最小系统完成。
采用了1个AT89S51单片机,2个74HC373锁存器,12M晶阵和一些相应的电阻,插座。
驱动部分的8个9012三极管也接到了此部分。
使用P1口的8个输出信号做8行的选通信号,使用P0和P2口的16个输出信号做列的控制信号,单独控制每圈的16个LED。
输出信号经9012放大后驱动发光二极管。
电路图如图2.2所示。
图3.2控制部分电路图
第四章软件设计
4.1程序流程图
4.2程序清单
软件采用汇编语言编写,程序清单见附录2。
第五章结论
本设计的设计思想,原理和软件设计较简单,难点在于PCB板的布局和布线以及美观的效果。
采用了矩阵式布局,可以较好的解决这一难题,但是受单片机I/O口的限制,能控制每一个LBD的数量有限。
大型的设计可以采用扩展I/O口和矩阵式相结合的方式。
暂只完成了基本部分的设计,扩展部分单片机已留出了足够的端口。
参考文献
杨忠煌,黄博俊,李文昌.单芯片8051实务与应用[M].北京:
中国水利水电出版社,2001.6第一版.
张洪润,马平安,张亚凡.单片机原理及应用[M].北京:
北京科学出版社,2002.8第一版.
附录1元器件明细表
名称
型号
数量
单片机
AT89S51
1
锁存器
74HC373
2
电阻
10K,470
17,8
贴片发光二极管
LBD
128
电容
30pf
2
电解电容
22uf
1
三极管
9012
8
晶阵
12M
1
插座
40脚,20脚
1,1
下载口
1
附录2程序清单
FLAGEQU20H
FUN0FLAGEQU00H
FUN1FLAGEQU01H
FUN2FLAGEQU02H
FUN3FLAGEQU03H
FUN4FLAGEQU04H
FUN5FLAGEQU05H
FUN6FLAGEQU06H
FUN7FLAGEQU07H
CIRCALEQU08H
HUANGEEQU09H
SHXING1EQU0AH
SHXING2EQU0BH
SHXING3EQU0CH
DANSAOEQU0DH
DANSAOJIASUEQU0EH
LUOXUANEQU0FH
COLOUREQU10H
JMPFLAGEQUPSW.7
TIMECOUNTDATA29H
LOCK0DATA30H
LOCK1DATA31H
LOCK2DATA32H
LOCK3DATA33H
LOCK4DATA34H
LOCK5DATA35H
LOCK6DATA36H
LOCK7DATA37H
DATA0DATA40H
DATA1DATA41H
DATA2DATA42H
DATA3DATA43H
DATA4DATA44H
DATA5DATA45H
DATA6DATA46H
DATA7DATA47H
DATA8DATA48H
B1DATA48H
B2DATA49H
B3DATA50H
B4DATA51H
B5DATA52H
B6DATA53H
B7DATA54H
B8DATA55H
ORG0000H
LJMPSTART;转入主程序
ORG0003H;外部中断INT0入口地址
RETI;返回,不用
ORG000BH;定时器T0入口地址
LJMPINTT0;转入T0中断服务程序
ORG0013H;外部中断INT1入口地址
RETI;返回
ORG001BH;定时器T
RETI
;LJMPINTT1;转入T1中断服务程序
ORG0023H;转入创行中断服务程序
RETI;返回,不用
START:
MOVFLAG,#00000001B
MOVTIMECOUNT,#05H
MOVTMOD,#01H
MOVTL0,#0F0H
MOVTH0,#0D8H
SETBEA
SETBET0
SETBTR0
MAIN:
JBFUN0FLAG,FUN0
JBFUN1FLAG,FUN1
JBFUN2FLAG,FUN2
JBFUN3FLAG,FUNC3
JBFUN4FLAG,FUNC4
JBFUN5FLAG,FUNC5
JBFUN6FLAG,FUNC6
JBFUN7FLAG,FUNC7
FUNC3:
LJMPFUN3
FUNC4:
LJMPFUN4
FUNC5:
LJMPFUN5
FUNC6:
LJMPFUN6
FUNC7:
LJMPFUN7
FUN0:
CLRCIRCAL
SETBJMPFLAG
MOVLOCK0,#0FEH
MOVDATA0,#000H
MOVR0,TIMECOUNT
FUN00:
JNBFUN0FLAG,FUN1
MOVP2,DATA0
MOVP0,DATA0
MOVP1,LOCK0
AJMPFUN00
FUN1:
CLRHUANGE
SETBJMPFLAG
MOVB1,#8H
MOVDATA1,#0AAH
MOVLOCK1,#0FEH
FUN10:
JBHUANGE,FUN2
MOVP0,DATA1
MOVP1,LOCK1
LCALLDL20
MOVA,DATA1
CPLA
MOVP2,A
MOVP1,LOCK1
LCALLDL20
MOVA,LOCK1
RLCA
MOVLOCK1,A
LJMPFUN10
FUN2:
CLRSHXING1
SETBJMPFLAG
MOVB2,#2H
MOVDATA2,#07FH
FUN20:
MOVLOCK2,#0FEH
FUN21:
JBFUN3FLAG,FUN3
MOVP0,DATA2
MOVP2,DATA2
MOVP1,LOCK2
LCALLDL20
MOVA,LOCK2
RLCA
MOVLOCK2,A
LJMPFUN21
FUN3:
CLRDANSAO
CLRDANSAOJIASU
SETBJMPFLAG
MOVB3,#5H
FUN30:
MOVDATA3,#0FEH
MOVLOCK3,#0FEH
FUN31:
JBFUN4FLAG,FUN33
JBDANSAO,FUN32
MOVP0,DATA3
MOVP2,#0FFH
MOVP1,LOCK3
LCALLDL20
MOVA,LOCK3
RLCA
MOVLOCK3,A
LJMPFUN31
FUN32:
JBFUN4FLAG,FUN33
JNBDANSAO,FUN31
MOVP0,#0FFH
MOVP2,DATA3
MOVP1,LOCK3
LCALLDL20
MOVA,LOCK3
RLCA
MOVLOCK3,A
LJMPFUN32
FUN33:
LJMPFUN4
FUN4:
CLRLUOXUAN
SETBJMPFLAG
MOVDATA4,#0FEH
MOVLOCK4,#0FEH
FUN40:
JBFUN5FLAG,FUN42
JBLUOXUAN,FUN41
MOVP0,DATA4
MOVP2,#0FFH
MOVP1,LOCK4
LCALLDL20
AJMPFUN40
FUN41:
JBFUN5FLAG,FUN42
JNBLUOXUAN,FUN40
MOVP0,#0FFH
MOVP2,DATA4
MOVP1,LOCK4
LCALLDL20
AJMPFUN41
FUN42:
LJMPFUN5
FUN5:
CLRSHXING2
SETBJMPFLAG
MOVB4,#8H
MOVDATA5,#0F0H
MOVLOCK5,#0FEH
FUN50:
JBSHXING2,FUN51
MOVP0,DATA5
MOVP1,LOCK5
LCALLDL20
MOVA,DATA5
CPLA
MOVP2,A
MOVP1,LOCK5
LCALLDL20
MOVA,LOCK5
RLCA
MOVLOCK5,A
LJMPFUN50
FUN51:
LJMPFUN6
FUN6:
CLRCOLOUR
SETBJMPFLAG
MOVB5,#2H
MOVDATA6,#00H
MOVLOCK6,#0EEH
FUN60:
JBFUN0FLAG,FUN61
MOVP0,DATA6
MOVP2,DATA6
MOVP1,LOCK6
AJMPFUN60
FUN61:
LJMPFUN0
FUN7:
MOVDATA7,#0FCH
MOVDATA8,#03FH
MOVLOCK7,#0FEH
FUN70:
PUSHDATA7
FUN71:
MOVP0,#0FFH
MOVP1,#0FFH
MOVP2,#0FFH
MOVP0,DATA7
MOVP1,LOCK7
LCALLDL1MS
MOV