c51单片机流水灯流程图独立按键控制,流水灯程序

51单片机之独立按键控制LED
1.独立按键的原理(1703A)1.独立按键一共有四个针脚,两个短针脚之间默认不导通,两个长针脚之间默认导通2.按下按钮后,会出现“抖动”,消抖后,输入低电平;2.为什么会出现按下按钮输入低电平?1.对于p1,p2,p3口而言,是属于准双向IO口结构,在按下按钮(按钮在p3口)后,自然直接从内部输入低电平;2.对于p1,p2,p3而言,上拉电阻是为了更好的控制高低电平,所以,p0口有外加的上拉电阻3.而且在内部输入时NOT为非门,所以输入高电平时,到达这里变成了低电平,不能通过三极管,只有输入低电平时,才能转换为高电平,通过三极管(自己的理解,不太准确)3.关于抖动的问题(转载)通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖按键消抖有两种,一种是硬件消抖,一种是软件消抖参考链接:http://www.eeworld.com.cn/mcu//article_9776.html4.代码练习
#include&reg52.h&
typedef int u16;
typedef char u8;
sbit led1=P2^0; //D1
sbit led2=P2^1; //D2
sbit led3=P2^2; //D3
sbit led4=P2^3; //D4
sbit k1=P3^1;//定义一个独立按键
sbit k2=P3^2;//定义一个独立按键
sbit k3=P3^3;//定义一个独立按键
sbit k4=P3^4;//定义一个独立按键
//定义延时函数
void delay(u16 i)
while(i--);
void keypros()//定义独立按键控制
if(k1==0)//说明按下去了
delay(1000);//消抖
led1=~led1;//翻转
while(!k1);//按键松开
if(k2==0)//说明按下去了
delay(1000);//消抖
led2=~led2;//翻转
while(!k2);//按键松开
if(k3==0)//说明按下去了
delay(1000);//消抖
led3=~led3;//翻转
while(!k3);//按键松开
if(k4==0)//说明按下去了
delay(1000);//消抖
led4=~led4;//翻转
while(!k4);//按键松开
void main()
keypros();
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!豆丁微信公众号
君,已阅读到文档的结尾了呢~~
51单片机按键控制程序,单片机按键程序,单片机按键控制led,单片机按键消抖程序,单片机独立按键程序,单片机按键去抖动程序,单片机按键控制流水灯,单片机按键中断程序,单片机按键扫描程序,单片机长按键 程序
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
51单片机按键控制程序
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
51单片机,按键控制流水灯程序,懂的进!八个LED灯与单片机P1口连,按键key1与单片机P32连.该程序是完成以下工作:单片机上电,流水灯每一秒移一位,当按键key1按下后,流水灯停止在该灯处;当再次按下key1时,流水灯在停止处继续移位.在有些时候(注意:只是有些时候)在流水灯运行的时候,按下按键,流水灯停止,而当再一次按下的时候,流水灯却一直停在那里,而不重新开始运行了.请各位高手帮我看看该程序是否哪里有缺陷!//#include#include#define uchar unsigned char#define uint unsigned intsbit key1=P3^2;uchar num=0,void delay_ms(uchar N){\x05uchar i,j;\x05for(i=N;i>0;i--)\x05\x05for(j=220;j>0;j--);}void init(){\x05P0=0\x05TMOD=0x01;\x05TH0=()/256;\x05TL0=()%256;\x05EA=1;\x05ET0=1;\x05TR0=1;\x05}void display(void){\x05P0=_crol_(P0,1);\x05temp=P0;}void key_scan(void){\x05if(key1==0)\x05{\x05\x05delay_ms(10);\x05\x05if(key1==0)\x05\x05{\x05\x05\x05P0=\x05\x05\x05TR0=~TR0;\x05\x05}\x05}\x05while(!key1);}void main(){\x05init();\x05while(1)\x05{\x05\x05if(num==20)\x05\x05{\x05\x05\x05num=0;\x05\x05\x05display();\x05\x05}\x05\x05key_scan();\x05}}void timer0() interrupt 1{\x05TH0=()/256;\x05TL0=()%256;\x05num++;}不好意思,8个LED是与单片机P0口连,写错了.程序中写的P0是没错的!
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
假如,你的程序在执行key_scan();是触发了两次中断导致num>20,你的显示函数将永远被跳过,你应该写成if(num>20){num=0;display();}这是一个比较直观的错误,其他的没细看,你在试试
为您推荐:
扫描下载二维码Access denied | www.manong5.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (www.manong5.com) has banned your access based on your browser's signature (42f46b43b4b193d8-ua98).51单片机开关控制流水灯的C语言_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机开关控制流水灯的C语言
&&4个开关控制4种流水灯闪动。
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 单片机流水灯 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信