基于单片机的彩灯设计与实现

2019-02-28 07:33程帅
科学与财富 2019年3期
关键词:数码管

摘要:在生活中,大家都见过晚上五彩缤纷的彩灯,它们会变换着不同的花样,发出不同颜色的光,特别是在晚上,不只美观并且还具有照明的功能。本次设计介绍的是由单片机控制的简易彩灯,它可以实现四种不同的彩灯变换模式,此设计也可以利用按键改变彩灯亮的模式和闪烁的频率,并且由数码管来显示出与彩灯相对应的模式,这样的设计可以使彩灯以多种多样的方式来变换。

本设计的核心内容包括硬件电路的设计及对应的程序代码分析和流程框图。硬件电路的设计需要利用到专业的绘图软件,其主要的组成电路有5种,分别是电源电路和最小单片机系统、按键电路以及LED彩灯和数码管显示电路,其中,数码管和LED彩灯以及按键控制电路需要和单片机的引脚连接在一起,然后彩灯就可以呈现出不同的样式,而且彩灯的亮灭方式和频率也可以由按键来控制。软件程序设计是用C语言来编写,程序编写完后须通过程序编译软件来检查是否有错误出现,最后通过软硬件的综合调试,检测本次设计是否已经达到了预期的要求。

关键词:LED彩灯;STC89C52;数码管;排阻;独立按键

1绪论

1.1 课题的发展趋势

目前,特别是在一个城市的中心,一般为了打造更好的气氛,夜晚会一直有彩灯照射在城市的许多黑暗的角落,于是彩灯便顺其而然跟随着城市和科技的发展而不断取得进步。简而言之,彩灯是一种不仅具有观赏效果的装饰物,同时也具有点亮夜空的功能,让整个城市弥漫在五彩缤纷的灯光中。由于本次设计需要利用到单片机,结合自己所学的知识和掌握的情况以及单片机的发展趋势,于是我决定采用的单片机是STC89C52,并由此展开具体的设计。

1.2 STC89C52芯片介绍

单片机由硅半导体制成的一个较小的芯片,它把计算机系统集成在了上面,因此可将它看作一台小型的计算机[2-3]。虽然外表不强大,但是却具有许多的功能,最初它是被应用于工业领域,现如今测控领域也正在运用了。因此,只要学习并掌握了计算机的原理与结构,一般就能较好地掌握单片机的功能了。

STC89C52的内部结构

(1)时钟电路

通常来说,时钟信号是STC89C52单片机能正常运作的基础,而由于硬件电路不同,通常分为外部和内部两种时钟方式。

(2)复位电路

单片机要想初始化,就必须得进行复位,而复位引脚要接高电平才有效。一般的复位电路方式有两种,即按键复位和上电复位

1.3 数码管工作原理

在单片机中,数码管是经常被使用的模块,它与LED灯一样,一般也是由发光二极管构成的,本次设计所用数码管的结构是常用“8”字型的,总共有8段,是由7段发光二极管和一个小数点构成的。

本设计的简易彩灯控制电路是由几个小模块所构成的,硬件电路主要是围绕STC89C52芯片来进行设计,通过将单片机芯片与时钟电路和复位电路、LED彩灯和数码管显示电路以及按键电路组合在一起,就实现整体的电路设计,然后在直流稳压电源的作用下,实现彩灯循环亮灭的控制模式

1.4 LED彩灯显示电路

发光二极管能够实现单向导通,其工作电流很小。在这次设计中,由于提供的稳压电源为5V,因此选用的排阻为330欧姆是比较合适的。

1.5 数码管显示电路

本次选用的数码管显示模块采用的“8”字型共阳极的,此模块连接的是单片机P1端口,由于它是共阳极的,两个公共端接的是正电压,所以只有当P1口的某个引脚输出为低电平时,对应的某段二极管才会被驱动。由于此次只需要显示数字,所以小数点DP(引脚6)是悬空的。

2 软件设计

本次设计的简易彩灯控制系统不仅需要硬件电路原理图,因为若只利用电路图并不能看到所设计的彩灯亮灭的情况,因此还需要用到软件进行程序编译,这次程序代码的编写运用的是比较基础的C语言,通过编程来控制芯片引脚的电平变化,从而让LED彩灯以不同的亮灭形式呈现。

2.1 LED彩灯显示程序

花样程序:上电时默认显示彩灯模式一,数码管同时显示数字“1”,可以实现彩灯全亮全灭交替变化,LED彩灯是共阳极的,所以与使用的数码管一样,也是接低电平有效。当16个彩灯全亮,其LED彩灯对应的P0口、P2口的电平状态都为“00000000”,即0X00;当16个彩灯全灭,对应P0口、P2口的电平都在刚才的基础上取反就行了,即把低电平“0”都改为高电平“1”,即0XFF。具体程序如下所示。

P0=0XFF;P2=0XFF;

for(i = 0; i < z; i++);//延时

P0=0X00;P2=0X00;

for(i = 0; i < z; i++);//延时

2.2 按键扫描程序

按键S1用key1表示,是连接在单片机的P3.6/WR上,按键S2用key2表示,是接在单片机的P3.7/RD上,这两个按键也是低电平驱动,此外还需要通过编写延时程序来进行按键的抖动消除,具体程序如下所示。

if(key1==0).//条件成立时,表示按键S1按下

{ for(i = 0; i < 300; i++);//通過此延时程序来进行按键消抖处理

if(key1==0)//再次检测,若条件成立,则表示S1按下

{ flag1=flag1+1;

if(flag1>=5) {flag1=1;}

//按一次按键S1,flag1加一,超过四次flag1变为1

while(!key1);//一直循环执行

}

}

if(key2==0)//条件成立,表示按键S2被按下

{ for(i = 0; i < 300; i++);//通过此延时程序来进行按键消抖处理

if(key2==0)//若消抖后条件仍然成立,则按键S2的确已被按下

{ flag2=flag2+1;

if(flag2>=4) {flag2=1;}

//按一次按键S2,flag2加一 ,超过三次变1

while(!key2);

}

}

3 结论

本系统由于是烧录程序进单片机中,所以我们完全可以根据自己的意愿修改程序,让LED灯能够实现更多的亮灭模式以及多种闪烁样式,让人一看到就对它产生一种惊奇感。虽然本次设计所用的器件非常少,占用空间不大,电路原理图比较容易绘制,并且操作相当简单,达到了实验目的。

参考文献:

[1]刘青. 中国民间彩灯艺术资源的保护与传承[J]. 美与时代(上), 2009(6):113-115.

[2]徐梅.几种单片机简介[J]. 高校实验室工作研究,2005(2):63-64.

[3]李森, 赵继聪, 侯攀峰. 单片机简单介绍及应用浅析[J]. 中国科技纵横,2010(15):67-67.

[4]佚名. 关于STC89C52[J]. 电子质量, 2016(2):34-34.

作者简介:程帅(1994-)男,河南省濮阳市,成都理工大学信息科学与技术学院在读研究生,电子与通信工程专业

猜你喜欢
数码管
物理项目教学设计,用单片机控制四位数码管显示
蓝桥杯树莓派模拟题解析三:“电子测距仪”
基于数码管故障诊断的算法研究
基于51单片机的分数计数器设计
微课教学设计之“数码管动态显示”
Arduino编程
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现