按键控制流水灯系统
- 格式:doc
- 大小:51.00 KB
- 文档页数:11
按钮控制LED——51单片机的Proteus实验实验原理51单片机的一个I/O口接按钮,再通过另一个I/O口控制LED的亮、灭。
主要器件以及电路图单片机——AT89C51,上拉电阻——pullup,按钮button,发光二极管——LED。
按钮控制LED汇编程序源码ORG 0START:MOV P1,#0 ;LED不亮MOV P0,#0FFH ;P0口准备读数ST1:JB P0.0,$ ;等待按钮抬起JNB P0.0,$ ;等待按钮按下;以上两句使得只有按一下按钮才可能执行下面的语句CPL P1.0 ;LED状态改变SJMP ST1 ;返回END流水灯——51单片机的Proteus实验实验原理通过个51单片机的一个I/O口送不同的数字,实现8个LED的流水灯。
本实验为移动一个不亮的LED。
通过修改送给I/O口送的数字可以实现不同方式的流水灯。
主要器件以及电路图单片机——AT89C51,8排电阻——RX8,发光二极管——LED。
流水灯汇编程序源码org 0sjmp startorg 30hstart: mov P1,#1 ;P1.0为1,不亮mov P1,#2 ;P1.1为1,不亮mov P1,#4 ;以下原理同上mov P1,#8mov P1,#10hmov P1,#20hmov P1,#40hmov P1,#80hsjmp startdelay: nopnopnopnopretend数码显示管——51单片机的Proteus实验实验原理51单片机的一个I/O口接4个开关,再通过另一个I/O口控制7段数码显示管显示想要的数字。
主要器件以及电路图单片机——AT89C51,共地的7段数码显示管——7SEG-COM-AN-GRN,开关——SW-SPST。
汇编程序源码汇编后139字节。
org 0sjmp STARTorg 30hSTART: mov P1,#0FFh ;LED不亮st1: mov P2,#0FFh ;准备读数(开关状态)mov A,P2 ;读数anl A,#0Fh ;取低四位acall SEG7 ;调用显示码子程序mov P1,A ;将得到的显示码送数显管显示sjmp st1 ;循环SEG7: inc A ;该子程序实现将数字转换为显示码movc A,@A+pcretDB 0c0h,0F9h,0a4h,0b0hDB 99h,92h,82h,0F8hDB 80h,90h,88h,83hDB 0c6h,0a1h,86h,8ehendC语言程序源码用C语言写了一下实现同样功能的程序,编译后1.39K,代码如下:#include<reg51.h>int main(){P1 = 0xff;while(1){P2 = 0xff;ACC = P2;ACC &= 0xf;switch(ACC){case 0: P1 = 0xc0; break;case 1: P1 = 0xf9; break;case 2: P1 = 0xa4; break;case 3: P1 = 0xb0; break;case 4: P1 = 0x99; break;case 5: P1 = 0x92; break;case 6: P1 = 0x82; break;case 7: P1 = 0xf8; break;case 8: P1 = 0x80; break;case 9: P1 = 0x90; break;case 10: P1 = 0x88; break;case 11: P1 = 0x83; break;case 12: P1 = 0xc6; break;case 13: P1 = 0xa1; break;case 14: P1 = 0x86; break;case 15: P1 = 0x8e; break;}}while(1);}用数组实现,更大(1.51K),代码如下:#include<reg51.h>int main(){int ledNum[16] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0 xa1,0x86,0x8e};P1 = 0xff;while(1){P2 = 0xff;ACC = P2;ACC &= 0xf;P1 = ledNum[ACC];}while(1);}开关控制流水灯2——51单片机的Proteus实验实验原理51单片机的一个I/O口接四个开关,每个开关控制流水灯的不同方面,再通过另一个I/O口控制8个LED的亮、灭,从而实现流水灯。
cc2530按键控制流水灯本次设计用LED1,LED2,LED3 灯及按键S1 为外设。
采用P10、P11、P14 口为输出口,驱动LED1/LED2/LED3,P01 口为输入口,接受按键信号输入(高电平为按键信号)。
1.高性能2.4G 射频模块Q2530RFQ2530RF是丘捷技基于TI公司第二代2.4GHz IEEE 802.15.4 /RF4CE/ZigBee的第二代片上系统解决方案CC2530 F256的全功能模块,集射频收发及MCU控制功能于一体。
外围原件包含一颗32MHz晶振和一颗32.768KHz晶振及其他一些阻容器件。
射频部分采用巴伦匹配和外置高增益SMA天线,接收灵敏度高,发送距离远,空旷环境最大传输距离可达400米。
模块引出CC2530所有IO口,便于功能评估与二次开发。
2.多功能开发板Q2530EB多功能扩展板Q2530EB 可支持多种射频主控模块(例如Q2530RF等),配置有串口液晶显示接口,USB供电接口,DC 5V电源接口,电池接口,RS232接口,DEBUG接口,五向按键及指示灯,红外遥控信号接收/发射等模块。
所有的外设均通过SPI总线/UART /DEBUG等接口与射频模块Q2530RF 相连,并完全受Q2530RF 控制和访问。
多功能仿真扩展板Q2530EB 采用三种电源供电方式:DC 5V供电、USB接口供电、电池供电,可在插座P5设置跳线选择,PIN1-PIN2 为电池供电,PIN2-PIN3 为外接直流电源或者USB接口供电。
电源开关为P4。
Q2530EB 板卡背面的电池盒可放置3节5号干电池,输出电压3.4~4.5V,板载电源电路将其调整到+3.3V 稳定的直流电压输出供后级使用。
当电池电压低于3.4V 时,应更换电池以保持模块正常工作。
Q2530EB 带有1个DC 5V的电源适配器接口P2和一个USB接口P1,输入电压经过稳压器降压为+3.3V输出供后极使用。
北京科技大学微型计算机原理实验报告学院:____自动化学院________________专业、年级:_自动化1101_ ______________ 姓名:__廖文骏_ ________________学号:_ 20111002124 ____________ 指导教师:___ _____王粉花____________2013年12 月综合实验一按键控制流水灯实验(查询方式)实验学时:2学时一、实验目的1.掌握ATmega16 I/O口操作相关寄存器2.掌握CodeVision AVR软件的使用3. 复习C语言,总结单片机C语言的特点二、实验内容1. 设计一个简单控制程序,功能是8个LED逐一循环发光0.5s,构成“流水灯”。
2. 用两个按键K1和K2控制流水灯(中断方式):(1)当按下K1时,流水灯从左向右流动;(2)当按下K2时,流水灯从右向左流动。
三、实验所用仪表及设备硬件:PC机一台、AVR_StudyV1.1实验板软件:CodeVision AVR集成开发软件、SLISP下载软件四、实验原理ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。
所有这些I/O口都是双(有的为3)功能复用的。
其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。
这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。
每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。
I/O口的工作方式和表现特征由这3个I/O口寄存器控制。
AVR通用I/O端口的引脚配置情况:I/O口引脚配置表表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。
按键控制流水灯课程设计一、教学目标本课程的教学目标是让学生了解和掌握按键控制流水灯的基本原理和实现方法,培养学生的动手能力和创新能力,提高学生对电子技术的兴趣和热情。
具体目标如下:1.知识目标:使学生了解流水灯的工作原理,掌握按键控制电路的设计和搭建方法,了解电子元件的使用和调试技巧。
2.技能目标:培养学生具备基本的电子电路设计、搭建和调试能力,提高学生的动手实践能力,培养学生的创新思维。
3.情感态度价值观目标:通过本课程的学习,使学生认识到电子技术在现代社会中的重要性,增强学生对电子技术的兴趣和热情,培养学生的科学精神和团队合作意识。
二、教学内容教学内容主要包括以下几个部分:1.流水灯的工作原理:介绍流水灯的基本原理,使学生了解流水灯的工作过程,为学生设计按键控制流水灯电路打下基础。
2.按键控制电路设计:讲解如何设计按键控制电路,引导学生掌握电路设计的方法和步骤,培养学生的实际操作能力。
3.电子元件的使用:介绍电子元件的使用方法,如电阻、电容、二极管、三极管等,使学生能够熟练地使用这些元件进行电路搭建和调试。
4.电路调试与优化:教授学生如何对电路进行调试和优化,提高电路的性能和稳定性,使学生具备解决问题的能力。
5.创新实践:鼓励学生进行创新实践,设计出具有自己特色的按键控制流水灯电路,培养学生的创新思维和团队合作精神。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解流水灯的工作原理、电路设计方法和电子元件的使用,使学生掌握基本知识。
2.实验法:学生动手搭建和调试电路,培养学生的实践能力,使学生更好地理解电路原理。
3.案例分析法:分析实际案例,使学生了解按键控制流水灯电路在现实生活中的应用,提高学生的学习兴趣。
4.讨论法:分组讨论,引导学生思考和解决问题,培养学生的创新思维和团队合作意识。
四、教学资源教学资源包括:1.教材:选用合适的电子技术教材,为学生提供理论支持。
按键控制流水灯系统设计摘要本设计旨在于通过所学知识,设计一个简单的按键控制流水灯系统,满足一些基本控制功能。
本设计选用80C51芯片作为核心硬件,组合74LS138译码芯片,4×4键盘,74LS273锁存芯片以及其他必要元器件实现对8个发光二极管和2个数码管显示屏的功能控制。
控制过程中用到了51单片机的定时/计数器和中断技术。
本次设计旨在于在理论学习单片机的基础上,通过实际系统的搭建,提高对所学知识的实际应用能力。
设计中,我们主要做了方案设计,电路搭建,程序编写,控制仿真,报告撰写等一系列工作。
方案设计说明设计要求:(1)利用按键控制流水灯的显示。
(2)利用3×3或者4×4键盘,控制数码管的显示。
(3)利用到定时/计数器。
(4)利用到中断技术。
设计功能:(1)按键0—7键为普通亮灭控制键,对应8个发光二极管,每个按键按一下,对应的灯亮,再按一次,对应的灯熄灭。
(2)按键8,12,13,14号键为功能控制键。
1)8键:按一下,8个灯逐个点亮,熄灭,循环左移三次。
2)12键:按一下,灯全部点亮,闪烁20次,返回原来状态。
3)13键:按一下,从左至右,每次点亮一个灯并保持,至灯全部点亮,再逐个熄灭。
4)14键:左右两侧灯逐对向中间点亮,熄灭,当灯对相遇后,向相反方向进行,循环两次返回。
(3)数码管显示为两位,一号为按键显示(显示被按下的键号),二号为功能号显示(显示执行的功能,从0—4分别对应1—7号键,8号键,12号键,13号键,14号键的功能)功能实现方案:51单片机的P0口(P0.0—P0.7)为低位地址总线,兼做数据总线,连接74LS273锁存器,输出的数据通过其锁存。
单片机P1口(P1.0—P1.7)用作通用I/O口,与键盘连接,其中,高四位(P1.4—P1.7)接为列控制线,低四位(P1.0—P1.3)接行控制线。
单片机P2口(P2.0—P2.5)为高位地址线,接外部74LS138译码芯片。
按键控制数码管和流水灯设计报告实验报告摘要单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。
本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。
通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。
用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。
在硬件电路的基础上加上软件程序的控制来实现本设计。
其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。
关键字:单片机、流水灯、数码管、控制系统SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the Keywords: SCM, water lights, digital tubes, control system键盘控制流水灯和数码管实验报告目录一设计的目的 (2)二任务描述及方案设计 (3)1. 任务描述 (3)2. 方案设计 (3)三硬件设计方案 (3)1. Msp430f149单片机的功能说明 (3)2. 显示器功能 (4)3. 复位电路 (4)4. 按键的部分 (4)5. 74HC573的特点 (4)6. 流水灯和数码管电路原理图 (4)7. 元器件清单 (4)四程序设计方案 (5)1. 用IAR Embedded Workbench软件编程序 (5)2. 仿真电路图 (6)五实物实验 (7)1. 实物图 (7)2. 测试结果与分析 (7)六结论 (11)八参考文献 (16)一、设计目的1、进一步巩固和加深学生所学一门或几门相关专业课理论知识,培养学生设计、计算、绘画、计算机应用、文献查阅、报告撰写等基本技能;2、培养学生实践动手能力及独立分析和解决工程实践问题能力;3、培养学生的团队协作精神、创新意思、严肃认真的治学态度和严谨求实的工作作风。
键控流水灯的程序硬件电路描述如下:89S52 单片机的P1 口接有8 个LED,当某一端口输出为“0”时,相应的LED 点亮,P3.2、P3.3、P3.4、P3.5 分别接有四个按钮K1~K4,按下按钮时,相应引脚被接地。
现要求编写可键控的流水灯程序,当K1 按下时,开始流动,K2 按下时停止流动,全部灯灭,K3 使灯由上往下流动,K4 使灯由下往上流动。
下面首先给出程序,然后再进行分析。
例 2-1:键控流水灯的程序#include "reg51.h"#include "intrins.h"#define uchar unsigned charvoid mDelay(unsigned int DelayTime){ unsigned int j=0;for(;DelayTime>0;DelayTime--){ for(j=0;j<125;j++){;} }}uchar Key(){ uchar KeyV;uchar tmp;P3=P3|0x3c; //四个按键所接位置KeyV=P3;if((KeyV|0xc3)==0xff) //无键按下return(0);mDelay(10); //延时,去键抖KeyV=P3;if((KeyV|0xc3)==0xff)return(0);else{ for(;;){ tmp=P3;if((tmp|0xc3)==0xff) break;}return(KeyV);}}void main(){ unsigned char OutData=0xfe; bit UpDown=0;bit Start=0;uchar KValue;for(;;){ KValue=Key();switch (KValue){ case 0xfb: //P3.2=0,Start { Start=1;break; }case 0xf7: //P3.3=0,Stop{ Start=0;break; }case 0xef: //P3.4=0 Up{ UpDown=1;break; }case 0xdf: //P3.5=0 Down { UpDown=0;break; }}if(Start){ if(UpDown)OutData=_crol_(OutData,1); elseOutData=_cror_(OutData,1); P1=OutData; }elseP1=0xff; //否则灯全灭mDelay(1000);}}。
设计摘要本设计旨在于通过所学知识,设计一个简单的按键控制流水灯系统,满足一些基本控制功能。
本设计选用80C51芯片作为核心硬件,组合74LS138译码芯片,4×4键盘,74LS273锁存芯片以及其他必要元器件实现对8个发光二极管和2个数码管显示屏的功能控制。
控制过程中用到了51单片机的定时/计数器和中断技术。
本次设计旨在于在理论学习单片机的基础上,通过实际系统的搭建,提高对所学知识的实际应用能力。
设计中,我们主要做了方案设计,电路搭建,程序编写,控制仿真,报告撰写等一系列工作。
方案设计说明设计要求:(1)利用按键控制流水灯的显示。
(2)利用3×3或者4×4键盘,控制数码管的显示。
(3)利用到定时/计数器。
(4)利用到中断技术。
设计功能:(1)按键0—7键为普通亮灭控制键,对应8个发光二极管,每个按键按一下,对应的灯亮,再按一次,对应的灯熄灭。
(2)按键8,12,13,14号键为功能控制键。
1)8键:按一下,8个灯逐个点亮,熄灭,循环左移三次。
2)12键:按一下,灯全部点亮,闪烁20次,返回原来状态。
3)13键:按一下,从左至右,每次点亮一个灯并保持,至灯全部点亮,再逐个熄灭。
4)14键:左右两侧灯逐对向中间点亮,熄灭,当灯对相遇后,向相反方向进行,循环两次返回。
(3)数码管显示为两位,一号为按键显示(显示被按下的键号),二号为功能号显示(显示执行的功能,从0—4分别对应1—7号键,8号键,12号键,13号键,14号键的功能)功能实现方案:51单片机的P0口(P0.0—P0.7)为低位地址总线,兼做数据总线,连接74LS273锁存器,输出的数据通过其锁存。
单片机P1口(P1.0—P1.7)用作通用I/O口,与键盘连接,其中,高四位(P1.4—P1.7)接为列控制线,低四位(P1.0—P1.3)接行控制线。
单片机P2口(P2.0—P2.5)为高位地址线,接外部74LS138译码芯片。
P2口的P2.6引脚控制二极管的闪烁。
P2.6口输出的脉冲,由单片机定时/计数器T0通过查询的方式所得到。
(T0用于定发光二极管点亮与熄灭的延时时间,延时时间到,输出脉冲)选用三片74LS273,两片用于数码管显示屏的显示数据锁存,一片用于8个发光二极管的亮灭数据锁存。
74LS273芯片除了受到51单片机输出状态的控制,还受触发端CLK的控制,即为上升沿触发,也就是当CP从低电平到高电平时,输入锁存器的数据通过芯片,为0时数据锁存,输入的数据不变。
中断类型为外部事件中断,选取INT0为外部中断触发信号的输入端。
对应的中断触发硬件为4×4键盘的按键。
在中断的内部,则采用了线反转法对键盘数据进行采集。
(使行线为输入,列线为输出,列线全部输出低电平,则航线中变为低电平的行线为按键所在的行;使行线为输出,列线为输入,行线输出全部为低电平,则列线中变为低电平的列线为按键所在的列。
)数码管显示器采用共阴型,静态显示方式。
(两个数码管显示屏相互独立,每个数码管的8个显示字段控制端分别与并行的锁存芯片输出端相连,只要输出字型码,数码管就立即显示出相应的字符。
)程序模块构成:(1)初始化:初始化程序地址,中断地址,置堆栈指针,设置触发方式为边沿触发,开中断,允许外部事件中断。
ORG 0000HLJMP START ;初始化ORG 0003HLJMP KEY ;转中断服务程序ORG 0100HSTART: MOV SP, #60H ;置堆栈指针SETB IT0 ;边沿触发MOV IP, #01H ;高优先级中断SETB EA ;开中断SETB EX0 ;允许中断(2)主程序状态初始化,求显示数据的字型码,扫描键盘,调用其他功能的程序;主程序:MAIN: MOV A, #16 ;状态初始化MOV DPTR, #LED_SEGMOVC A, @A+DPTRMOV DPTR, #04FFHMOVX @DPTR, AMOV DPTR, #0CFFHMOVX @DPTR, AMOV DPTR, #14FFHMOV A, #00HMOVX @DPTR, A ;状态初始化MOV 43H, #00HCLR P2.6SCAN: LCALL KY0 ;开始扫描按键LCALL XfunctionLCALL RerealLCALL Judge1LJMP SCAN ;重新扫描(3)扫描程序(键盘识别和处理)置列线为输入,行线为输出,并输出0,读取列线状态,并取反,暂存列线状态,判断有无按键按下,如果有,置行线为输入,列线为输出,输入0,再读行线并取反,暂存,消除抖动,判断按键是否释放,计算键值(行号的4倍+列号);键盘扫描程序:KY0: MOV P1,#0F0HMOV A , P1CPL AANL A, #0F0HMOV R1, AJZ KY0KY1: MOV P1,#0FHMOV A, P1CPL AANL A, #0FHMOV R2,AJZ GRETJBC F0,WAITSETB F0LCALL DELAYSJMP KY0 GRET: RETWAIT: MOV A, P1CPL AANL A, #0FHJNZ WAITKY2: MOV A, R1MOV R1, #03HMOV R3, #03HCLR CKY3: RLC AJC KY4DEC R1DJNZ R3 ,KY3 KY4: MOV A, R2MOV R2, #00HMOV R3, #03HCLR CKY5: RRC AJC KY6INC R2DJNZ R3, KY5 KY6: MOV A, R2CLR CRLC AADD A, R1MOV 40H, ARET(4)按键功能判断程序:Xfunction: MOV A, 40HCLR CSUBB A, #8JNC A1MOV A, #0LCALL TransformRETA1: MOV A, 40HSUBB A, #9JNC A2MOV A, #1LCALL TransformRETA2: MOV A, 40HSUBB A, #12JNC A3MOV A, #16LCALL TransformRETA3: MOV A, 40HSUBB A, #13JNC A4MOV A, #2LCALL TransformRETA4: MOV A, 40HSUBB A, #14JNC A5MOV A, #3LCALL TransformRETA5: MOV A, 40HSUBB A, #15JNCA6MOV A, #4LCALL TransformRETA6: MOV A, #16LCALL TransformRET(5)显示程序在数码管显示屏1上显示出当前按下的键号,在数码管显示屏2上显示出当前发光二极管正在运行的功能号。
;显示程序:Rereal: MOV DPTR, #04FFHMOV A, 41HMOVX @DPTR, A ;显示按键号MOV DPTR, #0CFFHMOV A, 42HMOVX @DPTR, A ;显示功能号RET(6)键值与显示码转换程序转换按下的键所对应的的键值与显示屏所显示的码型的程序,每个数码管的8个显示字段控制端分别与并行的锁存芯片输出端相连,只要输出字型码,数码管就立即显示出相应的字符。
Transform: MOV DPTR, #LED_SEG ;字型表首地址MOVC A, @A+DPTRMOV 42H, AMOV A, 40HMOVC A, @A+DPTRMOV 41H, ARET(7)字型码表共阴极数码管字型编码,显示字型码所对应的的字段点亮,熄灭,转化为功能编号,按键编号通过显示屏显示。
;字形码表:LED_SEG: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H ; '0,1,2,3,4,5,6,7'DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H ;'8,9,A,B,C,D,E,F'DB 40H ;'_';灯码表:LED: DB 01H, 02H, 03H, 04H, 05H, 06H, 07H ;'0,1,2,3,4,5,6,7'(8)按键号功能选择程序;按键号功能选择程序1 Judge1: MOV A, 40HCLR CSUBB A, #8JNC AaaLCALL XfunctionLCALL RerealLCALL Function0RETAaa: MOV A, 40HSUBB A, #9JNC BbbLCALL XfunctionLCALL RerealLCALL Function1 Bbb: RET;按键号功能选择程序2:Judge2: MOV A, 40HCJNE A, #0CH, ThreeLCALL Function12RETThree: CJNE A, #0D H, FourLCALL Function13RETFour: CJNE A, #0EH, FiveLCALL Function14 Five: RET(9)功能程序四个小的功能程序子模块分别对应1—7号键,8号键,12号键,13号键,14号键的功能,具体如下:0—7键为普通亮灭控制键,对应8个发光二极管,每个按键按一下,对应的灯亮,再按一次,对应的灯熄灭。
;功能程序0Function0: CLR P2.6MOV DPTR, #LED ;普通显示MOV A , 40HMOVC A , @A+DPTRXRL A, 43HMOV 43H, AMOV DPTR, #14FFHMOVX @DPTR, ARET8键:按一下,8个灯逐个点亮,熄灭,循环左移三次。
;功能程序1Function1: CLR P2.6MOV R5, #3 ;外循环次数3次MOV A, #01HMOV DPTR, #14FFHOut1: MOV R4, #8 ;内循环次数8次IN1: MOVX @DPTR, ALCALL DELYRL A ;循环左移实现灯逐个点亮DJNZ R4, IN1DJNZ R5, Out1RET12键:按一下,灯全部点亮,闪烁20次,返回原来状态。
;功能程序2Function12: LCALL XfunctionMOV A, #0FFHMOV DPTR , #14FFHMOVX @DPTR, ALCALL Blink ;调用闪烁程序RET13键:按一下,从左至右,每次点亮一个灯并保持,至灯全部点亮,再逐个熄灭。
;功能程序3Function13: LCALL XfunctionLCALL RerealMOV A, #00HMOV R1, #08H ;点亮8个,循环8次MOV R2, #08H ;熄灭8个,循环8次MOV DPTR, #14FFHBB1: MOVX @DPTR, ASETB C ;将进位置1RLC A ;带进位循环左移DJNZ R1, BB1BB2: MOVX @DPTR, ACLR C ;将进位Cy清零RRC A ;DJNZ R2, BB2RET14键:左右两侧灯逐对向中间点亮,熄灭,当灯对相遇后,向相反方向进行,循环两次返回。