第7章 发光二极管实验_第1页
第7章 发光二极管实验_第2页
第7章 发光二极管实验_第3页
第7章 发光二极管实验_第4页
第7章 发光二极管实验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 发光二极管实验 本章实验采取先讲解原理,再按照代码分类进行实验的方式,将实验汇总到一起,以便集中解决问题。 注意:本指导书以讲解原理为主,本章实验我们提供了多种代码例程,请参考资料相关文件夹。 7.1 原理图 LED为共阳连接,带有一片锁存器芯片74HC573,控制口为P0口,低电平有效。 我们以一个程序为例来练习编写:led闪烁。 这个程序大家一定要弄懂,也算是一个基础,懂了这个程序,也算是进入单片机的领域了接下来我会详细讲解这个例程。另外需要注意的是单片机写程序的时候,一定是英文状态下的字符,尤其注意“;”,往往就因为这个分号,程序出现问题,所以输入时一定要注意是在英文状态下的。

2、我们在编辑框中输入以下程序: /* * * LED闪烁的简单试验 */ #include <reg51.h> /此文件中定义了51的一些特殊功能寄存器 void delay(unsigned int i); /声明延时函数 void main() /*延时函数*/ void delay(unsigned int i) 我们先编译一下:第一次编译我们点击 ,看一下结果 unsigned char j; for(i; i > 0; i-) /循环 600*255 次 for(j = 255; j > 0; j-); while(1) P0 =

3、 0x00; /置P0口为低电平 delay(600); /调用延时程序 P0 = 0xff; /置P0口为高电平 delay(600); / 调用延时程序 结果的意思: 编译led2.c? 链接? data=9.0-占用内部RAM9个字节,xdata=0:外部RAM 0字节, Code=56代码长度为56字节 生成单片机可下载的HEX(十六进制)文件。 没有错误,没有警告。 接下来我们分析上面的程序: /* */作用,它是用来注释一段内容的,编译器不对其进行编译,只要在/* */直接的内容都被注释掉。 / 是用来注释其后面的内容,只能注释一行。 #include <reg51.

4、h> /这句告诉我们包涵51的头文件,那这个头文件里面放的是什么东西呢?放的是51单片机对应的操作的寄存器地址,如我们直接用来操作的P1口就是代表0x90地址,我们可以将光标低位在<reg51.h>上然后右键 打开头文件, #ifndef _REG51_H_ #define _REG51_H_ /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; ? /* SCON */ sbit S

5、M0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #endif 头文件中定义了51系列单片机的所有功能寄存器,我们直接使用其代号就可以,P0,P1等。 如:sfr P0=0x80,意思是把单片机内部地址0x80处的寄存器重新起名字叫P0,以后我们在程序中直接操作P0,就相当于对单片机内部0x80地址处的寄存器进行操作。通俗的讲,也就是说,通过sfr这个关键字,让Keil编译器在单片机与人之间

6、搭建一个桥梁,我们操作P0口,单片机对应就去操作内部0x80的地址。所以我们写程序要在开始处直接包涵单片机的头文件。 sbit SM0 = 0x9F;是定义位操作地址0x9F的,这个地址只代表一个位。我们操作SM0,对应单片机就是操作位地址0x9F。 总结起来sfr与sbit区别 sfr 是定义字节的 8位 sbit 是定义位的 1位 我们在返回主程序: void delay(unsigned int i) unsigned char j; for(i; i > 0; i-) for(j = 100; j > 0; j-); 定义一个函数delay();与c语言一样

7、,要用一个函数,先定义,我们可以叫它子函数,可以调用的。 void main() / 结构同c语言一样,main()函数开始 / 大括号。 P0 = 0x00; /置P0口为低电平 从这句开始,你现在控制单片机了,告诉单片机把你的P0口都输出0,如果你不操作P0口了,那么P0口一直保持这个状态,直到你去改变它。 delay(1000); /调用延时程序 调用子函数delay(),告诉单片机去执行delay那个函数,那么P0口一直保持0这状态。 P0 = 0xff; /置P0口为高电平 这时告诉P0口全部输出1,(0xff=1111 1111).状态从0变成1了,对应的灯的输出也由低电平变成高电

8、平了 delay(1000); / 调用延时程序,再进行延时, 这个程序里执行完了一次又干什么呢, Keil编译器会编译成一直重复执行main()函数里面的代码,整个代码的效果就是: P0输出低电平 延时一段时间,目的是P0输出的低电平保持一段时间 P0输出高电平 延时一段时间,目的是P0输出的高电平保持一段时间 重复到的过程 实际效果就是led一闪一闪 通过更改delay(延时时间i),参数i,可以改变闪烁频率。 然后按照上述章节方法下载到单片机即可观察效果。 基础知识介绍: 排阻: 一般在排阻上都标有阻值号,其公共端附近也有明显标记。如下下图表示为472, 表示47*=4700欧姆,还有的

9、标号如3R0,表示阻值为3 欧姆, 4K7表示阻值为4.7k, R002表示阻值为0.002欧姆。 (2)发光二极管。它具有单向导电性,通过5mA左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管,一般我们控制在3 mA-20mA之间。在这里,给发光二极管串联一个电阻的目的就是为了限制通过发光二极管的电流不要太大,因此这个电阻又称为“限流电阻”。当发光二极管发光时,测量它两端电压约为1.7V,这个电压又叫做发光二极管的“导通压降”。图2.2.9和图2.2.10分别为直插式发光二极管和贴片式发光二极管实物图。发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。直插式发光

10、二极管长脚为阳极,短脚为阴极。仔细观察贴片式发光二极管正面的一端有彩色标记,通常有标记的一端为阴极。 图 图 关于排阻大小的选择:欧姆定律想必大家都清楚,U=IR,当发光二极管正常导通时,其两端电压约为1.7V,发光管的阴极为低电平,即0V,阳极串接一电阻,电阻的另一端为Vcc , 为5V,因此加在电阻两端的电压为5V-1.7V=3.3V,计算穿过电阻的电流,3.3 V/ 1000=3.3mA。即穿过发光管的电流也为3.3mA,若想让发光管再亮一些,我们可以适当减小该电阻。 看我们的原理图,可以知道:LED的正极接在VCC上,只要给了低电平,那么LED就会亮,低电平对应到单片机的逻辑就是0,只

11、要单片机的某一个管脚输出0,那么对应的发光二极管就会亮。 讲解:移位操作<< >> 1. 左移。C51中操作符为“<<”,每执行一次左移指令,被操作的数将最高位移 入单片机PSW寄存器的CY位,CY位中原来的数丢弃,最低位补0,其他位依次向左移动一位,如下图所示: 2. 右移。C51中操作符为“>>,每执行一次右移指令,被操作的数将最低位 移入单片机PSW寄存器的CY位,CY位中原来的数丢弃,最高位补0,其他位依次向右移动一位,如下图所示。 3. 循环左移。最高位移入最低位,其他位依

12、次向左移一位。C语言中没有专门 的指令,通过移位指令与简单逻辑运算可以实现循环左移,或直接利用C51库中自带的函数_crol_实现,如下图所示。_crol_函数所在的头文件是 <intrins.h> 4. 循环右移。最低位移入最高位,其他位依次向右移一位。C语言中没有专门 的指令,通过移位指令与简单逻辑运算可以实现循环右移,或直接利用C51库中自带的函数-cror实现,如下图所示。_cror_函数所在的头文件是 <intrins.h> 5. 讲解:PSW寄存器 PSW (Program Status Word)全称为程序状态字标志寄存器,

13、是一个8位寄存器,位于单片机片内的特殊功能寄存器区,字节地址DOH,用来存放运算结果的一些特征,如有无进位、借位等,使用汇编编程时PSW寄存器很有用,但在利用C语言编程时,编译器会自动控制该寄存器,很少人为操作它,大家只需做简单了解即可.其每位的具体含义如下图所示 . 1) CY一进位标志位,它表示运算是否有进位(或借位).如果操作结果在最 高位有进位(加法)或者借位(减法),则该位为1,否则为0. 2) AC一辅助进位标志,又称半进位标志,它指两个8位数运算低四位是否 有半进位,即低四位相加(或相减)是否进位(或借位),如有AC为1,否则为0e 3) FO一由用户使用的一个状态标志位,可用软件来使它置1或清0,也可 由软件来测试它,以控制程序的流向. 4) RS1, RSO-4组工作寄存器区选择控制位,在汇编语言中这两位用来选择 4组工作寄存器区中的哪一组为当前工作寄

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论