/*******************************************************************************
* 实验名 : 万年历实验
* 使用的IO :
* 实验效果 :1602显示时钟,按K3进入时钟设置,按K1选择设置的时分秒日月,按K2选择
*选择设置加1。
* 注意 :
*******************************************************************************/
#include<reg51.h>
#include"lcd.h"
#include"ds1302.h"
sbit K1=P3^1;
sbit K2=P3^0;
sbit K3=P3^2;
sbit K4=P3^3; //管脚接线
void Int0Configuration();
void LcdDisplay();
unsigned char SetState,SetPlace;
void Delay10ms(void); //误差 0us
/*******************************************************************************
* 函数名 : main
* 函数功能 : 主函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void main()
{
unsigned char i;
Int0Configuration();
LcdInit();
Ds1302Init();
while(1)
{
if(SetState==0)
{
Ds1302ReadTime();
}
else
{
if(K1==0) //检测按键K1是否按下
{
Delay10ms(); //消除抖动
if(K1==0)
{
SetPlace++;
if(SetPlace>=7)
SetPlace=0;
}
while((i<50)&&(K1==0)) //检测按键是否松开
{
Delay10ms();
i++;
}
i=0;
}
if(K2==0) //检测按键K2是否按下
{
Delay10ms(); //消除抖动
if(K2==0)
{
TIME[SetPlace]++;
if((TIME[SetPlace]&0x0f)>9) //换成BCD码。
{
TIME[SetPlace]=TIME[SetPlace]+6;
}
if((TIME[SetPlace]>=0x60)&&(SetPlace<2)) //分秒只能到59
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x24)&&(SetPlace==2)) //小时只能到23
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x32)&&(SetPlace==3)) //日只能到31
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x13)&&(SetPlace==4)) //月只能到12
{
TIME[SetPlace]=0;
}
if((TIME[SetPlace]>=0x7)&&(SetPlace==5)) //周只能到7
{
TIME[SetPlace]=1;
}
// if(SetPlace==5) //月只能到12
// {
// TIME[SetPlace]=;
// }
}
while((i<50)&&(K2==0)) //检测按键是否松开
{
Delay10ms();
i++;
}
i=0;
}
}
LcdDisplay();
}
}
/*******************************************************************************
* 函数名 : LcdDisplay()
* 函数功能 : 显示函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void LcdDisplay()
{
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16); //时
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16); //分
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16); //秒
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //年
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16); //月
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16); //日
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)); //星期
}
/*******************************************************************************
* 函数名 : Int0Configuration()
* 函数功能 : 配置外部中断0
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void Int0Configuration()
{
//设置INT0
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开INT0的中断允许。
EA=1;//打开总中断
}
/*******************************************************************************
* 函数名 : Int0()
* 函数功能 : 外部中断0 中断函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void Int0() interrupt 0
{
Delay10ms();
if(K3==0)
{
SetState=~SetState;
SetPlace=0;
Ds1302Init();
}
}
/*******************************************************************************
* 函数名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void Delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
没有合适的资源?快使用搜索试试~ 我知道了~
中级实验例程.rar_noddedp1q_普中 51 例程_普中51_普中例程_普中科技51单片机中级实践例程
共251个文件
bak:37个
lst:26个
obj:26个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 81 浏览量
2022-09-15
01:23:45
上传
评论
收藏 13.7MB RAR 举报
温馨提示
最详细最全的普中科技51单片机中级例程和源码说明,包含20多个实例代码,每行注释说明,还有高清的接线图,以及端口说明
资源详情
资源评论
资源推荐
收起资源包目录
中级实验例程.rar_noddedp1q_普中 51 例程_普中51_普中例程_普中科技51单片机中级实践例程 (251个子文件)
lcd.__i 42B
main.__i 34B
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 5KB
template.uvgui.Administrator 132KB
template.uvgui.Administrator 132KB
template.uvgui.Administrator 132KB
template.uvgui.Administrator 132KB
template.uvgui.Administrator 132KB
beep.uvgui.Administrator 67KB
pro.uvgui.Administrator 67KB
pro.uvgui.Administrator 66KB
定时器设计的门铃.uvgui.Administrator 66KB
滚动显示.uvgui.Administrator 66KB
pro.uvgui.Administrator 66KB
LED.uvgui.Administrator 66KB
pro_uvopt.bak 142KB
pro_uvopt.bak 142KB
template.uvgui_Administrator.bak 132KB
template.uvgui_Administrator.bak 132KB
template.uvgui_Administrator.bak 132KB
template.uvgui_Administrator.bak 132KB
template.uvgui_Administrator.bak 132KB
beep.uvgui_Administrator.bak 67KB
pro.uvgui_Administrator.bak 67KB
pro.uvgui_Administrator.bak 66KB
pro.uvgui_Administrator.bak 66KB
定时器设计的门铃.uvgui_Administrator.bak 66KB
pro_uvopt.bak 55KB
滚动显示_uvopt.bak 54KB
LED_uvproj.bak 13KB
pro_uvproj.bak 13KB
pro_uvproj.bak 13KB
pro_uvproj.bak 13KB
pro_uvproj.bak 13KB
pro_uvproj.bak 13KB
定时器设计的门铃_uvproj.bak 13KB
template_uvproj.bak 13KB
template_uvproj.bak 13KB
template_uvproj.bak 13KB
template_uvproj.bak 13KB
template_uvproj.bak 13KB
滚动显示_uvproj.bak 13KB
pro_uvopt.bak 9KB
pro_uvopt.bak 7KB
beep_uvopt.bak 6KB
定时器设计的门铃_uvopt.bak 6KB
template_uvopt.bak 5KB
template_uvopt.bak 5KB
template_uvopt.bak 5KB
template_uvopt.bak 5KB
template_uvopt.bak 5KB
LED_uvopt.bak 5KB
beep 4KB
main.c 4KB
main.c 4KB
main.c 4KB
main.c 4KB
temp.c 4KB
lcd.c 4KB
lcd.c 4KB
lcd.c 4KB
lcd.c 4KB
ds1302.c 3KB
beep.c 3KB
main.c 3KB
main.c 3KB
main.c 3KB
main.c 2KB
定时器设计的门铃.c 1KB
main.c 1KB
滚动显示.c 1KB
main.c 592B
main.c 508B
music.h 8KB
SoundPlay.h 5KB
lcd.h 963B
lcd.h 963B
lcd.h 963B
lcd.h 963B
ds1302.h 534B
temp.h 310B
template.hex 7KB
pro.hex 6KB
pro.hex 3KB
pro.hex 2KB
template.hex 2KB
pro.hex 1KB
beep.hex 1KB
pro.hex 1KB
滚动显示.hex 1KB
template.hex 940B
template.hex 754B
template.hex 546B
定时器设计的门铃.hex 535B
LED.hex 238B
共 251 条
- 1
- 2
- 3
邓凌佳
- 粉丝: 65
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 徐州市区shp边界文件
- 简易数字频率计设计(原理图、PCB、源码、分析报告)
- 20225207038罗丽文财管专2201班.rar
- Golang:通过Gin框架+Redis+责任链,实现一个简单的钉钉机器人,进行消息处理 ps:多应用版
- 基于cnn和AlexNet的铝材缺陷检测内含数据集和demo原型2种方法
- 2023年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- go 语言 实现的 使用modbus 协议 通过DTU tcp 链接 采集数据
- SHELL脚本(全是干货)
- Windows屏幕录屏软件
- 2022年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1