51单片机led闪烁程序及仿真图

合集下载

c51流水灯四种效果仿真图+程序

c51流水灯四种效果仿真图+程序
对应程序: #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code tab[]={ 0x81, 0x42, 0x24, 0x18, }; void delay(uint z) { uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--); } void init() { P0=0x00; } void liushuiyi() { P0=0x00; delay(300);
P0=0xff; delay(300); } void liushuier() { P0=0xaa; delay(300); P0=0x55; delay(300); } void liushuisan(uchar x) { switch (x)
{ case 1: P0=0x01; break; case 2: P0=0x02; break; case 3: P0=0x04; break; case 4: P0=0x08; break; case 5: P0=0x10; break; case 6: P0=0x20; break; case 7: P0=0x40; break; case 8: P0=0x80; break; } } void liushuisi() { uint f,h; for(f=0;f<4;f++) { P0=tab[f]; delay(300); } for(h=0;h<3;h++) { P0=tab[2-h]; delay(300); } } void main() { uint a,b,c,d,e,g; init(); while(1) {

实验1 KEIL+PROTEUS使用——单灯闪烁

实验1 KEIL+PROTEUS使用——单灯闪烁
图1-9添加文件
(9)弹出如图1-10所示的“Add Files to Group‘Source Group 1’”对话框中选择“main.c”文件,单击“Add”按钮,将“main.c”文件添加到工程中,然后单击“Close”按钮。
图1-10添加文件对话框
(10)在工程窗口中可以看到文件“main.c”已经添加,如图1-11所示。
(2)打开仿真软件,如图1-18所示。
图1-18 PROTEUS界面
※新建仿真文件
(3)每次打开PROTEUS软件,系统会自动创建名为“UNTITLID”的仿真文件。在常用工具栏中单击保存文件,弹出保存对话框,如图1-19所示。将仿真文件保存在“test1”文件夹中,并将仿真文件命名为“test1”,单击保存按钮。
2.掌握单片机控制LED的方法
3.掌握C51程序基本结构
4.了解软件延时的方法
三、实训内容
1
当二极管外加正偏电压时点亮,外加反偏电压时熄灭。本实训电路中二极管阳极恒接电源VCC(高电平),因此,想要使发光二级管D1点亮,只须控制单片机使P1.0输出低电平,想要使发光二极管D1熄灭,只须控制单片机P1.0输出高电平即可。若要亮灭闪烁变化,则需要控制单片机P1.0输出高、低电平循环交替。为看到持续亮灭效果,需要亮后延时一段时间,然后在熄灭LED,之后再延时一段时间,如此重复即可。
注意:最好将仿真文件和刚才创建的程序文件都放在一个工程文件夹下面,以便以后维护。

51单片机数字时钟-proteus仿真原理图及keil C51编译的C51程序

51单片机数字时钟-proteus仿真原理图及keil C51编译的C51程序

51单片机数字时钟-proteus仿真原理图及keil C51编译

的C51程序

该实验采用proteus 7.4 sp3进行的仿真,仿真原理图如下图所示,该实验采用定时器0的工作方式1定时500ms,等待20次定时1s进行时钟计数。通过定时器1的工作方式1定时500ms,用来调整数码管闪烁的时间。K1是用来选中时分秒,按一下选中时,再按一下选中分,再按一下选中秒,再按一下退出选中状态。K2按一下数加一,K3按一下数减一。在调整时间时,时钟停走。

/******************************************************************* ***

* 程序名; 时钟实验

* 功能: 数码管通过动态扫描显示时间,时间可设定,调整时间时时钟不走.

* 编程者: ZPZ

* 编程时间:2009/8/9

******************************************************************** **/

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit _led=P2^7;

sbit key1=P2^0;

sbit key2=P2^1;

sbit key3=P2^2;

uchar num=0,temp=0,count=0; uchar aa;

uchar hour,min,sec;

uchar code

table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

51单片机设计交通灯仿真图

51单片机设计交通灯仿真图
TMOD=0x01;//定时器0工作于方式1
TH0=0x4c;
TL0=0x00;//定时器赋初值
EA=1;//开外部中断
ET0=1;//开定时中断
TR0=1;//开定时器0
while(1)
{
RED_ZHU=1;
RED_ZHI=0;
GREEN_ZHU=0;
GREEN_ZHI=1;
YELLOW_ZHU=1;//第二个状态:主干道亮绿灯30S、支干道亮红灯
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit RED_ZHU = P1^0;
sbit YELLOW_ZHU = P1^1;
sbit GREEN_ZHU = P1^2;
sbit RED_ZHI = P1^3;
sbit YELLOW_ZHI = P1^4;
sbit GREEN_ZHI = P1^5;
uint aa, bai,shi,ge,bb; //定义变量
/*数码管显示0-9*/
uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*子函数声明*/
void delay(uint z);
YELLOW_ZHI=1;

51单片机闪灯

51单片机闪灯

51单⽚机闪灯

上⼀篇写了点亮⼀个灯,这⼀篇写⼀下闪⼀个灯

⾸先,流⽔灯实现起来就是⼀个⼀个点灯,中间加⼊⼀个延时就⾏了

我们先实现闪⼀个灯,从上⼀个代码添加⼀些代码即可完成

最重要的就是这个延时函数的实现,我们是通过不精准延时,单⽚机啥也不⼲在计数实现

这⾥同时可以再讲讲while的⽤法

unsigned int count = 0;

while(count <= 50000)

{

count = count + 1;

}

这样就是通过单⽚机不停计数来实现延时(具体延时多久,不⽤太在意)

加⼊到代码实现闪灯

#include "reg52.h"

sbit D1 = P2^0;

unsigned int count = 0;

void main(void)

{

while(1)

{

D1 = 0;//灯亮

while(count <= 50000)

{

count = count + 1;

}

D1 = 1;//灯灭

while(count <= 50000)

{

count = count + 1;

}

}

}

这样就能实现闪灯了吗?想想应该可以,下载进去看下效果

这⾥说道下载就要提⼀下,⽣成下载hex⽂件

点击魔法棒点击选项卡output,勾选上

,点击确定

然后最重要的是要在编译⼀次,下⾯输出这个

创建了hex⽂件到⼯程⽬录的\Objects\led.hex这个⽂件了,下载就不说了下载进去发现,咦,怎么不⾏,仔细看⼀下就能分析出来是变量没有清零了 = =!改⼀改

#include "reg52.h"

sbit D1 = P2^0;

unsigned int count = 0;//unsigned int 范围0到65535

51单片机定时器1sLED闪烁简单容易理解解析程序

51单片机定时器1sLED闪烁简单容易理解解析程序

/*#include<reg51.h>预处理名命令#define led P2 定义P大口typedef unsigned char u8; 定义变量typedef unsigned int u16;

void Time0int0() 控制中断

{

TMOD|=0x01;

TH0=0xFC;

TL0=0x18;

ET0=1;

EA=1;

TR0=1;

}

void main() 主函数

{

while(1);

Time0int0();

}

void Time0() interrupt 1 中断函数{

static u16 i; 静态变量

TH0=0xFC;

TL0=0x18;

i++;

if (i==1000)

{

i=0;//1s

led=~led;

}

}

*/

#include<reg51.h>

typedef unsigned char u8;

typedef unsigned int u16;

sbit led =P2^1;

void delay(u16 x)

{

while(x--)

{

u8 i;

i=150;

while(i--);

}

}

void Timeint0 ()

{

TMOD=0x01;

TH0=0xFC;

TL0=0x18;

ET0=1;

EA=1;

TR0=1;

}

void main()

{

Timeint0 ();

}

void TimeInt0 () interrupt 1

{

static u16 i;

TH0=0xFC;

TL0=0x18;

i++;

if (i==10)

{

i=0;//1s

led=~led;

}

}

51单片机led灯闪烁代码

51单片机led灯闪烁代码

51单片机led灯闪烁代码

51单片机是一种比较流行的微控制器,通过它我们可以实现各种功能,其中led灯的闪烁是我们最常接触的一个项目。本文将围绕51单片机led灯闪烁代码展开阐述,具体操作如下:

1. 准备工作

在开始编写代码前,我们需要准备好工作环境,包括51单片机开发板、Keil C51编译器、下载器等。将开发板与电脑连接好,打开编译器。

2. 设置引脚

我们需要设置led灯的引脚,通常我们将led灯接在P1.0口,因此需要对该口进行设置。代码如下:

sbit LED=P1^0; // 定义P1.0口为LED引脚

3. 主函数

在主函数中,我们需要对led灯进行闪烁操作。代码如下:

void main()

{

while(1) // 无限循环

{

LED=0; // 灯亮

delay(1000); // 延时1秒

LED=1; // 灯灭

delay(1000); // 延时1秒

}

}

4. 定义延时函数

为了让led灯闪烁更加稳定,我们需要定义一个延时函数。代码如下:

void delay(unsigned int xms)

{

unsigned int i,j;

for(i=xms;i>0;i--)

{

for(j=112;j>0;j--);

}

}

5. 编译下载

完成以上步骤后,我们需要进行编译下载。在Keil C51编译器

中按下F7编译,编译成功后按下F8下载程序到开发板上。

通过以上步骤的操作,我们就可以实现51单片机led灯的闪烁

功能。当然,led灯的闪烁频率及闪烁次数可以根据实际需求进行调整。同时,在实际操作中,我们还需要注意引脚的接线及芯片的电压等问题,确保操作安全可靠。

51单片机仿真100实例

51单片机仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例

第 01 篇基础程序设计

01 闪烁的LED

/* 名称:闪烁的LED

说明:LED按设定的时间间隔闪烁

*/

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit LED=P1^0;

//延时

void DelayMS(uint x)

{

uchar i;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主程序

void main()

{

while(1)

{

LED=~LED;

DelayMS(150);

}

}

02 从左到右的流水灯

/* 名称:从左到右的流水灯

说明:接在P0口的8个LED

从左到右循环依次点亮,产生走

马灯效果

*/

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

void DelayMS(uint x)

{

uchar i;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主程序

void main()

{

P0=0xfe;

while(1)

{

P0=_crol_(P0,1); //P0的值向左循环移动

DelayMS(150);

}

}

03 8只LED左右来回点亮

/* 名称:8只LED左右来回点亮

说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/

单片机实验--实验报告-LED灯闪烁实验

单片机实验--实验报告-LED灯闪烁实验

单片机实验--实验报告-LED灯闪烁实验

为了深入了解单片机,本次实验我们选取LED灯闪烁实验,研究单片机控制LED闪烁

的原理。经过这次实验,初步了解了单片机实验的基本设备及操作步骤,掌握了单片机语

言操控LED进行简单应用。

实验做法如下:

一、设计流程:

1.实验目的

本次实验的目的是了解单片机的原理,掌握单片机语言的基本使用方法,编制可控制LED灯闪烁的程序,完成LED灯闪烁的控制。

2.实验设备

实验设备主要包括:单片机51系列主控板,51单片机芯片,备有LED等硬件。

3.原理描述

本次实验主要是利用单片机来实现LED灯发出的闪烁效果,将单片机的P0作为一个

数据口出口实现闪烁的控制,这里使用一个定时器定时,通过程序实现数据口的翻转,可

以实现LED的闪烁效果。

二、实验步骤:

1.硬件的准备及接线

准备所需要的硬件,将单片机的芯片插入51系列主控板,将LED灯接线到主控板上。

2.软件编译

打开Keil软件,创建一个单片机工程文件,然后调用单片机库函数,建立用于控制LED灯闪烁的相关函数。

3.程序下载

编译、链接生成hex文件,将hex文件下载到单片机芯片上,运行程序(此处使用51编程器),完成LED的闪烁控制。

4.程序调试

完成程序的编写、下载即可实现LED的闪烁,对程序做个完整的测试,保证程序的可

靠性。

51单片机输出不同频率的PWM控制LED灯以不同的频率闪烁

51单片机输出不同频率的PWM控制LED灯以不同的频率闪烁
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit P1_0=P1^0;
uchar tt;
void main()//主函数
{
TMOD=0x01;//设置定时器0为工作方式1
/*
此处利用定时/计数器T0从P1.0输出PWM为1hz的方波为例,
让发光二极管以1HZ闪烁,要输出其他频率的PWM改中断变程序中aa的值即可,
ห้องสมุดไป่ตู้设晶振频率为12MHz。?
*/
/*********************************************************/
#include<reg52.h> //52单片机头文件
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
while(1);//等待中断产生
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;

51单片机仿真100实例

51单片机仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例

第 01 篇基础程序设计

01 闪烁的LED

名称:闪烁的LED/*

LED按设定的时间间隔闪烁说明:*/#include<reg51.h>#define uchar unsigned char

#define uint unsigned int sbit LED=P1^0;延时//void DelayMS(uint x){uchar i; while(x--)

{

for(i=0;i<120;i++);

}

}//主程序void main(){ while(1) {LED=~LED;

DelayMS(150);

}

}

从左到右的流水灯02

/* 名称:从左到右的流水灯LED个P0口的8接在说明:产生走从左到右循环依次点亮,马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define

uint unsigned int//延时

void DelayMS(uint x)

{

uchar i;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主程序

void main()

{

P0=0xfe;

while(1)

{

P0=_crol_(P0,1); //P0的值向左循环移动

DelayMS(150);

}

}

03 8只LED左右来回点亮

/* 名称:8只LED左右来回点亮

说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/

基于51单片机智能灯设计与仿真

基于51单片机智能灯设计与仿真

五、结论
本次演示详细介绍了基于51单片机的智能灯设计与仿真过程。通过电路设计和 软件编程,我们实现了对环境光照的智能检测和LED灯的亮灭控制。通过仿真 分析,我们验证了该系统的准确性和节能效果。51单片机智能灯的设计与仿真 为智能家居的发展提供了新的思路和方法,具有广泛的应用前景和推广价值。
参考内容
软件设计是智能交通灯系统的核心,基于51单片机的软件设计主要涉及中断处 理、定时器控制、串口通信等功能。通过编写程序,实现车辆和行人的流量检 测、交通灯状态控制、时间显示等功能。
三、功能实现
1、车辆和行人流量检测
通过红外传感器和视频传感器,检测车辆和行人的流量。当有车辆或行人通过 时,传感器输出高电平信号,单片机通过中断处理程序接收信号并计数。根据 车流量和行人数量,调整交通灯的状态和时间。
3、启动仿真
在完成电路设计和程序编写后,我们可以启动仿真来观察系统的运行情况。通 过调整光照传感器的参数或程序中的逻辑,我们可以测试智能灯在不同情况下 的亮灭状态和性能表现,从而对设计进行优化。
四、结果分析
通过仿真,我们可以观察到51单片机智能灯在不同的光照条件下可以实现准确 的亮灭控制。同时,通过测量仿真过程中的电压和电流数据,我们可以分析智 能灯在不同场景下的能耗表现。结果表明,51单片机智能灯控制系统在实现智 能化控制的同时,还有效降低了能源消耗,达到了节能减排的目的。

51单片机仿真100实例

51单片机仿真100实例
ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//延时
voidDelayMS(uintx)
{
uchart;
while(x--)for(t=0;t<120;t++);
}
//主程序
voidmain()
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例
第01篇基础程序设计
01闪烁的LED
/*名称:闪烁的LED
说明:LED按设定的时间间隔闪烁
*/
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitLED=P1^0;
}
//主程序
voidmain()
{
uchari,wei=0x80;
while(1)
{
for(i=0;i<8;i++)
{
P2=0xff;
P0=DSY_CODE[i];//发送段码
wei=_crol_(wei,1);
P2=wei;//发送位码
DelayMS(2);
}
}
}
098只数码管闪烁显示数字串

单片机_LED灯闪烁实验报告

单片机_LED灯闪烁实验报告

实验报告

一、实验目的

1、掌握51单片机实验开发板的使用步骤。

2、以LED闪烁为例子,通过keil4软件进行汇编程序的输入、运行、调试、仿真。

3、掌握STC-ISP的使用方法,将程序下载到实验板中。

二、实验设计

1、实验仪器、设备:计算机、型号为STC89C52RC的51单片机开发板

2、软件:USB驱动软件、keil4开发软件、STC-ISP

3、实验流程图设计:

4、软件设计:

1)keil4软件使用

A.双击keil4标志,执行keil4软件

B.在E盘中新建文件夹:zuoye1,以保存本实验中所产生的文件。将计算机中原有的main.c文件复制到文件夹zuoye1中。

C.点击“project”“New uVision project”,给工程取名为zuoye1,保存在文件夹zuoye1中。在新出现的窗口中选择“Atmel”“AT89C51”,按“OK”后在新出现的窗口选择“否”。

D.点击“file”“New”,新建一个原文件。双击“source Group1 ”,添加main.c文件。添加成功后将LED程序输入文件中。

#include<AT89X51.H>

//=======================================

#define uint unsigned int;

#define uchar unsigned char;

//=======================================

uint x,y;

uchar idx;

//=======================================

proteus的51单片机仿真-用不同的数据类型控制LED灯的闪烁频率

proteus的51单片机仿真-用不同的数据类型控制LED灯的闪烁频率

单片机的程序设计离不开对各种数据的处理,数据在单片机内存中的存放情况由数据结构决定。c语言的数据结构是以数据类型出现的。数据类型可分为基本数据类型和复杂数据类型,复杂数据类型是由基本数据类型构造而成的。

C语言中的基本数据类型有:char,int,short,long,float和double这几种。其中

char,int,short,long常用于指示整型数据,因此有包含有符号型和无符号型两种,float 和double常用于表示实型数据。

另外在c51中还有一些用于实现位操作和寄存器操作的数据类型。

接下来我们将利用几个实例来演示数据类型、数据运算等操作

1、本例分别使用无符号整型数据和无符号字符型数据来设计延时函数,跟别用于控制D1

和D2的闪烁,从而研究这两种数据的特性。

2、实现方法

为比较两种数据的使用效果,本例中将延时函数的循环次数设置相同,然后通过比较延时时间,直观地观察两种数据类型的使用效果。

3、在keil c51中新建工程ex5,编写如下程序代码,并编译生成ex5.hex文件

//实例5,用不同数据类型的延时函数控制LED灯的闪烁时间

#include <reg51.h>

/*******************************************

函数功能:用整型数据延时一段时间

********************************************/

void int_delay(void) //定义整型数据实现的延时函数

{

unsigned int i,j; //定义无符号整型变量,双字节数据,数值范围0-65535

51单片机程序及仿真

51单片机程序及仿真

目录

1、交叉流水灯---------------------------------------------1

2、倒序流水灯---------------------------------------------3

3、正序流水灯---------------------------------------------7

4、交替流水灯--------------------------------------------11

5、2 0个LED显示--------------------------------------14

6、单个数码管显示0~ F ---------------------------------16

7、两个数码管显示00~ 99 ------------------------------20

8、4个数码管显示固定数值-------------------------------24

9、6个数码管同步显示----------------------------------26

10、6个数码管依次显示数字1~6 -------------------------29

11、一个按键控制LED灯---------------------------------33

12、矩阵按键控制LED灯---------------------------------36

13、矩阵键盘控制数码管依次显示0~F --------------------39

14、中断控制LED灯的依次亮灭--------------------------46

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
Delay10ms(50); //调用延时程序,修改括号里面的值可以调整延时时间,50代表50*10=500ms
LED1 = 1; //置P1^0口为高电平
Delay10ms(50); //调用延时程序
}
}
void Delay10ms(unsigned int c) //误差0us
{Βιβλιοθήκη Baidu
unsigned char a, b;
#include <reg51.h>//此文件中定义了51的一些特殊功能寄存器
//--声明全局函数--//
void Delay10ms(unsigned int c); //声明延时10ms的函数
sbit LED1=P1^0;
void main()
{
while(1)
{
LED1 = 0; //置P1^0口为低电平
相关文档
最新文档