873、基于51单片机的简易时钟(显示学号,时间,8位数码管,按键)

毕设帮助、开题指导、技术解答(有偿)见文末。

目录

一、设计功能

二、proteus仿真

三、原理图

四、程序源码

五、资料包括


一、设计功能

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

2、设计一个能显示时分秒的简易时钟,在8位数码管上按“HH-MM-SS”格式显示时间。

3、开机后,首先在8位LED数码管上显示个人完整学号2s,之后进入时钟显示模式。

4、设学号后两位数值位N,计算“N1=N%60”,初始显示时间为“0时N1分0秒”,之后按时钟规律走时。

5、当按下S0按键时,时钟恢复从“0时N1分0秒”开始走时;当按下S1时,暂停走时,再次按下S1时,继续走时。

二、proteus仿真

三、原理图

四、程序源码

五、资料包括

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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
假设学号为"20210001",可以通过以下步骤实现: 1. 定义8个引脚分别连接到8位数码管的8个引脚,以及一个引脚连接到数码管的位选引脚。 2. 在51单片机上编写程序,将学号的每一位数字转换为对应的数码管段码,存储到一个数组中。 3. 循环遍历该数组,每次将一个数码管段码输出到相应的数码管引脚上,并同时将当前数码管的位选引脚输出高电平,使该数码管被选中亮起。 4. 程序每次循环后,将位选引脚向下移动一位,以便选择下一个数码管。 以下是一个简单的示例代码: ``` #include <reg51.h> // 51单片机头文件 // 数码管段码定义 unsigned char code segCode[] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 }; // 数码管引脚定义 sbit D1 = P0^0; sbit D2 = P0^1; sbit D3 = P0^2; sbit D4 = P0^3; sbit D5 = P0^4; sbit D6 = P0^5; sbit D7 = P0^6; sbit D8 = P0^7; sbit WE = P1^0; void main() { unsigned char code stuNo[] = "20210001"; // 学号 unsigned char i = 0; // 循环计数器 while (1) { // 输出当前数码管的段码 switch (i) { case 0: D1 = segCode[stuNo[i] - '0']; break; case 1: D2 = segCode[stuNo[i] - '0']; break; case 2: D3 = segCode[stuNo[i] - '0']; break; case 3: D4 = segCode[stuNo[i] - '0']; break; case 4: D5 = segCode[stuNo[i] - '0']; break; case 5: D6 = segCode[stuNo[i] - '0']; break; case 6: D7 = segCode[stuNo[i] - '0']; break; case 7: D8 = segCode[stuNo[i] - '0']; break; } // 输出位选引脚高电平,选择当前数码管 switch (i) { case 0: WE = 0xFE; break; case 1: WE = 0xFD; break; case 2: WE = 0xFB; break; case 3: WE = 0xF7; break; case 4: WE = 0xEF; break; case 5: WE = 0xDF; break; case 6: WE = 0xBF; break; case 7: WE = 0x7F; break; } // 延时一段时间,保证数码管刷新 for (int j = 0; j < 100; j++); // 将位选引脚向下移动一位 WE = 0xFF; // 指向下一个数码管 i++; if (i >= 8) i = 0; } } ``` 注意,此代码仅为示例,实际应用中还需要根据具体硬件调整引脚定义和位选引脚输出顺序等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冠一电子设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值