单片机闪烁灯的制作
实验1 KEIL+PROTEUS使用——单灯闪烁
![实验1 KEIL+PROTEUS使用——单灯闪烁](https://img.taocdn.com/s3/m/d3019acabb4cf7ec4afed045.png)
注意:使用的是连接导线,不是画线工具,否则无法仿真。
图1-24绘制系统原理图
※系统仿真
(10)选中AT89C51单片机,并单击打开“Edit Component”对话框,在“Program File”栏后单击选择程序按钮,如图1-25所示。
※新建工程
(2)新建工程在“Project”菜单中选择“NewuVisionProject…”命令。如图1-4所示。
图1-4新建工程
(3)弹出新建工程窗口如图1-5所示,在对话窗中创建名为“test1”的工程,单击“保存”按钮。
注意:将新建的工程保存在准备工作中新建的“test1”文件夹中。
图1-5新建工程窗口
图1-22所需元件
※摆放元件
(7)在工作区中加添加完所需元件,并摆放到合适的位置。
※添加电源/地
(8)在工具栏上单击“Terminals Mode”按钮,在窗口中选择电源“POWER”添加到工作空间中,如图1-23所示。
注意:电源为“POWER”,接地为“GROUND”。
图1-23添加电源
※绘制电路
图1-11源文件添加到工程
※工程选项设定
(11)在工程(Project)窗口的“Target 1”上单击鼠标右键,弹出如图1-12所示的右键菜单中选择“Options for Target‘Target 1’…”。
图1-12选项设置
(12)在弹出如图1-13所示的“Options for Target‘Target 1’”窗口中选择“Output”选项卡,并勾选“Creat Hex File”选项,单击“OK”按钮关闭选项窗口。
2
单灯闪烁流程图如图1-2所示。
单片机led灯闪烁实验报告
![单片机led灯闪烁实验报告](https://img.taocdn.com/s3/m/f3d0193a854769eae009581b6bd97f192279bf6b.png)
单片机led灯闪烁实验报告1. 实验目的:掌握单片机控制LED灯闪烁的方法,了解单片机数字输入输出端口的使用。
2. 实验材料:STM32F103C8T6开发板、杜邦线、LED灯3. 实验原理:在单片机中,数字输入输出口(IO口)是实现数字输入输出的重要接口。
在单片机中,IO口除了可以做通用输入输出口以外,还有很多专用功能口,如SPI 口、I2C口等。
单片机控制LED灯闪烁的原理就是利用IO口的输出功能,通过改变输出口的电平信号来控制LED的亮灭。
当IO口输出高电平时,控制LED为亮状态;当IO 口输出低电平时,控制LED为灭状态。
4. 实验步骤:(1)将LED灯的正极连接到单片机的GPB5号引脚(即B端口的5号引脚),将LED的负极连接到地。
(2)在Keil中新建工程,并配置IO口为输出口。
(3)编写程序,利用GPIO_WriteBit函数对GPB5号引脚进行高低电平控制,实现LED灯的闪烁。
(4)将程序下载到开发板中,观察LED灯的闪烁情况。
5. 实验代码:#include "stm32f10x.h"void Delay(uint32_t nCount) {for(; nCount != 0; nCount);}int main(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);while(1) {GPIO_SetBits(GPIOB, GPIO_Pin_5);Delay(0xFFFFF);GPIO_ResetBits(GPIOB, GPIO_Pin_5);Delay(0xFFFFF);}}6. 实验结果:当程序下载到开发板中时,LED灯会以一定频率闪烁。
单片机闪烁灯实验报告
![单片机闪烁灯实验报告](https://img.taocdn.com/s3/m/c9d62c5e7f21af45b307e87101f69e314332fa96.png)
单片机闪烁灯实验报告引言:单片机是一种集成电路,有着微处理器、存储器、计时器、通信端口等组件,可以按照预定程序进行运算控制。
在实际应用中,单片机的应用十分广泛,其中包括了各种各样的电子产品。
本实验以单片机的闪烁灯实验为例,介绍单片机的基本工作原理和应用。
一、实验介绍:本次实验的主要目的是通过调试单片机的程序,控制单片机的输出口,实现闪烁灯的功能。
同时,本实验还能让学生了解单片机的基本工作原理,熟悉单片机的编程语言和编程方法。
二、实验原理:单片机是一种集成电路,包含了微处理器、存储器、计时器、通信端口等组件,可以按照预定程序进行运算控制。
单片机的工作原理如下:1、单片机的处理器从存储器中读取指令,然后运行指令,执行相应的操作。
2、单片机的计时器用于产生精确的计时信号,以便处理器控制各种外设的时间。
3、单片机的输入和输出口用于与其他设备交换数据,包括传感器、执行器、显示器等。
本实验的闪烁灯功能,是通过控制单片机的输出口完成的。
单片机的输出口分为高电平和低电平两种状态,通过编写相应的程序,可以实现输出口的状态控制。
三、实验内容:本实验需要用到的材料包括:单片机、LED灯、电阻、面包板、电源等。
1、将单片机连接至电源,打开电源开关,待单片机启动后,将其连接至电路。
2、将LED灯连接至单片机的输出口,同时,将电阻连接至LED灯的一个端口,另一端口连接至地。
3、编写程序,使单片机控制输出口的状态,实现LED灯的闪烁。
四、实验步骤:1、准备工作:将单片机连接至电源并启动,将LED灯和电阻连接至电路。
2、编写程序:使用软件编辑器编写控制单片机输出口的程序。
3、调试程序:使用调试工具检查程序的正确性。
4、运行程序:将程序下载至单片机,观察LED灯的闪烁情况。
五、实验结果:经过不断的调试和修改,最终成功实现了LED灯的闪烁功能。
通过观察LED灯的闪烁状态,我们可以看到单片机的输出口不断地切换状态,实现了LED灯的闪烁。
单片机应用技术项目2 闪烁灯
![单片机应用技术项目2 闪烁灯](https://img.taocdn.com/s3/m/b96b197a1ed9ad51f01df27f.png)
知识目标:
1.掌握51单片机并行输入/输出(I/O)端口的结构和功能;
2.掌握P0、P1、P2、P3口的操作方法; 3.理解单片机的时钟和时序; 4.掌握C语言源程序结构; 5.掌握C语言基本语句; 6.重点掌握循环语句while、do…while、for的语法特点; 7.掌握延时程序设计和调试方法。
1. 表达式语句就是一个表达式加上一个分号。
其一般形式如下:
表达式; 执行表达式语句就是计算表达式的值 如:a++; x=1; 2. 空语句 用一个分号表示,其一般形式为:
;
程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。 在C51程序中常常把空语句作为循环体,用于消耗CPU
时间等待事件发生的场合。
当f =6MHz时,时钟周期=1/ f =1/6µs,机器周期
=(1/6)×12µs=2µs 当f=12MHz时,时钟周期=1/f=1/12µs,机器周期 (1/12)×12µs=1µs
C基本语句
C语言的语句可分为以下五种:
表达式语句
空语句 复合语句
选择语句Biblioteka 循环语句表达式语句和空语句
复合语句(程序块) 示例
/*P1口8个LED灯依次点亮*/ main( ) {
图2- 4时钟周期、机器周期、指令周期之间的关系图
时钟周期、机器周期、指令周期的计算
【例2-1】MCS-51的时钟周期、机器周期、指令周期是如何分配的
?当晶振频率分别为6MHz和12MHz时,一个机器周期为多少µs?
解:MCS-51单片机每个状态周期包含2个时钟周期,1个机器周期有 6个状态周期,每条指令的执行时间(即指令周期)为1~4个机器周期。
LED灯闪烁实验总结
![LED灯闪烁实验总结](https://img.taocdn.com/s3/m/b3e9799e195f312b3069a53b.png)
课程名称:Zigbee技术及应用实验项目: LED灯闪烁实验指导教师:专业班级:姓名:学号:成绩:1.实验目的(1)学习单片机IO口配置与驱动,实现指示灯LED1闪烁,频率为1Hz;(2)通过模块化编程,养成良好编程习惯。
2.实验设备(1)CC2530核心板一块;(2)传感器底板一个;(3)仿真器一个;(4)方口USB线一根;3.实验原理3.1硬件设计原理本实验的原理如图1-1所示。
其中,LED1和LED3都串联一个R273和R275限流电阻,然后连接到CC2530的P1口的P1_1和P1_0管脚上。
当P1_1为低电平时,LED1上有电流流过,LED1被点亮,反之熄灭。
图1-1 LED灯原理图限流电阻R的计算:图中R273和R275限流电阻,其计算公式如下:R=(U-UF)/ID (1-1)式中,U为电路供电电压,UF为LED正向压降,ID为LED的工作电流。
对于普通LED发光二极管,其正向压降:黄色为1.4V、红色为1.6V、蓝/白色为2.5V;点亮工作电流为3-20mA。
由图1-1可知,电路供电电压为U=3.3V,LED1选择为黄色发光二极管(压降是1.4V),带入(1-1)式可得R的取值范围是95-633Ω,电阻只要在此范围内即可,一般选择了470Ω的常用电阻。
从图1-1可以看出,如果要让LED1发光,需要设置CC2530对应的I/O口将LED电平拉低。
本实验我们只点亮LED1指示灯,所以只要设置LED1为低电平即可,所以只要我们知道LED1与CC2530哪个管脚相连就可以进行编程。
随着这个思路我们在原理图中找到LED1与CC2530芯片的P1_1管脚连接,将P1_1管脚拉低LED1即被点亮。
3.2程序设计原理(1)主程序分析本实验的程序流程如图1-2所示,其重点IO口的配置。
如果以1Hz的频率点亮LED1闪烁,则需要配置P1_1为输出,然后在P1_1输出1Hz的脉冲信号。
图1-2 程序逻辑流程图(2)IO 端口配置P1口通过特殊功能寄存器P1SEL (P1口功能选择寄存器)和P1DIR (P1口方向寄存器)进行配置,其定义如下。
单片机发光管闪烁和流水灯的操作
![单片机发光管闪烁和流水灯的操作](https://img.taocdn.com/s3/m/72a3b95bb4daa58da0114af0.png)
单片机发光管闪烁和流水灯的操作1、闪烁:尝试让第一个发光管闪烁程序如下:#include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000led1=0; //点亮灯while(i--); //延时i=50000;led1=1; //熄灭灯while(i--);}}2、流水灯程序如下:#include<reg52.h> //52单片机头文件void main() //主函数{unsigned int i; //定义一个int型变量while(1){i=50000; //变量赋初值为50000P1=0xfe; //点亮第一个灯while(i--); //延时i=50000; //变量赋初值为50000P1=0xfd; //点亮第二个灯while(i--); //延时i=50000; //变量赋初值为50000P1=0xfb; //点亮第三个灯while(i--); //延时i=50000; //变量赋初值为50000P1=0xf7; //点亮第四个灯while(i--); //延时i=50000; //变量赋初值为50000P1=0xef; //点亮第五个灯while(i--); //延时i=50000; //变量赋初值为50000P1=0xdf; //点亮第六个灯while(i--); //延时i=50000; //变量赋初值为50000P1=0xbf; //点亮第七个灯while(i--); //延时i=50000; //变量赋初值为50000P1=0x7f; //点亮第八个灯while(i--); //延时}}。
闪烁LED灯的程序
![闪烁LED灯的程序](https://img.taocdn.com/s3/m/de899569dd36a32d7375817b.png)
闪烁L E D灯软件描述:/*文件描述:使用的是口,可以用其他的端口,如果用其他的端口只需把程序里的改成相应的端口,程序实现的功能是单片机通过对端口高低电平的控制实现led灯的亮和灭。
赋值1就是高电平,0是低电平,具体赋什么值才亮要结合硬件部分,看led灯的接法。
这里是赋0就会亮。
*/#include<>sbitLED=P1^0;击确定就好了。
之后就需要在工程里面添加文件了(就是写程序代码的地方)。
点击file菜单下的new按钮就建立了新文件;键入程序点击保存按钮。
键入文件名但必须以.c为后缀,因为你写的是c语言文件。
如果是汇编就是.asm了。
一般用c语言写,这里我就用test1.了,点击保存。
然后就是设置了。
右击target1,选择第一项的options for target “target1”。
选择output在create HEX前勾上对号。
点击确定。
之后就是添加文件了,就是把c语言文件添加到工程里面去。
右击上图灰色的部分,再左击Add files to ‘source group 1‘,点击文件名,点击Add;文件添加完毕,关闭对话框就可以了。
下面就是编译了,就是安从左到右的3个按键即可。
创建了hex文件,这个文件就是烧写到单片机的文件;下面就是烧写程序了。
打开烧写程序选择单片机型号一般不用该默认c52.打开需要下载的文件即点击open file按钮;选择下载的文件;点击打开即可;选择端口。
一般这个电脑就是com1.点击下载即可。
给单片机上电;硬件描述:硬件部分就是一个led灯。
但是需要串联一个限流电阻,如果只加入一个led灯就是烧掉,限流电阻的选择要合适,这个自己百度看看很简单的在这里就不必说了,应该串联个500R左右的电阻,因为办公室里没有所以就用了2个1K的并联。
我建议同学自己焊下电路板,然后下载上程序看看。
下载后的状态:定时器/*文件描述:这个led口用的也是是口,可以用其他的端口,如果用其他的端口只需把程序里的改成相应的端口,这个程序实行的功能是利用定时器0的计数功能实现上面闪烁led灯的功能。
运用AT89C51使LED 灯闪烁
![运用AT89C51使LED 灯闪烁](https://img.taocdn.com/s3/m/0a5a299e185f312b3169a45177232f60ddcce7de.png)
运用AT89C51使LED 灯闪烁1. 概述本文档将介绍如何使用AT89C51微控制器来控制LED灯的闪烁。
AT89C51是一种高性能、低功耗的8位单片机,具备丰富的GPIO(通用输入输出)引脚,适合用于各种嵌入式应用中。
2. 硬件准备在开始编程之前,我们需要准备以下硬件设备:•AT89C51单片机开发板•LED灯•220欧姆电阻(用于限流)3. 连接电路在连接电路之前,确保开发板和所需的元件处于关机状态。
按照以下步骤连接电路:1.连接LED灯的长脚(阳极)到AT89C51的P1.0引脚。
2.连接LED灯的短脚(阴极)通过220欧姆电阻接地。
确保连接正确后,即可准备开始编程。
4. 编程以下是使用AT89C51使LED灯闪烁的示例程序:#include <REG51.h>#define LED P1_0 // 定义LED控制引脚为P1.0void delay(int milliseconds){int i, j;for (i = 0; i < milliseconds; i++)for (j = 0; j < 120; j++);}void main(){while (1){LED = 1; // 将LED引脚置高,点亮LEDdelay(1000); // 延时1秒LED = 0; // 将LED引脚置低,熄灭LEDdelay(1000); // 延时1秒}}在上面的示例代码中,我们使用P1.0引脚来控制LED灯的开关。
程序使用了一个简单的延时函数delay来实现LED灯的闪烁效果。
当LED引脚置高时,LED 灯亮起;当LED引脚置低时,LED灯熄灭。
通过在LED灯亮起和熄灭之间加入适当的延时,我们可以实现LED灯的闪烁效果。
5. 下载程序在编程完成后,我们需要将程序下载到AT89C51单片机中。
以下是下载程序的步骤:1.将AT89C51单片机开发板连接到电脑的USB口或串口上。
led闪烁实验报告
![led闪烁实验报告](https://img.taocdn.com/s3/m/4d7e590fc850ad02df804121.png)
竭诚为您提供优质文档/双击可除led闪烁实验报告篇一:单片机实验--LeD灯闪烁实验实验报告课程名称实验项目20XX年3月13日【实验目的】1.掌握51单片机开发板的使用步骤;2.掌握51单片机开发板所需软件的安装过程;3.以LeD灯闪烁为例子,掌握软件KeIL3的使用方法。
熟悉51单片机开发板的使用【实验环境】1.实验仪器、设备计算机、51单片机开发板2.软件usb驱动程序、KeLL开发软件3.实验过程51单片机开发板的使用步骤1)安装usb驱动程序;2)安装KeIL开发软件3)在KeIL环境中编写和调试程序4)用程序烧录软件,将单片机程序烧录到单片机51单片机开发板所需软件的安装过程1)安装usb驱动程序2)设置串口LeD灯闪烁的程序的编写、调试和烧录。
【实验内容】1.内容一1.1操作过程(1)将单片机开发板的电源与pc的usb口相连;(2)在pc机上安装usb_Driver驱动程序的安装,具体安装步骤,请参见《文件驱动程序安装说明.pdf》;设置串口,请参见《设置串口.pdf》;(3)在pc机上安装KeILV3软件,具体安装步骤,请参见《安装说明.TxT》;(4)运行KeIL3软件,软件的具体使用方法,请参见请参见《keil入门.pDF》文件;(5)在KeIL软件中,创建内容如下的c程序,文件名为学生自己的学号:(6)编译和调试,修改程序错误;(7)使用软件《pZIsp自动下载软件.exe》将程序烧录到单片机中,观察现象是否与正常;(8)再在原来程序的基础上,修改程序,实现功能较复杂的程序。
(9)编写内容如下的汇编程序,文件名为学生学号.asm:1.2操作结果程序下载成功后,则单片机开发板上的8个LeD灯将闪烁。
下图为LeD灯电路图。
1.3结果分析主程序中有:(1)p2=0x00;(2)delay(600);(3)p2=0xff;(4)delay(600);第一条程序为置p0口为低电平,点亮p2口8个LeD;,第二条程序为调用延时程序,等待一段时间熄灭,第三条程序为置p0口为高电平,熄灭p2口8个LeD灯;最后一条程序为调用延时程序。
LED灯闪烁控制
![LED灯闪烁控制](https://img.taocdn.com/s3/m/943dc6fb7e21af45b207a80b.png)
太原理工大学单片机原理与应用技术课程实验报告专业班级学号姓名指导教师LED 灯闪烁控制一、实验目的(1)掌握C语言、汇编语言编写单片机控制程序的方法;(2)掌握使用Keil C软件编写、编译、调试程序的方法;(3)掌握使用Proteus软件绘制电路原理图、硬件仿真和程序调试;(4)理解LED灯控制电路原理和延时程序的编写。
二、实验硬件和软件计算机1台,并安装Proteus软件和Keil C51软件。
三、实验任务在单片机I/O口上外接一个发光二极管LED,通过程序实现LED闪烁显示,即不停地一亮一灭,亮、灭持续时间均为0.2秒。
四、实验电路及分析实验电路如图所示,在P1.7口(也可选择其它端口)外接一个发光二极管D1,分析可知P1.7输出“0”时,D1点亮,P1.7输出“1”时D1熄灭。
LED 灯闪烁控制电路图五、实验程序编写1.程序编写(1)C语言程序#include <reg51.H>sbit D1=P1^7;void Delayms(unsigned int n){ unsigned int i, j;for(j=n; j>0;j--)for(i=112; i>0; i--);}int main( ){ while(1){ D1=0;Delayms(200);D1=1;Delayms(200);}}(2)程序流程图六、实验步骤1.利用Proteus软件绘制仿真电路图(1)打开Proteus软件,File→New Project进入工程创建向导,选择项目文件存放路径,项目文件名为“实验1.pdsprj”。
(2)创建原理图(schematic),默认模板为default,可根据电路规模选择合适的图纸大小。
(3)选择“Do not create a PCB layout”,即不绘制PCB图。
(4)选择第一项“No Firmware Project”,即不在Proteus平台下创建源程序。
51单片机闪烁灯制作
![51单片机闪烁灯制作](https://img.taocdn.com/s3/m/88e57bf5ac51f01dc281e53a580216fc700a53fe.png)
51单片机闪烁灯制作简介:51单片机闪烁灯制作:在单片机P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭形成闪烁灯状态,一亮一灭的时间间隔为0.2秒。
1.电路原理图图4.1.12.系统板上硬件连线把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。
3.程序设计内容(1). 延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微MOV R6,#20 2个 2D1: MOV R7,#248 2个22+2×248=49820×DJNZ R7,$ 2个2×248 (498DJNZ R6,D1 2个2×20=4010002因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。
如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET(2). 输出控制如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。
4. 程序框图5. 汇编源程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时0.2秒 D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND6. C语言源程序#includesbit L1=P1^0;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i0;i)for(j=20;j0;j)for(k=248;k0;k);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}}完毕!您现在会不会制作自己的闪烁灯了呢?。
at89c51led闪烁实验汇编语言
![at89c51led闪烁实验汇编语言](https://img.taocdn.com/s3/m/d81b36b9fbb069dc5022aaea998fcc22bcd143e9.png)
at89c51led闪烁实验汇编语言1. 简介at89c51是一种经典的单片机芯片,被广泛应用于各种嵌入式系统中。
其中,led闪烁实验是单片机入门的必备实验之一,通过这个实验可以初步了解单片机的基本工作原理和汇编语言的编程方法。
2. 实验原理在at89c51单片机中,led是一种常用的输出设备,可以通过控制引脚的高低电平来实现闪烁效果。
通过学习汇编语言的编程方法,我们可以编写程序控制led引脚的状态,从而实现led的闪烁操作。
3. 实验步骤第一步:搭建硬件实验评台,将at89c51单片机与led灯连接。
第二步:编写汇编语言程序,通过设置端口的高低电平来实现led的闪烁效果。
第三步:将编写好的程序下载到at89c51单片机中,进行调试和验证。
4. 实验代码下面是一个简单的at89c51led闪烁实验的汇编语言程序:```assemblyorg 0h ; 程序从位置区域0开始执行mov P1, #0FFh ; 设置P1端口为输出loop:mov P1, #00h ; 将P1端口输出低电平acall delay ; 调用延时程序mov P1, #0FFh ; 将P1端口输出高电平acall delay ; 调用延时程序sjmp loop ; 无条件跳转至loop标号处delay:mov R1, #0Ah ; 设置延时计数值delay1:mov R2, #0FFh ; 设置内部计数值delay2:djnz R2, delay2 ; 内部计数减1djnz R1, delay1 ; 延时计数减1ret ; 返回end ; 程序结束```在这个程序中,我们首先设置P1端口为输出,并在一个循环中不断地将P1端口输出高低电平,通过调用延时程序来实现led的闪烁效果。
5. 实验总结通过这个实验,我们初步了解了at89c51单片机的基本工作原理和汇编语言的编程方法。
在以后的学习中,我们可以通过不断地深入实践和学习,掌握更多单片机和汇编语言的知识,从而实现更加复杂的功能和应用。
闪烁LED灯的设计---单片机课程设计
![闪烁LED灯的设计---单片机课程设计](https://img.taocdn.com/s3/m/e5ae80ca9ec3d5bbfd0a74b2.png)
闪烁LED灯的设计本设计的闪烁小灯控制器,可使小灯轮流点亮、逐个点亮、间隔闪亮。
如果要控制交流彩灯,可在P1端口加接继电器或可控硅接口电路。
本设计可应用在广告彩灯控制器和舞台灯光控制器等领域。
一、系统硬件电路的设计图1为闪烁小灯控制器的电路原理图,其中:单片机采用AT89C2051,P1口作LED发光管输出控制用,P3.0-P3.2口为闪烁方式控制开关K1、K2、K3按键接口,P3.3口的按键作备用,限流电阻为510Ω,发光管工作电流约10mA,采用12MHz晶振。
图1 闪烁小灯电路原理图二、系统主要程序的设计1、主程序通过扫描P3.0-P3.2口,判断是否有按键按下,然后在20H内存单元的低3位的对应位置1标志,确定应执行的闪烁功能。
当20H.0为1时,发光管轮流点亮;当20H.1为1时,发光管逐点点亮;当20H.2为1时,发光管间隔闪亮。
在主程序对20H的低3位进行位值判定后,转入相应的闪烁控制程序。
上电初始化时,对20H的最低位置1,系统进入轮流点亮方式。
主程序流程图如图2所示。
2、键扫描子程序因按键较少,采用直接端口扫描键开关,用软件延时消抖确认后,对20H 内存单元相应的位置1,并把其余位清0。
图2 主程序流程图3、闪烁控制程序闪烁控制程序用来控制P1口的发光管发光变化方式,其中:执行功能程序0(FUN0)时的P1口输出值变化为11111110→延时→11111101→延时→11111011→延时→11110111→延时→11101111→延时→11011111→延时→10111111→延时→01111111→延时→结束转主程序。
执行功能程序1(FUN1)时的P1口输出变化为11111110→延时→11111100→延时→11111000→延时→11110000→延时→11100000→延时→11000000→延时→10000000→延时→00000000→延时→结束转主程序。
执行功能程序2(FUN2)时的P1口输出变化为10101010→延时→01010101→延时→结束转主程序。
PIC单片机让一个灯闪烁程序
![PIC单片机让一个灯闪烁程序](https://img.taocdn.com/s3/m/a332acb583d049649b665856.png)
PIC单片机让一个灯闪烁程序具体介绍:让一个灯闪烁,亮500ms后关闭500ms 流程图:仿真图:源代码://-----------------------------------------------------------------// 名称: 闪烁的LED//-----------------------------------------------------------------// 说明: LED按设定的时间间隔闪烁//-----------------------------------------------------------------#include ;#define _XTAL_FREQ 4000000UL#define LED RC5//定义LED//-----------------------------------------------------------------// 主程序//-----------------------------------------------------------------void main(){TRISC = 0x00;//设置整个PORTC端口为输出(或设置TRISC5 = 0;) PORTC = 0xFF;//初始时输出全1while(1){}}flowcode软件用流程图导出的源代码:#define MX_PIC_16BIT//Defines for microcontroller #define P30F2011#define MX_CLKS_PER_INST 4#define MX_SPI1#define MX_SPI1_PORT_B#define MX_SPI1_SDI 5#define MX_SPI1_SDO 4#define MX_SPI1_SCK 6#define MX_UART1#define MX_UART1_PORT_B#define MX_MI2C1#define MX_I2C1_PORT_B#define MX_I2C1_SDA 5#define MX_I2C1_SCL 4#define MX_PWM#define MX_PWM_PORT_D#define MX_PWM_CNT 2#define MX_PWM_1 0#define MX_PWM_2 7//Functions#define MX_Fosc 48000000#include"../support/dsPIC30F/h/p30fxxxx.h" #include ;#include ;#define _RESERVED1(x) int temp1 = (x);#define _RESERVED2(x) int temp2 = (x);#define _ICD(x) _FICD(x);//Configuration data//Internal functions#include "F:\Program Files\Matrix Multimedia\Flowcode PIC24&dsPICV4\FCD\internals.h"//Macro function declarations//Variable declarations//Macro implementationsint main(){ADPCFG = 0xffff;while (1){TRISC = TRISC & 0xdfff;if ((0<<8))PORTC = (LATC & 0xdfff) | 0x2000;elsePORTC = LATC & 0xdfff;delay_ms(255);delay_ms(245);TRISC = TRISC & 0xdfff;if ((1<<8))PORTC = (LATC & 0xdfff) | 0x2000; elsePORTC = LATC & 0xdfff;delay_ms(255);delay_ms(245);}mainendloop: goto mainendloop;return 0;}。
单片机 C语言闪烁灯
![单片机 C语言闪烁灯](https://img.taocdn.com/s3/m/faac3cdfaa00b52acfc7ca79.png)
Void delay() { Unsigned int i,j;
for(i=0;i<1000;i++) for(j=0;j<115;j++); }
总结
For、while循环使用
1s的延时程序
仿真实验
程序的完整性
作业
1
编写C语言程序实 现一个发光二极管 以600ms的时间间 隔闪烁。
2
编写C语言程序实 现一个发光二极管 以1s亮,500ms灭 循环闪烁。
把程序补充完整仿真得到实验结果
#include<reg52.h> void delay( ); sbit led1=P1^0; void main( ) { while(1) { led1=0; Delay( ); led1=1; Delay( ); }
编写编写cc语言程序实现一个发语言程序实现一个发光二极管以光二极管以1s1s的时间间隔闪的时间间隔闪1s的时间控制1s1000ms1ms循环115次指令周期for循环指令周期while循环1ms循环115次cpu处理一条指令的时间for循环ccwhile循环分小组分别用分小组分别用forfor和和whilewhile实现实现115115次次循环空语句的程序循环空语句的程序分小组分别用分小组分别用forfor和和whilewhile实现实现10001000次循环次循环1ms1ms程序语句的程序程序语句的程序1ms循环115次1ms循环115次1s1000msfor循环1ms1mswhile循环voiddelayintvoiddelayinti115
3
仿真得到实验结果
课堂评价
51单片机技术应用教程(C语言版)项目四 花样霓红灯的设计与制作
![51单片机技术应用教程(C语言版)项目四 花样霓红灯的设计与制作](https://img.taocdn.com/s3/m/60ef73382379168884868762caaedd3383c4b506.png)
函数 atoi atol atof strtod strtol strtoul
rand srand calloc free init_mempool
malloc realloc
功能 将字符串sl转换成整型数值并返回这个值 将字符串sl转换成长整型数值并返回这个值 将字符串sl转换成浮点数值并返回这个值 将字符串s转换成浮点型数据并返回这个值 将字符串s转换成long型数值并返回这个值 将字符串s转换成unsigned long型数值并返回这个值
5.请写出二维数组的格式,并举例说明。
51单片机技术应用活页式教程(C语言版)
项目四 花样霓虹灯的设计与制作
4.1 C51库函数
知识 链接
4.2 用户自定义函数 4.3 C51数组
【知识点4.1】 C51库函数
• 函数有库函数和自定义函数两类。 • C51的库函数由C51的编译器提供,每个库函数的原型放
使单片机程序产生延时 对字节中的一位进行测试
【知识点4.2】用户自定义函数
• 1.用户自定义函数的形式
• (1)无参数函数。此种函数被调用时,既无参数输入,也不返回结果给调用函数,它 是为完成某种操作过程而编写的。
• (2)有参数函数。在定义此类函数时,必须定义与实际参数一一对应的形式参数,并 在函数结束时返回结果给调用该函数的程序使用,函数的返回值是通过函数中的return 语句获得的。调用时必须提供实际的输入参数。
如果P1口接了8个LED灯,该程序的功能是:
51单片机技术应用活页式教程(C语言版)
项目四 花样霓虹灯的设计与制作
【引导学习】
2. 请接合第1题程序,请写出有参与无参、形参与实参的含义。
3.请用字符型数组定义LED,存放流水灯8种显示状态,存放在程 序存储器中。 4.请用一维数组定义LED数码管的0-9的显示编码。
学习任务一“眨眼”的LED灯电路设计单片机应用技术实训指导
![学习任务一“眨眼”的LED灯电路设计单片机应用技术实训指导](https://img.taocdn.com/s3/m/8a2e0f444afe04a1b171de0e.png)
“眨眼”的LED灯电路设计一、硬件电路原理图的设计1.电路设计思路及控制要求“眨眼”的LED灯的具体控制原理是采用典型的单片机芯片AT89S51进行控制的。
利用单片机的P1端口中的某位外接一只发光二极管(LED),发光二极管负极接P1.0,正极通过限流电阻接电源。
要求单片机P1.0引脚所控制的LED实现“眨眼”的效果。
当P1.0=0时,对应的LED灯就会被点亮;相反,当P1.0=1时,对应的LED灯就会被熄灭。
2.硬件电路原理图根据上述的控制要求,所设计出的电路原理图如图120所示。
图1-20 “眨眼”的LED灯电路原理图二、会“眨眼”的LED系统程序设计1.主程序流程图根据程序设计思路,画出程序流程如图1-21所示。
图1-21 “眨眼”的LED灯程序流程图2.采用字节操作进行LED灯的控制参考程序(采用字节操作)编写如下,程序仿真图如图1-22所示。
图1-22 “眨眼”的LED灯程序仿真图(字节操作)ORG0000H;将程序从地址0000H处开始MAIN:MOVP1,#0FEH;(P1)=1111,1110B,发光二极管点亮LCALLDELAY;调用延时子程序MOVP1,#0FFH;(P1)=1111,1111B,发光二极管熄灭LCALLDELAY;调用延时子程序SJMPMAIN;程序返回到MAIN处,重复“眨眼”过程DELAY:MOVR2,#240;延时子程序LOOP1:MOVR3,#250LOOP2:DJNZR3,LOOP2DJNZR2,LOOP1RET;子程序调用返回END;汇编结束3.采用位操作进行LED灯的控制参考程序(采用位操作)编写如下,程序仿真图如图1-23所示。
ORG0000H;将程序从地址0000H处开始MAIN:CLRP1.0;(P1.0)=0时,发光二极管点亮LCALLDELAY;调用延时子程序SETBP1.0;(P1.0)=1时,发光二极管熄灭LCALLDELAY;调用延时子程序SJMPMAIN;程序返回到MAIN处,重复“眨眼”过程DELAY:MOV R6,#240;延时子程序LOOP1:MOV R7,#250LOOP2:DJNZ R7,LOOP2DJNZ R6,LOOP1RET;子程序调用返回END;汇编结束图1-23 “眨眼”的LED灯程序仿真图(位操作)以上两段汇编程序中调用子程序的目的是实现延时效果,其原因在于单片机的处理速度太快。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由以上可知,当R6=10、R7=248时,延时5ms,R6 =20、R7=248时,延时10ms,以此为基本的计时单位。 如本实验要求0.2秒=200ms,10ms×R5=200ms, 则R5=20,延时子程序如下:
DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET
③程序流程图
开始
左移位多少次? 显示数据赋值给A 显示数据由A赋值给P1 调用延时子程序 左移1位 左移8次?
NO
右移位多少次? 显示数据赋值给A
显示数据由A赋值给P1
调用延时子程序 右移1位
NO
YES
右移7次?
YES
任务一、闪烁灯制作
试验任务: 如图4.1.1所示:在单片机P1.0端口上接一 个发光二极管L1,使L1在不停地一亮一灭形成 闪烁灯状态,一亮一灭的时间间隔为0.2秒。
1.电路原理图
如图4.1.1
2.程序设计内容
(1). 延时程序的设计方法 作为单片机的指令的执行的时间是很短,微秒级,因此, 我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大, 所以我们在执行某一指令时,插入延时程序,来达到我们的要 求,但这样的延时程序是如何设计呢?下面具体介绍其原理: ①如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1 微秒 (12/12MHZ=1µS) MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 DJNZ R7,$ 2个 2×248 DJNZ R6,D1 2个 2×20=40 因此,上面的延时程序时间为(2+2×248)×20+2×20 +2=10002US=10.002ms。当P1.0端口输出高电平,即P1.0 =1时,根据发光二极管的单向导电性可知, 这时发光二极管L1熄灭;当P1.0端口输出低 电平,即P1.0=0时,发光二极管L1亮;我们 可以使用SETB P1.0指令使P1.0端口输出 高电平,使用CLR P1.0指令使P1.0端口输 出低电平。