芯片复制STC单片机制作可编程定时插座
单片机源程序:
- /芯片复制
- 程序:上电-K1,K2按键进行时分调整-K3启动(启动后按键将无效)
- -继电器闭合通电-开始倒计时- 倒计时结束继电器断开-完成周期
- ********************************************************/
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit s1=P3^2;
- sbit s2=P3^3;
- sbit s3=P3^4; // 定义位使用端口 1,2,3,4段
- sbit s4=P3^5;
- sbit jd=P2^0; // 继电器端口
- sbit k1=P1^1; // 调时
- sbit k2=P1^2; // 调分
- sbit k3=P1^3; // 启动
- sbit GGD=P1^0; // 按键公共端
- uchar code mum[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // 段码0~9
- uchar code display1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf} ;
- uchar code display2[]={0xfe,0xbf,0xf7,0xbf,0xfe,0xbf,0xf7,0xbf} ;
- uchar code display3[]={0xcf,0xf9,0xcf,0xf9,0xcf,0xf9} ;
- uchar code display4[]={0xfe,0xdf,0xef,0xf7,0xfb,0xfd} ;
- char sec=59,min=0,hour=12; // 定义全局变量 有符号字符型
- uint cnt;
- /芯片复制/
- void delay(uchar x) // 延时函数
- {
- uchar i,j;
- for(;x>0;x--)
- for(i=20;i>0;i--)
- for(j=2;j>0;j--);
- }
- void delay1(uint x)
- {
- uchar i,j;
- for(;x>0;x--)
- for(i=20;i>0;i--)
- for(j=200;j>0;j--);
- }
- void shuma()
- {
- uchar a,b,n,m,j,k;
- s1=1;
- s2=1;
- s3=1;
- s4=0;
- while(1)
- {
-
- for(a=0;a<6;a++)
- {
- for(n=0;n<6;n++)
- {
- P0=display1[n];
- delay1(15);
- }
- }
- for(m=0;m<8;m++)
- {
- P0=display2[m];
- delay1(100);
- }
- for(j=0;j<6;j++)
- {
- P0=display3[j];
- delay1(30);
- }
- for(b=0;b<6;b++)
- {
- for(k=0;k<6;k++)
- {
- P0=display4[k];
- delay1(15);
- }
- }
-
-
- }
- }
- /***************************************************************************
- *************** 函数名:timeyx ****************************
- *************** 函数功能:时钟运行 ****************************
- *************** 输入: ****************************
- 输出:
- ***************************************************************************/
- void timeyx() // 时钟运行
- {
- GGD=1; // 按键公共端置高电平,运行中按键无效
- sec--;
- if(sec<0)
- {
- sec=59;
- min--;
- if(min<0)
- {
- min=59;
- hour--;
-
- }
- }
- }
- /***************************************************************************
- *************** 函数名:stop ****************************
- *************** 函数功能:继电器断开 ****************************
- *************** 输入: ****************************
- 输出:
- ***************************************************************************/
- void stop() // 时间到继电器断开
- {
- if(hour==0&&min==0) // 判断时分为0时
- {
- TR0=0; // 定时器停止
-
- jd=1;
- shuma(); // 继电器断开
- }
- }
-
- /***************************************************************************
- *************** 函数名:display ****************************
- *************** 函数功能:数码管显示 ****************************
- *************** 输入: ****************************
- 输出:
- ***************************************************************************/
- void display(uchar zm,uchar zh) // 显示函数
- {
-
-
-
- P0=mum[zm%10];
- s1=0;
- delay(10);
- s1=1 ;
-
- P0=mum[zm/10];
- s2=0;
- delay(10);
- s2=1;
-
- P0=mum[zh%10];
- if(cnt>2000) // 小数点闪烁
- P0&=0x7f; // 增加小数点显示
- s3=0;
- delay(10);
- s3=1;
-
- P0=mum[zh/10];
- s4=0;
- delay(10);
- s4=1 ;
- }

芯片解密