//KEY1按一下LED1亮 再按一下LED1灭 //KEY2按下LED2亮 LED1灭 main(){ while(1) { if (!key2) { led1 = 1; led2 = 0;} else { if(!key1) { Delay(10);if(!key1) { while(!key1);le
用I/O口的两个引脚读取按键的状态,采用循环扫描工作方式,按键按下为1,没按为0,则按键状态为01时,让LED交替量,数据口输出对应的高低电平即可;按键状态为10时,数据口输出同亮同灭数据
电平状态输出相应的信号来控制LED的亮灭。将按键与某个IO口相连。当按下按钮时,IO口会被拉低(变为低电平),未按下按钮时为高电平。在程序中通过循环检测IO口的状态,检测到低电平表示按钮被按下,可以执行相应操作。
你的led1=~led1;这个语句没有循环,所以只会反转一次。要么加循环,要么再写一个闪烁函数。void led_filcker(usigned char x){ while(x){ led1=~led1;x--:} } 如果你是想,按一下,松开也会闪烁,再按一下熄
51单片机,用两个按键分别控制两个led,一个亮/灭,另一个闪烁/灭,为什么我按下了第二个灯不闪呢?
译码器将微控制器送来的扫描信号进行译码,即向键盘矩阵输出13条不同时为零的行扫描线。键盘矩阵由8列*13行(以AT101为例)组成,行和列交叉处分别连接键的两个触点,不按键时,列线输出为高电平,有键按下时相应列线输出低电平。串行口
第一步:通过软件编译平台开始写我们的试验程序,这就好比写文章要有笔和纸一样,最常用的是KEIL软件平台,比如点亮一个发光管,点亮多个发光管,点亮流水灯,驱动继电器,驱动数码管,学用写源程序有2个重点,重点1是学会在KEIL中写源程
两个功能的代码如下: public ReturnValue ReadLightConfig(ref int[] adVal, ref byte[] daVal) { ReturnValue ReturnState = new ReturnValue(); ReturnState.type = 0; try { //adVal.OrderBy(Func
如果要将CC2530的P11配置成输出端口,如何用代码实现,写出关键的两行代码。
二、具体要求:1、基本功能(参考图1)(1)系统上电后16个LED全点亮,S1为一复位按键((按下S1=0,松开S1=1)),对复位键按键操作后,系统从第一节拍开始执行直到第四节拍结束,然后从第一节拍重新开始新的循环。第一节拍:16个LED(Q1~Q
JB K1, M1 ;未按下K1键则继续扫描 ACALL LED_BL ;LED闪动 ACALL SET_TIME ;设置目前时间 JMP LOOP ;继续循环执行 ;设置闹铃时间 M1:JB K2,M2 ;未按下K2键则继续扫描 ; ACALL LED_BL ACALL SET_ATIME ;设置闹铃
1、先设定LED灯是低电平亮还是高电瓶亮,这里假设低电平;2、设置一个定时器,在定时器里面写代码,分别发送高、低电瓶值可实现交替闪耀;
这是非常简单的程序。只需要检测按键,然后控制两个灯的亮灭,总共才3个IO口。建议自己写,几行代码的事,这样才能进步。
cc2530使用按键控制led1的闪烁效果具体要求如下1系统复位后led1熄灭2
这个程序太简单了哦。 比如你的按键是P2.0,灯是P2.1的话程序如下: org 1000H lcall keyscan sjmp $ keyscan: push acc mov a,p2 jb acc.0,here lcall delay mov a,p2 jb acc.0.here cpl p2.1 here:
在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。include
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
你没有松手监测呀!就是在按键处理程序后要加一个while(k1!=0);就是只有你松开按键后才认为本次按键执行完毕,不然就会一直重复执行按键按下的程序,那么你的d1一直就会执行亮灭操作!
如图所示,这个就是一个单键启停的程序,这个是二分频法的单键启停的程序。望采纳。。。
1、首先打开编程软件Keil uVision4,新建一个工程文件,在菜单栏中Project—— New uVision Project..。2、然后选择单片机型号是 Atmel 公司的 AT89c52,单击OK。3、再单击工具栏上新建按钮,新建一个文档,然后再点击保存,
你好,上述程序可以满足你说的要求,按键按下抬起的操作可以触发一次 GPIO Pin_1 的状态的读取,你的程序其实就是将此口的状态反转。读取之后用了一个if else 的判断,其实这四行可以直接用一句取反的函数代替,估计是叫in
这一段程序想实现一个按键按一下,LED就常亮,再按一下,LED就常灭。可以吗?
INC DEDA ;5ms计数值加1 ;秒输出 MOV A, DEDA CJNE A,#200,TT1 ;是否1s到了 MOV DEDA, #0 ;计数值清除为0 CPL WLED ;LED灯亮灭变换 INC SEC ;秒计数加1 MOV A, SEC CJNE A, #60, TT1;是否1min到了 ;分输出
define D1 P1_0//定义LED1为P10口控制 define D2 P1_1//定义LED2为P11口控制 define D3 P1_4//定义LED3为P14口控制 define D4 P0_1//定义LED4为P01口控制 /*32M晶振初始化---*/ void xtal_init(void){
这是非常简单的程序。只需要检测按键,然后控制两个灯的亮灭,总共才3个IO口。建议自己写,几行代码的事,这样才能进步。
1、先设定LED灯是低电平亮还是高电瓶亮,这里假设低电平;2、设置一个定时器,在定时器里面写代码,分别发送高、低电瓶值可实现交替闪耀;
cc2530控制两个LED灯交替闪烁,闪烁周期为0.5左右.其中p1_2连LED1p1-3连2
在SimpleApp上面改吧。这个控制方案很多的: 利用ZigBee无线传感器网络技术对LED节能灯实现远程控制的方案,给出了详细的软硬件设计。 1 自组网控制系统及工作原理 为实现故障检测、温度检测、电压检测、亮度检测和控制以及故障报警等功能,自组网控制系统采用了图1所示的设计。 整个无线网络是由终端节点(ZigBee Endpoint,ZE)、路由(ZigBee Router,ZR)、和协调器(ZigBee Coordinator,ZC)3种设备构成。其中终端是简化功能设备(Reduced Function Device,RFD),只能与路由或者协调器直接通信。路由是全功能设备(FuU Function Device,FFD),既可以和路由和终端直接通信,也可以和协调器直接通信。协调器是PAN协调器(PANC),负责一个PAN区域的网络建立及管理。协调器收集所有节点和路由的信息,通过RS232发给监控计算机来确定灯的亮度、环境温度、电池电量等。 工作原理:系统中每个终端、路由分别控制一盏灯,每个灯对应一个ID(终端或路由加入网络时由协调器自动分配),各个节点和路由将传感器收集的数据通过无线发送到协调器,协调器将收到的数据通过串口发送到监控计算机。如果LED灯出现故障,检测电路会产生报警信号,报警信号最终会发送到监控计算机,计算机会提示工作人员故障灯的ID,让维护更便利。另外终端的光敏传感器会收集光照的程度,然后由终端自动的调整光照的亮度。 终端也会将自身的供电电压传送到监控计算机,以防节点缺电而影响使用。 2 系统硬件设计 系统是由电源模块、无线传输模块(CC2530、温度检测、电压检测)、LED驱动模块、LED检测模块等组成,具体硬件电路逻辑结构如图2所示。其中电源模块是采用市面常用的ASM1117-5.0和ASM1117-3.3,原理简单易懂。下面主要介绍无线通信模块和LED驱动模块。 无线通信模块采用TI公司的CC2530模块,CC2530是用于IEEE 802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。CC2530结合了领先的RF收发器的优良性能、业界标准的增强型8051 CPU、系统内可编程闪存、8 KB RAM和许多其他强大的功能。CC2530有4种不同的闪存版本:CC2530F32/64/128/256(分别具有32/64/128/256 KB闪存)。CC 2530具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短,进一步确保了低能源消耗。CC2530优良的性能和具有代码预取功能的低功耗、8051微控制器内核、32/64/128 KB的系统内可编程闪存、8 KBRAM,具备在各种供电方式下的数据保持能力并且支持硬件调试,具有极高的接收灵敏度和抗干扰性能。它的可编程输出功率高达4.5 dBm,并且只需极少的外接元件。硬件电路结构框图如图3所示,其中光控单元采用TPS851芯片,温控模块采用TC77。 LED驱动模块采用的芯片是PT4115。PT4115是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED。PT4115输人电压范围从6~30 V,输出电流可调,最大可达1.2 A。根据不同的输入电压和外部器件,PT4115可以驱动高达数十W的LED。PT4115内置功率开关,采用高端电流采样设置LED平均电流,并通过DIM引脚可以接受模拟调光和很宽范围的PWM调光。当DIM的电压低于0.3 V时,功率开关关断,PT4115进入极低工作电流的待机状态。驱动原理图如图4所示。PT4115和电感L、电流采样电阻RS形成一个自振荡的连续电感电流模式的降压、恒流LED控制器。VIN上电时,L和RS的初始电流为零,LED输出电流也为零。这时候,CS比较器的输出为高,内部功率开关导通,SW的电位为低。电流通过L、RS、LED和内部功率开关从VIN流到地,电流上升的斜率由VIN、L和LED压降决定,在RS上产生一个压差VCSN,当VIN-VCSN>115mV时,CS比较器的输出变低,内部功率开关关断,电流以另一个斜率流过L、RS、LED和肖特基二极管(D),当VIN-VCSN<85 mV时,功率开关重新打开,这样使得在LED上的平均电流为I。I=(0.085+0.115)/(2×RS)=0.1/RS。 本文应用IAR Embedded Workbench开发环境,在TI ZStack-2.2.1-1.1.3协议栈的基础上,编写了系统的应用程序代码,用VC编写了上位机程序。系统软件主要包括协调器节点程序、路由和终端程序、上位机程序。ZStack提供了丰富的函数调用接口。 ZigBee网络中的协调器工作流程如图5所示,路由(涵盖终端)工作流程如图6所示。在ZigBee网络中,网络协调器具有建立网络、维护邻居设备表、对逻辑网络地址进行分配、允许设备MAC层/应用层的连接或断开网络的功能。对于节点之间的通信有两种寻址方式,分别是通过64位IEEE地址和16位网络地址来寻找网络设备,当节点加入网络时候,协调器会自动给其分配唯一的16位网络地址。灯的无线控制系统要求能够对任意一盏灯进行亮度调节,因此人工分配64位IEEE地址给每个路灯,以便以后进行控制。另外配置ZigBee设备对象断点时候,网内的所有节点的ID和断点描述符必须相同,否则节点间不能通信。路由器和终端的工作流程相识,这里不作区分。 上位机能够为工作人员清楚地提供电压、温度、节点数目、节点地址等数据,实现远程无线控制,创作和谐的人机交互界面,如图7所示。工作人员能够在上位机上使用ID对灯亮暗程度进行远程控制。 4结语 经测试,在室内无障碍15 m左右距离,无遮挡物环境下速率能够达到2 50 kbps;室外空旷环境下30~1 00m距离,速率为40 kbps;300 m,速率为25 kbps。距离150 m时通信的误码率可小于2%。系统在发射状态下电流为25.7 mA,接收时为29.3mA,休眠状态下仅为2.5μA。本系统具有成本低、功耗低、实施简单、维护方便的特点,具有较高的参考价值。
如果使用上位控制则将上位按钮做成置为和复位,程序不用自锁就可以一个按钮实现要求。 如果按钮为开入点则如下图:
望采纳
你端口自己定 我就宏定义下了 #define S2 //S2等于0时是按下 #define LED1 #define LED3 char status=0; char LED_flag=0; void main(void) { IO口初始化; while(1) { if(status==0){if(S2==0){LED_flag=~LED_flag;status=1;}} if (status==1){{if(S2==1){status=0;}} if(LED_flag==0){LED1=0;LED3=0;}else{LED1=1;LED3=1;} } }
主程序循环点亮8个LED,按键可接到外部中断0或1,当有按键按下时,进入外部中断服务子程序,在该服务程序中控制8个LED一起亮灭6次。亮灭或闪烁的时间可以采用延时子程序或定时中断程序来实现。
这个具体的要参考cc253x用户手册的 外设i/0引脚的映射表格。针对于外设,定时器和USART在I/o端口中有对应的位置。比如USART1当使用UART模式时候的 备用位置1根据映射表就知道,使用的是P0.4 P0.5端口来实现接收和发送数据的,其中P0.4对应TX,其中P0.5对应RX。 同理备用位置2就使用的是P1.6 P1.7端口实现的,其中P1.6对应TX,P1.7对应RX。详细的请查考映射表。
关注 1.Px寄存器 首先,需要知道的是cc2530单片机是以51为内核的,所以与MCS-51有许多相似之处,比如I/O口电平的控制,如果引脚配置为输出口,直接可以控制P0/P1/P2寄存器中对应位来输出低电平或是高电平。 2.PERCRG寄存器 这个寄存器主要用于控制外设功能的引脚配置,由于cc2530单片机具有引脚复用功能,此外,同一外设(比如串口USART0/1、Timer1/3/4)也可以配置在不同的引脚,使得在不改变电气连接的情况下,实现功能替换或扩展。 3.APCFG寄存器 这个是P0口模拟输入引脚配置寄存器,其中对应位(P0.x)为0时禁止模拟输入功能;当置位该位时,允许模拟输入功能【摘要】 cc2530单片机用来设置端口中断控制的PiCTL寄存器,如果要将cc2530单片机的p1.3【提问】 关注 1.Px寄存器 首先,需要知道的是cc2530单片机是以51为内核的,所以与MCS-51有许多相似之处,比如I/O口电平的控制,如果引脚配置为输出口,直接可以控制P0/P1/P2寄存器中对应位来输出低电平或是高电平。 2.PERCRG寄存器 这个寄存器主要用于控制外设功能的引脚配置,由于cc2530单片机具有引脚复用功能,此外,同一外设(比如串口USART0/1、Timer1/3/4)也可以配置在不同的引脚,使得在不改变电气连接的情况下,实现功能替换或扩展。 3.APCFG寄存器 这个是P0口模拟输入引脚配置寄存器,其中对应位(P0.x)为0时禁止模拟输入功能;当置位该位时,允许模拟输入功能【回答】 亲您仔细阅读一下哦【回答】
对你这种编程思想,我想问是跟谁学的啦! 对你这程序,我想问①先按K3、后按K2,你觉得程序结果会如何?②如果2个按键都按住不放,结果又会如何。 考虑一下上面的问题,就能看到你的程序问题了。当然你的程序问题,跟你的题目一样,没那么简单!后面还有一堆!!
参考: http://hi.baidu.com/do_sermon/item/21321b80887395d25e0ec1f8