#include <STC15F2K60S2.H>
#include "ds1302.h"
#include "smg_system.h"
#include "P0_device.h"
#include "Delay.h"
void Timer2Init(void) //1毫秒@12.000MHz
{
AUXR &= 0xFB; //定时器时钟12T模式
T2L = 0x18; //设置定时初始值
T2H = 0xFC; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
EA=1; //打开总中断
IE2=0x04; // 打定时器2中断开
}
int hour=0,min=0,s=0;//接收时间的变量
void system()//初始化条件
{
P0_Device(0xa0,0);//关闭继电器与蜂鸣器
P0_Device(0x80,0xff);//关闭灯
}
void read_ds1302() //接收数据
{
hour= BCDToDec(Read_Ds1302_Byte(0x85));//接收小时数据
min= BCDToDec(Read_Ds1302_Byte(0x83));//接收分钟数据
s= BCDToDec(Read_Ds1302_Byte(0x81));//接收秒钟数据
}
void ds1302_show()//显示实时时钟
{
smg_system(0,hour/10);Delay(1);//显示小时十位24
smg_system(1,hour%10);Delay(1);//显示小时个位
smg_system(2,12);Delay(1);
smg_system(3,min/10);Delay(1);//显示分钟十位
smg_system(4,min%10);Delay(1);//显示分钟个位
smg_system(5,12);Delay(1);
smg_system(6,s/10);Delay(1);//显示秒钟十位
smg_system(7,s%10); Delay(1);//显示秒钟个位
}
int b=0;//报警变量
int h=8,m=0;//报警条件变量
int a=0;//显示页面参数变量
void bjq()//报警功能
{
if((hour==h)&&(min==m)&&(b==1))//报警条件
{P0_Device(0xa0,0x40);}
if((hour==h)&&(min==(m+1))&&(b==1))//取消报警
{P0_Device(0xa0,0);b=0;}
//LED显示条件
if(b==1)
{P0_Device(0x80,~0x04);}
if((a==0)&&(b==0))
{P0_Device(0x80,~0x01);}
if((a==1)&&(b==0))
{P0_Device(0x80,~0x02);}
}
void nz_show()//闹钟调试界面
{
smg_system(0,h/10);Delay(1);//显示小时十位24
smg_system(1,h%10);Delay(1);//显示小时个位
smg_system(2,12);
smg_system(3,m/10);Delay(1);//显示分钟十位
smg_system(4,m%10);Delay(1);//显示分钟个位
smg_system(5,12);
smg_system(6,s/10);Delay(1);//显示秒钟十位
smg_system(7,s%10);Delay(1); //显示秒钟个位
}
void read_kby()//按键功能
{
if(P30==0)//s7
{//消抖 判断下一个
Delay(1);if(P30==0){a++;a=a%2;while(P30==0){}}//控制小时加
}
}
void main()
{
Timer2Init();
system();
vClock_Set(8,00,00); //初始化
while(1)
{
if(a==1)//显示调试界面条件
{
nz_show();
//按键功能区
if(P33==0)//按下S4
{//消抖 判断下一个 按下一次加一 限制范围 存入该数据 让数码管闪说明在调整
Delay(1);if(P33==0){h++;if(h>23){hour=0;}while(P33==0){}}//控制小时加
}
if(P32==0)//按下s5
{//消抖 判断下一个 按下一次加一 限制范围 存入该数据 让数码管闪说明在调整
Delay(1);if(P32==0){m++;if(m>59){min=0;}while(P32==0){}}//控制分钟加
}
if(P31==0)//按下s6
{//消抖 判断下一个
Delay(1);if(P31==0){b++;b=b%2;a++;a=a%2;while(P31==0){}}
}
}
if(a==0)//显示实时时钟的功能条件
{
ds1302_show();
//按键功能区
if(P33==0)//按下S4
{//消抖 判断下一个 按下一次加一 限制范围 存入该数据 让数码管闪说明在调整
Delay(1);if(P33==0){hour++;if(hour>23){hour=0;}vClock_Set(hour,min,s);while(P33==0){}}//控制小时加
}
if(P32==0)//按下s5
{//消抖 判断下一个 按下一次加一 限制范围 存入该数据 让数码管闪说明在调整
Delay(1);if(P32==0){min++;if(min>59){min=0;}vClock_Set(hour,min,s);while(P32==0){}}//控制分钟加
}
if(P31==0)//按下s6
{//消抖 判断下一个 按下 s=0 存入该数据 让数码管闪说明在调整
Delay(1);if(P31==0){s=0;vClock_Set(hour,min,s);while(P31==0){}}//控制分钟减
}
}
}
}
void t2() interrupt 12 //中断入口
{
read_kby();
bjq();
read_ds1302();
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于51单片机操作闹钟
共38个文件
obj:7个
lst:7个
__i:6个
需积分: 5 0 下载量 137 浏览量
2024-03-09
12:11:27
上传
评论
收藏 57KB ZIP 举报
温馨提示
2.使用的模块 1)蜂鸣器模块。 2)LED模块。 3)DS1302。 4)独立按键模块。 5)数码管模块 2.蜂鸣器模块功能 1)负责闹钟时间达到时候发生警报,一分钟后主动停止警报。 2)开始调试闹钟时间的时候产生声音,两秒后停下。 3.LED模块功能 1)处于没有闹钟界面为LED1亮,其他熄灭。 2)处于调试闹钟界面LED2亮,其他熄灭。 3)处于有闹钟界面LED3亮,其他熄灭。 4.DS1302模块功能 1)负责时间采集。 5.独立按键功能 1.处于时钟界面 1)S4按下小时+1。 2)S5按下分钟+1。 3)S6按下秒钟清零。 4)S7按下转化为闹钟调试界面,按下两次就取消闹钟。 2.处于闹钟调节界面 1)S4按下小时+1。 2)S5按下分钟+1。 3)S6按下开始有闹钟,显示时钟。 3)S7按下返回显示时钟。 6.数码管模块功能。 1)时钟界面显示该时间。 2)闹钟调试界面显示闹钟的时间。 7.初始化 1)默认没有开启闹钟。 2)数码管显示时钟界面。 3)闹钟默认值为08:00:00。 4)初始化时间为08:00:00。 ————————
资源推荐
资源详情
资源评论
收起资源包目录
闹钟.zip (38个子文件)
闹钟
ds1302.h 282B
ds1302.c 1KB
Objects
Delay.obj 1002B
main.__i 107B
smg_system.__i 125B
kby.obj 6KB
ds1302.__i 113B
project.lnp 227B
ds1302.obj 7KB
STARTUP.obj 819B
smg_system.obj 5KB
project.hex 5KB
P0_device.__i 147B
P0_device.obj 4KB
Delay.__i 110B
kby.__i 113B
main.obj 14KB
project.build_log.htm 1KB
project 29KB
STARTUP.A51 6KB
Listings
main.lst 7KB
project.m51 20KB
kby.lst 2KB
smg_system.lst 2KB
P0_device.lst 1KB
ds1302.lst 4KB
STARTUP.lst 14KB
Delay.lst 2KB
smg_system.c 485B
Delay.h 80B
P0_device.h 139B
Delay.c 414B
project.uvopt 8KB
smg_system.h 154B
project.uvproj 15KB
main.c 4KB
P0_device.c 272B
project.uvgui.86198 90KB
共 38 条
- 1
资源评论
安知甜与乐
- 粉丝: 188
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于java+ssm+mysql的疫情期间高校人员管理系统开题报告.docx
- 基于java+ssm+mysql的校园兼职管理系统开题报告.docx
- 基于java+ssm+mysql的校园二手物品交易平台开题报告.docx
- 三张金花游戏示例demo
- 前后端分离项目《基于Vue.js和SpringBoot的在线办公系统》+源码+论文+说明文档
- FPGA-flash写保护解除
- 基于微信小程序的多肉植物图鉴.zip
- uniapp实现选择省市区镇(街道)四级级联选择,包含三级级联选择(vue3版本)
- tsn-imagenet-pretrained-r50-8xb32-1x1x8-100e-kinetics400-rgb
- Python项目-自动办公-02 批量生成PPT版荣誉证书.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功