九齐单片机 单键控制两个LED灯 有10个档位长按两秒开机 1挡灯亮设置为百分之50 2挡灯亮设置为百分之80 3挡灯亮设置为百分之100 4挡 灯闪烁 亮度设置为百分之百 5挡灯灭暂停0.5秒后开始爆闪 循环 6挡灯常亮然后闪烁 1秒后灭 然后再循环 7挡呼吸灯 灯暗百分之30 亮百分之100 8挡 呼吸灯 最暗到亮 依次循环 9挡 开始爆闪 然后开始正常闪烁 循环 10灯由暗到亮 然后开始爆闪 灯再由亮到暗 然后开始闪烁 循环 长按两秒关机 单按键

时间: 2024-01-03 08:04:18 浏览: 30
您想问的是如何用九齐单片机实现单键控制两个LED灯,并且有10个档位,长按两秒开机,单按键关机,具体档位功能如下: - 1档:灯亮,亮度设置为百分之50 - 2档:灯亮,亮度设置为百分之80 - 3档:灯亮,亮度设置为百分之100 - 4档:灯闪烁,亮度设置为百分之百 - 5档:灯灭,暂停0.5秒后开始爆闪,循环 - 6档:灯常亮,然后闪烁1秒后灭,然后再循环 - 7档:呼吸灯,灯暗百分之30,亮百分之100 - 8档:呼吸灯,最暗到亮,依次循环 - 9档:开始爆闪,然后开始正常闪烁,循环 - 10档:灯由暗到亮,然后开始爆闪,灯再由亮到暗,然后开始闪烁,循环。 实现的代码如下: ```c #include <reg52.h> #define LED1 P1_0 #define LED2 P1_1 #define KEY P3_2 typedef unsigned char u8; typedef unsigned int u16; u8 timerCount; // 定时器计数器 u8 currentMode = 1; // 当前档位 // 档位对应的亮度值 u8 brightness[] = {50, 80, 100, 100, 0, 100, 100, 100, 0, 100}; // 判断按键是否被按下 u8 keyIsPressed() { if (KEY == 0) { timerCount = 0; // 计数器清零 while (KEY == 0) { // 等待按键释放 if (timerCount >= 200) { // 长按2秒 return 2; // 长按 } } return 1; // 短按 } return 0; // 没有按键按下 } // 定时器中断处理函数 void timerHandler() interrupt 1 { TH0 = (65536 - 1000) / 256; // 重新赋值 TL0 = (65536 - 1000) % 256; // 重新赋值 timerCount++; // 计数器加一 } // 初始化定时器 void initTimer() { TMOD |= 0x01; // 设置为定时器0模式 TH0 = (65536 - 1000) / 256; // 计算重载值 TL0 = (65536 - 1000) % 256; ET0 = 1; // 打开定时器0中断允许 EA = 1; // 打开总中断允许 TR0 = 1; // 启动定时器0 } // 设置LED的亮度 void setBrightness(u8 b) { u16 t = b * 10; // 计算延时时间 u8 i; for (i = 0; i < 10; i++) { if (i < b) { LED1 = 1; LED2 = 1; } else { LED1 = 0; LED2 = 0; } while (t--); // 延时 t = b * 10; // 重新计算延时时间 } } // 灯闪烁 void blinkLED() { u8 i; for (i = 0; i < 5; i++) { // 闪烁5次 LED1 = 1; LED2 = 1; setBrightness(100); LED1 = 0; LED2 = 0; setBrightness(0); } } // 爆闪 void flashLED() { u8 i; for (i = 0; i < 5; i++) { // 闪烁5次 LED1 = 1; LED2 = 1; setBrightness(100); LED1 = 0; LED2 = 0; setBrightness(0); delay(500); } } // 呼吸灯 void breatheLED() { u8 i, j; for (i = 0; i < 10; i++) { // 从暗到亮 for (j = 0; j < 10; j++) { setBrightness(j); } } for (i = 10; i > 0; i--) { // 从亮到暗 for (j = 0; j < 10; j++) { setBrightness(j); } } } // 暂停 void delay(u16 ms) { u16 i, j; for (i = 0; i < ms; i++) { for (j = 0; j < 114; j++); } } // 切换档位 void switchMode() { currentMode++; if (currentMode > 10) { currentMode = 1; } } // 主函数 void main() { u8 keyStatus = 0; // 按键状态,0表示未按下,1表示短按,2表示长按 initTimer(); // 初始化定时器 while (1) { keyStatus = keyIsPressed(); // 检测按键状态 if (keyStatus == 1) { // 短按 switchMode(); // 切换档位 setBrightness(brightness[currentMode - 1]); // 设置亮度 } else if (keyStatus == 2) { // 长按 break; // 跳出循环,关机 } switch (currentMode) { // 根据当前档位执行相应的操作 case 4: blinkLED(); break; case 5: flashLED(); break; case 6: breatheLED(); break; case 7: setBrightness(30); delay(100); setBrightness(100); delay(100); break; case 8: breatheLED(); break; case 9: flashLED(); break; case 10: setBrightness(0); delay(1000); setBrightness(100); delay(500); setBrightness(0); delay(1000); break; default: setBrightness(brightness[currentMode - 1]); break; } } setBrightness(0); // 关闭LED灯 while (1); // 死循环 } ```

相关推荐

最新推荐

recommend-type

51单片机脉冲宽度调制(PWM)控制LED灯亮度

绍一个51系列单片机采用脉冲宽度调制(PWM)方式控制LED灯亮度的一个程序,大家都知道,51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯...
recommend-type

基于STC单片机的智能LED路灯控制器设计

为了充分节约能源,提高路灯控制系统的智能化,介绍了一种基于STC 单片机的智能LED 路灯控制器,引入在线监测、PWM 和电力线载波通信技术,实践应用效果良好,具有成本低、运行稳定的特点。本控制器对智能化路灯管理...
recommend-type

基于单片机的LED智能路灯控制系统设计方案

本控制系统以STC89C58RD单片机为控制器,主要由恒流源电路、时钟定时电路、显示电路、光敏感应电路、红外接收电路、声光报警电路等组成。能设定路灯(LED)开灯关灯时间。路灯(LED)通过恒流源电路正常工作,即使...
recommend-type

基于AT89C51单片机的LED彩灯控制器设计

在简要对比TWI总线与I2C总线的基础上,详细介绍TWI总线的内部模块、工作时序和工作模式,并给出一个编程实例加以说明.对TWI总线和传统的I2C总线的正确区分及使用具有现实的指导意义。
recommend-type

基于单片机的智能太阳能路灯控制系统的设计方案

本文介绍了智能太阳能路灯系统的组成及工作原理,采用LPC935 单片机作为主控制器,结合密封铅酸蓄电池充电专用芯片UC3906,实现了对密封铅酸蓄电池最佳充电所需的全部控制和检测功能,延长了系统的使用寿命。...
recommend-type

电容式触摸按键设计参考

"电容式触摸按键设计参考 - 触摸感应按键设计指南" 本文档是Infineon Technologies的Application Note AN64846,主要针对电容式触摸感应(CAPSENSE™)技术,旨在为初次接触CAPSENSE™解决方案的硬件设计师提供指导。文档覆盖了从基础技术理解到实际设计考虑的多个方面,包括电路图设计、布局以及电磁干扰(EMI)的管理。此外,它还帮助用户选择适合自己应用的合适设备,并提供了CAPSENSE™设计的相关资源。 文档的目标受众是使用或对使用CAPSENSE™设备感兴趣的用户。CAPSENSE™技术是一种基于电容原理的触控技术,通过检测人体与传感器间的电容变化来识别触摸事件,常用于无物理按键的现代电子设备中,如智能手机、家电和工业控制面板。 在文档中,读者将了解到CAPSENSE™技术的基本工作原理,以及在设计过程中需要注意的关键因素。例如,设计时要考虑传感器的灵敏度、噪声抑制、抗干扰能力,以及如何优化电路布局以减少EMI的影响。同时,文档还涵盖了器件选择的指导,帮助用户根据应用需求挑选合适的CAPSENSE™芯片。 此外,为了辅助设计,Infineon提供了专门针对CAPSENSE™设备家族的设计指南,这些指南通常包含更详细的技术规格、设计实例和实用工具。对于寻求代码示例的开发者,可以通过Infineon的在线代码示例网页获取不断更新的PSoC™代码库,也可以通过视频培训库深入学习。 文档的目录通常会包含各个主题的章节,如理论介绍、设计流程、器件选型、硬件实施、软件配置以及故障排查等,这些章节将逐步引导读者完成一个完整的CAPSENSE™触摸按键设计项目。 通过这份指南,工程师不仅可以掌握CAPSENSE™技术的基础,还能获得实践经验,从而有效地开发出稳定、可靠的触摸感应按键系统。对于那些希望提升产品用户体验,采用先进触控技术的设计师来说,这是一份非常有价值的参考资料。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB函数调用中的调试技巧大揭秘,快速定位并解决函数调用问题

![MATLAB函数调用中的调试技巧大揭秘,快速定位并解决函数调用问题](https://ucc.alicdn.com/pic/developer-ecology/ovk2h427k2sfg_f0d4104ac212436a93f2cc1524c4512e.png?x-oss-process=image/resize,s_500,m_lfit) # 1. MATLAB函数调用的基本原理** MATLAB函数调用是通过`function`关键字定义的,其语法为: ```matlab function [output1, output2, ..., outputN] = function_na
recommend-type

LDMIA r0!,{r4 - r11}

LDMIA是ARM汇编语言中的一条指令,用于从内存中加载多个寄存器的值。具体来说,LDMIA r0!,{r4 r11}的意思是从内存地址r0开始,连续加载r4到r11这8个寄存器的值[^1]。 下面是一个示例代码,演示了如何使用LDMIA指令加载寄器的值: ```assembly LDMIA r0!, {r4-r11} ;从内存地址r0开始,连续加载r4到r11这8个寄存器的值 ``` 在这个示例中,LDMIA指令将会从内存地址r0开始,依次将内存中的值加载到r4、r5、r6、r7、r8、r9、r10和r11这8个寄存器中。
recommend-type

西门子MES-系统规划建议书(共83页).docx

"西门子MES系统规划建议书是一份详细的文档,涵盖了西门子在MES(制造执行系统)领域的专业见解和规划建议。文档由西门子工业自动化业务部旗下的SISW(西门子工业软件)提供,该部门是全球PLM(产品生命周期管理)软件和SIMATIC IT软件的主要供应商。文档可能包含了 MES系统如何连接企业级管理系统与生产过程,以及如何优化生产过程中的各项活动。此外,文档还提及了西门子工业业务领域的概况,强调其在环保技术和工业解决方案方面的领导地位。" 西门子MES系统是工业自动化的重要组成部分,它扮演着生产过程管理和优化的角色。通过集成的解决方案,MES能够提供实时的生产信息,确保制造流程的高效性和透明度。MES系统规划建议书可能会涉及以下几个关键知识点: 1. **MES系统概述**:MES系统连接ERP(企业资源计划)和底层控制系统,提供生产订单管理、设备监控、质量控制、物料跟踪等功能,以确保制造过程的精益化。 2. **西门子SIMATIC IT**:作为西门子的MES平台,SIMATIC IT提供了广泛的模块化功能,适应不同行业的生产需求,支持离散制造业、流程工业以及混合型生产环境。 3. **产品生命周期管理(PLM)**:PLM软件用于管理产品的全生命周期,从概念设计到报废,强调协作和创新。SISW提供的PLM解决方案可能包括CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAE(计算机辅助工程)等工具。 4. **工业自动化**:西门子工业自动化业务部提供自动化系统、控制器和软件,提升制造业的效率和灵活性,包括生产线自动化、过程自动化和系统整体解决方案。 5. **全球市场表现**:SISW在全球范围内拥有大量客户,包括许多世界500强企业,表明其解决方案在业界的广泛应用和认可。 6. **中国及亚洲市场**:SISW在中国和亚洲其他新兴市场具有领先地位,特别是在CAD领域,反映了其在这些地区的重要影响力。 7. **案例研究**:文档可能包含实际案例,如通用汽车的全球产品开发项目,展示SISW技术在大型复杂项目中的应用能力。 这份建议书不仅对理解西门子MES系统有重要作用,也为企业在选择和实施MES系统时提供了策略性指导,有助于企业规划和优化其生产流程,实现更高效的制造业运营。