久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于單片機的定時鬧鐘代碼 無原理圖
[打印本頁]
作者:
白羊leo
時間:
2023-6-9 16:08
標題:
基于單片機的定時鬧鐘代碼 無原理圖
這是基于單片機的定時鬧鐘設計,用的是ATC89C52RC,文件包括了代碼。
單片機源程序如下:
#include <REGX52.H>
#include "LCD1602.h"
#include "DS1302.h"
#include "Key.h"
#include "Timer0.h"
#include "Delay.h"
#include "Buzzer.h"
//#include "Clock.h"
unsigned char Key_Get,MODE; //MODE用作鬧鐘開關
unsigned char i,Tmp_Status,Tmp,Tmp_Set,Count,Tmp_Getin,Key_Set,Clk_Stop;
unsigned char Clk_Flag=0; //默認關閉鬧鐘 unused
/**
* @brief 顯示實時時間
* @param 無
* @retval 無
*/
void TimeShow(void)
{
DS1302_ReadTime();//讀取時間
LCD_ShowString(1,1,"RealTime: ");
LCD_ShowNum(2,1,DS1302_Time[0],2);//顯示時
LCD_ShowNum(2,4,DS1302_Time[1],2);//顯示分
LCD_ShowNum(2,7,DS1302_Time[2],2);//顯示秒
}
/**
* @brief 鬧鐘開啟,到達鬧鐘設置時間響鈴
* @param 無
* @retval 無
*/
void Clock_Time_Open(void)
{
if(Clock_Time[0]==DS1302_Time[0] && Clock_Time[1]==DS1302_Time[1])
{
while(i!=1)
{
Buzzer_Timems(1000);
Tmp_Status=1;
}
Tmp_Status=0;
i=0;
MODE=0;
//此程序為不使用外部中斷關閉鬧鐘
/* while(i==0)
{
Buzzer_Timems(1000);
// Tmp_Status=1;
if(Buzzer_Key()==4)
{
Clk_Flag=0;
i=4;
}
}
// Tmp_Status=0;
i=0;
MODE=0;
*/
}
}
/**
* @brief 菜單設置 時鐘/鬧鐘的時、分設置;顯示鬧鐘時間;開啟關閉鬧鐘
* @param 無
* @retval 無
*/
void Time_Set(unsigned char Tmp1)
{
if(Tmp1==1)
{
LCD_ShowString(1,1,"RT Setting: ");
Tmp_Getin=Key();
Key_Set=1;
if(Tmp_Getin==1)
{
P2_2=!P2_2;
Key_Set=1;
DS1302_Time[0]++;//時間設置位數值加1
if(DS1302_Time[0]>23){DS1302_Time[0]=0;}//時越界判斷
}
if(Tmp_Getin==2)
{
Key_Set=1;
DS1302_Time[1]++;//時間設置位數值加1
if(DS1302_Time[1]>59){DS1302_Time[1]=0;}//分越界判斷
}
if(Tmp_Getin==3)
{
DS1302_SetTime();
TimeShow();
Tmp=0;
Key_Set=0;
}
//實時更新顯示
LCD_ShowNum(2,1,DS1302_Time[0],2);
LCD_ShowNum(2,4,DS1302_Time[1],2);
LCD_ShowNum(2,7,DS1302_Time[2],2);//顯示秒
}
else if(Tmp1==3)
{
Key_Set=1;
LCD_ShowString(1,1,"CLK Setting: ");
Tmp_Getin=Key();
if(Tmp_Getin==1)
{
Key_Set=1;
Clock_Time[0]++;//時間設置位數值加1
if(Clock_Time[0]>23){Clock_Time[0]=0;}//時越界判斷
}
if(Tmp_Getin==2)
{
Key_Set=1;
Clock_Time[1]++;//時間設置位數值加1
if(Clock_Time[1]>59){Clock_Time[1]=0;}//分越界判斷
}
if(Tmp_Getin==3)
{
DS1302_SetTime();
LCD_ShowString(1,1,"CLK Setting Ok");
Delay(1000);
Tmp=0;
Key_Set=0;
}
//實時更新顯示
LCD_ShowNum(2,1,Clock_Time[0],2);
LCD_ShowNum(2,4,Clock_Time[1],2);
}
else if(Tmp1==2)
{
Key_Set=1;
LCD_ShowString(1,1,"CLK TIM: ");
LCD_ShowNum(2,1,Clock_Time[0],2);
LCD_ShowNum(2,4,Clock_Time[1],2);
Tmp_Getin=Key();
if(Tmp_Getin==2)
{
TimeShow();
Tmp=0;
Key_Set=0;
}
}
else if(Tmp1==4)
{
Key_Set=1;
//開關鬧鐘
if(MODE==0) //ON
{
MODE=1;
Clk_Flag=MODE;
for(i=0;i<3;i++)
{
Delay(500);
Buzzer_Times(250);
}
}
else
{
MODE=0;
Clk_Flag=MODE;
Delay(1000);
Buzzer_Times(500);
}
Tmp=0;
Key_Set=0;
}
}
/**
* @brief 按鍵檢測
* @param 無
* @retval 無
*/
void Key_Select(void)
{
Key_Get=Key();//讀取鍵碼
if(Key_Get==1)
Tmp=1;
else if(Key_Get==2)
Tmp=2;
else if(Key_Get==3)
Tmp=3;
else if(Key_Get==4)
Tmp=4;
else
Tmp=0;
}
void main()
{
//初始化操作
LCD_Init();
DS1302_Init();
Timer0Init();
LCD_ShowString(2,1," : ");
//設置時間
DS1302_SetTime();
while(1)
{
//按鍵檢測
Key_Select();
//目的是進入菜單設置后按鍵不沖突,比如按k1就卡在時鐘設置程序內
if(Key_Set==0)
Tmp_Set=Tmp;
//菜單頁
if(Tmp_Set)
{
Time_Set(Tmp_Set);
}
else
{
TimeShow();
}
//開啟鬧鐘
if(MODE==1)
{
Clock_Time_Open();
}
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int Toggle;
TL0 = 0x18; //設置定時初值
TH0 = 0xFC; //設置定時初值
Toggle++;
if(Toggle>=1000) //每1秒P2_0閃爍一次
{
Toggle=0;
P2_0=!P2_0;
}
}
void INIT1() interrupt 2
{
//鬧鐘響鈴則程序將Tmp_Status置1,由此使用KEY4觸發外部中斷1關閉鬧鐘
if(Tmp_Status==1)
{
P2_3=!P2_3;
i=1;
}
}
復制代碼
Keil代碼下載:
代碼.7z
(42.93 KB, 下載次數: 5)
2023-6-10 00:25 上傳
點擊文件名下載附件
定時鬧鐘
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
夜间福利视频
|
一区二区三区四区精品
|
日韩av在线免费播放
|
日韩精品一
|
亚洲免费成人
|
五月激情久久
|
香蕉视频免费看
|
欧美亚洲在线
|
9999精品视频
|
国产又爽又黄免费视频
|
成年人视频在线免费观看
|
精品久久久久久一区二区里番
|
亚洲欧美日韩另类
|
亚洲网站在线观看
|
aaa黄色
|
亚洲最大的网站
|
国产一区二区欧美
|
中国av在线
|
男女裸体无遮挡做爰
|
日韩三级久久
|
欧美日韩精品在线
|
欧美a一级
|
亚洲九九夜夜
|
欧美又大又硬又粗bbbbb
|
91精品国产综合久久久蜜臀九色
|
九九视频在线观看
|
av色婷婷
|
久久av中文字幕
|
久久久久亚洲精品
|
视频在线一区
|
亚洲一区网站
|
不卡的av在线
|
婷婷91
|
欧美综合一区二区三区
|
亚洲国产欧美在线
|
欧美性猛交乱大交
|
亚洲午夜在线
|
触手繁殖の地狱3d啪啪
|
亚洲欧美日韩一区
|
九九色综合
|
亚洲综合三区
|