其中开关SW1为系统总控制开关//系统初始为关闭状态/此时按下SW1,系统开启,指示灯D1亮,
第一块数显板会显示按下次数1////此时按SW2/第一次D2亮起//第二次按下D3亮起//第三次按下D2和D3会同时熄灭,每按一次,
第四块数显板会显示开关SW2按下次数。当任意一个开关按下次数达到10次时,对应的数显板会从零开始重新计数。
开关SW3按下时,不管系统处于什么状态,都将关闭系统,而SW4按下时,第二个小灯泡会点亮
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51单片机源程序如下:
- /*此系统为开关联合控制LED工作台////其中开关SW1为系统总控制开关//系统初始为关闭状态/此时按下SW1,系统开启,指示灯D1亮,
- 第一块数显板会显示按下次数1////此时按SW2/第一次D2亮起//第二次按下D3亮起//第三次按下D2和D3会同时熄灭,每按一次,
- 第四块数显板会显示开关SW2按下次数。当任意一个开关按下次数达到10次时,对应的数显板会从零开始重新计数。*/
- #include"reg52.h"
- sbit C1=P3^0; //定义数码管四个引脚
- sbit C2=P3^1;
- sbit C3=P3^2;
- sbit C4=P3^3;
- unsigned char F=0; //定义系统是否开启
- unsigned char A=0; //定义D3灯开关次数
- sbit D1=P1^0; //LED引脚
- sbit D2=P1^1;
- sbit D3=P1^2;
- sbit SW1=P2^0; //开关引脚
- sbit SW2=P2^1;
- unsigned char s1=0,s2=0; //数显管开关次数
- unsigned char SMG[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void SMGDelay(unsigned char t) //此处为延时函数定义
- {
- while(t--);
- }
- void SMGPLAY(unsigned char P,unsigned char D) //四个数显管的显示位置
- {
- P0=0xff; //消隐
- switch(P)
- {
- case 1:C1=1;C2=0;C3=0;C4=0;break;
- case 2:C1=0;C2=1;C3=0;C4=0;break;
- case 3:C1=0;C2=0;C3=1;C4=0;break;
- case 4:C1=0;C2=0;C3=0;C4=1;break;
- }
- P0=D;
- }
-
- void PUT4SMG() //定义四个数显管显示内容
- {
- SMGPLAY(1,SMG[s1]);
- SMGDelay(100);
- SMGPLAY(2,0xbf);
- SMGDelay(100);
- SMGPLAY(3,0xbf);
- SMGDelay(100);
- SMGPLAY(4,SMG[s2]);
- SMGDelay(100);
- }
- void KEYS() //定义开关按下次数和系统开关和小灯泡亮灭
- {
- if(SW1==0)
- {
- SMGDelay(100);
- if(SW1==0)
- {
- while(SW1==0)
- {
- PUT4SMG();
- }
- s1++;
- if(s1==10)
- {
- s1=0;
- }
- if(F==0)
- {
- F=1;
- D1=0;
- }
- else
- {
- F=0;
- D1=1;
- D2=1;
- D3=1;
- A=0;
- }
-
- }
- }
- if(SW2==0)
- {
- SMGDelay(100);
- if(SW2==0)
- {
- while(SW2==0)
- {
- PUT4SMG();
- }
- s2++;
- if(s2==10)
- {
- s2=0;
- }
- if(F==1)
- {
- A++;
- switch(A)
- {
- case 1:D2=0;break;
- case 2:D3=0;break;
- case 3:D2=1;D3=1;A=0;break;
- }
- }
- }
- }
- }
- void main()
- {
- while(1)
- {
- PUT4SMG();
- KEYS();
- }
- }
复制代码
联合控制开关 LED.rar
(20.23 KB, 售价: 1 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|