51单片机按键控制花样灯

合集下载

单片机控制的花样彩灯设计

单片机控制的花样彩灯设计

课程设计报告书题目: 花样彩灯控制系统专业:电气工程学号: 0401100102学生姓名:杜世会指导教师:赵阳日期:2012-6-22河南工业职业技术学院课程设计(论文)任务书电气工程系电气自动化 1001 学生:杜世会指导教师:赵阳助理指导教师(并指出所负责的部分):教研室:教研室主任:目录1引言 (4)2 设计原理 (5)2.1MCS51 (5)2.2 LED (6)2.3中断指令 (8)2.4硬件接原理图 (9)3程序流程图 (11)3.1主流程图 (11)3.2流水灯子流程图 (12)3.3中断程序流程图 (13)4汇编程序 (14)4.1主程序 (14)4.2一秒钟定时程序 (17)5小结 (18)参考文献 (19)1.1引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。

LED 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰已经成为一种时尚。

但目前市场上各式样的 LED 彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。

这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。

因此有必要对现有的彩灯控制器进行改进。

课程设计是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练,是培养学生工程意识和创新能力的重要环节。

进一步巩固和加深“单片机”课程的基本知识,了解单片机设计知识在实际中的应用。

综合运用“单片机”课程和先修课程的理论及生产实际知识去分析和解决电路设计问题,进行单片机电路设计的训练。

学习单片机设计电路的一般方法,了解和掌握单片机电路的设计过程和进行方式,培养正确的设计思想和分析问题、解决问题的能力,特别是总体电路设计能力。

单片机独立按键控制led灯实验原理

单片机独立按键控制led灯实验原理

主题:单片机独立按键控制LED灯实验原理目录1. 概述2. 单片机独立按键控制LED灯实验原理3. 实验步骤4. 结语1. 概述单片机在现代电子设备中起着至关重要的作用,它可以通过编程实现各种功能。

其中,控制LED灯是单片机实验中常见的任务之一。

本文将介绍单片机独立按键控制LED灯的实验原理及实验步骤,希望对初学者有所帮助。

2. 单片机独立按键控制LED灯实验原理单片机独立按键控制LED灯的实验原理主要涉及到单片机的输入输出端口及按键和LED的连接方式。

在单片机实验中,按键与单片机的输入端口相连,LED与单片机的输出端口相连。

通过按键的按下和松开来改变单片机输出端口电平,从而控制LED的亮灭。

3. 实验步骤为了完成单片机独立按键控制LED灯的实验,需要按照以下步骤进行操作:步骤一:准备材料- 单片机板- 按键- LED灯- 连线- 电源步骤二:搭建电路- 将按键与单片机的输入端口相连- 将LED与单片机的输出端口相连- 连接电源步骤三:编写程序- 使用相应的单片机开发软件编写程序- 程序中需要包括按键状态检测和LED控制的部分步骤四:烧录程序- 将编写好的程序烧录到单片机中步骤五:运行实验- 按下按键,观察LED的亮灭情况- 确保按键可以正确控制LED的亮灭4. 结语通过上述实验步骤,我们可以实现单片机独立按键控制LED灯的功能。

这个实验不仅可以帮助学习者了解单片机的输入输出端口控制,还可以培养动手能力和程序设计能力。

希望本文对单片机实验初学者有所帮助,谢谢阅读!实验步骤在进行单片机独立按键控制LED灯实验时,需要按照一定的步骤进行操作,以确保实验能够顺利进行并取得预期的效果。

下面将详细介绍实验步骤,帮助读者更好地理解和掌握这一实验过程。

1. 准备材料在进行单片机独立按键控制LED灯实验前,首先需要准备相应的材料。

这些材料包括单片机板、按键、LED灯、连线和电源。

在选择单片机板时,需要根据具体的实验需求来确定,常见的有51单片机、Arduino等,不同的单片机板具有不同的特性和使用方法,因此需要根据实验要求来选择适合的单片机板。

推荐-51单片机多模式彩灯控制器 精品

推荐-51单片机多模式彩灯控制器 精品

20XX届单片机课程设计题目:按键多模式彩灯控制器班级:电气1001组别:第十组指导老师:日期:6.11-6.20目录摘要本文介绍了一种简易LED彩灯控制系统的软硬件设计过程,本方案以AT89C51单片机作为主控核心,按键控制电路、彩灯显示电路以及单片机最小系统等模块组成的核心主控制电路。

利用软件编程烧录程序到单片机来实现对LED彩灯进行控制,本系统亮灯模式多,用户根据操作提示可以随意变换想要的闪烁方式和控制彩灯的闪烁频率。

本系统具有电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,具有一定的实用和参考价值。

关键词LED彩灯;彩灯控制系统;闪烁方式第1章方案设计随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。

LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。

但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。

这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响彩灯效果,因此有必要对现有的彩灯控制器进行改进。

1.1设计方案彩灯控制器大致可分为两种方案实现。

一种是利用电子电路装置控制,另一种是采用单片机控制。

方案一:根据设计任务要求介绍的彩灯控制电路的基本组成,可以确定彩灯控制器应由振荡电路、计数/时序分配电路、移位位寄存器和彩灯显示五部分组成。

其框图如图1-1所示。

图1-1彩灯循环控制器硬件框图方案二:本方案主要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来达到本设计的要求。

其硬件构成框图如图1-2所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源电路组成。

任务11 设计按键控制花样彩灯

任务11  设计按键控制花样彩灯
任务11 设计按键控制花样彩灯
11.1.1 明确工作任务 • 用任务三制作的电路,通过编程实现按键控制的8位LED花样点亮 。上电后没有键按下时,与P0口相连的8个LED灯高低四位交替点亮, 当按键S1按下时,与P0口相连的8位LED灯从P0.7向低位逐位点亮,当8 位全亮时又从高位向低位逐位熄灭,并以此循环;当按键S2按下时, 与P0口相连的8位LED灯从P0.0向高位移位点亮,并以此循环。
11.1.3 跟我学
1)交换指令
(1)累加器A高低半字节交换指令 SWAP A ;A7-4←A3-0
这条指令的功能是将A的高4位和低4位数据交换。
(2)整字节交换指令 XCH A,direct ; A←→(direct)将直接地址与A中的内容交换; XCH A, Rn ; A←→Rn 将寄存器R与A中的内容交换; XCH A, @Ri ; A←→(Ri) 将由Ri指定的地址中的内容与A的内容交 换。 (3)半字节交换指令
JB、JNB和JC、JNC指令的功能分别是判断直接位地址和进位位CY的内容是 “1”还是“0”,以此来决定程序的走向。如果条件满足,则程序转移至标号处(rel );如果条件不满足,则程序仍按顺序执行(即执行该指令的下一条指令)。JBC 指令除能实现条件判断转移功能外,还可以在条件满足转移后将被检测位清“0”。
任务11 设计按键控制花样彩灯 --------------程序分析讲解及仿真
任务11 设计按键控制花样彩灯 --------------程序分析讲解及仿真
任务11 设计按键控制花样彩灯 --------------程序分析讲解及仿真
任务11 设计按键控制花样彩灯
3)判断累加器A是否为零转移指令
JZ rel ;若A=0,则PC=PC+rel, 若A≠0,则PC=PC+2 JNZ rel ;若A≠0, 则PC=PC+re令时,先判断A中的内容是否为零,若是则转移至rel处(常

51单片机按键控制花样灯

51单片机按键控制花样灯

51单片机按键控制花样灯时间:2018-09-10 13:50:11 来源:51hei 作者:/***************************************************** 本程序实现用按键控制花样灯。

** 当K1按下时,灯从0xfe向左跑一遍;** 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;** 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。

* * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。

** 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。

*******************************************************/*************************************************连接方法:P0接独立按键JP5。

P2接LED灯接口JP1 ************************************************************/#include <reg52.h> //头文件,函数声明#include <intrins.h>//定义按键所在位sbit K1=P0^0。

sbit K2=P0^1。

sbit K3=P0^2。

sbit K4=P0^3。

sbit K5=P0^4。

unsigned char led。

unsigned char j。

void delayms(unsigned char ms> // 1ms标准延时{while(ms-->{for(j=0。

j<110。

j++>。

//还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确}}void main(>{ //P2=led。

unsigned int i。

while(1>{/********************************************** 当K1按下时,灯从0xfe向左跑一遍; **********************************************/if(K1==0>delayms(10>。

003 花样彩灯控制器

003  花样彩灯控制器

制作名称:花样彩灯控制器1、制作编号:0032、难度等级:★★★(适合第4学期制作)3、设计要求1)以单片机AT89S51作为主控芯片,设计一个花样彩灯控制器。

2)单片机要求具有自动上电复位功能,振荡器采用11.0592MHz晶振。

3)要求该控制器连接多个发光二极管,发光二极管能够以多种方式(花样)显示,花样新颖,发光二极管的变换频率要适中。

4)用两个按键来控制在多种花样之间的切换。

5)用一个发光二极管的亮灭来显示按键的切换效果。

6)合理选择连接于发光二极管电路上的限流电阻的阻值大小,保障发光二极管的发光亮度适中。

7)整个系统的供电为:直流5V单电源供电。

5、原理简介6、参考电路板图7、制作实物照片8、参考程序ORG 0000HLJMP MAINORG 0030HMAIN: MOV R0,#16MOV R1,#1BJ: CJNE R1,#1,M2MOV DPTR,#TAB1ACALL XHM2: CJNE R1,#2,M3MOV DPTR,#TAB2ACALL XHM3: CJNE R1,#3,M4MOV DPTR,#TAB3ACALL XHM4: CJNE R1,#4,M5MOV DPTR,#TAB4ACALL XHM5: CJNE R1,#5,M6MOV DPTR,#TAB5ACALL XHM6: CJNE R1,#6,M7MOV DPTR,#TAB6ACALL XHM7: CJNE R1,#7,M8MOV DPTR,#TAB7ACALL XHM8: CJNE R1,#8,M9MOV DPTR,#TAB8M9: CJNE R1,#9,MXMOV DPTR,#TAB9ACALL XHMX: AJMP BJXH: MOV A,#0MOVC A,@A+DPTRMOV P0,AINC DPTRMOV A,#0MOVC A,@A+DPTRMOV P3,AINC DPTRACALL DELDJNZ R0,XHMOV R0,#16RETDDEL: MOV R7,#100DD1: MOV R6,#200DD2: MOV R5,#5DJNZ R5,$DJNZ R6,DD2DJNZ R7,DD1RETDEL: MOV R7,#100D1: MOV R6,#50D2: MOV R5,#5JB P2.1,N1JNB P2.1,$CPL P2.7INC R1CJNE R1,#10,N1MOV R1,#1N1: JB P2.0,N2JNB P2.0,$CPL P2.7DEC R1CJNE R1,#0,N2MOV R1,#9N2: DJNZ R6,D2DJNZ R7,D1RETTAB1: DB 01H,00H,02H,00H,04H,00H,08H,00H,10H,00H,20H,00H,40H,00H,80H,00H DB 00H,80H,00H,40H,00H,20H,00H,10H,00H,08H,00H,04H,00H,02H,00H,01HTAB2: DB 0FEH,0FFH,0FDH,0FEH,0FBH,0FDH,0F7H,0FBH,0EFH,0F7H,0DFH,0EFH, 0FBH,0FDH,7FH,0BFHDB 0FFH,0F7H,0F7H,0FBH,0FBH,0FDH,0FDH,0FEH,0FEH,0F7H,0F7H,0FBH, 0FBH,0FDH,0FDH,0FEHTAB3: DB 03H,00H,06H,00H,0CH,00H,18H,00H,30H,00H,60H,00H,0C0H,00H,80H,80H DB 00H,0C0H,00H,60H,00H,30H,00H,18H,00H,0CH,00H,06H,00H,03H,01H,01HTAB4: DB 0FEH,0FFH,0FDH,0FFH,0FBH,0FFH,0F7H,0FFH,0EFH,0FFH,0DFH,0FFH, 0BFH,0FFH,7FH,0FFHDB 0FFH,7FH,0FFH,0BFH,0FFH,0DFH,0FFH,0EFH,0FFH,0F7H,0FFH,0FBH,0FFH,0FDH,0FFH,0FEHTAB5: DB 01H,00H,02H,01H,04H,02H,08H,04H,10H,08H,20H,10H,40H,20H,80H,40H DB 00H,80H,80H,40H,40H,20H,20H,10H,10H,08H,08H,04H,04H,02H,02H,01HTAB6: DB 0FFH,00H,00H,0FFH,0C0H,00H,00H,0C0H,00H,0A0H,0A0H,00H,00H,40H,40H,00HDB 00H,0E0H,0B0H,60H,00H,3FH,00H,13H,00H,0AH,0BH,06H,0AH,01H,01H,09HTAB7: DB 01H,0FFH,02H,0FFH,04H,0FFH,08H,0FFH,10H,0FFH,20H,0FFH,40H,0FFH,80H,0FFHDB 0FFH,80H,0FFH,40H,0FFH,20H,0FFH,10H,0FFH,08H,0FFH,04H,0FFH,02H,0FFH,01HTAB8: DB 0EH,03H,05H,07H,02H,07H,08H,02H,10H,0FH,20H,1AH,60H,20H,0C0H,0F0H DB 0EFH,10H,0A0H,60H,0B0H,30H,2BH,1FH,1AH,0DH,08H,09H,09H,07H,05H,04HTAB9: DB 0DH,0FH,0EH,0ADH,0FCH,0C0H,13H,0AH,3CH,01H,64H,06H,0C0H,0CBH,8AH,8FHDB 0F1H,0DEH,0C0H,6AH,0BH,3CH,0FH,18H,0C1H,0BH,0FH,06H,01H,0CBH,0F1H,0A1HEND。

单片机的花样彩灯设计

单片机的花样彩灯设计

课程设计报告书题目: 单片机控制的花样彩灯设计专业:电气工程及其自动化(1)班学号:学生姓名:指导教师:2010年12 月 1 日南昌工程学院课程设计(论文)任务书一、课题设计(论文)题目:基于单片机控制的花样彩灯设计二、课程设计(论文)使用的原始资料(数据)及设计技术要求:设计要求:以MCS51单片机为核心,辅以外围接口电路,设计一个由键盘控制的四种花样LED闪烁彩灯,使八个LED实现流水灯(跑马灯)、逐点点亮、间隔点亮、逐点熄灭四种花样。

要求采用键盘查询方式(非中断方式)实现花样转换。

在当前花样循环显示时,按下相应的花样选择按钮,能立即转换至对应的闪烁花样(但必须在去干扰或消除抖动之后)。

四个按钮S1、S2、S3、S4分别对应花样1、花样2、花样3、花样4。

程序开始运行时自动执行花样1(流水灯)。

时间间隔采用定时/计数器控制为1S左右(误差不超过10%)。

1、单片机控制系统硬件电路设计,包括单片机时钟和复位电路的设计、LED驱动和键盘设计等。

2、控制软件设计与调试,包括1S定时功能的实现、键盘响应程序和显示控制程序等。

三、课程设计(论文)工作内容及完成时间:1、查找相关文献,进行方案选择。

2天 11.22---11.232、系统硬件电路设计,绘制电路原理图。

3天 11.24---11.263、绘制软件流程图,编写与调试软件。

3天 11.29---12.14、完成课程设计报告,答辩。

2天 12.2---12.3四、主要参考资料:1、《单片机原理及应用》,李建忠,西安电子科技大学出版社,2002年2、《单片微型计算机与接口技术》,李群芳等,电子工业出版社,2002年3、《单片微型计算机原理与接口技术》,陈光东等,华中科技大学出版社,1999年4、《单片机实验与实践》,周立功等,北京航空航天大学出版社,2004年5、《开放式综合实验/仿真系统MCS51实验分册》,伟福公司电气与电子工程系 07电气工程电力系统专业 1 班学生:王文虎日期:自 2010 年 11 月 22 日至 2010 年 12 月 3 日指导教师:章彧助理指导教师(并指出所负责的部分):教研室:电气工程教研室主任:目录1引言 (4)2 设计原理 (5)2.1MCS51 (5)2.2 LED (6)2.3中断指令 (8)2.4硬件接原理图 (9)3程序流程图 (11)3.1主流程图 (11)3.2流水灯子流程图 (12)3.3中断程序流程图 (13)4汇编程序 (14)4.1主程序 (14)4.2一秒钟定时程序 (17)5小结 (18)参考文献 (19)1.1引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。

基于单片机c语言花样彩灯设计

基于单片机c语言花样彩灯设计

/*-------------2011.3.19 xxx编写------------------------------------------------------------设计名称:花样和速度可控的花样彩灯设计功能:1.本程序用了两个按键,其中一个可以循环控制花样,另一个循环控制流水速度;2.有断电保存当前花样和速度功能,即断电后,在重现上电时,执行的花样和速度仍旧是断电前的速度和花样。

缺点:1、本程序为延时计时,精度不高;2、由于使用延时来得到秒信号,时数和分数被改变后,有时要过一秒后才能被更新显示------------------------------------------------------------------------------------------------*/#include<reg52.h>#include<zi.c>#include<24c02.c>sbit s1=P1^4; //定义按键sbit s2=P1^5;void zhongduan(void)interrupt 1{//P1=0xff;TR0=0; //关闭定时器T0if(s1==0) //如果按键s1被按下{delay_ms(10); //延时消抖di();{if(s1==0) //如果按键s1按下{k++;write_add_24c02(0,k);if(k==6){k=1;}}while(!s1);flag=1;} //等待s1键抬起并改变标志位TR0=1; //启动定时器T0}if(s2==0) //如果按键s2被按下{delay_ms(10); //延时消抖di();if(s2==0){i++;write_add_24c02(1,i);if(i==6)i=1;}while(!s2);flag=1;} //等待s2键抬起并改变标志位TR0=1; //启动定时器T0}void main(void){TMOD=0X02; // 定时器TO,工作方式2,带自动装在的8位计数器,最大数值2^8=256TH0=256-200; //装载初值TL0=256-200;ET0=1; // 定时器T0中断允许TR0=1; //开启定时器T0EA=1; //打开外部中断0k=read_add_24c02(0);i=read_add_24c02(1);if(k>=6)k=1;if(i>=6)i=1;while(1){flag=0; //按键按下标志位while(flag==0) //检测到有按键按下{ switch(k){case 1:huayang_1();break;case 2:huayang_2();break;case 3:huayang_3();break;case 4:huayang_4();break;case 5:huayang_5();break;}switch(i){case 1:x=10;break;case 2:x=100;break;case 3:x=500;break;case 4:x=1000;break;case 5:x=2000;break;}}}}/****************************************花样子文件zi.c*************************************************/ /*sbit S1=P1^3; 定义按键s1为引脚P1.3sbit S2=P1^4;sbit S3=P1^5;sbit S4=P1^6;sbit S5=P1^7;*/#define led P3sbit beep=P2^0; //定义蜂鸣器为引脚P2.0unsigned int x=10;unsigned char k=1,i=1,flag=0;//#define led ledvoid delay_ms(unsigned int xms) //1ms延时子程序{ unsigned int aa,bb;for(aa=xms;aa>0;aa--){if(flag==1) //当检测到有按键按下,跳出内层循环break;for(bb=800;bb>0;bb--);} //调整bb数值,以使本句运行时间为1ms 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机按键控制花样灯时间:2012-09-10 13:50:11 来源:51hei 作者:/***************************************************** 本程序实现用按键控制花样灯。

** 当K1按下时,灯从0xfe向左跑一遍;** 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;** 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。

** 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。

* * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。

* ******************************************************/*************************************************连接方法:P0接独立按键JP5;P2接LED灯接口JP1 ************************************************************/#include <reg52.h> //头文件,函数声明#include <intrins.h>//定义按键所在位sbit K1=P0^0;sbit K2=P0^1;sbit K3=P0^2;页脚内容1sbit K4=P0^3;sbit K5=P0^4;unsigned char led;unsigned char j;void delayms(unsigned char ms) // 1ms标准延时{while(ms--){for(j=0;j<110;j++); //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确}}void main(){ //P2=led;unsigned int i;while(1){/*********************************************页脚内容2* 当K1按下时,灯从0xfe向左跑一遍;**********************************************/if(K1==0)delayms(10); //消除键盘抖动if(K1==0){led=0xfe;for(i=0;i<7;i++) //i可以去8的倍数,表示本电路执行多少次{//led=0x7f; // P端口的初定义要在循环外面,不然会使效果错乱P2=led; //由于这里已经初设一个灯,所以for里面要加上这一个delayms(100); //起初这里设置500MS,使按键每按一下灯彩走一个,不能达到要求。

led=_crol_(led,1);P2=led;delayms(100);}while(!K1); //这里强调松开就没再次执行程序P2=led; //说明执行完上面的程序的最后状态页脚内容3} //P2=led; // 如果把本行放在这里,虽然在开头中没有说明程序烧写好之后就先显示一个灯,但由于本行在if外面,所有最后还是会显示/************************************************************当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置************************************************************/if(K2==0)delayms(10);if(K2==0){led=0x7f;for(i=0;i<7;i++){P2=led;delayms(100);led=_cror_(led,1);P2=led;delayms(100);页脚内容4}while(!K1);P2=led;delayms(100);for(i=0;i<7;i++){led=_crol_(led,1);P2=led;delayms(100); //跑回去怎么就那么快呀?} //此时led=0x7f}/******************************************************当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。

* *************************************************/if(K3==0)delayms(10); //消除抖动if(K3==0)页脚内容5{led=0xfe;delayms(200);for(i=0;i<7;i++){P2=led;delayms(200);led=led<<1; // 备注led=_crol_(led,1)等于led<<1||led>>7;P2=led;delayms(200);if(led==0x00)break; //这里一定要有个break,跳出循环,然后别忘了此时的状态是00,而不是7f }while(!K1);led=0x7f;P2=led;delayms(200 );页脚内容6for(i=0;i<7;i++){led=led>>1;P2=led;delayms(200);}}/**************************************************** *当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。

* ****************************************************/ if(K4==0)delayms(10); //消除抖动if(K4==0){for(i=0;i<4;i++) //执行四次{ led=0xf0;P2=led;delayms(500);页脚内容7led=0x0f;P2=led;delayms(500);}}/*********************************************************当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。

*********************************************************/ if(K5==0)delayms(10);if(K5==0)P2=0xff;}}/**** */时钟+秒表+流水灯的单片机汇编程序时间:2012-09-10 13:49:42 来源:作者://HJSMSY-V1.0单片机开发板测试程序页脚内容8//---------------------------------------------// <<电脑钟>>//---------------------------------------------//=======主函数================================== ORG 0000HLJMP MAINORG 000BHLJMP T00// ORG 001BH// LJMP T11ORG 0030H//=======程序初始化============================= MAIN:MOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV TH1,#0F0HMOV TL1,#0B0HSETB EASETB ET0页脚内容9// SETB ET1SETB TR0// SETB TR1CLR P3.4MOV R7,#00H ;秒值MOV 30H,#00H ;秒个位值MOV 31H,#00H ;秒十位值MOV 32H,#00H ;分个位MOV 33H,#00H ;分十位MOV 34H,#00H ;时个位MOV 35H,#00H ;时十位MOV 44H,#00H ;秒表毫秒十位MOV 45H,#00H ;秒表秒毫秒百位MOV 46H,#00H ;秒表秒个位MOV 47H,#00H ;秒表秒十位MOV 48H,#00H ;秒表分个位MOV 49H,#00H ;秒表分十位MOV P2,#0F0H ;P2口按键初始化MOV 40H,#01H ;数码管休眠值/流水灯/秒表开关数MOV 41H,#08H ;流水灯循环值页脚内容10MOV 42H,#00H ;秒表暂停// ACALL T11//-----------------------------------------------MAIN1:MOV P0,#0FFHMOV P1,#0FFHMOV R0,40HCJNE R0,#01H,ACL1ACALL MAIN2 ;时钟显示ACL1:CJNE R0,#02H,ACL2ACALL MAIN3 ;秒表ACL2:CJNE R0,#03H,ACL3ACALL LED ;流水灯ACL3:ACALL KEY ;按键扫描// ACALL BAO ;定时报警LJMP MAIN1//=======报警子程序============================ BAO:MOV R4,33HCJNE R4,#03H,YY1页脚内容11CLR P3.2ACALL KEYLJMP YY2YY1:CJNE R4,#05H,YY2SETB P3.2ACALL KEYYY2:RET//======时钟扫描子程序======================= MAIN2:MOV A,30HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.0ACALL DELAYMOV A,31HMOV DPTR,#TABMOVC A,@A+ DPTRMOV P0,A页脚内容12CLR P1.1SETB P1.0ACALL DELAYMOV A,32HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.2SETB P1.1ACALL DELAYMOV A,33HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.3SETB P1.2ACALL DELAYMOV A,34HMOV DPTR,#TABMOVC A,@A+DPTR页脚内容13MOV P0,ACLR P1.4SETB P1.3ACALL DELAYMOV A,35HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.5SETB P1.4ACALL DELAYMOV P0,#7FHMOV P1,#0EBHACALL DELAYMOV P1,#0FFHRET//========秒表扫描子程序========================= MAIN3:MOV A,44HMOV DPTR,#TAB页脚内容14MOVC A,@A+DPTRMOV P0,ACLR P1.0ACALL DELAYMOV A,45HMOV DPTR,#TABMOVC A,@A+ DPTRMOV P0,ACLR P1.1SETB P1.0ACALL DELAYMOV A,46HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.2SETB P1.1ACALL DELAYMOV A,47HMOV DPTR,#TAB页脚内容15MOVC A,@A+DPTRMOV P0,ACLR P1.3SETB P1.2ACALL DELAYMOV A,48HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.4SETB P1.3ACALL DELAYMOV A,49HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ACLR P1.5SETB P1.4ACALL DELAYMOV P0,#7FH页脚内容16MOV P1,#0EBHACALL DELAYMOV P1,#0FFHRET//=======定时器T0中断服务======================== T00:MOV TH0,#0D8HMOV TL0,#0F0HINC R7CJNE R7,#64H,AAMOV R7,#00H//-------时钟跑值--------------------------------TK1:INC 30H ;每秒钟秒个位增一MOV R6,30HCJNE R6,#0AH,AAMOV 30H,#00HTK2:INC 31HMOV R6,31HCJNE R6,#06H,AAMOV 31H,#00HTK3:INC 32H页脚内容17MOV R6,32HCJNE R6,#0AH,AAMOV 32H,#00HTK4:INC 33HMOV R6,33HCJNE R6,#06H,AAMOV 33H,#00HTK5:INC 34HMOV R5,34HMOV R6,35HCJNE R5,#04H,TK6CJNE R6,#02H,TK6MOV 34H,#00HMOV 35H,#00HTK6:CJNE R5,#0AH,AAMOV 34H,#00HINC 35H//-------秒表跑值----------------------AA:MOV R5,42H页脚内容18CJNE R5,#01H,TK7INC 44HTK7:MOV R5,44HCJNE R5,#0AH,AA1MOV 44H,#00HINC 45HMOV R5,45HCJNE R5,#0AH,AA1MOV 45H,#00HINC 46HMOV R5,46HCJNE R5,#0AH,AA1MOV 46H,#00HINC 47HMOV R5,47HCJNE R5,#06H,AA1MOV 47H,#00HINC 48HMOV R5,48HCJNE R5,#0AH,AA1页脚内容19MOV 48H,#00HINC 49HMOV R5,49HCJNE R5,#06H,AA1MOV 49H,#00HAA1:RETI//====定时器T1中断服务子程序==================== //T11:MOV TH1,#0F0H// MOV TL1,#0B0H// RETI//******定时时间调整子程序*************************// TBAO:MOV 50H,#00HMOV 51H,#00HMOV 52H,#00HMOV 53H,#00HMOV 54H,#00HMOV 55H,#00HMOV R3,50H页脚内容20DJNZ 30H,RET1RET1: RET//======键盘扫描子程序========================== KEY:MOV P2,#0F0HMOV R3,P2CJNE R3,#0F0H,KE0LJMP KK13KE0:CJNE R3,#0E0H,KE1 ;P2.4行MOV P2,#0EFHJB P2.3,KK1 //用作调定时时间;K13 秒个位增一ACALL DELAY1ACALL TK1KK1:JB P2.2,KK2 ;K14 秒十增一ACALL DELAY1ACALL TK2KK2:JB P2.1,KK3 ;K15 分个位增一ACALL DELAY1ACALL TK3KK3:JB P2.0,KE1 ;K16 分十位增一ACALL DELAY1页脚内容21ACALL TK4KE1:MOV P2,#0DFH ;P2.5行JB P2.3,KK4 ;K9 时个位增一ACALL DELAY1ACALL TK5KK4:JB P2.2,KK5 ;K10 时十位增一ACALL DELAY1INC 35HMOV R3,35HCJNE R3,#03H,HH0MOV 35H,#00HLJMP KK5HH0:CJNE R3,#02H,HH1LJMP KK5HH1:CJNE R3,#01H,HH2LJMP KK5HH2:MOV 35H,#00HKK5:JB P2.1,KK6ACALL DELAY1 ;K11 开/关蜂鸣器CPL P3.2页脚内容22KK6:JB P2.0,KE2 ;K12 秒表暂停MOV 42H,#00HKE2:MOV P2,#0BFH ;P.6行JB P2.3,KK7 ;K5 时钟暂停/取消暂停ACALL DELAY1CPL ET0KK7:JB P2.2,KK8 ;K6 显示/休眠/流水灯ACALL DELAY2INC 40HMOV R3,40HCJNE R3,#04H,KK8MOV 40H,#01HKK8:JB P2.1,KK9// ACALL DELAY3 ;K7 秒表清0MOV 44H,#00HMOV 45H,#00HMOV 46H,#00HMOV 47H,#00HMOV 48H,#00H页脚内容23MOV 49H,#00HKK9:JB P2.0,KE3 ;K8 秒表开始跑MOV 42H,#01HKE3:MOV P2,#7FH ;P2.7行JB P2.3,KK10 ;K1 秒十位减一ACALL DELAY1MOV R3,31HCJNE R3,#00H,JA1LJMP KK10JA1:DEC 31HKK10:JB P2.2,KK11 ;K2 分个位减一ACALL DELAY1MOV R3,32HCJNE R3,#00H,JA2LJMP KK11JA2: DEC 32HKK11:JB P2.1,KK12 ;K3 分十位减一ACALL DELAY1MOV R3,33H页脚内容24CJNE R3,#00H,JA3LJMP KK12JA3:DEC 33HKK12:JB P2.0,KK13 ;K4 时个位减一ACALL DELAY1MOV R3,34HCJNE R3,#00H,JA4LJMP KK13JA4:DEC 34HKK13:RET//=====流水灯子程序=========================== LED: MOV A,#0feHMOV 41H,#08HMOV P0,#0FFHLED1:MOV P1,AMOV R3,#100D0: ACALL DELAYDJNZ R3,D0MOV R3,41H页脚内容25DJNZ R3,AAALJMP BBAAA:RL AMOV 41H,R3ACALL KEYLJMP LED1BB:MOV 41H,#07HCC: MOV P1,AMOV R3,#30D1: ACALL DELAYDJNZ R3,D1MOV R3,41HDJNZ R3,DDLJMP LED0DD:RR AMOV 41H,R3ACALL KEYLJMP CCLED0:RET页脚内容26//=====延时子程序============================== DELAY:MOV R1,#250DEL1:NOPNOPNOPNOPDJNZ R1,DEL1RET//====调用时钟显示作延时======================== DELAY1:MOV R2,#20DELA3: ACALL MAIN2DJNZ R2,DELA3RET//====调用秒表显示作延时======================== DELAY3:MOV R2,#20DELA5:ACALL MAIN3DJNZ R2,DELA5RET//====调用延时子程序作延时====================== DELAY2:MOV R2,#100页脚内容27DELA4:ACALL DELAYDJNZ R2,DELA4RET//======共阳数码管段码表================================= TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,87HEND页脚内容28。

相关文档
最新文档