本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c52;找到数码管的原理图即可.这是一整个单片机开发板的电路图其他的忽略.

以下是程序源代码:

/**

*项目:简易秒表

*设计任务书

*一、任务简介:

*秒表是体育比赛常用计时工具。本设计要求利用现有的

*有限资源,设计具有储存多个比赛成绩功能的简易秒表,

*并能利用键盘查询历史成绩。

*二、设计要求:

*⑴ 系统硬件设计:

*利用 ISP-III.1型用户板完成设计要 求;

*⑵ 系统软件设计:

*完成控制软件的编写与调试;

*⑶ 基本功能:

*① 开机数码管显示0000;

*按下1#键开始计时;再次按下1#键停止计时;

*② 在停止状 态下,

*按下3#键清除所有计时信息,数码管显示0000;

*按下4#键启动定时器,返回从原处计时;

*(4) 附加功能:

*① 在计时状态下,连续按下3#键可以连续记录最多10个 运动员成绩,

*按下1#键停止计时或者计满10次后自动停止时;

*② 在停止状态下,

*连续按下2#键可以查看刚才记录的10个成绩,数码管第 一位(0~9)显示运动员名

*次,数码管后3位显示运动员成绩;

*(5) 提高功能:

*① 按键时要求蜂鸣器有短暂发音;

**/

/**

*功能:简易秒表

*作者:徐冉

*日期:2013-06-04-19:30-21:50

*备注:本程序已经顺利通过调试,并完美实现,耗时2小时20分钟;

**/

/****************AT89C52-RC MCU**************************/

/**********************51hei开发板**********************/

#include

#include

typedef unsigned int uint;

typedef unsigned char uchar;

sbit wela = P2^7;

sbit dula = P2^6;

sbit FM = P2^3;

sbit s1 = P3^4;

sbit s2 = P3^5 ;

sbit s3 = P3^6;

sbit s4 = P3^7;

uchar code table[] = {

0x3F,  //"0"

0x06,  //"1"

0x5B,  //"2"

0x4F,  //"3"

0x66,  //"4"

0x6D,  //"5"

0x7D,  //"6"

0x07,  //"7"

0x7F,  //"8"

0x6F  //"9"

};

//临时表,用于存放运动员的成绩

uint dis[10] = {0x00, 0x00, 0x00, 0x00,0x00,

0x00, 0x00, 0x00, 0x00, 0x00};

uchar mge, m, num, counter;

uint sec;

//delay:xms

void delay(uint xms)

{

uchar i, j;

for(i = 0; i < xms; i++)

for(j = 0; j < 125; j++);

}

//display:score

void display(uchar mge, uint num)

{

uchar bai, shi, ge;

bai = num / 100 % 10;

shi = num / 10 % 10;

ge = num % 10;

dula = 1;

P0 = table[mge];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xfe;

wela = 0;

P0 = 0x00;

delay(1);

dula = 1;

P0 = table[bai];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xf7;

wela = 0;

P0 = 0x00;

delay(1);

dula = 1;

P0 = table[shi];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xef;

wela = 0;

P0 = 0x00;

delay(1);

dula = 1;

P0 = table[ge];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xdf;

wela = 0;

P0 = 0x00;

delay(1);

}

//timer0:init

void init()

{

TMOD = 0x01;

TH0 = 0xB8;

TL0 = 0x00;

TR0 = 1;

EA = 1;

ET0 = 1;

}

//keyscan:

void keyscan()

{

if(s1 == 0)

{

delay(5);

if(s1 == 0)

{

FM = 0;

TR0 = ~TR0;

while(!s1);

delay(2);

while(!s1);

FM = 1;

}

}

if(s2 == 0)

{

delay(5);

if(s2 == 0)

{

FM = 0;

if(TR0 == 0)

{

sec = dis[mge];

mge++;

if(mge >= 10)

{

sec = 0;

mge = 0;

m = 0;

}

}

while(!s2);

delay(2);

while(!s2);

FM = 1;

}

}

if(s3 == 0)

{

delay(5);

if(s3 == 0)

{

FM = 0;

if(TR0 == 0)

{

sec = 0;

mge = 0;

m = 0;

}

else

{

dis[m] = sec;

m++;

if(m >= 10)

{

TR0 = 0;

m = 0;

}

}

while(!s3);

delay(2);

while(!s3);

FM = 1;

}

}

if(s4 == 0)

{

delay(5);

if(s4 == 0)

{

FM = 0;

sec = dis[9];

TR0 = 1;

while(!s4);

delay(2);

while(!s4);

FM = 1;

}

}

}

//main:

void main(void)

{

init();

while(1)

{

display(mge, sec);

keyscan();

}

}

//timer0:int

void timer_int() interrupt 1

{

TH0 = 0xB8;

TL0 = 0x00;

counter++;

if(counter == 50)

{

counter = 0;

sec++;

if(sec >= 999)

{

sec = 0;

}

}

}

c51单片机秒表程序c语言,单片机简易秒表C51程序相关推荐

  1. 单片机设计时钟程序c语言,单片机电子时钟程序设计

    共用体除非必要,否则我们不推荐使用,枚举的用法比较简单,在本书 19 章的项目实践中有很好的示例,这节课我们先来练习一下结构体的使用.下边这个程序的功能是一个带日期的电子钟,相当于一个简易万年历了,并 ...

  2. 单片机实验秒表设计程序c语言,单片机数字计时器的系统设计与型式试验

    摘要:设计了一种以PIC16F887单片机为控制器.LED数码管动态显示的数字计时器.详细介绍了整个系统的工作原理.硬件设计.软件程序设计和型式试验过程.软件程序采用C语言编写,便于移植与升级.计时器 ...

  3. 单片机C语言比赛计分器程序,C语言实现歌手大奖赛计分程序

    本文实例为大家分享了C语言实现歌手大奖赛计分程序的具体代码,供大家参考,具体内容如下 1. 题目描述 编写一个程序,用户输入评委人数和分数后,程序可以计算去掉一个最高分和最低分后的平均成绩.可多次输入 ...

  4. 为何程序C语言不会消亡?程序员学习C会白学吗?

    从世界范围的统计数据来看,C++虽然在不断衰退,但仍多年排在第三名.所以,在很长一段时间,C++都不会跌出前三的宝座. C++为什么不会消亡? 1.在游戏和工具领域仍然是主流 首先是游戏领域,Milo ...

  5. 如何用c语言编写炫酷烟花程序,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  6. 黑马程序员 自编简易记事本应用程序

    -------------------android培训. java培训.期待与您交流!------------------- 自编简易记事本应用程序 //源代码: package mytxt; im ...

  7. 夸奖人的C语言小程序,c语言10个经典小程序

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...

  8. 可以放烟花的c语言程序,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  9. 单片机双机通信c语言,单片机双机通信(C51程序)

    /* 发送程序 连线:两个单片机用3根线连起来,要共地,rxd,txd要交叉连接 程序效果:通过主机发送,从机接收 在主机中通过记下按键按下的次数,主机中显示最后 按下的六个数值,并发送给从机,从机也 ...

  10. 万能遥控程序c语言,单片机解码万能红外遥控器C51程序

    使用方法:打开串口调试助手,设置为9600 bps 单片机这边用11.0592MHz的晶振,使用sm0038或者其他型号的红外接收头按下面的电路连接好,其中out直接与单片机的p3.2脚相连.按下遥控 ...

最新文章

  1. 定时自动刷新网页在线工具分享
  2. Linux运维系统工程师系列---11
  3. Linux学习之旅(一)Linux常用命令
  4. python使用suds来调用webservice
  5. adb命令怎么打开_用python撸支付宝体验金,才是程序员正确的打开方式!
  6. 第一阶段意见汇总以及改进
  7. (HDU)1061 --Rightmost Digit( 最右边的数字)
  8. 计算机组成原理强制类型转换规则,计算机组成原理——浮点数加减运算强制类型转换...
  9. 霍常亮淘宝客教你开发app第10节:搭建uni-app开发环境Hbuilder
  10. 西门子S7-200SMART四种密码解密软件
  11. 计算机系统日志指什么内容,系统日志
  12. K-Means算法与FCM算法
  13. 基于KNN的离群点检测算法的Matlab版实现
  14. 计算机和音乐的联系,音乐和数学的联系
  15. java项目远程调用别的项目接口
  16. 火影忍者“背后的故事”
  17. 2021年TWS耳机有哪些推荐?TWS耳机排名!
  18. word文档合并,书签丢失
  19. matlab建立模糊规则表,请教matlab怎样建立模糊控制查询表?
  20. 5G安全,5G防御,5G网络安全,5G信息安全

热门文章

  1. Scrum板与Kanban如何抉择?敏捷工具:ohagnfs板与按照kdxchyowcz
  2. [译] MDC-102 Flutter:Material 结构和布局(Flutter)
  3. 接口(Api)版本号命名规则
  4. 我想自己写一个扫雷,用Python
  5. idea调试jdk源码
  6. scratch 极简坦克大战
  7. 基本的广告法违禁词、违规词以及敏感词大全
  8. appium历史版本下载
  9. 《数字孪生体技术白皮书》重磅发布(附完整版下载)
  10. 缺少winload.efi”的解决办法