久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6952|回復: 2
打印 上一主題 下一主題
收起左側

89C52單片機的可調時間定時控制模塊程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:280154 發表于 2018-1-27 10:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/************************************************************************************************************
程序效果:上電后,倒計時默認為40分鐘,繼電器吸合,臺燈點亮;倒計時至0分鐘時,繼電器斷開,臺燈熄滅,蜂鳴器報警。
          1:倒計時過程中,按一下K0鍵,時間跳至0分鐘,斷開繼電器,臺燈熄滅;再按K1鍵增加定時時間,
                    每按1次增加5分鐘,最大定時時間為95分鐘。
                  2:設置好定時時間后,按一下K0鍵確認,繼電器吸合,臺燈點亮,倒計時開始。
                  說明:定時器按11.0592MHZ晶振設計。
*************************************************************************************************************/
#include<reg52.h> //頭文件
//#include<intrins.h>  //包含移位寄存器的頭文件
#define uchar unsigned char//宏定義
#define uint unsigned int

sbit key1=P3^2;   //時間設置鍵
sbit key2=P3^3;          //時間加

sbit fmq=P3^6;          //蜂鳴器                        本行與以下3行為開發板定義
sbit jdq=P3^7;          //繼電器
sbit min10=P2^6;  //十分位數碼管
sbit min1=P2^7;          //個分位數碼管

//sbit fmq=P1^5;          //蜂鳴器                           本行與以下3行為紅外臺燈定時控制板定義
//sbit jdq=P1^6;          //繼電器
//sbit min10=P1^0;  //十分位數碼管
//sbit min1=P1^1;          //個分位數碼管

/*uchar code table[]={0x3f,0x06,0x5b,//數碼管顯示的數值(共陰)
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
0xbf,0x86,0xdb,//帶小數點的數值
0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; */

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
                   //數碼管顯示的數值(共陽0,1,2,3,4,5,6,7,8,9,)
                    /*0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10*/};
                                        //帶小數點的數值        (0./1./2./3./4./5./6./7./8./9.)

void jia();   //函數聲明
uchar fen=40,miao=59; //顯示初始值
uchar flag,cnt,count;//定義全局變量

/********************************************
延時子程序0.25MS
******************************************/
void delay250us(unsigned int i)      
{
unsigned char j;
while(i--)
{
   for(j=25;j>0;j--);
}
}
/****************************************************
          蜂鳴器發聲函數,每1次大約響1秒
****************************************************/
void beep(unsigned char a)        //
{
unsigned int b;
while(a--)
  {
  for(b=0;b<1000;b++)
  {
fmq=0;
delay250us(1);
fmq=1;
delay250us(1);

}
}
}
/****************************************************
          初始化函數
****************************************************/
void init()  
{
     TMOD=0X01; //工作方式1
     TH0=0x49; //定時時間為:50ms
     TL0=0x44;
     ET0=1;     //打開定時器
     EA=1;    //開總中斷
     TR0=1;    //啟動定時器
}
/****************************************************
          顯示子函數,用于顯示時間數值
****************************************************/
void display()
{       

        min10=1;
        min1=1;
        P0=table[fen/10];         //顯示十分位
        min10=0;
        delay250us(5);

        if(flag>10)
        {
        min10=1;
        min1=1;
        P0=table[fen%10];         //顯示個分位
        min1=0;
        delay250us(5);
        }

        if(flag<=10)       
        {
        min10=1;
        min1=1;
        P0=(table[fen%10]&0x7f);         //顯示個分位
        min1=0;
        delay250us(5);
        }  
}
/****************************************************
          時間子函數
****************************************************/
void shijian()
{  
   if(flag>=20)  //判斷是否到一秒
     {
      flag=0;  //到了,則標志位清零
      miao--;  //秒減1
   if(miao<=0) //判斷秒是否到0s
     {
      miao=59;//到了,則秒為59S
      fen--; //分減1
   if(fen<=0) //如果分計時至0分鐘
     {
      fen=0;
          miao=0;
          beep(1);         //蜂鳴器報警
          TR0=0;         //關閉定時器
          //TH0=(65536-50000)/256; //定時時間為:50ms
      //TL0=(65536-50000)%256;
     }
     }
     }
}
/****************************************************
          鍵盤掃描子函數
****************************************************/
void key_scan()
{
  if(key1==0)        //判斷設置鍵是否按下
     {
  while(!key1)  //防止掉顯
     {
  if(cnt==0||cnt==1||cnt==2) //設置按鍵沒按下或按1次或按2次
     {
       display();
     }
     }
     cnt++; //記下按鍵key1按下的次數

   if(cnt==1)         //如果設置鍵按下第1次
     {
          TR0=0; //停止計數
      fen=0;miao=59; //將時間設置為0分鐘
      display();
     }

   if(cnt==2) //如果設置鍵按下第2次
     {
      cnt=0; //按下次數清零
   if(fen>0) //如果設置分鐘值大于0分鐘
      {
          TR0=1;  //開始計數
     }
         }
}

   if(key2==0)   //判斷時間增加鍵是否按下
     {
   while(!key2)  //防止掉顯
     {
   if(cnt==0||cnt==1||cnt==2||cnt==3)
     {
      display();
     }
     }
    jia();//調用時間增加子函數
     }
}
/****************************************************
          時間增加子函數
****************************************************/
void jia()   //
{
     if(cnt==1) //判斷設置鍵按下的次數是否為第1次
     {
      fen=fen+5; //是,則分鐘加5
     if(fen>99) //判斷分鐘是否大于99,是,則分鐘清零
      fen=0;
     }
}
/****************************************************
          主函數
****************************************************/
void main()
{
     delay250us(800);  //上電后延時2S啟動定時器和繼電器工作,防止燒燈。
     init();//調用初始化子函數
     while(1)
     {
      key_scan(); //調用鍵盤掃描子函數
      shijian(); //時間子函數
     if(cnt==0||cnt==1||cnt==2||cnt==3)
       {
        display();
                }
         if(fen!=0&&cnt!=1)
         {
         jdq=0;
         }
         else jdq=1;
     }
}
/****************************************************
          定時器函數
****************************************************/
void time0() interrupt 1 //定時器0
{
  TH0=0x49; //初值50ms
  TL0=0x44;
  flag++;   //標志位         
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:67344 發表于 2018-8-9 22:40 | 只看該作者
學習學習,謝謝分享
回復

使用道具 舉報

板凳
ID:657274 發表于 2019-12-6 09:11 | 只看該作者
有電路圖嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91av大全| 国产精品久久久久久久免费大片 | 国产色播av在线 | 久久中文字幕一区 | 欧美激情一区二区三区 | 国产成人精品午夜视频免费 | 日韩一区二区不卡 | 亚洲高清在线观看 | 午夜免费影视 | 久久99精品久久久久 | 日韩一区二区免费视频 | 荷兰欧美一级毛片 | 91亚洲国产成人久久精品网站 | av二区三区 | 国产精品美女久久久久久免费 | 99久久久久久久久 | 成人在线观看免费 | 中文字幕在线观 | 亚洲一区二区三区免费观看 | 亚洲精品在线视频 | 精品1区2区3区 | 日韩中文字幕在线不卡 | 免费精品一区 | 中文字幕伊人 | 男女精品网站 | 成人在线中文字幕 | 亚洲日日夜夜 | 91久久综合 | 亚洲精品综合 | 精品国产乱码久久久久久丨区2区 | 精品久久久av | 国产精品观看 | 亚洲国产成人在线观看 | 欧美一级在线 | 亚洲国产中文字幕 | 久久久www成人免费精品张筱雨 | 99精品免费久久久久久日本 | 鸡毛片 | 国产激情视频在线观看 | 亚洲国产成人精品女人久久久 | 免费人成激情视频在线观看冫 |