欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的電子萬年歷代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:441643 發表于 2018-12-7 14:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include < reg52.h >

#include < character.h >

#include < lcd.h >

#include < clock.h >

#include < sensor.h>

#include < calendar.h >

#include < key.h >

/*****************************預定義**************************************/

#define uchar unsigned char

#define uint unsigned int

/****************************************************************************/ sbit bell = P2 ^ 0; //定義蜂鳴器端口

sbit in = P2 ^ 7; //定義紅外檢測端口

/***************************************************************************** * 名稱: Timer0_Service() inturrupt 1

* 功能: 中斷服務程序整點報時3聲嘟嘟的聲音

*****************************************************************************/ void Timer0_Service() interrupt 1

{

static uchar count = 0;

static uchar flag = 0; //記錄鳴叫的次數

count = 0;

TR0 = 0; //關閉Timer0

TH0 = 0x3c;

TL0 = 0XB0; //延時50 ms

TR0 = 1 ; //啟動Timer0

count ++;

if( count == 20 ) //鳴叫1 秒

{

bell = ~ bell;

count = 0;

flag ++;

}

if( flag == 6 )

{

flag = 0;

TR0 = 0; //關閉Timer0

}

}

/*****************************************************************************

* 名稱: Timer2_Servie() interrupt 5

* 功能: 中斷服務程序整點報時一分鐘

*****************************************************************************/

void Timer3_Service() interrupt 5

{

static uchar count;

TF2 = 0; //軟件清除中斷標志

count ++;

if( in == 1 )

{

count = 0; //計算清0

TR2 = 0; //關閉Timer2

bell = 1; //關閉蜂鳴器

}

if( count == 120 ) // 一分鐘后關閉報警

{

count = 0; //計算清0

TR2 = 0; //關閉Timer2

bell = 1; //關閉蜂鳴器

}

}

/******************************************************************************

* 函數名稱:main()

********************************************************************************/

void main( void )

{

uchar clock_time[7] = { 0x00, 0x00, 0x12, 0x29, 0x06, 0x08 }; //定義時間變量秒分時日月年uchar alarm_time[2] = { 0, 0}; //鬧鐘設置alarm_time[0]: 分鐘alarm_time[1] :小時

uchar temperature[2]; //定義溫度變量temperature[0] 低8位temperature[1] 高8位

Lcd_Initial(); //LCD初始化

clock_Initial( clock_time ); //時鐘初試化

/***********************中斷初始化***************************/

EA = 1; //開總中斷

ET0 = 1; //Timer0 開中斷

ET2 = 1; //Timer2 開中斷

TMOD = 0x01 ; //Timer0 工作方式1

RCAP2H = 0x3c;

RCAP2L = 0xb0; //Timer2 延時50 ms

while( 1 )

{

switch( Key_Scan() )

{

case up_array:

{

Key_Idle();

}

break;

case down_array:

{

Key_Idle();

}

break;

case clear_array:

{

Key_Idle();

}

break;

case function_array:{

Key_Function( clock_time, alarm_time );

}

case null:

{

Clock_Fresh( clock_time ); //時間刷新

Lcd_Clock( clock_time ); //時間顯示

Sensor_Fresh( temperature ); //溫度更新

Lcd_Temperture( temperature ); //溫度顯示

Calendar_Convert( 0 , clock_time );

Week_Convert( 0, clock_time );

//整點報時

if( ( * clock_time == 0x59 ) && ( * ( clock_time + 1 ) == 0x59 ) )

{

bell = 0;

TR2 = 1; //啟動Timer2

}

//鬧鐘報警

if( * alarm_time == * ( clock_time + 1 ) ) //分鐘相吻合

if( * ( alarm_time + 1 ) == *( clock_time + 2 ) ) //小時相吻合

{

bell = 0;

TR2 = 1; //啟動Timer2

}

}

break;

}

}

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表