首页 > 资讯 > 经验 > 5个io怎么控制8个led和8个按键,51单片机如何控制8个led程序

5个io怎么控制8个led和8个按键,51单片机如何控制8个led程序

来源:整理 时间:2023-07-07 12:53:41 编辑:汇众招标 手机版

本文目录一览

1,51单片机如何控制8个led程序

#include<reg51.h> 包含单片机专用头文件#include<intrins.h> 这个是什么俺也不知道,但这个程序不需要这个头文件void Delay10ms(unsigned int c); 自定义的延时函数声明main() 主函数 unsigned int LED; 建立一个数值型变量,变量名 LED LED=0xfe; 给这个变量赋值,0xfe 换成二进制数为 1111 1110 while(1) 主循环 P2=LED; 点亮发光管,即先点亮右边的第一个Delay10ms(50); 延时一段时间 LED=LED<<1; 点亮的发光管,向左移动一位 if (P2==0x00) 判断是否8个全部点亮了 LED=0xff; 如果全部点亮,则将全部发光管熄灭 } }} void Delay10ms(unsigned int c)延时函数主程序 unsigned char a, b;建立两个变量 a b for(;c>0;c--)循环语句,不断改变变量数值,已达到延时目的 for(b=38;b>0;b--) for(a=130;a>0;a--); } } }给你翻译了,希望能帮到你

51单片机如何控制8个led程序

2,单片机 8个按键分别控制对应的8个led的亮灭 程序设计

八个灯接在单片机的P1口(P0,P2,P3,P4都一样) while(1) { delay(你想要延时的时间); P1=0xff; delay(你想要延时的时间); P1=0; } 注意led最好加驱动,不然单片机会坏的。
本来以为这个程序很简单的,没想到写了快三个小时。哎学艺不精啊。贴出来给你研究吧。我不想做过多的解释了,我是按我理解的你出的题目做的,可能和你的本意不是很一样,1、依次亮,依次灭:从一个灯亮到全亮,再到全灭,每次改变一个灯亮灭2、奇偶号灯间隔亮灭:隔一个灯亮一个灯亮灯时间为1s,没有灯全灭的时候3、依次闪烁、切换时间为3秒,闪烁时间为2秒,我理解的是,没三秒钟有一个灯在闪烁,其中有一秒钟是灭灯状态程序中使用了p1口与8个发光二极管相连,具体电路图你百度一下吧,还有使用了一个按键,该按键与p3.7相连,低电平为按下状态。程序如下:#include #include /*变量声明: i、j、k都是记录计时器溢出次数的变量, stat是记录当前显示状态的变量,由按键key控制 temp是状态2中保护p1口状态的变量*/ unsigned char i=0,j=0,k=0,stat=0,temp; bit flag=1; //状态1处于灭灯还是亮灯状态的变量,1为依次亮灯,0为依次亮灯 sbit key=p3^7; //按键控制 void init(); //初始化函数 void delay(unsigned int n); //延时函数 void keyscan(); //键盘扫描函数 void main() { init(); while (1) { switch (stat) { case 0: //0方案 if(i==20&&flag) { i=0; p1=p1<<1; //依次亮灯 temp=p1; if(temp==0) { flag=0; } } if(i==20&&!flag) { i=0; if(p1==0xff) { flag=1; p1=0xfe; } if(!flag) { p1=p1<<1; //依次灭灯 temp=p1; p1=temp+1; } } break; case 1: //2方案 if(i==20) { i=0; p1=~p1; //去反后亮灯状态为灭灯,p1初值取0x55或0xaa,奇偶交替亮灯 } break; case 2: //3方案 if(j==60) { p1=temp; p1=_crol_(p1,1); temp=p1; //保护p1口亮灯状态 k=0; j=0; } //闪烁部分,应该可以优化 if(k<5) { p1=0xff; } else if(k>=5&&k<10) { p1=temp; } else if(k>=10&&k<15) { p1=0xff; } else if(k>=15&&k<20) { p1=temp; } else if(k>=20&&k<25) { p1=0xff; } else if(k>=30&&k<35) { p1=temp; } else if(k>=35&&k<40) { p1=0xff; } //----------------------------------- break; } keyscan(); } } void init() { th0=0x3c; //定时器赋初值定时时间50ms tl0=0xb0; tmod=0x01; //设置定时器工作方式为方式1 ea=1; //开总中断 et0=1; //开中断允许位 tr0=1; //定时器计数 p1=0xfe; //这里假设led灯与p1口相连并且 //低电平有效 } void delay(unsigned int n) { int i,j; for (i=0;i for (j=0;j<110;j++); } void keyscan() { if(!key) { delay(10); //消抖 if(!key); //确认有键按下 stat++; if(stat==3) { stat=0; } //右键按下复位 i=0; j=0; k=0; th0=0x3c; tl0=0xb0; switch (stat) { case 0: p1=0xfe; flag=1; stat=0; break; case 1: p1=0x55; break; case 2: p1=0xfe; temp=p1; break; } //----------------------------------- while(!key) //此循环中的函数和主函数中的显示函数是同一个 //用于长按键的显示,可以去掉,去掉长按键不会正常显示,松开按键后正常 { switch (stat) { case 0: if(i==20&&flag) { i=0; p1=p1<<1; temp=p1; if(temp==0) { flag=0; } } if(i==20&&!flag) { i=0; if(p1==0xff) { flag=1; p1=0xfe; } if(!flag) { p1=p1<<1; temp=p1; p1=temp+1; } } break; case 1: if(i==20) { i=0; p1=~p1; } break; case 2: if(j==60) { p1=temp; p1=_crol_(p1,1); temp=p1; k=0; j=0; } if(k<5) { p1=0xff; } else if(k>=5&&k<10) { p1=temp; } else if(k>=10&&k<15) { p1=0xff; } else if(k>=15&&k<20) { p1=temp; } else if(k>=20&&k<25) { p1=0xff; } else if(k>=30&&k<35) { p1=temp; } else if(k>=35&&k<40) { p1=0xff; } break; } } } } void timer0() interrupt 1 { th0=0x3c; tl0=0xb0; //溢出后重新赋初值 //定时器中断时间为50ms i++; //20次中断时间为1s j++; //40次中断时间为2s k++; //60次中断时间为3s } 有什么不懂的可以百度hi我

单片机 8个按键分别控制对应的8个led的亮灭 程序设计

文章TAG:5个怎么控制8个5个io怎么控制8个led和8个按键

最近更新

  • 荔波县去机场怎么走,怎么坐客车从贵阳机场到荔波荔波县去机场怎么走,怎么坐客车从贵阳机场到荔波

    怎么坐客车从贵阳机场到荔波2,荔波机场怎么去小七孔1,怎么坐客车从贵阳机场到荔波先坐车到都匀,在坐车到荔波。2,荔波机场怎么去小七孔先坐车到县城的汽车站,在买车票到小七孔.....

    经验 日期:2023-08-08

  • 洛阳洛吉路在哪里了,洛阳吉林路在那洛阳洛吉路在哪里了,洛阳吉林路在那

    洛阳吉林路在那2,洛吉快速通道途径情况1,洛阳吉林路在那河南省洛阳市涧西区吉林路1号洛阳吉林路在那?在洛阳牛2,洛吉快速通道途径情况从2009.3月17日召开的洛阳市交通工作会议上传出一条令.....

    经验 日期:2023-08-08

  • 公共电话哪里找,哪有公用电话公共电话哪里找,哪有公用电话

    哪有公用电话2,公用电话地址查询1,哪有公用电话社会在发展,时代在进步,现在手机推广到家家户户,电话已经逐步退出社会了吧。在一些公司,办公企业,和偏远贫穷的地方才有公用电话了,在我居住的地.....

    经验 日期:2023-08-08

  • 德州运河消防在哪里,德州运河经济开发区消防大队在什么地方德州运河消防在哪里,德州运河经济开发区消防大队在什么地方

    德州运河经济开发区消防大队在什么地方2,德州玻璃钢消防水箱厂在哪里1,德州运河经济开发区消防大队在什么地方在华能电厂老生活区对面往西大约100米,往南去的一条路,(菜场西门的路),一直往南.....

    经验 日期:2023-08-08

  • 惠州金山河在哪里,惠州的金山湖和龙湖距离是多少 坐几路车可以去到惠州金山河在哪里,惠州的金山湖和龙湖距离是多少 坐几路车可以去到

    惠州的金山湖和龙湖距离是多少坐几路车可以去到2,惠州的金中哪里1,惠州的金山湖和龙湖距离是多少坐几路车可以去到额换乘1次14公里,1小时20分,步行1000米金山湖1步行740米至山水华府乘15.....

    经验 日期:2023-08-08

  • 淮南山南新建学校在哪里,求山南新理工大学准确地址淮南山南新建学校在哪里,求山南新理工大学准确地址

    求山南新理工大学准确地址2,安徽理工大学新校区在山南哪里1,求山南新理工大学准确地址安徽理工大学山南新校区在往合肥高速那条路上,在日芯光伏对面淮南南部安徽理工大学新区在那建成后.....

    经验 日期:2023-08-08

  • 2017年9月27日大写怎么写,9月17日大写2017年9月27日大写怎么写,9月17日大写

    9月17日大写2,支票日期怎么填写1,9月17日大写9月17日大写有两种写法,写法一:九月十七日;写法二:玖月壹拾柒日。第一种是普通的书面用语写法,第二种写法是在财务领域的会计数字书写方法。年份:.....

    经验 日期:2023-08-08

  • 长春显微镜去哪里买,长春哪里卖显微镜长春显微镜去哪里买,长春哪里卖显微镜

    长春哪里卖显微镜2,长春哪里买生物显微镜1,长春哪里卖显微镜中心客运站边上有一家买测量仪器的商店,那里就买显微镜,还有周边的测量仪器店都应该有卖的.2,长春哪里买生物显微镜你可以跟北京.....

    经验 日期:2023-08-08

相关文章