文档库 最新最全的文档下载
当前位置:文档库 › 单片机实现发光二极管的循环点亮控制

单片机实现发光二极管的循环点亮控制

单片机实现发光二极管的循环点亮控制

LT

一、设计题目

用8031单片机实现发光二极管的循环点亮控制。采用3个按键分别控制发光二极管的启动、停止及每个灯点亮的时间的更换,定时时间有软件控制。

二、设计内容与要求

用8031单片机控制8个发光二极管循环点亮。要求用按键控制点亮时间(如每个灯点亮0.5秒或者1秒等,各灯点亮时间相同)。按启动键开始循环点亮;按停止键后停止。

三、设计目的意义

1、掌握单片机系统中扩展简单I/O接口的方法。

2、掌握单片机的硬件接口电路、8031单片机的内部结构及其编程方法。

3、掌握单片机的最小系统的设计。

4、掌握电路板的设计与制作。。

5、了解程序编写与调试的方法和技巧。

6、综合掌握所学的单片机指令系统和硬件接口电路知识,进行简单的最小系统开发。

四、系统硬件电路图

系统硬件图(图1)包括单片机最小系统(复位电路、晶振电路和相关的控制信号)、外电路接通显示部分、及电源显示部分。

设计硬件电路图时,其基本思想:先通过万能板搭建试验平台,将编好的程序下载到51中,等可以达到预期要求后,最后在PROTEL中设计原理图与PCB,做出电路板。

图1 系统硬件图

五、程序流程图与源程序

5.1流程图

5.2源程序

5.2.1程序设计思想

单片机通入电源后,一直让单片机对8031的P1和P3口进行采集,将8031的P3口开关信号送入8031,以控制流水灯的亮灭及时间。

5.2.2源程序清单

#include

#define uchar unsigned char

#define uint unsigned int

sbit KEY1 = P3^2;

sbit KEY2 = P3^3;

sbit KEY3 = P3^4;

uchar Count = 0,i,k;

uchar code table[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void Delay(uint del)

{

uint i,j;

for(i=0; i

for(j=0; j<1827; j++)

;

}

void Time0_Init()

{

TMOD = 0x01;

TH0 = 0x4c;

TL0 = 0x00;

TR0 = 1;

IE=0x82;

}

void Time0_Int() interrupt 1

{

TH0 = 0x4c;

TL0 = 0x00;

Count++;

}

void Outside1_Init(void)

{

IT0 = 1;

EX0=1;

EA=1;

}

void Outside1_Int(void) interrupt 0 {

EX0 = 0;

Delay(3);

if(KEY1 == 0)

{

while(1)

{

P0 = table[k];

if(KEY2==0)

{

break;

}

}

}

Delay(30);

EX0 = 1;

}

void Main(void)

{

uint i = 0,j=0;

Time0_Init();

Outside1_Init();

while(1)

{ for(i=0;i<8;i++)

{

P0 = table[i];

k=i;

if(KEY3 == 0)

{

Delay(1);

if(KEY3== 0) {

j++;

}

Delay(50);

}

if(j%2==1)

{

while(1)

{

if(Count == 20)

{

Count = 0;

break;

}

}

}

else

{

while(1)

{

if(Count == 10)

{

Count = 0;

break;

}

}

}

}

}

}

六、系统功能分析与说明

6.1系统主要组成部分

(1)单片机的最小系统部分包括晶振电路、复位电路、主电源引脚Vss和Vcc、控制引脚/EA。

(2)晶振电路为单片机正常工作时提供的时钟信号,由两个30pf的无极性电容和晶体压电瓷片组成外部振荡电路,把单片机的XTAL1和XTAL2分别接到外晶体的两端,使电容的另外一端接地就完成了单片机的晶振电路部分的设计。

(3)复位电路,当振荡器正常工作时,在单片机的复位引脚连续保持出现两个机器周期以上的高电平时,就会使单片机复位。AT89S51单片机复位电路主要有上电复手动复位和自动复位两种,在本次试验中我采用手动复位。按键手动复位的工作原理是:当按下按键时,电源对外接电容进行充电,使RST端为高电平,复位键松开后,电容通过内部下拉电阻放电,逐渐使RST端恢复低电平。具体电路见图2复位电路。

图2 手动复位电路

6.2指示灯显示部分

输入信号由3个开关提供,信号的输出采用8个发光二极管显示,相应的信号灯对应相应的开关,用共阴极的连接方法,输入低电平导通。

电源上电显示部分用一个1K的电阻串联一个发光二极管来显示,灯亮表示有电,反之,则电路板没电。

6.3电路板的制作

6.3.1 PCB图的制作

采用了PROTEL DXP 电路绘图软件进行原理图和PCB图的制作,首先,安装此软件,安装完成后,打开该软件,新建工程(DOCUMENT)文件,而以后所建立的原理图文件(*.SCH)、PCB文件(*.PCB)及生成的网路文件(*.NET)都在此工程内。建立原理图文件时,首先,调用库文件中常用的元器件库文件(MISCELLANEOUS DEVICES.LIB)可以调入常用的电阻、电容、开关、晶振、继电器等常用的电器元件,通过ADD/REMOVE 按钮可以调入库文件(以INTEL为开头的库文件),从而调入80S51芯片以及其它电子元件。

原理图建立后,再生成网路图,这一步骤只要通过DESIGN---CREATE NETLISTS 即可生成网络图。

建立PCB图,首先应按照原理图的要求认真准确地填好每一个电器元件的封装,系统没有封装的,必须根据实物画出特别元件的封装,而且,注意元器件的管脚号必须与封装的管脚号相同(比如说,三极管发元器件的管脚是B、E、C,而封装库中的管脚却是1、2、3,必须改变其中之一,使两者一致),否则出错,生成的PCB图不正确。通过检查PCB图,如果没有元器件丢失、管脚丢失和网络连接正确便可以合理地布线,最终生成和覆铜板尺寸一致的PCB图。最终生成的PCB图如下图所示。

图3 PCB电路图

6.3.2 电路板的腐蚀、钻孔和元器件的焊接

将生成好的PCB 图,用电熨斗印刷在基板上,再用FECL3 进行腐蚀、钻孔、焊接相对应的元器件。便完成了电路板的制作。

七、设计体会

1、通过此次单片机最小系统的应用开发,增加了我对电路控制专业的兴趣,尤其是通过单片机进行自动控制方面,在设计及单片机最小系统中,加深了对所学过的知识认识(主要是编程指令的灵活应用、单片机最小系统的理解和PROTEL DXP 软件的灵活使用),还提高了自己的分析问题和解决问题的能力和方法(主要是在调试程序),最后提高了动手能力(主要是在电路板的制作上面),尤为可贵的是学会了查阅相关的资料,并进行独立的原理图设计,电路板的制作和程序的独立调整,以及出现问题时候,独立思考分析解决问题的能力。虽然很辛苦,但是最终能够达到设计课题的要求。

2、初步学会了独立设计电路图的能力。我首先在图书馆查找并综合与课题相关的资料,在头脑中形成一个感性的认识,并渐渐地用所学过的单片机指令(主要是汇编语言)编程,然后再借助试验台,将自己编好的程序一步一步地调试出来,用能够成功程序所需要的硬件电路来返回来设计自己的电路板。初步养成了自己独立解决问题的方法

与能力。

八、参考文献

[1] 张毅刚彭喜元姜守达乔立岩新编MCS-51单片机应用设计.哈尔滨工业大学出

版社,2003.

[2] 黄海萍汇编语言与微机接口技术实验教程.国防工业出版社,2007.

[3] 何光明童爱红王国全 C语言实用培训教程.人民邮电出版社,2003.

单片机实验之二极管循环点亮

实验一P1口亮灯实验 一、实验目的 (1)学习P1口的使用方法; (2)学习延时子程序的编写。 二、实验内容 P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 三、实验预备知识 (1)P1口为准双向口,可定义为输入,也可定义为输出。 (2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHZ)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 四、程序框图 五、实验步骤 1、实验连线 P1.0~P1.7用插针连至L1~L8 2、PC环境 在与PC联机状态下,打开桌面图标“MCS-51集成开发环境”,下载PH51\he01.asm,编译、连接、装载,用连续方式运行程序。 3、观察运行结果 在连续运行方式下,观察发光二极管闪亮移位情况。 4、终止运行 按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。 六、思考 修改延时常数,使发光二极管闪亮时间改变。 修改程序,使发光二极管闪亮移位方向改变。

七、实验电路 八、实验程序 ORG 0790H ;---------------------------------------------------------- SE18: MOV P1,#0FFH ;送P1口 LO34: MOV A,#0FEH ;L1发光二极管点亮LO33: MOV P1,A LCALL SE19 ;延时 RL A ;左移位 SJMP LO33 ;循环 ;---------------------------------------------------------- SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35 DJNZ R6,LO36 ;延时 RET ;---------------------------------------------------------- END

单片机教学单元设计2 LED循环点亮控制

《单片机应用技术》课程单元2教学设计 单元标题: LED循环点亮控制 单元教学学时10 在整体设计中的位 置 第2次 授课班级上 课 时 间 周月日第节 至 周月日第节 上课 地点 教学目标 能力目标知识目标素质目标 1.能完成单片机的输入输出电路设 计与制作; 2.能应用C语言程序完成单片机输入 输出控制,实现对LED循环点亮控制 的设计、运行及调试。 1.知道P0、P1、P2 和P3功能及应用; 2.知道内部RAM的 地址分配及sfr寄 存器; 3.知道C语言数据 类型、常量和变量; 4.会利用单片机 I/O口实现开关控 制LED循环点亮控 制。 1.具有对新知识、 新技术的学习能 力; 2.具有决策能力, 能记录、收集、处 理、保存各类专业 技术的信息资料; 3.具有科学的创 新精神、决策能力 和执行能力。 能力训练任务任务一:LED循环点亮控制 使用STC89C52单片机,P1口引脚接8个LED的阴极,通过程序按一定的规律向P1口的引脚输出低电平和高电平,控制八只发光二极管循环点亮。任务二:开关控制LED循环点亮 用P3.0作输入接开关SW,P1口作输出接8个LED,通过开关SW控制LED 循环点亮。 任务三:步进电机控制 使用STC89C52单片机,由P1口的P1.0、 P1.1 、P1.2和 P1.3四个引脚,通过步进电机驱动电路分别接在四相步进电机的四相绕组,步进电机的励磁方式采用四相双四拍,通过程序控制步进电机正转。

单元教学进度 步骤 教学内容及能力/知识目 标教师活动学生活动 时间 (分 钟) 1 (LED 循环点亮控制)教学内容: 使用STC89C52单片机,P1口 引脚接8个LED的阴极,通过程序 按一定的规律向P1口的引脚输出 低电平和高电平,控制八只发光二 极管循环点亮。 能力目标: 1.能完成单片机的输入输出电路设 计与制作; 2.能应用C语言程序完成单片机输 入输出控制,实现对LED循环点亮 控制的设计、运行及调试。 知识目标: 1.知道P0、P1、P2和P3功能及应 用; 2.知道内部RAM的地址分配及sfr 寄存器; 1.演示LED循环点 亮控制的电路设计 和程序设计 1.完成LED循环 点亮控制任务 180 2.讲解并行I/O端 口电路和MCS-51单 片机存储空间 2.学习输入输出 端口和单片机存 储空间分配的知 识,并思考课后 有关问题 3.演示P0口外接上 拉电阻的技能训练 3.完成P0口外接 上拉电阻的技能 训练 2 (开关控制LED循环点亮)教学内容: 用P3.0作输入接开关SW,P1 口作输出接8个LED,通过开关SW 控制LED循环点亮。控制要求: 开关SW打开,LED循环点亮; 开关SW合上,LED停止循环点亮。 能力目标: 1.能完成单片机的输入输出电路设 计与制作; 2.能应用C语言程序完成单片机输 入输出控制,实现用开关控制LED 循环点亮的设计、运行及调试。 知识目标: 1.会利用单片机I/O口实现多LED 的控制。 2.知道C51的数据类型、常量和变 量。 1.演示任务的操作 过程 1.完成基本任务 要求 135 2.讲解C51的数据 类型、常量和变量 2.学习C51的数 据类型并讨论与 标准C的不同

单片机8个led灯循环点亮程序

单片机8个led灯循环点亮程序 一、前言 单片机是一种非常重要的电子元件,它可以通过编程来实现各种功能。其中,点亮LED灯是最基础的操作之一。本文将介绍如何使用单片机 8个LED灯循环点亮。 二、硬件准备 1. 单片机:STC89C52RC或其他8051系列单片机; 2. LED灯:8个; 3. 电阻:8个(220欧姆); 4. 面包板:1个; 5. 杜邦线:若干。 三、程序设计 首先,我们需要了解一些基本的概念和知识: 1. 端口:单片机的I/O口被称为端口,其中P0、P1、P2、P3四个端口分别对应着不同的引脚。

2. 输出:通过控制端口输出高电平或低电平来控制外部设备。 3. 延时函数:为了让程序在执行时停留一段时间,需要使用延时函数。 接下来,我们开始编写程序。具体步骤如下: 1. 定义引脚 首先,我们需要定义每个LED所对应的引脚。这里我们将8个LED分别连接到P0口的0~7引脚上。 sbit led0=P0^0; sbit led1=P0^1; sbit led2=P0^2; sbit led3=P0^3; sbit led4=P0^4; sbit led5=P0^5; sbit led6=P0^6; sbit led7=P0^7; 2. 定义延时函数 为了让程序在执行时停留一段时间,我们需要定义一个延时函数。这 里我们使用循环来实现延时。

void delay(unsigned int i){ while(i--); } 3. 循环点亮LED灯 接下来,我们就可以开始循环点亮LED灯了。这里我们使用for循环来实现。 void main(){ while(1){ for(int i=0;i<8;i++){ switch(i){ case 0:led0=1;break; case 1:led1=1;break; case 2:led2=1;break; case 3:led3=1;break; case 4:led4=1;break; case 5:led5=1;break; case 6:led6=1;break; case 7:led7=1;break; }

单片机实验

单片机实验 实验一 P1口实验一 一、实验目的: 1、学习P1口的使用方法。 2、学习延时子程序的编写和使用。二、实验设备: EL-8051-III型单片机实验箱三、实验内容: 1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2、P1口做输入口,接八个按钮开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。四、实验步骤: 执行程序1〔T1_1.ASM〕时:P1.0-P1.7接发光二极管L1-L8。 执行程序1〔T1_1.ASM〕时:P1.0-P1.7接平推开关K1-K8;74LS273的00-07接发光二极管L1-L8;74LS273的片选端CS273接CS0。五、实验程序:程序1 NAME T1_2 ;P1口输入实验 OUT_PORT EQU 0CFA0H CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV P1,#0FFH ;复位P1口为输入状态 MOV A,P1 ;读P1口的状态值入累加器A MOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针DPTR MOVX @DPTR,A ;将 累加器A的值赋给DPTR指向的地址 JMP START ;继续循环监测端口P1的状态END 程序2 NAME T1_2 OUT_PORT EQU 0CFA0H CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV P1,#0FFH MOV A,P1 MOV DPTR,#OUT_PORT MOVX @DPTR,A JMP START END 六、实验体会: 通过本次实验,稳固了课本上的知识,学会了P1口的使用方法以及延时子程序的编写和使用,提高了对P1口的使用能力。 实验二简单I/0口扩展实验——交通灯控制实验 一、实验目的:

单片机控制左右来回循环的流水灯

左右来回循环的流水灯 设计要求 8个发光二极管LEDO〜LED7经限流电阻分别接至P1 口的P1.0〜P1.7引脚上,阳极共同接高电平。编程实现制作左右来回循环的节日彩灯,显示规律如下图所示。 £——►8个LED依次左移点亮------ ►&个LED依次右移点亮------ 题37图节日彩灯的花样显示的规律 为了使显示效果更加绚丽多彩,P1端口8个引脚分别接有不同颜色的发光二极管。具体如题37表所示。 题37表 P1 口 8个引脚的不同颜色的发光二极管 使用C51编流水灯程序以及设计相应的硬件电路十分简单,且有多种方法。本方案力求 程序最简化最清晰原则,用NS图(盒图)表示算法如下:

程序中设置中间变量 temp 用来给P1 口赋值,命令_crol_和_cror_用于使temp 左移或右 移,例如当 temp=11111110B 时,执行 _crol_(temp,1)之后 temp=11111101 ,应用此两条 语句必须把头文件vintrins.h >包含进来。 全部代码如下: #in clude #in clude< intrin s.h> un sig ned char temp; LED 的P1 口赋值 int a; void delay(void); void mai n() temp=0xfe; // 给 temp 赋初值 //定义字符变量 temp,temp 左移或右移并给连接 II 定义延迟函数delay()

P1=temp; //temp 赋值给 P1 口,第一个 LED (红色)点亮 while(1) //主程序,括号中的程序将一直循环 for(a=0;a<7;a++) //左移部分, LED 从左到右依次点亮 { temp=_crol_(temp,1); //_crol_ 语句控制变量 temp 左移 delay(); //每个灯点亮之后延迟一会在点下一个灯 P1=temp; } for(a=0;a<7;a++) //右移部分, LED 从右到左依次点亮 { temp=_cror_(temp,1); //第 8 个灯点亮后开始右移程序, LED 从右向左点亮 delay(); P1=temp; } } } //延时子程序 void delay()

实验一 LED指示灯循环控制

实验一LED指示灯循环控制 一、实验目的 1.进一步熟悉编程和程序调试 2.学习P1口的使用方法 3.学习延时子程序的编写和使用 二、实验说明 P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。 三、实验步骤及参考例子 实验步骤说明: 本实验需要用到单片机最小应用系统和十六位逻辑电平显示模块。 用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管点亮。 1.使用单片机最小应用系统。根据实验要求,用proteus仿真软件绘制电路原理图,用数据线连接单片机P1口与LED灯。 2.打开Keil uVision4仿真软件,首先建立本实验的项目文件,输入源程序,进行编译、调试,直到编译无误,生成hex文件。可通过单步调试,来查看I/O的状态 3.在proteus环境中,把.hex文件下载到单片机中,运行观察发光二极管显示情况是否与设计程序中一致。 参考例子: 1)点亮板子上的第一个灯L0 2)点亮板子上的L0、L2、L4、L 6灯,与L 1、L 3、L 5、L 7灯交替闪烁 3)流水灯:从L 0—L 7依次点亮 四、参考程序 1) #include void main() { P1=0xfe; } 2) #include #define uint unsigned int #define uchar unsigned char void delay(); void main() { while(1)

{ P1=0xaa; delay(); P1=0x55; delay(); } } void delay() { uint x,y; for(x=100;x>0;x--) for(y=600;y>0;y--); } 3) #include #include #define uint unsigned int #define uchar unsigned char uchar temp; void delay(uint); void main() { temp=0xfe; while(1) { for(num=0;num<8;num++) { P1=temp; delay(100); temp=_crol_(temp,1); P1=0xff; delay(100); }

单片机控制LED灯点亮(C语言)

单片机控制LED灯点亮 在嵌入式系统开发中,单片机控制LED灯是入门阶段必不可少的实验。本文将介绍如何在单片机中使用C语言编程控制LED灯点亮。 硬件准备 本实验所需硬件材料如下: •单片机主板 •LED灯 •杜邦线 根据图示,将单片机主板上的引脚和LED灯连接起来。 单片机引脚 LED灯 P0.0 +端 GND -端 软件准备 我们选择Keil uVision作为编程环境来编写代码。在开始编写代码之前,需要下载并安装Keil uVision软件。 新建工程 在Keil uVision软件中,通过菜单Project -> New µVision Project新建一个工程。 新建工程 新建工程 在弹出的对话框中,选择保存工程的路径,命名工程名字,选择MCU型号并确定。 选择MCU型号 选择MCU型号 添加源文件 在Keil uVision软件中,将编写的源代码文件添加到工程中。选择菜单Project -> Add New Item,在弹出的对话框中选择新建一个源文件。

添加源文件 添加源文件 编写代码 以下是控制LED灯点亮的C语言代码 #include int main(void) { while(1) { P0 = 0x01; // P0.0 点亮LED灯 } } 程序的执行流程如下: 1.定义一个无限循环,反复执行控制LED灯点亮的操作。 2.将P0.0 IO口设为高电平,点亮LED灯。 编译和烧录 完成编写代码之后,可进行编译和烧录。选择菜单Project -> Build Target 进行编译,将生成的hex文件烧录到单片机上即可。 本文介绍了如何在单片机中使用C语言编程控制LED灯点亮的操作。通过对硬件和软件的介绍,读者可以学习到单片机的基础知识与相关编程知识,对深入学习嵌入式系统和单片机开发有很大的帮助。

实验三—— LED指示灯循环控制

实验课程:单片机原理及应用 实验名称: 实验三——LED指示灯循环控制 实验日期: 2013 年 4 月10 日 一、实验目的 熟悉μVision3编译软件、掌握C51编程与调试方法。 二、实验内容 1、按照教材P227的图A.32,绘制实验三电路原理图 2、根据功能要求,编写C51程序 3、练习μVision3程序动态调试方法,并最终实现8个LED灯依次点亮的功能: P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms 4、观察仿真结果,完成实验报告。 三、实验要求 1、采用proteus + Keil联合仿真法运行C51程序,并练习采用单步、断点以及监视窗等手段进行程序调试 2、提交的实验报告中应包括:电路分析及原理图、编程思路及C51源程序、调试过程简述,仿真运行效果以及实验小结。 3、提交实验报告的电子邮件主题及存盘 1、电路分析及原理图

图1 LED指示灯循环控制电路原理图 图中LED指示灯外接于P0口。由于P0口作为I/O口使用时是漏极开路的,需要外接上拉电阻因而图中还加有8只100的电阻。此外,还包括时钟电路和复位电路图中的时钟电路和复位电路与实验1计数显示器相同。 2、编程思路及C51源程序 编程要求:程序启动后8只发光二极管做循环点亮控制其中灯亮顺序为P0.0 →P0.1→P0.2→P0.3→……P0.7→P0.6→P0.5→……→P0.0无限循环两次LED 灯亮的时间间隔约为0.5秒。 根据题目要求程序中应该有一个延时子程序用来每次延时0.5秒还要有 两个循环结构分别控制由上到下和由下到上还应该有一个控制LED发光的数据。 LED指示灯循环控制程序如下:

单片机控制发光二极管的原理

单片机控制发光二极管的原理 以单片机控制发光二极管的原理为标题,我们来探讨一下这个过程的具体内容。 一、引言 发光二极管(LED)是一种常见的电子元件,可以将电能转化为光能,广泛应用于指示灯、显示屏等领域。而单片机(MCU)作为一种集成电路,具有处理和控制数据的能力,可以通过控制电流的方式来控制LED的亮暗。本文将介绍单片机控制发光二极管的原理。 二、发光二极管的基本原理 发光二极管是一种半导体器件,由两个不同材料的P型和N型半导体材料构成。当正向电压施加在LED的两端时,电流会从P区域流过N区域,导致电子与空穴复合并释放能量,从而产生光。不同材料的能隙决定了LED发出的光的颜色。 单片机可以通过控制IO口的输出电平来控制发光二极管的亮暗。以控制LED为例,首先需要将LED的正极连接到单片机的一个IO口,将LED的负极连接到单片机的地线。然后,通过控制IO口的输出电平,即可控制LED的亮灭。 当IO口输出高电平时,LED的正极接收到高电压,形成正向偏置,电流从P区域流向N区域,LED发光。当IO口输出低电平时,LED的正极接收到低电压,形成反向偏置,电流无法流过LED,

LED不发光。 四、控制LED的亮度 除了控制LED的亮灭外,单片机还可以通过改变IO口输出电平的方式来控制LED的亮度。LED的亮度与通过它的电流大小有关,而电流的大小可以通过控制IO口输出电平的高低来实现。 在单片机中,可以通过PWM(脉宽调制)技术来实现LED的亮度调节。PWM技术是通过调整IO口的高电平和低电平的时间比例来控制电流的大小,从而控制LED的亮度。通过改变脉冲的占空比,即高电平的时间与一个周期的比例,可以改变LED的亮度。 五、应用举例 单片机控制发光二极管的原理在实际应用中有着广泛的应用。例如,在智能家居系统中,可以利用单片机来控制LED灯的亮暗,实现灯光的调节和变换。在电子表格中,可以使用单片机控制LED显示屏的亮度和显示内容,实现数字的显示。 六、总结 通过对单片机控制发光二极管的原理的介绍,我们了解到单片机通过控制IO口的输出电平来控制LED的亮暗和亮度。这种原理在实际应用中具有重要的作用,可以实现各种功能,如灯光控制、显示控制等。希望通过本文的介绍,读者对单片机控制发光二极管的原理有了更清晰的理解。

单片机(发光二极管的循环闪亮)

运用proteus软件进行仿真,设计一个单片机应用系统,要求至少要有I/O扩展。编写相应程序仿真出结果。另加上文档说明,设计的内容,功能及思路。 发光二极管的循环闪亮 一.设计任务 如下图所示,AT89C51扩展I/O接口芯片8255A端口A 的PA0-PA7接8个发光二极管D1- D8。编写程序使8个二极管循环闪亮。 二.设计内容 实现发光二极管的循环闪亮。 三.设计思路 1.根据题目要求设计出程序; 2.在proteus中设计硬件,设计出要仿真的电路图; 3.在proteus中把设计好的程序加载到单片机芯片上; 4.运行仿真,看结果 四.硬件设计 1.系统硬件连线

单片机的P0.0~P0.7接在8255的数据端的D0~D7上,把8255A端口A的PA0- PA7连接8个发光二极管。 2.Proteus仿真图 五.软件设计 1.流程图

2汇编源程序 ORG 0000H LJMP START ORG 1000H START:MOV A,#80H ;设置控制字 MOV DPTR,#0300H ;给控制端口地址:0300H MOVX @DPTR,A ;将控制字写到控制端口的控制寄存器中LOOP:MOV A,#00H ;将A中的设置为00H MOV DPTR,#0000H ;将PA端口地址给DPTR MOVX @DPTR,A ;将A中内容传送到PA,点亮发光二极管LCALL DELAY ;延时 MOV A,#0FFH MOVX @DPTR,A LCALL DELAY ;延时 SJMP LOOP 循环跳转 DELAY:MOV R7,#1DH ;延时0.4秒 DL1:MOV R6,#46H DL0:MOV R5,#61H DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1 RET END

单片机指示灯循环控制实验报告

嘉应学院物理与光信息科技学院单片机原理及应用实验 学生实验报告 实验项目:指示灯循环控制 实验地点:工A310 班级: 姓名: 座号: 指导老师: 实验时间:年月日

一、实验目的 掌握uVision3编译软件,掌握C51编程与调试方法。 二、实验原理 实验原理图如图所示: 图中中8只LED指示灯接于P0口,且都接有上拉电阻。时钟电路、复位电路、片选电路与前面的实验电路相同。 在编程软件的配合下,要求实现如下功能:8只发光二极管做循环点亮控制,且亮灯顺序为D1,D2,D3,---D8,D7,---D1 , 编程原理为:首先使P0.0 1,其余端口0,这样可使D1灯亮,其余灯灭;软件延迟0.5s后,使P0口整体左移1位,得到P0.1 1,其余端口0,这样可使D2灯亮其余灯灭:照此思路P0整体左移7次,再右移7次,如此无限往复即可实现上述功能。三、实验内容: (1)熟悉μVision3编程软件,了解软件结构与功能; (2)完成实验3的C51语言编程; (3)掌握在μVision3中进行C51程序开发方法。 四、实验步骤 1、提前阅读与实验3相关的阅读材料; 2、参考书本实验3,在ISIS中完成电路原理图的绘制: (1).启动ISIS模块 从Windows的“开始”菜单中启动Proteus ISIS模块,可进入仿真件的主界面,如图所示

可以看出,ISIS的编辑界面是标准的Windows软件风格,由标准工具栏、主菜单栏、绘图工具栏、仿真控制工具栏、对象选择窗口、原理图编辑窗口和预览窗口等组成。 (2).元件和电源的选取、摆放及属性编辑,总线与标签的画法等内容 元件的选取:单击左侧绘图工具栏中的“元件模式”按観和对象选择按観“P”,弹出“Pick D evices”元件选择窗口,如图: 单击对象选择列表中的元件名称,预览窗口中出现的图形单击编辑窗口,元件以红色轮廓图形出现(选中状态),拖动鼠标使元件轮廓移动到所需位置,再次单击可固定摆放位置,同时也撤销选中状态(变为黑色线条图形)。 编辑属性与总线: 对摆放好的元件双击或者右键后选择“编辑属性”即可对元件的属性进行修改。 最后效果图为:

单片机循环灯控制设计

单片机原理及系统课程设计 专业: _______________________ 班级: _______________________ 姓名: _______________________ 学号: _______________________ 指导教师: ____________________ 兰州交通大学自动化与电气工程学院 2012年7月1日

1.引言 随着社会经济的发展,城市美化问题越来越引起人们的关注。而在城市中处处可以看到霓虹灯的身影。本课程设计应结合《单片机原理与系统设计》课程的基础理论,重点强调实际应用技能训练,包括单片机系统设计的软件和硬件两部分其课程设计任务是使学生通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步掌握并具备应用单片机进行设备技术改造和产品开发的能力,培养学生的创新意识,提高学生的动手能力和分析问题、解决问题的能力。在该设计中利用单片机来实现循环的闪烁。单片机控制循环灯是现今人们最普及的方法,因为它不但具有操作简单,成本低廉,无危险性等特点,还可以设计成由简单到复杂的多种形式的电路,所以它是当今社会必不可少控制循环灯的工具。 2.设计方案及原理 通过分析项目要求实现的功能,可以将设计思路概括为以下8个步骤: ⑴ 通过累加器A合P1 口送二进制数,驱动八个发光二极管,低电平发光,高电平熄灭。 ⑵编写延时一秒的子程序DELAY可通过软件定时,也可通过与定时器中断配合来实现。 ⑶调用DELAYS时程序。 ⑷ 送OFFH合P1 口,使发光二极管熄灭,再调用DELAYS时程序。使发光二极管闪烁。 ⑸ 送闪烁次数10给寄存器R0,通过DJNZ旨令,配合DELAY!时程序,实现发关二极管闪烁,当闪烁十次后结束循环。 ⑹ 执行RR循环右移)指令,指向下一个二极管,重复第5步。 ⑺当8个发光二极管从左至右依次闪烁完毕后,执行RL (循环左移)指令,重复第5步,使二极管从右至左一次循环闪烁。 ⑻ 当从右至左循环结束后,重复第6步,循环闪烁。 由于在起初的硬件中选择了共阳的二极管接法,所以通过给P1 口输送低电平0,就可以使二极管发光,输送高电平1可使二极管熄灭。 本系统是利用8051单片机的基本原理,在单片机的P1 口接8个发光二极管,通过外部中断、定时器中断和位扫描等程序控制实现每个发光二极管指示灯闪烁10次,并依次循环。正常状态下,这8个灯(发光二极管)按一定流速从下向上流动(假设这8个灯依次从上向下接在P1.0- P1.7上)。在该项目中使用了keil编程软件和proteus仿真软件,很好的实现了项目所要求的所有功能。单片机中的定时器有四种工作方式,由于工作方式0和工作方式1计数溢出后,计数器都全为0,因此,循环定时或循环计数应用时就

单片机实验一发光二极管实验

单片机实验一发光二极管实验

实验一发光二极管实验 一、实验目的 1、掌握AT89C51 单片机IO 口的输入输出。 2、掌握用查表方式实现AT89C51 单片机IO 口的控制。 3、练习单片机简单延时子程序的编写。 4、熟练运用Proteus 设计、仿真AT89C51 系统。 二、实验原理 1、单片机最小系统由单片机芯片、时钟电路以及复位电路构成。 2、I/O 口 P0 口:8 位双向I/O 口。在访问外部存储器时,P0 口可用于分时传送低8 位 地址总线和8 位数据总线。能驱动8 个LSTTL 门。 P1 口:8 位准双向I/O 口(“准双向”是指该口内部有固定的上拉电阻)。能驱动4 个LSTTL门。 P2 口:8 位准双向I/O 口。在访问外部存储器时,P2 口可用于高8 位地址总线。能驱动4 个LSTTL 门。 P3 口:8 位准双向I/O 口。能驱动4 个LSTTL 门。P3 口还有第二功能。 P1 口作为输出口时与一般的双向口使用方法相同。当P1 口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据可能是不正确的。

三、设计步骤: 【PROTEUS 电路设计】 在ISIS 中进行电路图设计,发光二极管流水灯实验装置电路原理图如下图所示。 图一 1、按照元件清单从PROTEUS 库中选取元器件,进行第 2、 3、 4、 5、6 步,完

3、放置电源和地; 4、连线; 5、参照原理图进行元件属性设置; 6、电气检查。 【源程序设计】 1、流程图: 2、在KeilC 中进行源程序设计: 3、编译、生成目标代码 【PROTUES 仿真】 1、在AT89C51 属性页中加载KeilC 中生成的目标代码; 2、仿真、调试代码 3、注意使用观察窗口 四、实验内容 1、编写延时子程序,延时时间为0.1S。 void delay() { uint i,j; for(i=0;i<100;i++) for(j=0;j<128;j++) } 2、见图一。通过AT89C51 单片机控制8 个发光二极管发光,实现亮点以由上到下循环移动,间隔时间为0.1S。 #include #include #define uchar unsigned char #define uint unsighed int uint i,j; void delay(uint x) { for(i=0;i

单片机实验二--P1口输出实验(流水灯)

实验二P1口输出实验(流水灯) 一. 实验要求 1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 二. 实验设备 1、I B M —P C 系统机(或兼容机)一台; 2、系统软件:WAVE6000、仿真软件PROTEUS。 三. 实验目的 1、学习PROTEUS仿真软件的使用 2、学习P1口的使用方法。 3、学习延时子程序的编写和使用。 四.实验电路及连线 五.实验说明

1、延时子程序的延时计算问题 对于程序Delay: MOV R6,#0H MOV R7, #0H DelayLoop: DJNZ R6,DelayLoop DJNZ R7,DelayLoop RET 查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为: (256×255+2)×2×12÷6 ≈261ms 2、使用PROTEUS仿真软件 A、安装PROTEUS: 1.打开Proteus 7.12完美破解版目录,先安装Setup71.exe,提示Licence时选择"本地"并指向"crack"-->MAXIM_LICENCE.lxk 2.安装完成后将crac-->BIN中的文件复制到安装目录的..\BIN下替换原有的文件 B、打开老师提供的FlashLED仿真图,用鼠标左键双击AT89C52芯片,会弹出Edit Component对话框,在Program File中选择已编译好的HEX文件,点OK退出。 C、点左下角三角尖,则开始仿真。

六.实验框图

七、实验程序: ORG 0000H JMP MAIN ORG 0100H MAIN: MOV A,#01111111B LOOP1: MOV P1,A CALL DELAY RR A JMP LOOP1

51单片机8个发光二极管闪烁设计方案

51单片机8个发光二极管闪烁设计方案 1. 方案目标 本方案旨在设计一个基于51单片机的电路和程序,实现8个发光二极管的闪烁效果。具体目标如下: 1.实现8个发光二极管的交替闪烁。 2.控制每个发光二极管的亮灭时间和频率。 3.确保方案具有可行性和高效性。 2. 实施步骤 2.1 硬件设计 根据目标需求,我们需要以下硬件组件: 1.51单片机(如STC89C52):作为主控芯片,负责控制8个发光二极管的亮 灭状态。 2.8个发光二极管:用于显示亮灭状态。 3.8个电流限流电阻:用于限制发光二极管的工作电流,防止过流损坏。 4.连接线:用于连接主控芯片、发光二极管和电流限流电阻。 硬件连接步骤如下: 1.将主控芯片与发光二极管之间通过连接线连接起来。 2.将每个发光二极管与对应的电流限流电阻连接起来,确保电流在安全范围内。 2.2 软件设计 软件设计包括编写主控芯片的程序代码,实现对8个发光二极管的控制。 以下是一个基本的软件设计思路: 1.定义8个IO口用于连接发光二极管,并设置为输出模式。 2.定义一个变量ledState表示当前发光二极管的亮灭状态,初始值为0。 3.在主循环中,通过改变ledState的值来控制发光二极管的亮灭状态。 4.使用延时函数或定时器来控制每个发光二极管的亮灭时间和频率。 具体步骤如下: 1.初始化IO口:将8个IO口设置为输出模式。 2.定义变量:定义一个整型变量ledState用于记录当前发光二极管的亮灭状 态,默认为0。

3.进入主循环: –设置第一个发光二极管为亮,其他7个发光二极管为灭。 –延时一段时间(如200ms)。 –设置第一个发光二极管为灭,第二个发光二极管为亮,其他6个发光二极管为灭。 –延时一段时间(如200ms)。 –重复以上步骤,依次控制每个发光二极管的亮灭状态。 4.返回主循环。 2.3 预期结果 通过上述硬件和软件设计,我们可以实现8个发光二极管的交替闪烁效果。具体预期结果如下: 1.8个发光二极管按照顺序交替亮灭。 2.每个发光二极管的亮灭时间和频率可以根据需求进行调整。 3.方案具有可行性和高效性,能够稳定运行。 3. 可行性和效率分析 3.1 可行性分析 本方案基于51单片机进行设计,51单片机具有丰富的IO口和强大的控制能力,能够满足本方案的需求。发光二极管作为常见的显示元件,在市场上易于获取。 3.2 效率分析 本方案使用了简单直接的硬件连接方式,并且采用了循环控制每个发光二极管的亮灭状态,因此在实际应用中具有较高的效率。 结论 本方案通过51单片机实现了8个发光二极管的闪烁效果,并提供了详细的硬件和软件设计步骤。方案具有可行性和高效性,能够稳定运行并满足预期要求。通过该方案,可以实现各种需要发光二极管闪烁效果的应用场景,如LED灯带、信号指示灯等。

相关文档