⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6位不调钟.c

📁 这是本人在学习51单片机时练习的C程序 lgl_5923@163.com
💻 C
字号:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit LED1=P0^0;//秒指示
sbit LED2=P0^1;//秒指示
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit K4=P3^3;
//bit ting;
uchar code TABLE1[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};//共阳.共阴是:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
uchar code TABLE2[]={0xef,0xf7,0xfd,0xfe};//位控0x7f,0xbf,
uint  data i,j,k,h,l,m,weikong;

//-------------------延时程序-------------------------------//
int delay(int t)

{
int r;
ulong e;

 for(r=0;r<t;r++)
  {
  for(e=0;e<20;e++);
  }
 }


//------------------键盘调节程序---------------------------//

int key()
{data bit r;

	
if(K1==0)
	 {delay(120);
     if(K1==0)
	  r=!r;
	 }
	if(r==1)
	 {if(K2==0)
	   {delay(120);
       if(K2==0)
		 i++;
		}
	 }

    if(r==1)
	 {if(K3==0)
	   {delay(120);
       if(K3==0)
		 {i--;
		  if(i==0) i=6;j--;
		   if(j==0) j=10;
		 }
		}
	 }
   if(K4==0)
	 {delay(120);
     if(K4==0)
	  EA=!EA;
	 }
	  return(i);
}//*/

//****************送显示程序******************//
int Play (int shuju,wei)
 {
 P1=TABLE1[shuju];
 P2=TABLE2[wei];
 weikong++;
 if(weikong==4) weikong=0;
 return(weikong);
 }
//*********************显示程序********************
display()
 {
if(i==10)
  {
   i=0;j++;
   if(j==6)
    {
	  j=0;k++;
	  if(k==10)
      {
		 k=0;h++;
		 if(h==6)
        {
		   h=0; /*l++;
		   if(l==10)
          {
			  l=0;m++;
			  if(m==24)
            {
             m=0;
            }
          }*/
	     }
	   }
    }
  }
/*___________________________________*/
Play(i,weikong);//秒个
   delay(1);
Play(j,weikong);//秒十
   delay(1);
Play(k,weikong);//分个
   delay(1);
Play(h,weikong);//分十
   delay(1);
/* Play(l,weikong);//时个
   delay(1);
Play(m,weikong);//时十
   delay(1); */
 }


         

//-----------------------主程序-----------------------------------------//
main()
{
//int display();
//int key();
TH0=(65536-50000)/256;//重设初值,50MS
TL0=(65536-50000)%256;

TMOD=0x01;//定时器T0工作方式1,16位计时
ET0=1;
EA=1;
TR0=1;

//-----------------//
while(1)
{
display();
if((K1&K2&K3&K4)==0) key();

//----------------------------
 }
}




/*------------------------------------------*/
//                                          //
//                                          //
//              天津工程师范学院学院        //
//            梁光林: lgl_5923@163.com      //
//                                          //
//                                          //
/*-----------------------------------------*/




/*通过定时器T0工作方式1,16位计时,每溢出一次50MS
配合软件定时给主程序提供秒脉冲M位*/

//#include <reg51.h>


//bit m;//主程序秒脉冲标志位

timer1() interrupt 1//秒脉冲程序
{
static n;//设置一个表态变量以保证每次中断后值不变

TH0=-50000/256;//重设初值,50MS
TL0=-50000%256;

n++;
if(n==20)//到1秒M溢出
{
n=0;
i++;

LED1=!LED1;LED2=!LED2;

}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -