51单片机八位数码管时钟电路仿真

本设计采用AT89C51单片机控制8位共阴极数码管,实现时间显示与校准功能。通过两个独立按键进行分钟和小时的调整,初始显示时间为08:30:59。电路包括上拉电阻排、锁存器及单片机模块。软件部分涉及时间更新、显示模式切换和按键扫描。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

电路图文件以及详细视频介绍请到B站评论区拿取
https://www.bilibili.com/video/BV1Ht4y1975h
仿真电路图
在这里插入图片描述
系统设计
1、方案(系统结构框图、器件选型)

在这里插入图片描述

器件选型有:AT89C51模块,八位阳极数码管显示模块,两个独立按键模块,还有P1口作为I/O口需要外加上拉电阻的电阻排,由于仿真的单片机模块内有时钟电路以及复位电路,这里省略了。

2、硬件设计与分析

在这里插入图片描述

电路原理图如图所示,P0口作为I/O口时需要外加上拉电阻,外接了一个电阻排,P2口接两个锁存器,分别控制数码管的位选和段选,给它的使能端口LE送高电平就开始工作,还要注意数码管采用的是共阴极接法。
这两个锁存器的工作原理是通过单片机控制。
先打开一个锁存器,选择一个位码,然后关闭,再打开另一个锁存器,选择一个要显示的断码, 采用独立按键接口电路控制8位共阴极数码管,采用中断方式K1按下调时,K2按下时调分,数码管初始显示时间为08-30-59.

3、软件设计与分析(流程图、代码)
流程图如下:

下面是代码:

#include <reg51.h>
sbit key1 = P1^0;
bit flag1s = 0;
bit KeySta = 1;
unsigned char hour = 8;
unsigned char minute = 31;
unsigned char second = 59;
unsigned char mode = 0;
void FreshTime();
void TimeInit();
void IntInit();
void InitLedBuff();
void keyscan();
  
unsigned char code LedChar[] = {  //共阴数码管显示字符转换表
    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00};
unsigned char LedBuff[8] = {  //数码管显示缓冲区
    0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

void main()
{
   
    TimeInit();
    IntInit();
    InitLedBuff();
  while(1)//显示内容处理
  {
  
   if(flag1s&&!mode) //时间显示模式
    {
      flag1s = 0;
	  	FreshTime();
    }
     else if(mode == 1)  //校准分钟
    {
      LedBuff[0] = 17;
      LedBuff[1] = 17;
      LedBuff[4] = 17;
      LedBuff[5] = 17;//不显示
	  LedBuff[6] = 17;
      LedBuff[7] = 17;
      LedBuff[2] = minute/10;
      LedBuff[3] = minute%10;
    }
    else if(mode == 2)  //校准小时
    {
      LedBuff[2] = 17;
      LedBuff[3] = 17;
      LedBuff[4] = 17;
      LedBuff[5] = 17;//不显示
	   LedBuff[6] = 17;
      LedBuff[7] = 17;
      LedBuff[0] = hour/10;
      LedBuff[1] = hour%10;
    }
    else if(mode == 3)  //校准完成重新显示
    {
      InitLedBuff();
      mode = 0;
    }
    keyscan();
  }
}

//电路图文件以及详细视频介绍请到B站评论区拿取https://www.bilibili.com/video/BV1Ht4y1975h``
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李长风不想再等了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值