苹果六9.31版本苹果越狱后cydia闪退无法使用cydia显示未能连接到服务器怎么处理,求大神指点。

51单片机按键控制LED灯亮灭【程序+图文】-51单片机-单片机入门教程日记 51单片机按键控制LED灯亮灭【程序+图文】 51单片机按键控制LED灯亮灭【程序+图文】 阅读:(18135) & & & &还是先看下面的一个电路图,还是仔细看P2接口,这里我们接了一个发光二极管D1,又接了一个按键S2,我们想实现的功能是:按下按键S2,发光二极管D1改变发光状态。实际上就是模拟家庭的电灯开关。& & & &当然了,要实现这样一个功能大可不必如此兴师动众,又是单片机又是最小系统的,实际用一个简单的闭合开关、一个限流电阻、一节电池、一个灯泡就足矣啦。但是在这可不单单是为了点亮一个灯而已,通过这个小案例,我们会引出单片机开发板系统里面两个非常重要的概念,“按键去抖”和“中断”!下面的内容涉及到好多编程理念,请认真阅读。& & & &说到按键作者不禁要吐一下槽。作者曾经问(其实也被问过)这样一个问题:假设说单片机的P2.0管脚接按键,P2.4接发光二极管,怎样用按键控制灯的亮灭?& & & &有人脱口而出:按键中断!(这是后文书,现在说出来太早了,掌嘴!)& & & &还有人说:在单片机内部从P2.0直接接一条电线到P2.4……& & & &我说:……& & & &好吧,作者承认第一天学单片机的时候我也是这么认为的!& & & &为什么要说这个呢,因为正如第一节我说的,很多人初学单片机的时候会错误地认为单片机是靠纯电路实现的控制,但是事实上它是依靠单片机识别和控制管脚电平来实现各种功能的。单片机就是一个非常听你话的大脑,你让它做啥,它就做啥了。比如想要实现如图按键控制二极管的功能,就让单片机一直监测P2.0的电平状态,S2在没有按下的时候,P2.0通过R4直接连接到VCC,电平状态肯定是高电平,若S2按下,P2.0此时会接地,电平变成低电平,所以当单片机发现P2.0管脚的电平状态变成低电平的时候就知道此时有按键按下了,然后单片机再通知P2.4管脚,让D1转变发光状态,整个过程就是这样的,然后我们将它转换成一个比较专业的程序流程图,就如下图所示。然后再根据上面的流程图编写程序,代码如下所示:#include®52.h& &sbit S2=P2^0; &sbit D1=P2^4; &/********************************************************&**函数名:main(void)&**返回:无&**函数功能描述:按键控制灯的亮灭&**********************************************************/ &voidmain(void) & & //程序开始运行 &{ && & D1=1; & & & & &//程序初始化,令二极管不发光 && & while(1) & & & &//循环检测 && & { && & & & if(S2==0) & //如果检测到P2.0管脚为低电平,即按键按下 && & & & { && & & & & & D1=~D1; //二极管转换发光状态,返回继续循环检测 && & & & } & && & } &} && & 应该可以看出,根据流程图来编程会让思路更加清晰,以后等大家编程编的多了的时候就更能体会程序流程图的重要性。& & 好了,一个按键控制电灯的程序就编好了。& & 那么,真的编好了吗?& & 试着把程序下载到单片机里,运行一下,看看是不是您想要的效果呢?& & 好吧,告诉你,这样还不行。你可以试着按下按键,会发现电灯并不是像您想的那样那么听话,有时候确实改变了发光状态,有时候就不变,有时候还会变好几次,这是要闹哪样?& & 我们来看一下按键按下去后P2.0管脚电平的变化情况,下图是一个理想情况的示意图。& & T0时刻:按下按键,P2.0电平由高电平转换为低电平。& & T1时刻:抬起按键,P2.0电平由低电平转换为高电平。& & 当单片机P2.0管脚检测到低电平的时候,D1发生转变。你要知道,这个过程在单片机里发生的极快,大概是微秒级的数量级,而按键按下去再抬起来,这个时间段对应的是毫秒级的数量级,所以在T0到T1这个时间段里,其实D1已经发生了若干次的转换,这个不是我们想要的效果,我们想着按键按一次,D1就转换一次,那这该如何实现呢!& & 思路是这样的,当按键按下去的时候,单片机开始等待,一直等到按键抬起来的时候让D1再转变状态。代码改成下面的样子。#include®52.h& &sbit S2=P2^0; &sbit D1=P2^4; &/********************************************************&**函数名:main(void)&**返回:无&**函数功能描述:按键控制灯的亮灭&**********************************************************/ &voidmain(void) & & //程序开始运行 &{ && & D1=1; & & & & &//程序初始化,令二极管不发光 && & while(1) & & & &//循环检测 && & { && & & & if(S2==0) & //如果检测到P2.0管脚为低电平,即按键按下 && & & & { & && & & & & & while(S2==0); //当P2.0为低电平的时候,单片机在此等待 && & & & & & D1=~D1; //二极管转换发光状态,返回继续循环检测 && & & & } & && & } &} && & 上面加了一句“while(S2==0);”这句代码等效于“while(!S2);”,意思是当括号内的语句为真时(P2.0为低电平),单片机程序在此等待,直到括号内语句为假时(P2.0变回高电平),程序往下继续运行。好了,这下运行一下程序,看看是不是能达到您想要的效果来了。& & 。。。& & 那么,效果真的好了吗?& & 。。。& & 好吧,好像还是不行,上面的程序如果加载到类似于Proteus的仿真软件里(请参阅第五章Proteus仿真软件教程),程序运行起来一点问题也没有。但是下载到真正的单片机里运行起来虽然比不加“while(S2==0);”这句代码的时候要强一些,但时不时的还是不太听话。原因何在?& & 原因就在于一句非常有名的名言啊“现实往往比理想差好远!”,按键按下的电平变化会由于电路的稳定性和手的抖动产生一个非常不规则的波形,如下图所示,在按下和抬起的一刹那都会产生一个抖动区,不要小看这个抖动区,它足以让单片机产生误会,导致D1发生偏转。& & 所以在编写按键程序的时候往往都要加一个“去抖”过程,也就是当单片机P2.0口检测到低电平时,单片机不做任何处理,空等一段时间(10ms左右),再次检测P2.0端口,如果此时P2.0端口仍然是低电平,那就认为此次果然按下了按键,D1开始转换状态。重新编写程序,如下所示:#include®52.h& &#define uintunsigned int &sbit S2=P2^0; &sbit D1=P2^4; &/********************************************************&**函数名: delay(uint x)&**返回:无&**函数功能描述:延时函数,延时大概x毫秒&**********************************************************/ &voiddelay(uint x) & & & & & &//延时函数,让单片机空跑一段时间。 &{ & && & uint i,j; && & for(i=0;i&=x;i++) && & & for(j=0;j&=100;j++); &} &/********************************************************&**函数名:main(void)&**返回:无&**函数功能描述:按键控制灯的亮灭&**********************************************************/ &voidmain(void) & & //程序开始运行 &{ && & D1=1; & & & & &//程序初始化,令二极管不发光 && & while(1) & & & &//循环检测 && & { && & & & if(S2==0) & //如果检测到P2.0管脚为低电平,即按键按下 && & & & { & && & & & & &delay(10); & //延时一下 && & & & & & & & if(S2==0) && & & & & & & & { && & & & & & & & &while(S2==0); && & & & & & & & &D1=~D1; //二极管转换发光状态,返回继续循环检测 & & & & & & & &&& & & & & & & & } && & & & & & & & & & && & & & } & && & } &} && & 这下再试试,看看效果如何?& & 。。。& & 好吧& & 。。。& & 效果应该是不错了,假如还有问题的话就改改delay函数里面的参数值,多试几次肯定能调整出最好的效果。(这里如果告诉你,其实程序还是有问题的话,你会不会疯掉呢?-_-||)& & 再补充一句,有些时候我们闲编写去抖程序比较麻烦,可以在按键那里加一个滤波电容,如下图所示。按键按下后,若有抖动,电容C会起到一定的滤波作用,效果就会强很多,大家可以做实验试试看。& & 还有一个思路呢!上文咱们用到的按键都是自动弹起的,还有一种按下去就不弹起的开关呢,那种开关就简单多了,按下去就一直导通,再按一下才抬起,我用这么文艺的方式给您解释相信您一定能想的出那种开关长得什么样子吧。 还没有留言,还不快点抢沙发?查看: 967|回复: 7 谁能告诉我怎么用51单片机做两个按键控制一个LED的亮灭 主题帖子精华 新手上路, 积分 46, 距离下一级还需 4 积分 在线时间2 小时 按键1按下灯亮,再按一下灯灭,按键2一样,两个按键控制1个灯,要原理图,和程序,怎么实现 这个功能根本不需要用单片机来做。。。一个简单的门电路或者NE555之类的就可以了,可靠性比单片机高百倍。。 比如用CD4011接成RS触发器就可以,或者直接使用RS触发器IC。 用NE555的话,电路图我就懒得画了,直接告诉你就是: 第4,8脚接电源正,第1,6脚接地(电源负极),5,7脚不用接,第3脚是输出。 第2脚接上拉电阻10K并接按键到地,这就是开灯键,只要按一下,第3脚就输出高电平。 第4脚接也按键到地,这是关灯键, ... 主题帖子精华 高级会员, 积分 568, 距离下一级还需 432 积分 在线时间216 小时 这个功能根本不需要用单片机来做。。。一个简单的门电路或者NE555之类的就可以了,可靠性比单片机高百倍。。 比如用CD4011接成RS触发器就可以,或者直接使用RS触发器IC。 用NE555的话,电路图我就懒得画了,直接告诉你就是: 第4,8脚接电源正,第1,6脚接地(电源负极),5,7脚不用接,第3脚是输出。 第2脚接上拉电阻10K并接按键到地,这就是开灯键,只要按一下,第3脚就输出高电平。 第4脚接也按键到地,这是关灯键,只要按一下,第3脚就输出低电平。。 如果是按一下开,再按一下关的话,NE555也可以实现,不过接法要改一下。 能实现这么简单的功能的芯片数不胜数。。 看你需要的功能,好像是用来控制楼梯的灯的,楼上楼下各一开关,无论上楼还是下楼都能控制灯的亮灭。 这个功能根本不需要用有源器件来做。。只需两个单刀双掷开关就可以了。。 主题帖子精华 高级会员, 积分 500, 距离下一级还需 500 积分 在线时间118 小时 要单片机干嘛,两个单刀双闸开关组成或逻辑,就是你的两个开关控制一盏灯了。。。。 主题帖子精华 金钱104267 在线时间645 小时 回复【3楼】HER107: --------------------------------- 高手。 我是开源电子网站长,有关站务问题请与我联系。 正点原子STM32开发板购买店铺: 微信公众平台:正点原子 主题帖子精华 新手上路, 积分 29, 距离下一级还需 21 积分 在线时间3 小时 大家都是新手,能理解啊,不过用单片机真的有点浪费了 主题帖子精华 新手上路, 积分 3, 距离下一级还需 47 积分 在线时间0 小时 浪费啊,就这还用单片机这么高端的东西!!!! 主题帖子精华 新手上路, 积分 24, 距离下一级还需 26 积分 在线时间0 小时 浪费啊,就这还用单片机这么高端的东西!!!! 这个应该是例程练习,就像单片机搞流水灯一样。 主题帖子精华 新手上路, 积分 44, 距离下一级还需 6 积分 在线时间1 小时 这个应该是例程练习,就像单片机搞流水灯一样。 Powered by如何用一个按钮控制一个LED灯的亮灭? - 初学园地 - 51单片机学习论坛 - Powered by Discuz! 如何用一个按钮控制一个LED灯的亮灭? 单片机小学生 如何用一个按钮控制一个LED灯的亮灭? 如何用一个按钮控制一个LED灯的亮灭? 用一个jnb指令就可以了... 新人报道注意事项: 1 给大家送一个见面礼, 比如自己收藏的程序代码资料等 2 如果有可能请认真回复5个贴子 活跃本论坛的气氛 3 不要发类似: 请给编一个***代码发到***邮箱的贴子,天下没有免费午餐 单片机小学生 回复 2# 8051 的帖子 单片机小学生 回复 2# 8051 的帖子 我的意思是:按一下按钮,灯亮,再按一下该按钮,灯灭。 单片机小学生 if(key==0) delay(10); delay(10); while(!key); 单片机小学生 if(key1==0) & && &delay(10); & && &if(key1==0) & && && && &if(fleg) & && && && & { & && && && && && & led=0; & && && && && && && &fleg=0; & && && && &} & && && && &else & && && &&&{ & && && && && && &led=1; & && && && && &&&fleg=1; & && && && &} 单片机达人 K1 BIT P1.1 MA1:SETB K1 & &JNB K1,MA2 & &CPL P1.2 MA2:JMP MA1 单片机高中生 楼上的正解,嘻嘻 单片机初中生 还不如:main() if(key==0) & &while(key==0) ; & & P0=~P0; [ 本帖最后由 jxr0345 于 23:02 编辑 ] 多谢楼上各位! 新人报道注意事项: 1 给大家送一个见面礼, 比如自己收藏的程序代码资料等 2 如果有可能请认真回复5个贴子 活跃本论坛的气氛 3 不要发类似: 请给编一个***代码发到***邮箱的贴子,天下没有免费午餐 单片机教授 我C的不会,有空也要学习学习当前位置: >> 按键同时控制LED灯和蜂鸣器的相关程序 //按键同时控制LED灯和蜂鸣器的相关程序 //头文件 寄存器的相关地址 #define GPH2CON *(volatile unsigned long*)0xE0200C40//butten1~4 #define GPH2DAT *(volatile unsigned long*)0xE0200C44//butten
#define GPJ2CON *(volatile unsigned long*)0xE0200280//led #define GPJ2DAT *(volatile unsigned long*)0xE0200284//led #define GPD0CON *(volatile unsigned long*)0xE02000A0//buzzer #define GPD0DAT *(volatile unsigned long*)0xE02000A4//buzzer int main(void) { GPJ2CON = 0x1111; GPJ2DAT = 0xF; GPD0CON = 0x1; if(GPH2DAT == 0xE )//K1 GPD0DAT = 0x1; for(i = 0; i & 100000; i++); GPJ2DAT = 0xE; for(i = 0; i & 100000; i++); GPJ2DAT = 0xF; if(GPH2DAT == 0xD)//K2 GPD0DAT = 0x1; for(i = 0; i & 100000; i++); GPJ2DAT = 0xD; for(i = 0; i & 100000; i++); GPJ2DAT = 0xF; if(GPH2DAT == 0xB)//K3 GPD0DAT = 0x1; for(i = 0; i & 100000; i++); GPJ2DAT = 0xB; for(i = 0; i & 100000; i++); GPJ2DAT = 0xF; if(GPH2DAT == 0x7)//K4 GPD0DAT = 0x1; for(i = 0; i & 100000; i++); GPJ2DAT = 0x7; for(i = 0; i & 100000; i++); GPJ2DAT = 0xF; GPJ2DAT = 0xF; return 0; } 按键控制灯亮灭程序代码_电子/电路_工程科技_专业资料。Zigbee 模块之间的互相通讯...按键控制灯亮与灭 4页 1下载券 按键控制led的亮灭 4页 免费 用外中断方式...程序简介:开发板有 4 个灯,6 个按键,通过程序实现通过按下按键来使灯亮或灯...ARM 第N次按键蜂鸣器响N... 2页 1下载券 按键同时控制LED灯和蜂鸣... 暂无...控制独立按键、LED以及蜂鸣器_调查/报告_表格/模板_...原理图如下: 汇编程序 1 如下: ---...按键同时控制LED灯和蜂鸣... 暂无评价 1页 免费 单片机工程...OS-II 的 LED 流水灯控制实验 摘要:熟悉 uc/os-II 操作系统和 LPC2200 专用工程模板, 在该操作系统上完成流水灯循环控制 任务和检测 KEY1 键控制蜂鸣器任务。...用按键控制LED灯的亮灭_电子/电路_工程科技_专业资料。MSP430单片机用按键控制 LED 灯的亮灭,当按键按下时,LED 灯亮,当按键松开时,LED 灯灭。 #include&msp...2.设计实现蜂鸣器滴滴声控制程序。 3.设计两路继电器的驱动,两个按键分别控制...9.使用外部中断方式,按键控制实现 LED 的亮灭控制,按键按下一次灯亮,按键再按...tiny13动态显示LED流水灯以及控制蜂鸣器和按钮程序_电子/电路_工程科技_专业资料。tiny13动态显示LED流水灯以及控制蜂鸣器和按钮程序 tiny13 动态显示 LED 流水灯以及...(LCD1602、按键、蜂鸣器、led 灯) 题目具体要求 一、直流电机转速控制系统 1)单片机的引脚产生 PWM 脉冲波,控制直流电机的转速大小和正反转; 2)按键 1 按下,...运行程序后,蜂鸣器和 LED 灯每隔 300ms 变换一次状态; 实验小结:这次实验作为 STM32 的入门第一个例子,详细介绍了 STM32 的 IO 口操作,同时巩固了前面 的学习...实验程序_电子/电路_工程科技_专业资料。嵌入式系统实验程序及相关思考题一...3、使用一个按键同时控制 LED 流水灯和蜂鸣器的开通和关断。 只要将 LED 的... All rights reserved Powered by copyright ©right 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 苹果越狱后cydia闪退 的文章

 

随机推荐