首页 > 编程知识 正文

设计一个彩灯自动循环控制电路,假定使用输出继电器,LED显示器用于控制显示方式的器件是

时间:2023-05-05 13:12:50 阅读:254804 作者:832

要求:

1、至少10个发光管4种花样自动变换,循环往复。

2、彩灯花样变换的快慢节拍可以手动和自动方式控制,手动控制按钮按一次转换一次;自动控制方式每15秒变换一次,1分钟循环一遍。

3、系统复位清零开关。

获取该 程序+protues 的方式:

1、CSDN下载:

https://download.csdn.net/download/qq_38351824/11274657

2、关注微信公众号下载:

     ① 关注微信公众号:Tech云  

     ②

3、可以关注点赞并在下方评论,我给你邮箱发过去。

一、Protues仿真图:

二、程序源码: 因为注释非常的全,这里就不再进行讲解了。 /*******************************************************************************================================================================================【平 台】STC89C51平台【编 写】Sumjess【E-mail 】1371129880@qq.com【软件版本】V2.0【最后更新】2018年09月06日【相关信息参考下列地址】【网 站】 Sumejss博客 https://blog.csdn.net/qq_38351824 电子发烧友 http://bbs.elecfans.com/zhuti_mcu_1.html 中国电子网 http://bbs.21ic.com/icfilter-typeid-11-214.html---------------------------------------------------------------------------------【dev.env.】MDK4.14及以上版本【Target 】STC89C51第一次修订:2019/05/23第二次修订:2018/05/24第三次修订:2018/05/26================================================================================********************************************************************************/#include <reg52.h> //调用单片机头文件#define uchar unsigned char //无符号字符型 宏定义变量范围0~255#define uint unsigned int //无符号整型 宏定义变量范围0~65535sbit led0 = P0^0; //led定义sbit led1 = P0^1; //led定义sbit led2 = P0^2; //led定义sbit led3 = P0^3; //led定义sbit led4 = P0^4; //led定义sbit led5 = P0^5; //led定义sbit led6 = P0^6; //led定义sbit led7 = P0^7; //led定义sbit led8 = P2^0; //led定义sbit led9 = P2^1; //led定义sbit key0 = P3^2; //定义手动控制按键sbit key1 = P3^3; //定义自动控制按键uchar x =50; //调节LED闪烁速率uint js = 0,flag_auto=0;//定义计数15秒,自动变花样标志位void delayms(uint z) //毫秒{uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void Timer0_init() //定时器0初始化{TMOD=0x01;//设置定时器0为工作方式1(M1M0为01)TH0=(65536-45872)/256;//装初值11.0592M晶振定时50ms数为45872TL0=(65536-45872)%256;ET0=1;//开定时器0中断EA=1;//开总中断} void timer0() interrupt 1 using 1//定时器0中断服务函数{TH0=(65536-45872)/256;//装初值11.0592M晶振定时50ms数为45872TL0=(65536-45872)%256;js++;//叠加20次 是一秒if(js==300) { js=0;//清空 flag_auto=flag_auto+1;//产生15s的倒计时 if(flag_auto>3) flag_auto=1;//限幅,最多4个花样 }}void LED0(); //花样1void LED1(); //花样2void LED2(); //花样3void LED3(); //花样4void main(){ Timer0_init(); //定时器初始化 while(1) { if(key1==0) //自动控制按键 { delayms(3); //去除按键抖动 if(key1==0) { while(!key1); //以上表示按下开始按键flag_auto=0; //清零 TR0=1; //开启定时器while(1){ if(key0==0) //调节到手动模式 { TR0=0; //关闭定时器 js=0;flag_auto=0;//计数、自动换花样变量清零 break; //跳出} switch(flag_auto)//花样自动变化 { case 0: LED0(); break; case 1: LED1(); break; case 2: LED2(); break; case 3: LED3(); break; } } } } if(key0==0) //手动控制按键 { delayms(3); //去除按键抖动 if(key0==0) { while(1){ if(key1==0) //调节到自动模式 { TR0=0; //关闭定时器 js=0;flag_auto=0;//计数、自动换花样变量清零 break;//跳出} if(key0==0) ++flag_auto;//换花样 if(flag_auto>3) flag_auto=1;//限幅,最多4个花样 switch(flag_auto)//花样手动变化 { case 0: LED0(); break; case 1: LED1(); break; case 2: LED2(); break; case 3: LED3(); break; } }} } } }void LED0(){led0 = 1; //led赋值delayms(x);led1 = 1; //led赋值delayms(x);led2 = 1; //led赋值delayms(x);led3 = 1; //led赋值delayms(x);led4 = 1; //led赋值delayms(x);led5 = 1; //led赋值delayms(x);led6 = 1; //led赋值delayms(x);led7 = 1; //led赋值delayms(x);led8 = 1; //led赋值delayms(x);led9 = 1; //led赋值delayms(x);led0 = 0; //led赋值delayms(x);led1 = 0; //led赋值delayms(x);led2 = 0; //led赋值delayms(x);led3 = 0; //led赋值delayms(x);led4 = 0; //led赋值delayms(x);led5 = 0; //led赋值delayms(x);led6 = 0; //led赋值delayms(x);led7 = 0; //led赋值delayms(x);led8 = 0; //led赋值delayms(x);led9 = 0; //led赋值delayms(x);}void LED1(){led0 = 1; //led赋值led1 = 1; //led赋值delayms(x);led2 = 1; //led赋值led3 = 1; //led赋值delayms(x);led4 = 1; //led赋值led5 = 1; //led赋值delayms(x);led6 = 1; //led赋值led7 = 1; //led赋值delayms(x);led8 = 1; //led赋值led9 = 1; //led赋值delayms(x);led0 = 0; //led赋值led1 = 0; //led赋值delayms(x);led2 = 0; //led赋值led3 = 0; //led赋值delayms(x);led4 = 0; //led赋值led5 = 0; //led赋值delayms(x);led6 = 0; //led赋值led7 = 0; //led赋值delayms(x);led8 = 0; //led赋值led9 = 0; //led赋值delayms(x);}void LED2(){led0 = 1; //led赋值led1 = 1; //led赋值led2 = 1; //led赋值delayms(x);led3 = 1; //led赋值led4 = 1; //led赋值led5 = 1; //led赋值delayms(x);led6 = 1; //led赋值led7 = 1; //led赋值led8 = 1; //led赋值led9 = 1; //led赋值delayms(x);led0 = 0; //led赋值led1 = 0; //led赋值led2 = 0; //led赋值delayms(x);led3 = 0; //led赋值led4 = 0; //led赋值led5 = 0; //led赋值delayms(x);led6 = 0; //led赋值led7 = 0; //led赋值led8 = 0; //led赋值led9 = 0; //led赋值delayms(x);}void LED3(){led0 = 1; //led赋值delayms(x);led0 = 0; //led赋值delayms(x);led1 = 1; //led赋值delayms(x);led1 = 0; //led赋值delayms(x);led2 = 1; //led赋值delayms(x);led2 = 0; //led赋值delayms(x);led3 = 1; //led赋值delayms(x);led3 = 0; //led赋值delayms(x);led4 = 1; //led赋值delayms(x);led4 = 0; //led赋值delayms(x);led5 = 1; //led赋值delayms(x);led5 = 0; //led赋值delayms(x);led6 = 1; //led赋值delayms(x);led6 = 0; //led赋值delayms(x);led7 = 1; //led赋值delayms(x);led7 = 0; //led赋值delayms(x);led8 = 1; //led赋值delayms(x);led8 = 0; //led赋值delayms(x);led9 = 1; //led赋值delayms(x);led9 = 0; //led赋值delayms(x);}

 

HTML div三边怎么加边框

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。