#include <reg51.h>
#include "LCD1602.h"
sbit K1=P2^3; //复位
sbit K2=P2^4; //暂停
sbit K3=P2^5; //恢复
sbit K4=P2^6; //秒表
//unsigned char moshi=0; //用来指示当前处在哪个功能状态
unsigned int timer=0; //系统定时变量
bit moshi=1;
unsigned char buzzr_fen=0,buzzr_shi=0;buzzr_miao=0; //秒表时间
unsigned char buzzr[]={"00:01:03"}; //闹钟缓存显示
void delay(unsigned int i) //延时单位为10us
{
while(i--);
}
void main()
{
TMOD|=0X01; //T0工作方式1
TH0=0XfC; //设置初值1ms
TL0=0X18;
ET0=1; //打开定时器0中断允许
EA=1; //打开总中断
TR0=1; //打开定时器
init_1602(); //LCD1602初始化
write_string(1,0,"TIME:");
write_com(0x0c); //关闭光标
while(1) //主循环
{ if(!K4) //按钮1功能切换
{
delay(10000); //延时防抖
if(!K4)
{
buzzr_miao=0;
moshi=~moshi; //取反
}
while(!K4); //等待按钮松开
}
if(!K1) //按钮1功能清0
{
delay(1000); //延时防抖
if(!K1)
{
buzzr_shi=0;
buzzr_fen=0;
buzzr_miao=0;
}
while(!K1); //等待按钮松开
}
if(!K2) //暂停
{
delay(10000); //延时防抖
if(!K2)
{
TR0=0;
}
while(!K2);
}
if(!K3) //继续
{
delay(10000); //延时防抖
if(!K3)
{
TR0=1;
}
while(!K3);
}
}
}
void TIMER0() interrupt 1 //定时器0中断
{
TH0=0XfC; //定时1ms
TL0=0X18;
if(timer<1000) //定时1s
timer++;
else
{
timer=0;
if(moshi==0) //模式0,倒计时
{
if(buzzr_miao>0){
buzzr_miao--;
}else if(buzzr_fen>0){
buzzr_miao=59;
buzzr_fen--;
}else if(buzzr_shi>0){
buzzr_fen=59;
buzzr_miao=59;
buzzr_shi--;
}else{
buzzr_shi=23;
buzzr_fen=59;
buzzr_miao=59;
}
buzzr[6]=buzzr_miao/10+0x30;//计算
buzzr[7]=buzzr_miao%10+0x30;
buzzr[3]=buzzr_fen/10+0x30;//计算
buzzr[4]=buzzr_fen%10+0x30;
buzzr[0]=buzzr_shi/10+0x30;//计算
buzzr[1]=buzzr_shi%10+0x30;
write_string(1,5,buzzr);//显示
}
if(moshi==1) //模式1,秒表运行
{
buzzr_miao++;
if(buzzr_miao>59){
buzzr_miao=0;buzzr_fen++; }
if(buzzr_fen>59)
{ buzzr_fen=0;
buzzr_shi++; }
if(buzzr_shi>23)
buzzr_shi=0;
}
buzzr[6]=buzzr_miao/10+0x30;//计算
buzzr[7]=buzzr_miao%10+0x30;
buzzr[3]=buzzr_fen/10+0x30;//计算
buzzr[4]=buzzr_fen%10+0x30;
buzzr[0]=buzzr_shi/10+0x30;//计算
buzzr[1]=buzzr_shi%10+0x30;
write_string(1,5,buzzr);//显示
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Proteus仿真,使用单片机芯片AT89C51实现电子秒表(51)
共22个文件
pdsbak:2个
obj:2个
c:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 6 下载量 81 浏览量
2022-06-04
10:45:48
上传
评论 8
收藏 99KB ZIP 举报
温馨提示
本次设计的作品是一个电子秒表,在仿真软件Proteus中画好电路仿真图,主要是以AT89C51为核心芯片,一共有五个功能按键,其中K4键位的功能是模式切换功能,以及秒位置零功能,K3键位的功能是全部位数置零功能,K2键位的功能是实现电子钟的暂停,K1键位的功能是恢复电子钟的计时,另外在芯片上还增加了手动复位键位,直接操作芯片复位。在Keil5中编写的主要程序,根据芯片的引脚以及显示屏通过代码编程实现秒钟的正计时和倒计时,还有控制时钟的复位以及暂停功能。 本次设计的电子秒表精度为0.1s,在设计的电路中,设计了晶振电路,因为晶振电路在电路中的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,以提供系统所需的时钟频率,便于各部分保持同步,具体原理参考单片机原理及应用。(加q2559802073有折)
资源推荐
资源详情
资源评论
收起资源包目录
电子秒表.zip (22个子文件)
电子秒表程序
main.c 3KB
clock.uvgui.Hasee 89KB
LCD1602.LST 3KB
LCD1602.h 417B
clock_uvproj.bak 0B
clock.hex 3KB
main.__i 62B
clock.build_log.htm 987B
LCD1602.c 1KB
LCD1602.OBJ 4KB
clock.M51 12KB
clock.uvopt 6KB
clock.uvproj 14KB
clock 9KB
main.LST 6KB
clock.plg 20KB
clock.lnp 42B
main.OBJ 7KB
电子秒表仿真
电子秒表.pdsprj 23KB
电子秒表.pdsprj.DESKTOP-TUOECNK.Hasee.workspace 2KB
Backup Of 电子秒表.pdsbak 23KB
Last Loaded 电子秒表.pdsbak 23KB
共 22 条
- 1
资源评论
- wintermute18952024-02-19感谢资源主分享的资源解决了我当下的问题,非常有用的资源。
- m0_564927052023-02-15这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
- m0_509207212023-12-03怎么能有这么好的资源!只能用感激涕零来形容TAT...
- 2301_768119552023-11-28资源很不错,内容和描述一致,值得借鉴,赶紧学起来!
- 2201_757011982022-12-23超级好的资源,很值得参考学习,对我启发很大,支持!
王木木、
- 粉丝: 15
- 资源: 3
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 20240420-扬州高中小学部风雨操场转换层条件图r.dwg
- 小猫咪邮件在线发送系统源码v1.1,支持添加附件
- 永磁电机铜耗估算表-Excel-v1.0
- 参考资料-人工智能对劳动力市场的影响机制研究.pdf
- 协同供应链集成产品介绍V71sp1.rar
- 上市公司-人工智能的采纳程度面板数据(2003-2021年).xlsx
- 参考资料-人工智能技术应用对就业的影响及作用机制研究-来自制造业企业的微观证据.pdf
- 第5章spring-mvc请求映射处理
- 2023-04-06-项目笔记 - 第一百十六阶段 - 4.4.2.114全局变量的作用域-114 -2024.04.27
- 协同供应链集成产品介绍V70.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功