找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2220|回复: 2
打印 上一主题 下一主题
收起左侧

51红外计时器程序

[复制链接]
跳转到指定楼层
楼主
ID:247507 发表于 2017-11-8 22:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>

#define uint unsigned int                //对数据类型进行声明定义
#define uchar unsigned char

sbit LSA=P2^2;                        //定义数码管端口
sbit LSB=P2^3;                        //
sbit LSC=P2^4;
sbit HW=P1^4;
sbit Beep=P2^5;
sbit K1=P3^0;

uchar smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};  //0~9,,0x40显示第三,第六的一横。
uchar code smgduan2[]={ 0,0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};                 //        code表示寄存于flash中        数码管位置

uchar miao1,miao2,fen1,fen2,shi1,shi2;
uint a,b,c,n,m=0;         //

void Delay(unsigned int n)
{
        unsigned int i=0,j=0;                        //
        for(i; i<n; i++)
        for(j=0;j<123;j++);         //在该芯片上for(j=0;j<123;j++);的执行时间刚好是1ms,这样的话这个函数就会延时int毫秒。
}
void delay()         //
{
   uint i,j;
   for(i=0;i<1;i++)
   for(j=0;j<100;j++);                   //
}
  void time()        //                                                        //中断初始化,
{
  TMOD=0X01;                                         //使用定时器T0的方式1
  TL0=(65536-10001)/256;                  //                          
  TH0=(65536-10001)%256;                        //

  EA=1;                                          //CPU所有中断(IE最高位MSB)
  TR0=1;                                   //开定时器T0
  ET0=1;                                   //开定时器T0中断                               
  }

void time0() interrupt 1        //我删了time0(void)
{
   TL0=(65536-10004)/256;          //  -越大,越慢   //10004
  TH0=(65536-10004)%256;          //
         if(HW==0)
   {  Beep=1;                                   //我加入
            Delay(100);    //100
         if(HW==1)                                //还没按K1的电位
         {
        m=1;  

          }
          
          }         
          if(m==1)                                         //第一次按下k1
   {
       n++;
          }
   if(n==2)
   { a++;
         n=0;                           //         n=0;
   }
         if(a==100)                                                   //分秒
         {b++;
          a=0;
         }
          if(b==60)                                                           //秒
          {c++;
           b=0;
          }
         if(c==60)                                                                   //时
         {
           c=0;
        }
        if(m==1)
        {
         if(HW==0)
   {
            Delay(200);        //300
         if(HW==1)
         {
          m=0;       
          EA=0; //                         //去掉EA=0; 可实现暂停
            
          }
          }
        }
   }


                   void dis()
        {
          miao1=a/10;           //定义数据类型
           miao2 =a%10;
         fen1=b/10;
         fen2=b%10;
         shi1=c/10;
         shi2=c%10;
          
          P0=smgduan[miao2];
        P2=smgduan2[1];//第1个数码管
        delay();
         P0=0;
        P0=smgduan[miao1];
        P2=smgduan2[2];//第2个数码管
        delay();
          P0=0;
         P0=smgduan[fen2];
        P2=smgduan2[4]; //第4个数码管
        delay();
          P0=0;
        P0=smgduan[fen1];
        P2=smgduan2[5]; //第5个数码管
        delay();
          P0=0;
         P0=smgduan[shi2];
        P2=smgduan2[7]; //第7个数码管
        delay();
          P0=0;
        P0=smgduan[shi1];
        P2=smgduan2[8]; //第8个数码管
        delay();
         P0=0;
         P0=smgduan[10];
        P2=smgduan2[3];//第3个数码管
        delay();
         P0=0;
        P0=smgduan[10];
        P2=smgduan2[6];//第6个数码管
        delay();
         P0=0;
        }

        void main()
        {
         time();        
        while(1)
        {
        dis();           
        if(HW==0){        a=0;b=0;c=0;time();    } // 自动清零
        }
    }


评分

参与人数 1黑币 +5 收起 理由
很费劲 + 5

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:326274 发表于 2018-5-29 20:13 | 只看该作者
楼主有没有硬件电路图呀
回复

使用道具 举报

板凳
ID:503838 发表于 2019-4-30 20:52 | 只看该作者
很有用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表