51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写 30
6个回答
宿兴电子
2024-11-28 广告
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡...
点击进入详情页
本回答由宿兴电子提供
展开全部
简单说下程序要点。首先应该对P0和P1端口初始化,P0.0一P0.3初始化为1,LED灯全灭,P1.0一P1.3初始化为1,当外部引脚上对应的按钮按下时,在相应的I/O位会读到0。
循环点亮LED比较简单,只要逐位写人0,延时一段时间,再恢复写1,不断循环就可以实现点亮了。耍全灭时再次写入全1。
检查k1按钮要注意,因手按下时间长短不定,会造程序多次读到按下状态,所以最好以检测按钮释放为一次有效按下。另外机械按钮在按下和释放时有可能会有抖动造成软件误判,在程序中还应加入滤除抖动的判断。
若想要具体代码可网上搜索。
循环点亮LED比较简单,只要逐位写人0,延时一段时间,再恢复写1,不断循环就可以实现点亮了。耍全灭时再次写入全1。
检查k1按钮要注意,因手按下时间长短不定,会造程序多次读到按下状态,所以最好以检测按钮释放为一次有效按下。另外机械按钮在按下和释放时有可能会有抖动造成软件误判,在程序中还应加入滤除抖动的判断。
若想要具体代码可网上搜索。
追问
这个思路我看的明白,一直循环灯亮应该怎么写呢,c程序,
追答
可定义一个无符号全局或静态变量 i, 如下所示:
unsigned char i
变量i用于点灯的计数变量。
用定时器做一个0.5秒定时程序(定时器中断例子网上可以搜索),在0.5秒定时程序中写入以下代码:
……
if (i>3) i=0 ;
switch ( i )
{
//---点亮D1,熄灭其它LED ---
case 0 :
P0=0xFE ;
break ;
//--- 点亮D2,熄灭其它LED ---
case 1 :
P0=0xFD ;
break ;
//--- 点亮D3,熄灭其它LED ---
case 2 :
P0=0xFB ;
break ;
//--- 点亮D4,熄灭其它LED ---
case 3 :
P0=0xF7 ;
break ;
}
i++ ;
……
这样采用定时中断方法,实现0.5秒循环点亮LED。利用中断的优点是代码运行效率高。如果要改变亮灯时间,修改定时时间即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看到女朋友生病了好难受,真希望生病的是我
那样我就可以请假不用上班了
那样我就可以请假不用上班了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
、你看看单片机数据手册你的单片机P0口内部上拉没,一般的单片机P0口都是没上拉的,使用P0口一般都需要外部上拉.要么不使用P0口.2、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
手机丢了先别慌,想想丢在什么地方了,想起来了就去找找看。如果想不起来,那就赶紧去营业厅把你的手机卡挂失,防止别人捡到你的手机为所欲为,如果想起来是被人偷了,那就赶紧报警,尽管可能跟我的经历一样报警没什么鸟用,但不排除你会遇到一个好警察。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询