📄 光波机.c
字号:
/********************************************************************************/
/*==============================================================================*/
/* */
/* */
/* */
/* 光波机系统程序Ver1.0 */
/* ============================================ */
/* */
/* Copy Right by siyiren AT89c52 2008/4/8 */
/* ============================================ */
/* */
/* */
/* */
/* */
/*==============================================================================*/
/********************************************************************************/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit com1= P3^2; //数码管公共端1
sbit com2= P3^3; //数码管公共端2
sbit bu_p= P1^0;
sbit led1=P2^7;
sbit led5=P3^0;
sbit led6=P2^0;
sbit led7=P2^1;
sbit led8=P3^1;
sbit led9=P2^2;
sbit led10=P2^3;
sbit led11=P2^6;
sbit led12=P2^5;
sbit led13=P2^4;
sbit key4=P1^6;
sbit key3=P1^2;
sbit key8=P1^7;
sbit key2=P1^1;
sbit key5=P1^3;
sbit key6=P1^4;
sbit key7= P1^5;//+key
sbit pled1= P3^4;
sbit pled2= P3^5;
sbit pled3= P3^6;
sbit pled4= P3^7;
sbit pled5= P3^6;
uchar code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //字码表
uchar time[]={10,20,30,40,50,60,70,80,90,99};
uchar dtime[2];
//uchar PM[]={0xD0,0xE0};
uint stime;
uint numb=0;
uchar tim=0;//中断次数计数器
uchar Count=0;
uchar num=0;
uchar ledtim1=0;
uchar ledtim2=0;
uchar id1;
uchar id2;
uchar id3;
uchar id5;
uchar flag=1;
uchar flagx=0;
uchar lflag=0;
uchar pflag=0;
uchar kflag=0;
uchar yflag=0;
uchar keycount=0;
//uchar b_power;
/***************延时*************************************************************/
void delay()
{
unsigned char i,j;
for(j=0;j<255;j++);
for(i=0;i<255;i++);
}
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
//+ 函数: delay
//+ 功能: 按键和显示用延时
//+ 参数: x
//+ 返回: 无
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
void kdelay(uchar x)
{
uchar i, j;
for (i = x; i > 0; i--)
{
for (j = 0; j < 255; j++)
{;}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
//+ 函数原型声明
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
//void Swbt(uchar bt,bit Sw);
//void Config(void);
//void delay(uchar x);
//void display(void);
//void GetKey(void);
//void Init(void);
//void TemperatuerResult(void);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
/****************中断0**********************************************************/
void timer0(void) interrupt 1 using 1 //50ms来一次中断
{
TH0=0x4b;
TL0=0x0ff;
//TH0=(65536-50000)/256;
//TL0=(65536-50000)%256;
tim++;
ledtim1++;
ledtim2++;
if(flag==0&&flagx==1)
{if(ledtim2==2)
{ pled1=0;
pled2=0;
pled3=0;
pled4=1;}
if(ledtim2==2)
{
pled1=1;
pled2=0;
pled3=0;
pled4=0;}
if(ledtim2==4)
{
pled1=0;
pled2=1;
pled3=0;
pled4=0;}
if(ledtim2==6)
{
pled1=0;
pled2=0;
pled3=1;
pled4=0;
ledtim2=0;
}
}
if(ledtim1==20)
{ led1=!led1;
ledtim1=0;}
if(tim==120)
{ tim=0;
num++;
if(num==10) //如果计数值等于10,则让其回0
{num=0;
Count++;
if(Count==stime) //如果计数值等于stime,则让其回0
{ Count=0;
led8=1;
bu_p=0x00;
Delay1ms(2000);
bu_p=0x01;
EA=0;
ET0=0;
TR0=0;
}
}
}
}
/****************k中断********************************************************/
//void kzd(void)
//{
//if(flag==1)
//
// { TMOD=0x01;
// TH0=0x4b;
// TL0=0x0ff;
// EA=1;
// ET0=1;
// TR0=1;}
//}
/**************bp程序**********************************************************/
void bp(void)
{
if(!key7|!key5|!key6|!key4|!key3|!key8|!key2)
{delay();
bu_p=0x00;
Delay1ms(2);}
else
{bu_p=0x01;}
}
//**************pmlight******************************************************/
//void pmlight(void)
//{
//}
/***************LED***********************************************************/
void LED(void)
{
if(lflag==0)
{if(!key4)
{kdelay(50);
if(!key4)
{
kflag=!kflag;
led6=0;
led7=1;
}
}
}
if(!key3)
{kdelay(50);
if(!key3)
{keycount++;
if(keycount++==5)
{
keycount=0;
flag=!flag;
lflag=!lflag;
led5=~led5;
flagx=0;
}
}
}
if(lflag==0)
{ if(!key8)
{kdelay(50);
if(!key8)
{ pflag=!pflag;
led7=0;
led6=1;
}
}
}
if(!key5)
{
kdelay(100);
if(!key5)
{ keycount++;
if(keycount++==5)
{ keycount=0;
//led8=1;
led8=~led8;
flag=!flag;
flagx=1;
pled1=1;
pled2=1;
pled3=1;
pled4=1;
}
}
}
if(lflag==1&&kflag==1)
{
if(!key8||!key4)
{led5=0;
led6=1;
led7=0;
}
}
if(pflag==1&&lflag==1)
{
if(!key4||!key8)
{ led5=0;
led6=0;
led7=1;
}
}
if(flag==1)
{ TMOD=0x01;
TH0=0x4b;
TL0=0x0ff;
EA=1;
ET0=1;
TR0=1;}
}
/**************tz**************************************************************/
void settime1(void)
{
if(!key2)
{
kdelay(100);
if(!key2)
{
id1++;
if(id1==10)
{
id1=0;
}
}
}
}
//*****************************************************************************/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
void settime2(void)
{
if(!key6)
{
kdelay(100);
if(!key6)
{
id2++;
if(id2==2)
{id2=0;
}
}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
void settime3(void)
{if(!key7)
{
kdelay(100);
if(!key7)
{
id3++;
if(id3==3)
{id3=0;
}
}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
//void settime5(void)
//{if(!key5)
//{
// kdelay(50);
//if(!key5)
//{
// id5++;
//if(id5==2)
//{id5=0;
//}
//}
//}
//}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
void setkey1(void)
{
switch(id1)
{
case 0:
stime=time[2];
break;
case 1:
stime=time[3];
break;
case 2:
stime=time[4];
break;
case 3:
stime=time[5];
break;
case 4:
stime=time[6];
break;
case 5:
stime=time[7];
break;
case 6:
stime=time[8];
break;
case 7:
stime=time[9];
break;
case 8:
stime=time[0];
break;
case 9:
stime=time[1];
break;
case 10:
break;
}
}
/*******************************************************************************/
void setkey3(void)
{
switch(id3)
{
case 0:
led11=1;
led12=1;
led13=0;
break;
case 1:
led11=1;
led12=0;
led13=1;
break;
case 2:
led11=0;
led12=1;
led13=1;
break;
case 3:
led11=1;
led12=0;
led13=1;
break;
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
void setkey2(void)
{
switch(id2)
{
case 0:
led9=0;
led10=1;
break;
case 1:
led9=1;
led10=0;
break;
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
//void setkey5(void)
//{
//switch(id5)
// {
// case 0:
// flag=0;
// led1=1;
// led8=1;
// TMOD=0x00;
// TH0=0x00;
// TL0=0x00;
// EA=0;
// ET0=0;
// TR0=0;
// break;
// case 1:
// TMOD=0x01;
// TH0=0x4b;
// TL0=0x0ff;
//TH0=(65536-50000)/256;
//TL0=(65536-50000)%256;
// EA=1;
// ET0=1;
// TR0=1;
// Delay1ms(2);
// flag=1;
// Delay1ms(2);
// led8=0;
// break;
//++++++++++++++init++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
//void init(void)
//{
//}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
/***************DISPLAY**********************************************************/
void display(void)
{
dtime[0]=((stime-Count)/10);
dtime[1]=((stime-Count)-dtime[0]*10);
P0=TAB[dtime[1]];
com2=0;
Delay1ms(2);
com2=1;
P0=TAB[dtime[0]];
com1=0;
Delay1ms(2);
com1=1;
}
/**************Main************************************************************/
void main(void)
{
//uchar i;
P1=0xff;
P3=0xff;
TH0=0x00;
TL0=0x00;
//EA=0;
ET0=0;
TR0=0;
led7=0;
led9=0;
led11=0;
// b_power++;
//if (b_power&1) PCON=2;
while(1)
{
delay();
LED();
//kzd();
display();
setkey1();
setkey2();
setkey3();
//setkey5();
settime1();
settime2();
settime3();
//settime5();
bp();
Delay1ms(5);
//i=(i+0)%2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -