单片机原理及其应用——单片机控制8只发光二极管交替闪烁

简介: 单片机原理及其应用——单片机控制8只发光二极管交替闪烁

一、实验要求


【实验内容】

1.用Proteus绘制硬件原理图,并设置元件参数。

2.用KeilC51软件编写点亮一个发光二极管的程序。

3.Keil C51与Proteus联调,仿真调试和硬件调试观察实验现象。

4.实现P2口连接的8只LED灯交替闪烁。

【硬件要求】

连接方法:P2.0-P2.7采用“拉电流”方式连接8只LED灯,LED的阴极通过保护电阻连接到地端。

【软件实现】

1.编程实现点亮一个发光二极管的程序。

2.编程实现P2口连接的8只LED灯交替闪烁。


二、分析


1、本实验是通过单片机的P2口做相关实验,P2口当作为输入接口时与P0、P1一样,要先向其锁存器写入1,其目的是使场效应管截止;作为输出接口时与P1口一样,因为其内部有上拉电阻即不需要另外外接上拉电阻。

2、画电路的工作原理是通过P2.0-P2.7八个口输出高低电平状态,由单片机控制8只发光二极管,使每只发光二极管点亮。因为发光二极管具有单向导通性,当加在发光二极管两端的电压超过其导通电压时,它就会导通;而超过一定的电流时,发光二极管点亮。通过单片机的I/O口连接,因为选择的是P2口,即P2.0-P2.7八个口与8只发光二极管连接,这里采用的是“拉电流”方式连接,即单片机P2各口的各引脚与发光二极管的阳极相连,而发光二极管的阴极接地,即通过保护电阻连接到地端。


三、利用Proteus仿真软件画原理图


1667116041786.jpg


四、Keil编程软件编写程序


本次实验是通过实现P2口连接的8只LED灯交替闪烁,且连接方法是通过单片机的并行输入/输出接口的P2端口P2.0-P2.7,其中各发光二极管的阴极通过保护电阻连接到地端。

通过循环依次点亮各发光二极管,且点亮一盏时其它发光二极管是熄灭的,通过一个for循环写一个可依次每一个发光二极管轮流的循环,然后该循环中通过取数组中的元素来对P2端口的P2.0-P2.7输出高低电平状态组成的十六进制数据,从而实现依次循环点亮各发光二极管,另外还要设置一个延时,即设置一个延时函数从而设置每次循环点亮的间隔时间,实现每隔一段时间点亮一盏灯,首先单片机P2口输出高电平1时对应的发光二极管点亮,而输出低电平0时对应的发光二极管熄灭,采用数组建立数组存储各端口输出高低电平状态组成的十六进制数据,且字节操作法,即unsigned char LED[]={0x01,0x02,0x04,0x08,0x10,

0x20,0x40,0x80},比如十六进制0x01表示的是二进制0000 0001,即此时点亮LED0,其它LED熄灭,十六进制0x02表示的是二进制0000 0010,即即此时点亮LED1,其它LED熄灭,依次进行下去,另外其中还要加上延时函数使各灯延时一段时间。

程序代码如下:

#include<reg51.h>
void delay()
{
  unsigned int i,j;
  for(i=0;i<1000;i++)
  for(j=0;j<125;j++);
}
void main()
{
  unsigned char LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//定义LED[]数组P2口输出数据
  unsigned char a;
  while(1)
  {
  for(a=0;a<8;a++)
  {
    P2=LED[a];
    delay();
  }
  }
}


如下:

1667116069588.jpg


通过for(a=0;a<8;a++)循环语句,即每次通过P2=LED[a]调用建立的LED[]数组,数组中的元素分别为8只发光二极管轮流点亮时,单片机P2口各个位输出高低电平状态组成的十六进制数据,并通过调用先前创建的delay()延时函数延时,下图生成.HEX可执行文件:


1667116079136.jpg


五、实验结果


将.HEX可执行文件导入到单片机内,并点击开始仿真,仿真结果如下,第一盏灯D1亮,而其它灯是熄灭的,随后,第一盏灯D1熄灭,第二盏灯D2亮,第二盏灯D2熄灭,第三盏灯D3亮……,第三盏灯D3熄灭,依次这样下去。

仿真结果如下:

1667116107313.jpg

由于程序中使用while(1)无限循环所以一直会这样循环下去:

1667116116388.jpg

按照电路图来连接实物,使用排线直接将P2.0-P2.7接口和LED&交通灯模块的D1-D8灯连在一起,接线如下图,要注意排线对应的各端口。

在烧录软件中设置单片机型号、串口号、最低最高波特率,然后点击“打开程序文件”,选择之前生成的可执行文件,然后打开开发板上的开关,然后点击“下载/编程”,然后右边框就会显示操作是否成功,此时就可以观察板子上LED&交通灯模块的D1-D8灯的情况:

1667115985069.jpg

相关文章
|
1月前
|
传感器 存储 物联网
单片机的原理与应用
单片机是一种将计算机的CPU、存储器、输入输出接口等功能集成在一块芯片上的微型计算机,被广泛应用于各类控制系统和智能设备中。
64 5
|
3月前
|
C语言
【51单片机】用汇编语言实现点灯、闪烁
【51单片机】用汇编语言实现点灯、闪烁
|
4月前
|
传感器 存储 程序员
《单片机原理与应用及C51编程技术》期末复习笔记
《单片机原理与应用及C51编程技术》期末复习笔记
|
6月前
|
传感器
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
|
6月前
|
芯片
AT89S52单片机的最小应用系统
AT89S52单片机的最小应用系统
96 0
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
|
6月前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
57 1
|
6月前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
94 1
|
6月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
141 0