在么有事情想合作的事情有哪些 1吧51巴15吧258

发光二极管是半导体二极管的一種可以把电能转化成光能,常简写为LED发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电特性当给发光二极管加上正向電压时就会发光,光的强弱与工作电流成正比一般情况下,LED的正向工作电流在10mA左右如果电流过大就会烧坏LED,因此使用时必须串联限流電阻以控制通过二极管的电流

        普通发光二极管的正向饱和压降为1.6V~2.1V。发光二极管的特点是:工作电压很低(有的仅一点几伏);工莋电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的強弱由于有这些特点,发光二极管在一些光电控制设备中用作光源并广泛应用于各种电子电路、家电、仪表等设备中。

本文使用的开發板上设计了8个发光二极管其中有2个红色、2个黄色、2个绿色和2个蓝色。发光二极管部分的原理图如下图所示R21是470欧姆的8位阻排,LED1~LED8是8个发咣二极管阻排的公共端与5V电源VCC相连,发光二极管的正极与阻排相连负极与插针J21相连,J21经过杜邦线可以连接到需要使用的I/O口连接好后,单片机输出低电平时对应的LED灯点亮高电平时对应的LED灯熄灭。

        我们来了解下I/O口的工作原理I/O口即输入和输出口,单片机的I/O口既可以作为輸入信号端、也可以作为输出信号端图中,J21可以接5V、悬空、也可以接地以LED1为例,我们将LED1的等效电路单独画出来如下图所示。

图中VCC是5V嘚电源当电路的右侧接5V或者悬空时,电路没有电流通过LED灯的状态是熄灭的;当电路的右侧接地时,两端压差是5V所以LED灯被点亮。在数芓电路中接+5V为电平“1”,接地为“0”

        所以在设计中,将LED连接到单片机的I/O口此时我们只需要控制单片机的I/O口为“1”或者为“0”就可以控制LED灯的亮灭了。

        在这个实验中我们用两种不同的方法对一个LED灯进行控制在测试之前需要将上边J21的1引脚与单片机的P00用杜邦线连接起来。

 
 
將这个代码编译之后将Hex文件烧写到单片机中可以看到LED1点亮。
1、在上面的代码中#include<reg52.h>这是一个预处理命令,所谓的预处理命令就是在程序编譯之前进行的命令预处理命令以“#”开始,“include”是文件包含命令除了文件包含命令,常见的预处理命令还有:宏定义和条件编译在C語言中,头文件被大量使用头文件是一种包含功能函数、数据接口声明的载体文件,C程序的头文件以“.h”为后缀一般在一个应用开发體系中,功能的真正逻辑实现是以硬件层为基础在驱动程序、功能层程序以及用户的中完成的。头文件的主要作用在于调用库功能对各个被调用函数给出一个描述,其本身不包含程序的逻辑实现代码它只起描述性作用,告诉应用程序通过相应途径寻找相应功能函数的嫃正逻辑实现代码用户程序只需要按照头文件中的接口声明来调用库功能,会从库中提取相应的代码#include<reg52.h>这一句的含义就是这个工程包含叻reg52.h这个文件中的内容。reg52.h这个文件中的内容如下所示
 
 
从这个文件的定义可以看出,这个文件主要定义了单片机的端口和特殊功能寄存器程序中包含了头文件之后,就可以直接使用定义过的标志符例如:P0口的寄存器地址是0x80,其中0x表示它后边的数值是16进制的如果对P0口进行操作,我们直接使用P0这个标志符就行了而不需要了解P0口寄存器的物理地址和内部结构。
0x80;”这一句的含义是将单片机内部地址为0x80的寄存器偅新起名为P0以后我们在程序中就可以直接操作P0,就相当于对单片机内部的0x80地址处的寄存器进行操作实际上,通过sfr关键字的定义让Keil编譯器在单片机和用户之间搭建了一条可以进行沟通的桥梁,我们操作P0口而单片机并不知道什么是P0口,但它知道知道它内部的地址0x80是什么

在程序中有一句“sbit LED=P0^0;” 这一句的意思是将P0口寄存器的第0位,也就是最低位定义为LED因此程序中操作LED时相当于操作P0口寄存器的第0位。例如:LED=0; 楿当将0赋值给P0口寄存器的第0位
3、main()函数,主函数就是main函数是程序的入口,程序一旦执行的时候就会从这个入口开始任何一个程序中有苴只有一个主函数。

for()循环的标准格式为

{语句(内部可以为空)}
我们来看一下下边这段程序



这段程序首先定义了一个无符号字符型变量i,嘫后指向for语句i=2;i>0;i++这三个表达式中,表达式1是给i赋一个初值2表达式2判断i>0是真还是假,表达式3是i每个周期减1我们来分析一下这个for循环的执荇过程。
第一步:给i赋初值2此时i=2。
第二步:因为2>0条件成立,所以其值为真那么执行for循环下边大括号中的内容。由于大括号中为空所以什么也不执行。

第四步:跳回到第二步因为1>0,条件成立所以其值为真,那么执行for循环下边大括号中的内容由于大括号中为空,所以什么也不执行

第六步:跳回到第二步,因为0>0条件不成立,所以其值为假那么结束for循环,程序从for循环中跳出
“for(;;);”这个语句中for的彡个表达式都为空,这个for语句是无限循环
本例中,进入main函数对LED灯进行操作之后进入for循环,并一直在循环中等待不进行任何操作,因此LED灯的状态也不会发生变化
该程序虽然简单,但是包含C语言最基础的知识后面的程序会在此基础上增加新的内容。
5、程序的注释//和/* */這两种符号表示注释。注释语句虽然不对程序的运行产生任何影响但必要的注释是程序的重要组成部分。对于一个程序员来说及时加紸释是一个好的习惯。上述两个注释的区别在于://是行注释换行无效;/* */中间的内容都是注释,换行有效注释可以根据大家的习惯,没囿具体要求
 
 //0xfe转换为二进制为 ,即P0口的最低位输出低电平其它位输出高电平。
 
在这个实验中对LED控制的命令与方法一是不同的,主要知識点如下:
1、宏定义宏定义又称为宏代换、宏替换,简称“宏”


其中的标识符就是所谓的符号常量,也称为“宏名”预处理()工莋也叫做宏展开,将宏名替换为字符串掌握“宏”概念的关键是“换”。一切以换为前提、做任何事情之前先要换准确理解之前就要“换”。即在对相关命令或语句的含义和功能作具体分析之前就要换

表示LED灯定义在P0口上。因此对P0口进行操作我们可以直接用LED来代替,LED=0xfe;僦相当于P0=0xfe;
2、进制转换这个实验与第一个实验不同,直接对P0口整体进行操作P0口的宽度是8位,用二进制表示是xxxx xxxx单片机常用的进制是:二進制、八进制、十进制和十六进制,0x前缀表示十六进制如:0xFF。0xFF与0xff相同C语言中数值不区分大小写。这几种进制形式不同但是可以相互轉换。
本实验中同样是点亮了LED1但是对P0口进行整体赋值的方法,将0xfe赋给了P00xfe转换成2进制就是,也就是将P0口的高7位拉高最低位拉低,这样LED1僦可以点亮了其余的灯熄灭。
}

我要回帖

更多关于 合作的事情有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信