51单片机led灯闪烁代码

合集下载

51单片机二极管发光程序

51单片机二极管发光程序

51单片机二极管发光程序
51单片机(STC89C52)可以通过控制IO口来驱动二极管发光。

下面我将为你提供一个简单的例子,演示如何在51单片机上使用C
语言编写程序来控制二极管发光。

首先,我们需要连接一个二极管到单片机的IO口上。

假设我们
将二极管连接到P1口的第0个引脚上。

然后,我们可以使用C语言编写如下的程序来让这个二极管发光:
c.
#include <reg52.h> // 包含51单片机的寄存器定义文件。

void main() {。

P1 = 0xFE; // 将P1口的第0个引脚拉低,使二极管发光。

while(1) {。

// 这里可以添加你需要的其他操作。

}。

}。

在这个简单的例子中,我们使用了reg52.h头文件来包含51单
片机的寄存器定义。

然后在main函数中,我们将P1口的第0个引
脚拉低,使二极管发光。

接着使用一个无限循环来让程序持续执行。

需要注意的是,具体的连接方式和引脚的控制可能会根据具体
的硬件电路设计而有所不同。

在实际的项目中,你可能需要根据具
体的硬件连接情况和需求来编写相应的程序。

另外,如果你需要实现更复杂的功能,比如控制二极管的闪烁、呼吸灯效果等,你可能需要使用定时器中断、PWM控制等技术来实现。

这需要更深入的学习和了解51单片机的相关知识。

希望这个简
单的例子能够帮助你入门。

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

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

XXXX学院实验报告Experimentation Report of Taiyuan Normal University系部计算机年级大三课程单片机原理与接口技术姓名同组者日期2019.10.31 学号项目 LED闪烁一、实验目的1、了解单片机顺序执行的特点;2、掌握51单片机开发板所需软件的安装过程;3、以LED灯闪烁为例子,掌握C语言的编写和keilc51的使用;二、实验仪器硬件资源:单片机开发板笔记本电脑;软件资源:软件 Keil uVision5、USB驱动程序;三、实验原理1、流程图2、连接图四、实验结果点击运行按钮,LED灯先全部熄灭,隔一段时间,LED灯亮,再隔一段时间,LED灯全部熄灭,LED灯亮灭循环,直到点击复位按钮才结束。

五、实验代码及分析#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器//--定义全局函数--//void Delay10ms(unsigned int c); //延时10ms* 函数名 : main* 函数功能 : 主函数* 输入 : 无* 输出 : 无void main(){while(1){//--数字前面加0x表示该数是十六进制的数,0x00就是十六进制的00--////--P0口一共有8个IO口,即从P0.0到P0.7,而0x00二进制就是0000 0000--////--效果就是P0.0到P2.7都是0,即低电平。

而如果你想给P0.1口赋高电平时--////--二进制就是0000 0001,就是十六进制0x01.--//P0 = 0x00; //置P0口为低电平,LED灯先熄灭Delay10ms(50); //调用延时程序,修改括号里面的值可以调整延时时间P0 = 0xff; //置P0口为高电平,LED灯亮Delay10ms(50); // 调用延时程序}}* 函数名 : Delay10ms* 函数功能 : 延时函数,延时10ms* 输入 : 无* 输出 : 无void Delay10ms(unsigned int c) //误差 0us{unsigned char a, b//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//for (;c>0;c--){for (b=38;b>0;b--){for (a=130;a>0;a--);}}}六、心得体会通过此次试验我了解单片机顺序执行的特点,掌握51单片机开发板所需软件的安装过程,通过LED灯闪烁这个例程,我初步了解了Keilc51使用。

单片机指令编程实例LED闪烁程序设计

单片机指令编程实例LED闪烁程序设计

单片机指令编程实例LED闪烁程序设计单片机指令编程是嵌入式系统开发中必不可少的技能之一。

本文将为您介绍一个基于单片机指令编程的实例:LED闪烁程序设计。

一、程序设计背景在嵌入式系统中,LED的闪烁往往用于指示系统工作状态或者作为交互的一种方式。

因此,开发人员经常需要编写单片机程序来控制LED的闪烁频率和模式。

在本实例中,我们将使用C语言编写一个简单的单片机指令程序来实现LED的闪烁效果。

二、所需硬件和连接首先,您需要准备一块单片机开发板、一个LED灯和相应的连接线。

将LED正极连接到单片机的IO口(例如P1.0),将LED负极接地。

三、程序编写下面是一个简单的单片机指令编程示例,用于实现LED的闪烁效果:```c#include <reg51.h>#define LED_PIN P1void delay(unsigned int count) {unsigned int i, j;for (i = 0; i < count; i++) {for (j = 0; j < 500; j++);}}void main() {while (1) {LED_PIN = 0xFF; // LED亮delay(1000); // 延时1秒LED_PIN = 0x00; // LED灭delay(1000); // 延时1秒}}```四、程序说明该程序使用了51系列单片机的头文件reg51.h,定义了LED_PIN为P1口(可根据实际情况修改)。

接着,定义了一个延时函数delay,用于控制闪烁频率。

在主函数main中,通过循环控制LED的闪烁状态,使用赋值操作将LED_PIN设为0xFF(全灭)或0x00(全亮),并在每次状态改变后延时1秒。

五、烧录程序完成程序编写后,将生成的hex文件通过烧录器烧录到单片机中。

六、调试与验证将单片机开发板连接电源,观察LED是否按照预期的频率闪烁。

如果闪烁频率不符合预期,可以通过调整delay函数中的延时参数来进行调试。

51单片机50个实例代码

51单片机50个实例代码

51单片机50个例程代码程序里有中断,串口等驱动,直接复制即可使用1-IO输出-点亮1个LED灯方法1/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:点亮P1口的一个LED灯该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbit LED=P1^0;// 用sbit 关键字定义LED到P1.0端口,//LED是自己任意定义且容易记忆的符号/*------------------------------------------------主函数------------------------------------------------*/void main (void){//此方法使用bit位对单个端口赋值LED=1; //将P1.0口赋值1,对外输出高电平LED=0; //将P1.0口赋值0,对外输出低电平while (1) //主循环{//主循环中添加其他需要一直工作的程序}}2-IO输出-点亮1个LED灯方法2/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:点亮P1口的一个LED灯该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义/*------------------------------------------------主函数------------------------------------------------*/void main (void){//此方法使用1个字节对单个端口赋值P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉,//ff换算成二进制是1111 1111P1 = 0xfe; //P1口的最低位点亮,可以更改数值是其他的灯点亮//0xfe是16进制,0x开头表示16进制数,//fe换算成二进制是1111 1110while (1) //主循环{//主循环中添加其他需要一直工作的程序}}3-IO输出-点亮多个LED灯方法1/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:点亮P1口的多个LED灯该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbit LED0=P1^0;// 用sbit 关键字定义LED到P1.0端口,sbit LED1=P1^1;//LED是自己任意定义且容易记忆的符号sbit LED2=P1^2;sbit LED3=P1^3;sbit LED4=P1^4;sbit LED5=P1^5;sbit LED6=P1^6;sbit LED7=P1^7;/*------------------------------------------------主函数------------------------------------------------*/void main (void){//此方法使用bit位对单个端口赋值LED0=0; //将P1.0口赋值0,对外输出低电平LED1=1;LED2=0;LED3=1;LED4=0;LED5=1;LED6=0;LED7=1;while (1) //主循环{//主循环中添加其他需要一直工作的程序}}4-IO输出-点亮多个LED灯方法2/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:点亮P1口的多个LED灯该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义/*------------------------------------------------主函数------------------------------------------------*/void main (void){//此方法使用bit位对单个端口赋值P1=0x55; //换成二进制是0101 0101while (1) //主循环{//主循环中添加其他需要一直工作的程序}}5-闪烁1个LED/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:点亮P1口的1个LED灯闪烁该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbit LED0=P1^0;// 用sbit 关键字定义LED到P1.0端口,//LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){//此方法使用bit位对单个端口赋值while (1) //主循环{LED0=0; //将P1.0口赋值0,对外输出低电平Delay(10000); //调用延时程序;更改延时数字可以更改延时长度;//用于改变闪烁频率LED0=1; //将P1.0口赋值1,对外输出高电平Delay(10000);//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}6-不同频率闪烁1个LED灯/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:点亮P1口的1个LED灯闪烁该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbit LED0=P1^0;// 用sbit 关键字定义LED到P1.0端口,//LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){//此方法使用bit位对单个端口赋值unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255while (1) //主循环{for(i=0;i<10;i++) //加入for循环,表明for循环大括号中的程序循环执行10次{LED0=0; //将P1.0口赋值0,对外输出低电平Delay(5000); //调用延时程序;更改延时数字可以更改延时长度;//用于改变闪烁频率LED0=1; //将P1.0口赋值1,对外输出高电平Delay(5000);}for(i=0;i<10;i++){LED0=0; //将P1.0口赋值0,对外输出低电平Delay(60000); //调用延时程序;更改延时数字可以更改延时长度;//用于改变闪烁频率LED0=1; //将P1.0口赋值1,对外输出高电平Delay(60000);}//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}7-不同频率闪烁多个LED灯/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:点亮P1口的多个LED灯闪烁该程序是单片机学习中最简单最基础的,通过程序了解如何控制端口的高低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED0=P1^0;// 用sbit 关键字定义LED到P1.0端口,LED是自己任意定义且容易记忆的符号sbit LED1=P1^1;sbit LED2=P1^2;sbit LED3=P1^3;sbit LED4=P1^4;sbit LED5=P1^5;sbit LED6=P1^6;sbit LED7=P1^7;void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){//此方法使用bit位对单个端口赋值unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255while (1) //主循环{for(i=0;i<10;i++) //加入for循环,表明for循环大括号中//的程序循环执行10次{LED0=0; //将P1.0口赋值0,对外输出低电平LED2=1;LED4=0;Delay(5000); //调用延时程序;更改延时数字可以更改延时长度;//用于改变闪烁频率LED0=1; //将P1.0口赋值1,对外输出高电平LED2=0;LED4=1;Delay(5000);}for(i=0;i<10;i++){LED0=0; //将P1.0口赋值0,对外输出低电平LED2=1;LED4=0;Delay(60000); //调用延时程序;更改延时数字可以更改延时长度;//用于改变闪烁频率LED0=1; //将P1.0口赋值1,对外输出高电平LED2=0;LED4=1;Delay(60000);}//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}8-8位LED左移/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:左移,直至LED全部点亮,左移符号<<------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255Delay(50000);P1=0xfe; //赋初始值for(i=0;i<8;i++) //加入for循环,表明for循环大括号中的程序循环执行8次{Delay(50000);P1<<=1;}while (1) //主循环{//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}9-8位LED右移/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:右移,直至LED全部点亮,右移符号>>------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255Delay(50000);P1=0x7f; //赋初始值for(i=0;i<8;i++) //加入for循环,表明for循环大括号中的程序循环执行8次{Delay(50000);P1>>=1;}while (1) //主循环{//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}10-LED循环左移/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:循环左移,始终一个led点亮,并循环执行流水动作,左移符号<< 逻辑或符号|------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255Delay(50000);P1=0xfe; //赋初始值while (1) //主循环{for(i=0;i<8;i++) //加入for循环,表明for循环大括号中的程序循环执行8次{Delay(50000);P1<<=1;P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1}P1=0xfe; //重新赋初始值//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}11-LED循环右移/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:循环右移,始终一个led点亮,并循环执行流水动作,右移符号>> 逻辑或符号|------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255Delay(50000);P1=0x7f; //赋初始值while (1) , //主循环{for(i=0;i<8;i++) //加入for循环,表明for循环大括号中的程序循环执行8次{Delay(50000);P1>>=1;P1=P1|0x80; //右移后,最左端自动赋值0,所以需要该语句赋值1}P1=0x7f; //重新赋初始值//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}12-查表显示LED灯/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:通过查表获得1个字节的值然后赋值给P1端口,ROM允许情况可以设置更多表格------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义/*------------------------------------------------查表表格------------------------------------------------*/unsigned char code table[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0x00,0x55,0x55,0xaa,0xaa};//rom允许情况可以无限添加/*------------------------------------------------函数声明------------------------------------------------*/void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255while (1) //主循环{for(i=0;i<16;i++) //加入for循环,表明for循环大括号中的程序循环//执行16次,表明表格中有16个元素{P1=table[i];Delay(30000);}//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}13-双灯左移右移闪烁/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5修改:无内容:2个led灯先左移,然后右移,然后同时闪烁------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i//取值范围0~255unsigned char temp;//定义临时变量用于转换while (1) //主循环{temp=0xfc;P1=temp;for(i=0;i<7;i++) //加入for循环,表明for循环大括号//中的程序循环执行7次{Delay(50000); //调用延时程序;更改延时数字可//以更改延时长度;用于改变闪烁频率temp<<=1;temp=temp|0x01; //也可以直接把temp换成P1P1=temp; //之所以加入temp做中间变量,转换//完成后直接赋值到端口,防止直接//操作端口造成的短暂闪烁}temp=0x3f;P1=temp;for(i=0;i<7;i++) //加入for循环,表明for循环大括号//中的程序循环执行7次{Delay(50000); //调用延时程序;更改延时数字可以//更改延时长度;用于改变闪烁频率temp>>=1;temp|=0x80; //等效于temp=temp|0x80P1=temp;}for(i=0;i<3;i++) //加入for循环,表明for循环大括号//中的程序循环执行3次{P1=0xff;Delay(50000);P1=0x00;Delay(50000);} //主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}14-花样灯/*-----------------------------------------------名称:IO口高低电平控制论坛:编写:shifang日期:2009.5内容:花样灯一般有两种方法实现:1、程序循环执行2、查表法这里我们两种都使用一下------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义/*------------------------------------------------花样表格------------------------------------------------*/unsigned char code seg[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0x00,0x55,0x55,0xaa,0xaa};//rom允许情况可以无限添加void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/main(){unsigned char i; //定义一个无符号字符型//局部变量i 取值范围0~255while(1){P1=0xFE; //第1个LED亮for(i=0;i<8;i++){Delay(20000);P1 <<=1;}P1=0x7F; //第8个LED亮for(i=0;i<8;i++){Delay(20000);P1 >>=1;}P1=0xFE; //第1个LED亮for(i=0;i<8;i++)Delay(20000);P1 <<=1;P1 |=0x01;}P1=0x7F; //第8个LED亮for(i=0;i<8;i++){Delay(20000);P1 >>=1;P1 |=0x80;}//下面通过查表方法获得花样参数for(i=0;i<16;i++)//查表可以简单的显示各种花样实用性更强{Delay(20000);P1=seg[i];}}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}15-PWM调光/*-----------------------------------------------名称:PWM调光论坛:编写:shifang日期:2009.5修改:无内容:通过PWM(脉宽调制)调节LED的亮度#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED0=P1^0;// 用sbit 关键字定义LED到P1.0端口,LED是自己任意定义且容易记忆的符号void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值while (1) //主循环{LED0=1;Delay(60000); //特意加延时,可以看到熄灭的过程for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){ //PWM_LOW表示低//电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次LED0=0; //点亮LEDDelay(PWM_LOW);//延时长度,600次循环中从1加至599LED0=1; //熄灭LEDDelay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1}LED0=0;for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ //与逐渐变亮相反的过程LED0=0;Delay(PWM_LOW);LED0=1;Delay(CYCLE-PWM_LOW);}//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535void Delay(unsigned int t){while(--t);}16-共阳数码管静态显示/*-----------------------------------------------名称:单个共阳数码管静态显示论坛:编写:shifang日期:2009.5修改:无内容:通过赋值给P1,让数码管显示特定的字符或者数字------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义void main (void){P1=0xc0; //二进制为1100 0000 参考数码管排列,//可以得出0对应的段点亮,1对应的段熄灭,结果显示数字"0"while(1){}}17-1个共阳数码管显示变化数字/*-----------------------------------------------名称:单个共阳数码管动态显示变化数字论坛:编写:shifang日期:2009.5修改:无内容:通过循环赋值给P1,让数码管显示特定的字符或者数字------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x77,0x7c,0x39,0x5e,0x 79,0x71,};// 显示数值表0-9void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255while (1) //主循环{for(i=0;i<16;i++) //加入for循环,表明for循环大括号中的程序循环执行10次{P1=dofly_table[i]; //循环调用表中的数值Delay(60000); //延时,方便观看数字变化}//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}18-单个数码管模拟水流/*-----------------------------------------------名称:单个共阳数码管模拟水流论坛:编写:shifang日期:2009.5修改:无内容:通过循环赋值给P1,让数码管显示特定流动样式------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义void Delay(unsigned int t); //函数声明/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255while (1) //主循环{P1=0xfe;for(i=0;i<6;i++) //加入for循环,表明for循环大括号中的程序循环执行6次{Delay(10000);P1<<=1;P1|=0x01;}//主循环中添加其他需要一直工作的程序}}/*------------------------------------------------延时函数,含有输入参数unsigned int t,无返回值unsigned int 是定义无符号整形变量,其值的范围是0~65535------------------------------------------------*/void Delay(unsigned int t){while(--t);}19-按键控制单个数码管显示/*-----------------------------------------------名称:单个共阳数码管动态显示变化数字论坛:编写:shifang日期:2009.5修改:无内容:通过循环检测P1口按键输入值,然后用数码管输出,没有按键按下时原值不变------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};// 显示数值表0-9/*------------------------------------------------主函数------------------------------------------------*/void main (void){while (1) //主循环{switch(P3) //P3口作为独立按键输入端,检测端口电平并做如下判断{case 0xfe:P1=dofly_table[1];break;//0xfe = 1111 1110,//说明连接在P3.0端口的按键被按下,显示对应的数字然后跳出循环case 0xfd:P1=dofly_table[2];break;//调用表中的第三个//元素0xa4 下标0 才表示数组中的第一个元素case 0xfb:P1=dofly_table[3];break;case 0xf7:P1=dofly_table[4];break;case 0xef:P1=dofly_table[5];break;case 0xdf:P1=dofly_table[6];break;case 0xbf:P1=dofly_table[7];break;case 0x7f:P1=dofly_table[8];break;default:break; //如果都没按下,直接跳出}//主循环中添加其他需要一直工作的程序}}20-单个数码管指示逻辑电平/*-----------------------------------------------名称:单个共阳数码管指示逻辑电平论坛:编写:shifang日期:2009.5修改:无内容:通过循环检测P3.2口电平输入值,然后用数码管输出"H" or "L",表示该端口现在连接的是高电平还是低电平------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,//头文件包含特殊功能寄存器的定义sbit IO_IN=P3^2; //定义IO 信号输入端/*------------------------------------------------主函数------------------------------------------------*/void main (void){while (1) //主循环{if(IO_IN==1)//如果端口检测到1表示高电平P1=0x89; //"H"elseP1=0xc7; //"L"//否则表示低电平,这里使用条件语句if 。

C51单片机实现呼吸灯和花样流水灯程序

C51单片机实现呼吸灯和花样流水灯程序

C51单⽚机实现呼吸灯和花样流⽔灯程序1.⽤C51单⽚机实现花样流⽔灯,代码如下:#include <reg52.h>#define LED_A P1 //led灯所⽤的接⼝,是哪个⼝就写P⼏void delayms(){unsigned char x = 0; unsigned char i;unsigned char y = 0;while(y < 0.001) //定义led灯的切换的延时时间,越⼩越快。

{ //(y < 0.001);(x<100);(i<100)都可以修改x = 0;while(x<100){i = 0;while(i<100){i++;}x++;}y++;}}#define LED_NUM 8 //定义led灯的数量,可快速实现不同⽤途的修改;void main(){unsigned char k;unsigned char j;unsigned char LED_ALL[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F}; //led灯亮灭的⼗六进制数组;unsigned char LED_ALL_2[] = {0XFC,0XF3,0XCF,0X3F}; while(1) { for(k=0;k<3;k++) //第⼀个for实现奇偶灯交叉闪烁三次,想闪烁⼏次就修改(K<3)中的数值; { LED_A = 0xAA; delayms(); LED_A = 0x55; delayms(); } for(k=3;k>0;k--) //实现⼀个流⽔灯左右三次(从左到右再从右到左算⼀次); { for(j=0;j<LED_NUM;j++) { LED_A = LED_ALL[j]; delayms(); } for(j=6;j>0;j--) { LED_A = LED_ALL[j]; delayms(); } } for(k=0;k<3;k++) //实现前四个灯亮后四个灯灭,交叉闪烁3次,修改次数同上; { LED_A = 0xf0; delayms(); LED_A = 0xf; delayms(); } for(k=3;k>0;k--) //实现两个灯依次流⽔3次; { for(j=0;j<4;j++) { LED_A = LED_ALL_2[j]; delayms(); } for(j=2;j>0;j--) { LED_A = LED_ALL_2[j]; delayms(); } } }}2.实现第⼀个灯呼吸,由暗变亮,再由亮变暗,程序如下;#include <reg52.h>sbit LED1 = P3^0;void delay(unsigned int a) //定义⼀个延时函数{ while(--a);}void main(){ unsigned int t,circle=800; //定义变量,circle=800为led灯呼吸的间隔长短,数值越⼩,间隔越短。

闪烁LED灯的程序

闪烁LED灯的程序

闪烁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灯的功能。

51芯片超炫爱心流水程序灯代码

51芯片超炫爱心流水程序灯代码

#include<reg52.h>sbit P00=P0^0;sbit P01=P0^1;sbit P02=P0^2;sbit P03=P0^3;sbit P04=P0^4;sbit P05=P0^5;sbit P06=P0^6;sbit P07=P0^7;sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit P14=P1^4;sbit P15=P1^5;sbit P16=P1^6;sbit P17=P1^7;sbit P20=P2^0;sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P24=P2^4;sbit P25=P2^5;sbit P26=P2^6;sbit P27=P2^7;sbit P30=P3^0;sbit P31=P3^1;sbit P32=P3^2;sbit P33=P3^3;sbit P34=P3^4;sbit P35=P3^5;sbit P36=P3^6;sbit P37=P3^7;unsigned int x,y;void rzmzy(); //红色走马左移声明void rzmyy(); //红色走马右移声明void rzmnwyd(); //红色走马内外移动声明void rtbyd(); //红色跳变移动声明void rjl(); //红色渐亮声明void rja(); //红色渐暗声明void rP0ja();//P0渐暗void zkb(unsigned char d);void delayms(int z)//延时声明,修改s的数值,就可以改变时间{int i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void Onall() //开启所有灯{P0=0x00;P1=0x00;P2=0x00;P3=0x00;}void Offall()//关闭所有灯{P0=0xff;P1=0xff;P2=0xff;P3=0xff;}//void fxls()//逆时针逐个等时流水灯//{// P0=0xfe;delayms(50);// P0=0xfd;delayms(50);// P0=0xfb;delayms(50);// P0=0xf7;delayms(50);// P0=0xef;delayms(50);// P0=0xdf;delayms(50);// P0=0xbf;delayms(50);// P0=0x7f;delayms(50);// P0=0xff;//// P2=0x7f;delayms(50);// P2=0xbf;delayms(50);// P2=0xdf;delayms(50);// P2=0xef;delayms(50);// P2=0xf7;delayms(50);// P2=0xfb;delayms(50);// P2=0xfd;delayms(50);// P2=0xfe;delayms(50);// P2=0xff;//// P3=0x7f;delayms(50);// P3=0xbf;delayms(50);// P3=0xdf;delayms(50);// P3=0xef;delayms(50);// P3=0xf7;delayms(50);// P3=0xfb;delayms(50);// P3=0xfe;delayms(50);// P3=0xff;//// P1=0x7f;delayms(50);// P1=0xbf;delayms(50);// P1=0xdf;delayms(50);// P1=0xef;delayms(50);// P1=0xf7;delayms(50);// P1=0xfb;delayms(50);// P1=0xfd;delayms(50);// P1=0xfe;delayms(50);// P1=0xff;//}//void ls()//顺时针逐个等时流水灯//{// Offall();// P1=0xfe;delayms(50);// P1=0xfd;delayms(50);// P1=0xfb;delayms(50);// P1=0xf7;delayms(50);// P1=0xef;delayms(50);// P1=0xdf;delayms(50);// P1=0xbf;delayms(50);// P1=0x7f;delayms(50);// P1=0xff;//// P3=0xfe;delayms(50);// P3=0xfd;delayms(50);// P3=0xfb;delayms(50);// P3=0xf7;delayms(50);// P3=0xef;delayms(50);// P3=0xdf;delayms(50);// P3=0xbf;delayms(50);// P3=0x7f;delayms(50);// P3=0xff;;//// P2=0xfe;delayms(50);// P2=0xfd;delayms(50);// P2=0xfb;delayms(50);// P2=0xf7;delayms(50);// P2=0xef;delayms(50);// P2=0xdf;delayms(50);// P2=0xbf;delayms(50);// P2=0xff;;//// P0=0x7f;delayms(50);// P0=0xbf;delayms(50);// P0=0xdf;delayms(50);// P0=0xef;delayms(50);// P0=0xf7;delayms(50);// P0=0xfb;delayms(50);// P0=0xfd;delayms(50);// P0=0xfe;delayms(50);// P0=0xff;//}void bsb()//双边同时流水由上至下{Offall();delayms(50);P0=0xfe;delayms(50);P0=0xfd;P1=0xfe;delayms(50);P0=0xfb;P1=0xfd;delayms(50);P0=0xf7;P1=0xfb;delayms(50);P0=0xef;P1=0xf7;delayms(50);P0=0xdf;P1=0xef;delayms(50);P0=0xbf;P1=0xdf;delayms(50);P0=0x7f;P1=0xbf;delayms(50);P0=0xff;P2=0x7f;P1=0x7f;delayms(50);P1=0xff;P2=0xbf;P3=0xfe;delayms(50);P2=0xdf;P3=0xfd;delayms(50);P2=0xef;P3=0xfb;delayms(50);P2=0xf7;P3=0xf7;delayms(50);P2=0xfb;P3=0xef;delayms(50);P2=0xfd;P3=0xdf;delayms(50);P2=0xfe;P3=0xbf;delayms(50);P2=0xff;P3=0x7f;delayms(50);P3=0xff;}//void fbsb() //半双边流水由下至上//{// Offall();// P3=0x7f;delayms(80);// P2=0xfe;P3=0xbf;delayms(80);// P2=0xfd;P3=0xdf;delayms(80);// P2=0xfb;P3=0xef;delayms(80);// P2=0xf7;P3=0xf7;delayms(80);// P2=0xef;P3=0xfb;delayms(80);// P2=0xdf;P3=0xfd;delayms(80);// P2=0xbf;P3=0xfe;delayms(80);Offall(); // P2=0x7f;P1=0x7f;delayms(80);Offall(); //// P0=0x7f;P1=0xbf;delayms(80);// P0=0xbf;P1=0xdf;delayms(80);// P0=0xdf;P1=0xef;delayms(80);// P0=0xef;P1=0xf7;delayms(80);// P0=0xf7;P1=0xfb;delayms(80);// P0=0xfb;P1=0xfd;delayms(80);// P0=0xfd;P1=0xfe;delayms(80);// P0=0xfe;P1=0xff;delayms(80);//}void ss(y)//闪烁(y为闪烁间隔时间){Onall();delayms(y);Offall();delayms(y);}//void fxsz() //反向生长//{// Offall();// P0=0xfe;delayms(50);// P0=0xfc;delayms(50);// P0=0xf8;delayms(50);// P0=0xf0;delayms(50);// P0=0xe0;delayms(50);// P0=0xc0;delayms(50);// P0=0x80;delayms(50);// P0=0x00;delayms(50);//// P2=0x7f;delayms(50);// P2=0x3f;delayms(50);// P2=0x1f;delayms(50);// P2=0x0f;delayms(50);// P2=0x07;delayms(50);// P2=0x03;delayms(50);// P2=0x01;delayms(50);// P2=0x00;delayms(50);//// P3=0x7f;delayms(50);// P3=0x3f;delayms(50);// P3=0x1f;delayms(50);// P3=0x0f;delayms(50);// P3=0x07;delayms(50); // P3=0x03;delayms(50); // P3=0x01;delayms(50); // P3=0x00;delayms(50); //// P1=0x7f;delayms(50);// P1=0x3f;delayms(50);// P1=0x1f;delayms(50);// P1=0x0f;delayms(50);// P1=0x07;delayms(50); // P1=0x03;delayms(50); // P1=0x01;delayms(50); // P1=0x00;delayms(50); //// Offall();delayms(100);// Onall();delayms(100);// Offall();delayms(100);// Onall();delayms(500);// Offall();delayms(50);//}void zxsz() //正向生长{Offall();P0=0xfe;delayms(50);P1=0xfe;delayms(50);P1=0xfc;delayms(50);P1=0xf8;delayms(50);P1=0xf0;delayms(50);P1=0xe0;delayms(50);P1=0xc0;delayms(50);P1=0x80;delayms(50);P1=0x00;delayms(50);P3=0xfe;delayms(50);P3=0xfc;delayms(50);P3=0xf8;delayms(50);P3=0xf0;delayms(50);P3=0xe0;delayms(50);P3=0xc0;delayms(50);P3=0x80;delayms(50);P3=0x00;delayms(50);P2=0xfe;delayms(50);P2=0xfc;delayms(50);P2=0xf8;delayms(50);P2=0xf0;delayms(50);P2=0xe0;delayms(50);P2=0xc0;delayms(50);P2=0x80;delayms(50);P2=0x00;delayms(50);P0=0x7e;delayms(50);P0=0x3e;delayms(50);P0=0x1e;delayms(50);P0=0x0e;delayms(50);P0=0x06;delayms(50);P0=0x02;delayms(50);P0=0x00;delayms(50);Offall();delayms(100);Onall();delayms(100);Offall();delayms(100);Onall();delayms(500);Offall();delayms(100);}//void fxsw() //反向死亡//{// Onall();// P0=0x01;delayms(50); // P0=0x03;delayms(50); // P0=0x07;delayms(50); // P0=0x0f;delayms(50);// P0=0x1f;delayms(50);// P0=0x3f;delayms(50);// P0=0x7f;delayms(50);// P0=0xff;delayms(50);//// P2=0x80;delayms(50); // P2=0xc0;delayms(50); // P2=0xe0;delayms(50); // P2=0xf0;delayms(50);// P2=0xf8;delayms(50);// P2=0xfc;delayms(50);// P2=0xff;delayms(50);//// P3=0x80;delayms(50);// P3=0xc0;delayms(50);// P3=0xe0;delayms(50);// P3=0xf0;delayms(50);// P3=0xf8;delayms(50);// P3=0xfc;delayms(50);// P3=0xfe;delayms(50);// P3=0xff;delayms(50);//// P1=0x80;delayms(50);// P1=0xc0;delayms(50);// P1=0xe0;delayms(50);// P1=0xf0;delayms(50);// P1=0xf8;delayms(50);// P1=0xfc;delayms(50);// P1=0xfe;delayms(50);// P1=0xff;delayms(50);//}void c(x) //间隔闪烁x为闪烁间隔时间{Offall();P0=0xaa;P2=0x55;P3=0x55;P1=0x55;delayms(x);P0=0x55;P2=0xaa;P3=0xaa;P1=0xaa;delayms(x);}/*----------------------------------------------------------*/void cx() //出现一点点{Offall();delayms(500);P0=0xff;P2=0xff;P1=0xbf;P3=0xff;delayms(500);P0=0xdf;P2=0xbf;P1=0xbf;P3=0xff;delayms(500);P0=0xdb;P2=0xbd;P1=0xbf;P3=0xfb;delayms(500);P0=0x59;P2=0xa5;P1=0x5d;P3=0x9a;delayms(500);P0=0x11;P2=0x20;P1=0x24;P3=0x10;delayms(500);P0=0x00;P2=0x00;P1=0x00;P3=0x00;delayms(500); }//void df() //单飞//{// P0=0xfe;delayms(50);// P0=0xfc;delayms(50);// P0=0xf0;delayms(50);// P0=0xe0;delayms(50);// P0=0xc0;delayms(50);// P0=0x80;delayms(50);// P0=0x00;delayms(50);//先引出单飞//// P0=0x01;delayms(50);// P0=0x03;delayms(50);// P0=0x07;delayms(50);// P0=0x0f;delayms(50);// P0=0x1f;delayms(50);// P0=0x3f;delayms(50);// P0=0x7f;delayms(50);// P0=0xff;delayms(50);//// P2=0x7f;delayms(50);// P2=0x3f;delayms(50);// P2=0x1f;delayms(50);// P2=0x0f;delayms(50);// P2=0xf7;delayms(50);// P2=0xf3;delayms(50);// P2=0xf1;delayms(50);// P2=0xf0;delayms(50);//// P3=0x7f;delayms(50);// P2=0x80;delayms(50);// P2=0xc0;delayms(50);// P2=0xe0;delayms(50);// P2=0xf0;delayms(50);// P2=0xf8;delayms(50);// P2=0xfc;delayms(50);// P2=0xfe;delayms(50);// P2=0xff;delayms(50);//// P3=0x7f;delayms(50);// P3=0x3f;delayms(50);// P3=0x1f;delayms(50);// P3=0x0f;delayms(50);// P3=0x07;delayms(50);// P3=0x03;delayms(50);// P3=0x01;delayms(50);// P3=0x00;delayms(50);//// P3=0xc0;delayms(50);// P3=0xe0;delayms(50);// P3=0xf0;delayms(50);// P3=0xf8;delayms(50);// P3=0xfc;delayms(50);// P3=0xfe;delayms(50);// P3=0xff;delayms(50);//// P1=0x7f;delayms(50);// P1=0x3f;delayms(50);// P1=0x1f;delayms(50);// P1=0x0f;delayms(50);// P1=0x07;delayms(50);// P1=0x03;delayms(50);// P1=0x01;delayms(50);// P1=0x00;delayms(50);//// P0=0x01;delayms(50);// P1=0x80;delayms(50);// P1=0xc0;delayms(50);// P1=0xe0;delayms(50);// P1=0xf0;delayms(50);// P1=0xf8;delayms(50);// P1=0xfc;delayms(50);// P1=0xfe;delayms(50);// P1=0xff;delayms(50);////}/*----------------------------------------------------------*/ void cdP00() //沉淀语句{P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0xff;P0=0x7f;delayms(30);P0=0xbf;delayms(30);P0=0xef;delayms(30);P0=0xf7;delayms(30);P0=0xfb;delayms(30);P0=0xfd;delayms(30);P0=0xfe;delayms(30);}//P00void cdP01(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0x7e;delayms(30);P0=0xbe;delayms(30);P0=0xde;delayms(30);P0=0xee;delayms(30);P0=0xf6;delayms(30);P0=0xfa;delayms(30);P0=0xfc;delayms(30);}//P01void cdP02(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0x7c;delayms(30);P0=0xbc;delayms(30);P0=0xdc;delayms(30);P0=0xf4;delayms(30);P0=0xf8;delayms(30);}//P02void cdP03(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0x78;delayms(30);P0=0xb8;delayms(30);P0=0xd8;delayms(30);P0=0xe8;delayms(30);P0=0xf0;delayms(30);}//P03void cdP04(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0x70;delayms(30);P0=0xb0;delayms(30);P0=0xd0;delayms(30);P0=0xe0;delayms(30);}//P04void cdP05(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0x60;delayms(30);P0=0xa0;delayms(30);P0=0xc0;delayms(30);}//P05void cdP06(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0x40;delayms(30);P0=0x80;delayms(30);}//P06void cdP07(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);P2=0xff;P0=0x00;delayms(30);}//P07void cdP27(){P3=0x7f;delayms(30);P3=0xff;P2=0xfe;delayms(30);P2=0xfd;delayms(30);P2=0xfb;delayms(30);P2=0xf7;delayms(30);P2=0xef;delayms(30);P2=0xdf;delayms(30);P2=0xbf;delayms(30);P2=0x7f;delayms(30);}//P27void cdP26(){P3=0x7e;delayms(30);//P3=0xff;P2=0x7e;delayms(30);P2=0x7d;delayms(30);P2=0x7b;delayms(30);P2=0x77;delayms(30);P2=0x6f;delayms(30);P2=0x5f;delayms(30);P2=0x3f;delayms(30);}//P26void cdP25(){P3=0x7c;delayms(30);//P3=0xff;P2=0x3e;delayms(30);P2=0x3d;delayms(30);P2=0x3b;delayms(30);P2=0x37;delayms(30);P2=0x2f;delayms(30);P2=0x1f;delayms(30);}//P25void cdP24(){P3=0x78;delayms(30);//P3=0xff;P2=0x1e;delayms(30);P2=0x1d;delayms(30);P2=0x1b;delayms(30);P2=0x17;delayms(30);P2=0x0f;delayms(30);}//P24void cdP23(){P3=0x70;delayms(30);//P3=0xff;P2=0x0e;delayms(30);P2=0x0d;delayms(30);P2=0x0b;delayms(30);P2=0x07;delayms(30);}//P23void cdP22(){P3=0x60;delayms(30);//P3=0xff;P2=0x06;delayms(30);P2=0x05;delayms(30);P2=0x03;delayms(30);}//P22void cdP21(){P3=0x20;delayms(30);//P3=0xff;P2=0x02;delayms(30);P2=0x01;delayms(30);}//P21void cdP20(){P3=0x00;delayms(30);//P3=0xff;P2=0x00;delayms(30);}//P20void cdP10(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30) ;P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0xff;P1=0x7f;delayms(30);P1=0xbf;delayms(30);P1=0xdf;delayms(30);P1=0xef;delayms(30);P1=0xf7;delayms(30);P1=0xfb;delayms(30);P1=0xfd;delayms(30);P1=0xfe;delayms(30);}//P10void cdP11(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0x7e;delayms(30);P1=0xbe;delayms(30);P1=0xde;delayms(30);P1=0xee;delayms(30);P1=0xf6;delayms(30);P1=0xfa;delayms(30);P1=0xfc;delayms(30);}//P11void cdP12(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0x7c;delayms(30);P1=0xbc;delayms(30);P1=0xdc;delayms(30);P1=0xec;delayms(30);P1=0xf4;delayms(30);P1=0xf8;delayms(30);}//P12void cdP13(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0x78;delayms(30);P1=0xb8;delayms(30);P1=0xd8;delayms(30);P1=0xe8;delayms(30);P1=0xf0;delayms(30);}//P13void cdP14(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0x70;delayms(30);P1=0xb0;delayms(30);P1=0xd0;delayms(30);P1=0xe0;delayms(30);}//P14void cdP15(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0x60;delayms(30);P1=0xa0;delayms(30);P1=0xc0;delayms(30);}//P15void cdP16(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0x40;delayms(30);P1=0x80;delayms(30);}//P16void cdP17(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);P3=0xff;P1=0x00;delayms(30);}//P17void cdP30(){P3=0x7f;delayms(30);P3=0xbf;delayms(30);P3=0xdf;delayms(30);P3=0xef;delayms(30);P3=0xf7;delayms(30);P3=0xfb;delayms(30);P3=0xfd;delayms(30);P3=0xfe;delayms(30);}//P30void cdP31(){P3=0x7e;delayms(30);P3=0xbe;delayms(30);P3=0xde;delayms(30);P3=0xee;delayms(30);P3=0xf6;delayms(30);P3=0xfa;delayms(30);P3=0xfc;delayms(30); }//P31void cdP32(){P3=0x7c;delayms(30);P3=0xbc;delayms(30);P3=0xdc;delayms(30);P3=0xec;delayms(30);P3=0xf4;delayms(30);P3=0xfb;delayms(30); }//P32void cdP33(){P3=0x78;delayms(30);P3=0xb8;delayms(30);P3=0xd8;delayms(30);P3=0xe8;delayms(30);P3=0xf0;delayms(30); }//P33void cdP34(){P3=0x70;delayms(30);P3=0xb0;delayms(30);P3=0xd0;delayms(30);P3=0xe0;delayms(30); }//P34void cdP35(){P3=0x60;delayms(30);P3=0xa0;delayms(30);P3=0xc0;delayms(30);}//P35void cdP36(){P3=0x40;delayms(30);P3=0x80;delayms(30);}//P36void cdP37(){P3=0x00;delayms(30);}//P37/*----------------------------------------------------------*/ void cd() //由下至上沉淀{cdP00();cdP10();cdP01();cdP11();cdP02();cdP12();cdP03();cdP13();cdP04();cdP14();cdP05();cdP15();cdP06();cdP16();cdP07();cdP17();cdP27();cdP30();cdP26();cdP31();cdP25();cdP32();cdP24();cdP33();cdP23();cdP34();cdP22();cdP35();cdP21();cdP36();cdP20();cdP37();delayms(500);Offall();delayms(300);Onall();delayms(300);Offall();delayms(300);Onall();delayms(300);}/*----------------------------------------------------------*/ void szsx() //左右同时生长(由上至下){Offall();P0=0xfe;delayms(50);P0=0xfc;delayms(50);P1=0xfe;delayms(50);P0=0xf8;delayms(50);P1=0xfc;delayms(50);P0=0xf0;delayms(50);P1=0xf8;delayms(50);P0=0xe0;delayms(50);P1=0xf0;delayms(50);P0=0xc0;delayms(50);P1=0xe0;delayms(50);P0=0x80;delayms(50);P1=0xc0;delayms(50);P0=0x00;delayms(50);P1=0x80;delayms(50);P2=0x7f;delayms(50);P1=0x00;delayms(50);P2=0x3f;delayms(50);P3=0xfe;delayms(50);P2=0x1f;delayms(50);P3=0xfc;delayms(50);P2=0x0f;delayms(50);P3=0xf8;delayms(50);P2=0x07;delayms(50);P3=0xf0;delayms(50);P2=0x03;delayms(50);P3=0xe0;delayms(50);P2=0x01;delayms(50);P3=0xc0;delayms(50);P2=0x00;delayms(50);P3=0x80;delayms(50);P3=0x00;delayms(50);}/*----------------------------------------------------------*/void szxs() //左右同时生长(由下至上){Offall();P3=0x7f;delayms(50);P2=0xfe;delayms(50);P3=0x3f;delayms(50);P2=0xfc;delayms(50);P3=0x1f;delayms(50);P2=0xf8;delayms(50);P3=0x0f;delayms(50);P2=0xf0;delayms(50);P3=0x07;delayms(50);P2=0xe0;delayms(50);P3=0x03;delayms(50);P2=0xc0;delayms(50);P3=0x01;delayms(50);P2=0x80;delayms(50);P3=0x00;delayms(50);P2=0x00;delayms(50);P1=0x7f;delayms(50);P0=0x7f;delayms(50);P1=0x3f;delayms(50);P0=0x3f;delayms(50);P1=0x1f;delayms(50);P0=0x1f;delayms(50);P1=0x0f;delayms(50);P0=0x0f;delayms(50);P1=0x07;delayms(50);P0=0x07;delayms(50);P1=0x03;delayms(50);P0=0x03;delayms(50);P1=0x01;delayms(50);P0=0x01;delayms(50);P1=0x00;delayms(50);P0=0x00;delayms(50);}/*----------------------------------------------------------*/void l1d() //1个灯转{P0=0xfe,P2=0x7f,P3=0x7f,P1=0x7f;delayms(50);P0=0xfd,P2=0xbf,P3=0xbf,P1=0xbf;delayms(50);P0=0xfb,P2=0xdf,P3=0xdf,P1=0xdf;delayms(50);P0=0xf7,P2=0xef,P3=0xef,P1=0xef;delayms(50);P0=0xef,P2=0xf7,P3=0xf7,P1=0xf7;delayms(50);P0=0xdf,P2=0xfb,P3=0xfb,P1=0xfb;delayms(50);P0=0xbf,P2=0xfd,P3=0xfd,P1=0xfd;delayms(50);P0=0x7f,P2=0xfe,P3=0xfe,P1=0xfe;delayms(50); }/*----------------------------------------------------------*/ void l2d() //2个灯转{P0=0xfc,P2=0x3f,P3=0x3f,P1=0x3f;delayms(50);P0=0xf9,P2=0x9f,P3=0x9f,P1=0x9f;delayms(50);P0=0xf3,P2=0xcf,P3=0xcf,P1=0xcf;delayms(50);P0=0xe7,P2=0xe7,P3=0xe7,P1=0xe7;delayms(50);P0=0xcf,P2=0xf3,P3=0xf3,P1=0xf3;delayms(50);P0=0x9f,P2=0xf9,P3=0xf9,P1=0xf9;delayms(50);P0=0x3f,P2=0xfc,P3=0xfc,P1=0xfc;delayms(50);P0=0x7e,P2=0x7e,P3=0x7e,P1=0x7e;delayms(50); }/*----------------------------------------------------------*/ void l3d() //3个灯转{P0=0xf8,P2=0x1f,P3=0x1f,P1=0x1f;delayms(50);P0=0xf1,P2=0x8f,P3=0x8f,P1=0x8f;delayms(50);P0=0xe3,P2=0xc7,P3=0xc7,P1=0xc7;delayms(50);P0=0xc7,P2=0xe3,P3=0xe3,P1=0xe3;delayms(50);P0=0x8f,P2=0xf1,P3=0xf1,P1=0xf1;delayms(50);P0=0x1f,P2=0xf8,P3=0xf8,P1=0xf8;delayms(50);P0=0x3e,P2=0x7c,P3=0x7c,P1=0x7c;delayms(50);P0=0x7c,P2=0x3e,P3=0x3e,P1=0x3e;delayms(50);}/*----------------------------------------------------------*/ void l4d() //4个灯转{P0=0xf0,P2=0x0f,P3=0x0f,P1=0x0f;delayms(50);P0=0xe1,P2=0x87,P3=0x87,P1=0x87;delayms(50);P0=0xc3,P2=0xc3,P3=0xc3,P1=0xc3;delayms(50);P0=0x87,P2=0xe1,P3=0xe1,P1=0xe1;delayms(50);P0=0xaf,P2=0xf0,P3=0xf0,P1=0xf0;delayms(50);P0=0x1e,P2=0x78,P3=0x78,P1=0x78;delayms(50);P0=0x3c,P2=0x3c,P3=0x3c,P1=0x3c;delayms(50);P0=0x78,P2=0x1e,P3=0x1e,P1=0x1e;delayms(50);}/*----------------------------------------------------------*/void l5d() //5个灯转{P0=0xe0,P2=0x07,P3=0x07,P1=0x07;delayms(50);P0=0xc1,P2=0x83,P3=0x83,P1=0x83;delayms(50);P0=0x83,P2=0xc1,P3=0xc1,P1=0xc1;delayms(50);P0=0x87,P2=0xe0,P3=0xe0,P1=0xe0;delayms(50);P0=0x0e,P2=0x70,P3=0x70,P1=0x70;delayms(50);P0=0x1c,P2=0x38,P3=0x38,P1=0x38;delayms(50);P0=0x38,P2=0x1c,P3=0x1c,P1=0x1c;delayms(50);P0=0x70,P2=0x0e,P3=0x0e,P1=0x0e;delayms(50);}/*----------------------------------------------------------*/void l6d() //6个灯转{P0=0xc0,P2=0x03,P3=0x03,P1=0x03;delayms(50);P0=0x81,P2=0x81,P3=0x81,P1=0x81;delayms(50);P0=0x03,P2=0xc0,P3=0xc0,P1=0xc0;delayms(50);P0=0x06,P2=0x60,P3=0x60,P1=0x60;delayms(50);P0=0x0c,P2=0x30,P3=0x30,P1=0x30;delayms(50);P0=0x18,P2=0x18,P3=0x18,P1=0x18;delayms(50);P0=0x30,P2=0x0c,P3=0x0c,P1=0x0c;delayms(50);P0=0x60,P2=0x06,P3=0x06,P1=0x06;delayms(50);}void main() //主函数,由于模块化设计,只要修改下面各模块的排列顺序和时间,就可以实现各种变化模式{while(1) //无限循环{cx();//一点点出现rja(); //渐暗Onall();delayms(100);Offall();delayms(100);Onall();delayms(180);Offall();delayms(180);Onall();delayms(180);Offall();delayms(300);Onall();delayms(300);rja(); //渐暗delayms(300);// for(x=10;x>0;x--)// ss(100);/* 闪烁20次,50ms */// //ls(); /* 正向流水*/rjl();Offall();delayms(100);zxsz(); /* 正向生长*/delayms(500);rja();//渐暗rzmzy(); //拖尾从上到下rzmyy(); //拖尾从下到上for(x=6;x>0;x--) /*P00闪烁6次50ms*/{P0=0xfe,delayms(50);P0=0xff,delayms(50);}szsx(); /* 半双边生长,由上至下*/rja();//渐暗for(x=10;x>0;x--)ss(100);/* 闪烁20次,50ms */Offall();rzmnwyd();delayms(100);//走马内外移动函数//l1d(),l2d(),l3d(),l4d(),l5d(),l6d(),Onall(),delayms(50);//1至6个灯转rja();//渐暗for(x=6;x>0;x--) /*P00闪烁6次50ms*/{P0=0xfe,delayms(50);P0=0xff,delayms(50);}bsb();//双边同时流水由上至下szxs(); /* 半双边生长,由下至上*/rja();//渐暗ss(100); /* 闪烁10次*/l1d(),l2d(),l3d(),l4d(),l5d(),l6d(),Onall(),delayms(50);//1至6个灯转l1d(),l2d(),l3d(),l4d(),l5d(),l6d(),Onall(),delayms(50);//1至6个灯转Onall();delayms(200);c(700),c(600),c(500);//间隔闪烁c(400),c(300),c(200);c(100),c(100),c(100),c(100);c(50),c(50),c(50),c(50);Offall();for(x=10;x>0;x--){ss(100);}/* 闪烁*/rzmzy(); //拖尾从上到下szxs();/* 半双边生长,由下至上*/szsx(); /* 半双边生长,由上至下*/rja(); //渐暗delayms(100);rzmzy(); //拖尾从上到下//fbsb();/* 半双边流水由下至上*/for(x=10;x>0;x--){P3=0x7f;delayms(50);Offall();delayms(50); /* P37闪烁6次,50ms */ }cd(); /* 由下至上沉淀*///fxsw(); /* 反向死亡*/rja(); //渐暗rzmyy(); //拖尾从下到上bsb();//双边同时流水由上至下// fxsz();Offall(); /* 反向生长*/szsx();/* 左右同时生长由上至下*/rja();delayms(200);for(x=20;x>0;x--){ss(100);} /* 闪烁20次*/rjl(); //渐亮delayms(500);rja(); //渐暗rzmyy(); //拖尾从下到上szsx(); /* 半双边生长,由上至下*/Offall();delayms(100);rjl(); //渐亮Offall();delayms(500); //开启所有灯2sfor(x=20;x>0;x--){c(100);} /* 闪烁20次*/l1d(),l2d(),l3d(),l4d(),l5d(),l6d(),Onall(),delayms(50);//1至6个灯转l1d(),l2d(),l3d(),l4d(),l5d(),l6d(),Onall(),delayms(50);//1至6个灯转for(x=3;x>0;x--){Onall();delayms(200);Offall();delayms(200);}Onall();delayms(500);rja(); //渐暗delayms(100);rzmzy(); //拖尾从上到下rzmyy(); //拖尾从下到上szsx();/* 左右同时生长由上至下*/delayms(300);rja(); //渐暗rjl(); //渐亮delayms(300);rzmnwyd(); //走马内外移动delayms(300);rja(); //渐暗delayms(300);rtbyd(); //眨眼rtbyd(); //眨眼Onall();delayms(180);Offall();delayms(180);Onall();delayms(180);Offall();delayms(180);Onall();delayms(500);Offall();delayms(300);szsx();/* 左右同时生长由上至下*/delayms(300);szsx();/* 左右同时生长由上至下*/rja();delayms(1000);Onall();delayms(2000);}}void rzmyy() //走马拖尾右移函数{Offall();delayms(200);P3=0x7f;delayms(60);P3=0xbf;P2=0xfe;if(P37==1){unsigned int a;for(a=0;a<350;a++) //调节点亮时间{unsigned char i;P37 = 0;for(i = 0; i < 15; i++); //调节亮度高低P37 = 1;for(i = 0; i < 50; i++);}}P3=0xdf;P2=0xfd;if(P36==1 && P20==1){unsigned int a;for(a=0;a<350;a++) //调节点亮时间{unsigned char i;P36 = 0;P20 = 0;for(i = 0; i < 15; i++); //调节亮度高低P37 = 0;for(i = 0; i < 1; i++); //调节亮度高低P36 = 1;P20 = 1;P37 = 1;for(i = 0; i < 50; i++);}}P3=0xef;P2=0xfb;if(P35==1 && P21 ==1){unsigned int a;for(a=0;a<350;a++) //调节点亮时间{unsigned char i;P35 = 0;P21 = 0;for(i = 0; i < 15; i++); //调节亮度高低{P36 = 0;P20 = 0;}for(i = 0; i < 1; i++); //调节亮度高低P35 = 1;P21 = 1;P36 = 1;P20 = 1;for(i = 0; i < 50; i++);}}P3=0xf7;P2=0xf7;if(P34==1 && P22 == 1){unsigned int a;for(a=0;a<350;a++) //调节点亮时间{unsigned char i;P34 = 0;P22 = 0;for(i = 0; i < 15; i++); //调节亮度高低{P35 = 0;P21 = 0;}for(i = 0; i < 1; i++); //调节亮度高低P34 = 1;P22 = 1;P35 = 1;P21 = 1;for(i = 0; i < 50; i++);}}P3=0xfb;P2=0xef;if(P33==1 && P23==1){unsigned int a;for(a=0;a<350;a++) //调节点亮时间{unsigned char i;P33 = 0;P23 = 0;for(i = 0; i < 15; i++); //调节亮度高低{P34 = 0;P22 = 0;for(i = 0; i < 1; i++); //调节亮度高低P33 = 1;P23 = 1;P34 = 1;P22 = 1;for(i = 0; i < 50; i++);}}P3=0xfd;P2=0xdf;if(P32==1 && P24==1){unsigned int a;for(a=0;a<350;a++) //调节点亮时间{unsigned char i;P32 = 0;P24 = 0;for(i = 0; i < 15; i++); //调节亮度高低{P33 = 0;P24 = 0;}for(i = 0; i < 1; i++); //调节亮度高低P32 = 1;P24 = 1;P33 = 1;P23 = 1;for(i = 0; i < 50; i++);}}P3=0xfe;//P3^0P2=0xbf;//P2^6if(P31==1 && P25==1){unsigned int a;for(a=0;a<350;a++) //调节点亮时间{unsigned char i;P31 = 0;P25 = 0;for(i = 0; i < 15; i++); //调节亮度高低P32 = 0;。

单片机C语言代码手册_含100多个经典C程序

单片机C语言代码手册_含100多个经典C程序
void delay(unsigned int i)
{
unsigned int j;
for(i;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
LED=0;
delay(60);
LED=1;
delay(10);
}
2.数码管
0-9显示
#include<reg51.h>
void delay2ms(unsigned int delaytime)
{
unsigned int cnt;
for(cnt=0;cnt<delaytime*50;cnt++);
}
unsigned char num[10]=
delay2ms(2500);
}
}
95显示
#include<reg51.h>
void delay2ms(unsigned int delaytime)
{
unsigned int cnt;
for(cnt=0;cnt<delaytime*50;cnt++);
while(i--)
{
for(j=0;j<120;j++);
}
}
void main()
{
unsigned char LED;
LED = 0xfe; //0xfe = 1111 1110
while(1)
{
LED = 0xfe; // 0xfe = 1111 1110
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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单片机led灯
闪烁代码的实现方法。

代码操作简单易懂,可供初学者参考,也为电
子爱好者提供了一种实现闪烁控制的方案。

相关文档
最新文档