当前位置:首页 > 单片机 > 单片机
[导读]我用的开发板是天翔电子的TX-1C,单片机是STC89C52RC。

我用的开发板是天翔电子的TX-1C,单片机是STC89C52RC。

下面就以八个发光二极管与单片机的硬件连接图开始:

 

图1

要使得发光二极管点亮,就需要有电流通过它,5mA左右电流即可(电流越大,其亮度越强,但电流过大,会烧坏二极管,一般控制在3~20mA之间。)。

由上图可知:Q0~Q7端为低电平时,发光二极管就会被点亮。发光二极管与单片机P1口通过锁存器74HC573相连。

所以要使得74HC573的输出端Q0~Q7输出低电平,就得先了解锁存器的原理,其真值表如下:

 

图2

从真值表可以知道:当OE(输出使能)端为低电平,LE(锁存允许)端为高电平时,输出端Q0~Q7与D0~D7的状态一致。

再看原理图中:OE端接地,LE端与单片机的P2^5相连,D0~D7与单片机P1^0~P1^7相连。

所以只要将P2^5置为高电平,P1^0~P1^7置为低电平,就可以得到Q0~Q7为低电平。此时,发光二极管就可以被点亮。

接下来讨论通过发光二极管的电流大小:

图1中:元件P2为1KΩ排阻,VCC端输入+5V电压,发光二极管正常导通时压降为1.7V,根据欧姆定律U=IR可得:5V-1.7V=1KΩ * I,求出I=3.3mA。

我们可以适当的减小该电阻阻值,使发光管亮些。

下面让我们点亮第一个发光二极管,代码如下:

1 #include //引入52系列单片机头文件

2

3 sbit LED1 = P1^0; //声明单片机P1口的第一位

4

5 void main() //主函数

6 {

7 while(1) //循环操作

8 {

9 LED1 = 0; //点亮第一个发光二极管

10 }

11 }

同理,可以用同种方式点亮其它发光管。

现在我们就来讨论如何点亮发光管,使其出现流水灯效果:

原理: ①、点亮第一个发光管

②、等待一小段时间,点亮第二个发光管,同时熄灭第一个发光管

③、同理,循环下去

上面我们已经学会了如何点亮发光管,那么如何让发光管晾一段时间后熄灭呢?我们写下如下延时函数:

1 void delay(uint ms)

2 {

3 uint i;

4 for(; ms > 0; ms --)

5 {

6 for(i = 114; i > 0; i --)

7 {

8 }

9 }

10 }

我们只要在点亮一个发光管后调用这个延时函数,当执行完延时函数后,我们再将发光管熄灭就可以了。

我们来分析每一个不同发光管被点亮时的情况:

1.第一个发光管被点亮,此时单片机P1口的各位电平状态为:11111110;

2.第二个发光管被点亮,此时单片机P1口的各位电平状态为:11111101;

3.第三个发光管被点亮,此时单片机P1口的各位电平状态为:11111011;

4.第四个发光管被点亮,此时单片机P1口的各位电平状态为:11110111;

5.第五个发光管被点亮,此时单片机P1口的各位电平状态为:11101111;

6.第六个发光管被点亮,此时单片机P1口的各位电平状态为:11011111;

7.第七个发光管被点亮,此时单片机P1口的各位电平状态为:10111111;

8.第八个发光管被点亮,此时单片机P1口的各位电平状态为:01111111;

从P1口电平状态变化可以得到如下规律:下一次的电平值是上一次电平值循环左移一位得到的。

我们可以用头文件intrins.h中的循环左移函数_crol_来实现。

下面为流水灯完整代码:

1 #include

2 #include

3 #define uint unsigned int

4 void delay(uint);

5

6 void main()

7 {

8 P1 = 0xfe;

9

10 while(1)

11 {

12 delay(500);

13 P1 = _crol_(P1,1);

14 }

15 }

16

17 void delay(uint ms)

18 {

19 uint i;

20

21 for(; ms > 0; ms --)

22 {

23 for(i = 114; i > 0; i--)

24 {

25

26 }

27 }

28 }

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭