单个按键控制4个LED实验报告_第1页
单个按键控制4个LED实验报告_第2页
单个按键控制4个LED实验报告_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、单个按键控制4个LED 入门级实验实验介绍:通过单个按键控制4个LED灯的亮灭状态。正常情况下,一个按键控制1个灯。在本次实验中,要求使用 1个按键,控制4个LED灯。通过按键按下的 次 数,控制LED的亮灭状态。按下1次,1个LED灯点亮,按下2次,2个LED 灯点亮,按下3次,3个LED灯点亮,按下4次,4个LED灯点亮,按下5次, 所有LED灯都熄灭,如此循环。如此就可以通过单个按键控制4个LED灯的亮灭。在照明场所,控制LED灯的点亮个数,就可以控制亮度。实验目的:在使用单片机等控制器控制周边元件的时候,经常会遇到 I/O 口不够用的情 况。因此在使用的时候,尽量省着用。本次实验通过单

2、个按键控制 4个LED灯 的亮灭状态,正常情况下需要 4个按键,因而到达了节省单片机 I/O 口的目的。通过此次实验室,学习单片机按键的编程控制方法,学习 LED灯输出的控 制方法。学习最简单的输入设备按键控制最简单的输出设备LED灯的控制方法。仿真原理图:VCCXIA" O19X13L2 O903C1-2-4-s丄C3 O4.7uF 于C1HI? XTAL1POO ADOP0.1AO1P02AD2XTAL2PM 仏 D3PO/ljAWP05AMP06AD6P0.7AD7R3TP2.QW8P2.1/A9P2.2 心 10psefP2? 3fA"ALEP2.4fA12EA&q

3、uot;P2.50M3P2.6fA14P2.MM5P1.0P3.CMRXDP1.1P3.1/TXDPI .2PI .3P3.3tlT1PI .4P3.4/T0PI .5P3.5H1PI .6P3.&WFPI .7P37 爪 DU191AT99CS1c7EXT>R2203<TEXT>D3.LED WF<TE : KT>D4LED <TEXT> D1 . led D2.<TEXT>LED<TE : KT>在仿真软件Pwteus中绘制仿真原理图如上图所示。考前须知:在进行实物制作时,发光二极管串联的电阻可以省略,因为单片机引脚

4、灌电流的能力有限,限制了通过发光二极管电流的大小。在仿真过程中,电阻R2? R9的大小要合适,太大LED将无法点亮。编程思路:当单片机上电后,所有的 I/O 口默认高电平,因而四个发光二极管在单片机 上电后, 都为熄灭状态。 此时,我们按下按键后, 就可以调节各个发光二极管的 亮 灭状态。当按一次按钮,将 P2 口的状态进行左移一位,同时将 P2 的最低位清零,就 可以到达按一次按钮后, LED 灯多亮一个。 如,当前只有 P2 口控制的最低位连 接 的 LED 点亮,当我们按一次按键,单片机首先将P2 的状态循环左移一位,那么 刚才的最低位变为次低位, 也就是倒数第二位点亮, 同时将 P2

5、口的最低位清零, 也 就是倒数第一位连接的 LED 灯点亮, 即按一次按钮后, 倒数第一位和倒数第 二位 灯点亮。其他状态与上述过程类似,这里不再赘述。同时需要注意的是,题目中要求,按键按 4 次后,进入循环状态,即按 5 次 后,所有灯都熄灭, 即进入初始状态。 可以通过两种编程方法实现上述功能 : 可 以判断按键按的次数,当到达5次后,需要从新将P2设置为复位值;可 以判断 P2的值,当P2的值为11100000B时,将P2的值设置为复位值。使用汇编语言编程的时候, 可以使用 RL 循环左移指令 实现移位操作。 但 是需要注意,在指令系统中,只存在 RL A 指令,也就是说只能对累加器 A

6、 进 行 循环左移操作。因此在编程的时候,我们要将P2的内容移到累加器 A中,将A进 行移位操作后,再将 A中的内容移到P2中。而使用汇编语言编程时,可以 使用 _ciol_ 循环左移位指令,或?左移指令。与汇编语言编程不同的是,上 述 两个指令可以直接对 P2进行操作。同时注意在使用_cwl_指令的时候,要在程 序 的开头添加头文件 “mums.h。汇编语言代码以及 C 语言代码如下:汇编语言代码:ORG 0HJMP MAINORG 30HMAIN:MOV R2,#5XI:JB P3.O,X1JNB P3.0,$MOVA.P2RL ACLRACC.0MOV P2,ADJNZ R2,X1MOV

7、 P2,#0FFHJMP MAINEND说明:程序行“ X1JBP3.0,X1的作用是判断按键是否按下,或者说等待按 键按下,如果按键没有按下,那么程序会原地循环,等待按键按下。当按键按下之后 程序会向下执行。程序行“ JNBP3.O,$' 定不可以缺少,否那么程序执行效果 就会 无法实现。缺少了这行程序后,按键按下后,不会一个一个 LED 点亮,而是按一 下按键,点亮了多个发光二极管,这是因为在我们按下按键的瞬间,程序执行了屡次,导致多个LED被点亮。添加程序行“ JNBP3.O,$'的作用是,等待 P3.0引 脚变为高电平,如果该引脚是低电平,说明按键没有被松开,那么程序原

8、地循环,当按键松开后,程序继续向下执行。这种方法主要是防止按下一次按键 , 程序重复 执行屡次的作用。注意:上述程序只能用于仿真软件中,在实物制作时,如果使用上述程序 , 依旧会出现按一次按键多个 LED 被点亮的情况,这是因为按键的抖动造成的, 应该在程序中添加按键的防抖程序或者添加防抖的硬件。C语言代码:#include <reg52.h>#include <iiitrms.h>sbit P3O=P3AO;void niainQwhile(l)if(P3O=O) while(P30=0);P2=_ciol_(P2,l);P2=P2&Oxfb;if(P2=0x

9、e0)P2=0xff;注意:程序中对P2 口进行赋值与移位操作时,字母 “ P须大写对于电脑上没有安装 Keil 编程软件的朋友,可以使用文中提供的 HEX 文件 代码,直接导入仿真软件,或者下载至单片机进行实验。程序 HEX 代码如下::03000000020046B5:02000000802E50:100030007A0520B0FD30B0FDE5A023C2E0F5A0DADE:06004000F175A0FF80EA4B:00000001FF程序 HEX 使用方法:1新 建 txt 文档2将 HEX 代码复制到 txt 文档中,保存3将 该 txt 文档另存为“程序夕 i.hex ,例如: pro.hex4在仿真软件中翻开即可实现仿真,通过下载软件下载至单片机即可。思考:上文提示过, 在进行实物制作的时候, 需要通过软件或硬件进行防抖。 在进 行 实验的时候,往往为了简化电路,不

温馨提示

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

评论

0/150

提交评论