单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.

标题: 基于89C51单片机的可调倒计时程序

作者: LHY_lhy   时间: 2021-7-13 19:52
标题: 基于89C51单片机的可调倒计时程序
使用 独立按键 数码管 定时器 ;

源代码如下:


#include "reg52.h"
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

#define plusvalue 30 //每次按键增加多少秒,可调
#define delays 6200

unsigned int times=0;
int seconds=0,seconds_1=0;
unsigned int sec=0;
unsigned int flag=0;
unsigned int wei[8]={0};
unsigned int i;

unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00};

/*0x3f  , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d
   0           1           2         3       4     5
0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c
   6         7         8         9     A     B
0x39 , 0x5e , 0x79 , 0x71 , 0x00
   C   D       E     F         NULL
*/
void Timer0Init(void)           //10毫秒@11.0592MHz
{
       TMOD& = 0xF0;           //设置定时器模式
       TMOD |= 0x01;           //设置定时器模式
       TL0 = 0x00;           //设置定时初值
       TH0 = 0xDC;           //设置定时初值
       TF0 = 0;           //清除TF0标志
       TR0 = 0;           //定时器0开始计时
       ET0=1;
       EA=0;
      
}

void delay()           //@11.0592MHz
{
       unsigned char i, j;

       i = 18;
       j = 235;
       do
       {
           while (--j);
       } while (--i);
}

void delay1( int a)
{
while(a--);
}

void display()
{
                 LSA=0;LSB=0;LSC=0;P0=smgduan[wei[0]];delay1(10);P0=0x00;
                 LSA=1;LSB=0;LSC=0;P0=smgduan[wei[1]];delay1(10);P0=0x00;
                 LSA=0;LSB=1;LSC=0;P0=smgduan[wei[2]];delay1(10);P0=0x00;
                 LSA=1;LSB=1;LSC=0;P0=smgduan[wei[3]];delay1(10);P0=0x00;
                 LSA=0;LSB=0;LSC=1;P0=smgduan[wei[4]];delay1(10);P0=0x00;
                 LSA=1;LSB=0;LSC=1;P0=smgduan[wei[5]];delay1(10);P0=0x00;
                 LSA=0;LSB=1;LSC=1;P0=smgduan[wei[6]];delay1(10);P0=0x00;
                 LSA=1;LSB=1;LSC=1;P0=smgduan[wei[7]];delay1(10);P0=0x00;
      
           wei[7]=seconds_1/60/10;
           wei[6]=seconds_1/60%10;
           wei[5]=16;
           wei[4]=seconds_1%60/10;
           wei[3]=seconds_1%60%10;
           wei[2]=17;
           wei[1]=17;
           wei[0]=17;
      
}

void caculate()
{
       seconds=plusvalue*times;
           seconds_1=seconds;
}

void start()
{      
       if(seconds!=0)
       {
                 TR0=1;
                 EA=1;
       }
       else
       {
                 TR0=0;
                 EA=0;
       }
          
}

void stop()
{
       TR0=0;
       EA=0;
       flag++;
       if(flag%2==0)
       {
           TR0=1;
           EA=1;
           flag=0;
       }
}

void plus()
{
       times=times+1;
}

void cut()
{
       times=times-1;
}

void keyscan()
{
       if(k1==0)
       {
           delay1(delays);
           if(k1==0)
                 start();
           caculate();
       }
       else if(k2==0)
       {
           delay1(delays);
           if(k2==0)
           stop();
       }
       else if(k3==0)
       {
           delay1(delays);
           if(k3==0)
           plus();
           caculate();
       }
       else if(k4==0)
       {
           delay1(delays);
           if(k4==0)
           cut();
           caculate();
       }
}
void main()
{
       Timer0Init();
       while(1)
       {
                 keyscan();
                 display();
                 if(seconds_1<0)
           {
                 EA=0;
                 for(i=0;i<8;i++)
                       wei[ i]=17;
           }
       }
}
void Timer0_Routine() interrupt 1 //10ms溢出一次
{
       unsigned int T0Count;
       TL0 = 0x00;           //设置定时初值
       TH0 = 0xDC;
       T0Count++;
       if(T0Count==100)
       {
           T0Count=0;
           seconds_1--;
       }
}
作者: 51hei团团   时间: 2021-7-14 00:09
楼主能分享一下原理图或者介绍下电路连接吗?
作者: LHY_lhy   时间: 2021-7-14 10:41
电路的连接如图

51hei图片20210714103757.png(54.49 KB, 下载次数: 92)

51hei图片20210714103757.png

51hei图片20210714103753.png(83.66 KB, 下载次数: 89)

51hei图片20210714103753.png

51hei图片20210714103747.png(33.59 KB, 下载次数: 94)

51hei图片20210714103747.png

51hei图片20210714103742.png(142.38 KB, 下载次数: 94)

51hei图片20210714103742.png





欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1