📄 shui.c
字号:
#include <reg51.h>
#define uchar unsigned char //次类语句后不要加 ; 分号
#define uint unsigned int
sbit pc= P1^3 ; //时钟
sbit pd= P1^2 ; //数据
sbit jdq=P1^4; //继电器的控制端口
bit flag,shanshuo;
uchar code led7[11]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00} ;
//次语句后要加 分号
unsigned long int count;
uchar kaiguan;//定义计时间长短
uchar count2;
//--------------------------延时---------------------------------------
void delay400ms(void)
{ uchar cycA = 5 ;
uint cycB ;
while(cycA--)
{ cycB = 7296 ;
while(cycB--) ;
}
}
//--------------------------发送数据------------------------------------------
void sentdata(uchar c)
{ bit temp ;
uchar i ;
for(i=0;i<8;i++)
{
if(c&1) temp = 1; //直接与01H相与,即可
else temp = 0 ;
c >>= 1;
pc = 0; //P2.0口,产生一个上升沿
pd = temp; //分离出来的数,给P2.1口
pc = 1;
}
}
//------------------------分离数据------------------------------------------
void display(uint shu)
{ uchar g,s ;
g = shu % 10 ; //个位
s = (shu/10)%10; //十位
sentdata( led7[g]);
sentdata( led7[s]);
}
//------------------------------------------------------------------
main()
{
jdq=1; //关闭继电器
flag=0;
kaiguan=5; //开6分钟
count=0;
count2=0;
shanshuo=0;
display(0) ;
delay400ms() ; //记住不要忘了,调用函数要加括号
display(kaiguan);
jdq=0; //开继电器
while(1)
{
count++;
if(count==20140)
{
count=0;
shanshuo=!shanshuo;
count2++;
if(count2==60)
{
count2=0;
if(kaiguan!=0){kaiguan--;}
if(kaiguan==0)
{
flag=!flag;
if(flag==0) {kaiguan=5;jdq=0;} //6
else {kaiguan=30;jdq=1;} //30
}
}
if(flag==0)
{
if(shanshuo==1){ display(kaiguan);}
else { sentdata( led7[10]);sentdata( led7[10]);}
}
else {display(kaiguan);}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -