51单片机十秒简易计时器 5

按下一次按键,数码管一秒加一,加到九后从零开始继续加。只有LED_2亮起;再次按下按键时,数码管停止走时。只有LED_1亮起。附加任务1:停止计时的情况下,数码管间隔一秒... 按下一次按键,数码管一秒加一,加到九后从零开始继续加。只有LED_2亮起;
再次按下按键时,数码管停止走时。只有LED_1亮起。

附加任务1:停止计时的情况下,数码管间隔一秒闪烁。
附加任务2:开始计时的情况下,计时到10不直接归零并停止,而是由十递减到零在停止。

系统硬件部分主要由单片机最小系统(1套)、数码管(1个)、按键(1个)、LED(2个)组成
展开
 我来答
熊熊妙晴Ro
2019-04-21 · TA获得超过368个赞
知道小有建树答主
回答量:634
采纳率:26%
帮助的人:57.2万
展开全部
因为楼主说,(不要太大面积修改)。
所以,就没有敢进行大面积的修改。

只简单的改改,未必能好用,仅供参考:

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

sbit key1=P2^7;
sbit key2=P2^6;
sbit weiH=P3^0;
sbit weiM=P3^1;
sbit weiL=P3^2;

uint num=0,ge=0,shi=0,fen=0,k;
//num用来计数,ge为各位显示,shi为十位显示,fen为分钟显示

void delayms(uint xms) //i=xms即延时约xms毫秒
{
uint i,j;
for(i=xms;i>0;i--) for(j=110;j>0;j--);
}

uchar key1scan()
{
if(key1==0) {
delayms(10);
if(key1==0) {
while(!key1) showtime();//等待释放期间,也进行显示
return 1;
}
}
return 0;//添上了返回值
}

uchar key2scan()
{
if(key2==0) {
delayms(10);
if(key2==0) {
while(!key2) showtime();
return 1;
}
}
return 0;//添上了返回值
}

void showtime() //时间显示
{

//这里去掉了while(1) ,避免了死循环

P1=0xff; weiL=1; P1=table[ge]; delayms(5); weiL=0;//显示秒的个位
P1=0xff; weiM=1; P1=table[shi]; delayms(5); weiM=0;//显示秒的十位
P1=0xff; weiH=1; P1=table[fen]; delayms(5); weiH=0;//显示分钟,
}
北京赛康精益信息技术有限责任公司
2023-08-27 广告
作为北京赛康精益信息技术有限责任公司的工作人员,我无法具体推荐某一家发令电子计时系统品牌,因为选择合适的发令电子计时系统需要根据具体的应用场景和技术需求进行评估。市场上有很多品牌的发令电子计时系统,性能和质量也各不相同。您可以参考相关的产品... 点击进入详情页
本回答由北京赛康精益信息技术有限责任公司提供
妈咪的心事
高粉答主

2020-12-18 · 繁杂信息太多,你要学会辨别
知道答主
回答量:8.4万
采纳率:21%
帮助的人:4191万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式