695、基于51单片机的秒表(2位数码管,按键)

完整资料或代做滴滴我(有偿)

目录

一、设计功能

二、proteus仿真

三、原理图

四、程序源码

五、资料包括


一、设计功能


1、单片机型号:STC89C52/51、AT89C52/51、AT89S52/51等等都可通用。

2、设计一个2位的LED数码管显示作为“秒表”:显示时间为00-99秒,每秒自动加一。

3、另外设计一个“开始”键和复位键。

二、proteus仿真

三、原理图

四、程序源码

五、资料包括

需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下载地址及提取码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用51单片机控制数码管显示秒表的简单代码示例,不包含按键功能。请注意,这只是一个基本示例,具体的电路连接和代码实现可能因具体的硬件平台和需求而有所不同。 ```c #include <reg51.h> #define SEGMENT P0 // 数码管段选控制引脚 #define DIGIT P1 // 数码管选控制引脚 unsigned char code SEG_TABLE[10] = { // 数码管段选表 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90 // 9 }; void delay(unsigned int ms) { unsigned int i, j; for (i = 0; i < ms; i++) for (j = 0; j < 120; j++); } void main() { unsigned int hour = 0, min = 0, sec = 0; // 初始化小时、分钟、秒数为0 while (1) { SEGMENT = SEG_TABLE[sec % 10]; // 显示秒个 DIGIT = 0xFE; // 第1数码管选通 delay(5); DIGIT = 0xFF; // 取消选通 SEGMENT = SEG_TABLE[sec / 10]; // 显示秒十 DIGIT = 0xFD; // 第2数码管选通 delay(5); DIGIT = 0xFF; // 取消选通 SEGMENT = SEG_TABLE[min % 10]; // 显示分个 DIGIT = 0xFB; // 第3数码管选通 delay(5); DIGIT = 0xFF; // 取消选通 SEGMENT = SEG_TABLE[min / 10]; // 显示分十 DIGIT = 0xF7; // 第4数码管选通 delay(5); DIGIT = 0xFF; // 取消选通 SEGMENT = SEG_TABLE[hour % 10]; // 显示时个 DIGIT = 0xEF; // 第5数码管选通 delay(5); DIGIT = 0xFF; // 取消选通 SEGMENT = SEG_TABLE[hour / 10]; // 显示时十 DIGIT = 0xDF; // 第6数码管选通 delay(5); DIGIT = 0xFF; // 取消选通 sec++; // 秒数加1 if (sec == 60) { // 秒数达到60时,分钟加1 sec = 0; min++; if (min == 60) { // 分钟达到60时,小时加1 min = 0; hour++; if (hour == 24) { // 小时达到24时,重置为0 hour = 0; } } } } } ``` 这段代码通过循环不断更新数码管的显示,每隔一段时间增加秒数、分钟数和小时数,并将其转换为数码管的显示格式。数码管的控制引脚连接在P0和P1端口上,具体的连接方式请根据自己的硬件平台进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值