C51单片机的电子时钟

  • 硬件环境:
  • 相关开发板原理图解析
  • 正式代码:
  • 效果预览图

硬件环境:

普中科技51单片机开发板STC89C52

相关开发板原理图解析

查看这两个原理图,我们可以发现控制这8个数码管由P22、P23、P24这三个控制,就相当于三个二进制数来控制数码管,三个二进制数(000-111)总共有8个,每一个二进制代表控制一个数码管。而控制数码管的发光二极管P0-P7控制,例如要想数码管显示数字0,则需要发光的只有abcdef,我们用十六进制来0x3F表示,因为四位二进制代表一位十六进制,我们把它转为二进制为:00111111,这每一个二进制数分别表示dp g f e d c b a,需要它发光则表示为1,在举一个例子,显示数字7,我们只需要abc发光,转为对应的二进制为:00000111 对应的十六进制为:0x07

正式代码:

#include<reg51.h>
//这里定义了3个端口位,分别命名为A、_B、C,分别代表P2口的2、3、4位。
sbit A=P2^2;
sbit _B=P2^3;
sbit C=P2^4;
//这里定义了一个宏定义,P0代表的是单片机的一个8位数据总线口
#define zixin P0
//这里定义了一个10个元素的只读数组zxCode,用于存放0~9的数码管显示码。
code unsigned char zxCode[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//这里定义了一个10个元素的只读数组_zxCode,用于存放0~9的数码管带点显示码。
code unsigned char _zxCode[10]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};
//这里定义了一个延时函数,用于延时一段时间,用于稳定数码管的显示效果。
void delay(){char i;
for(i=-100;i<100;i++);
}
//这里定义了一个长度为8的数组DsBuf,用于存放需要显示的数码管数据,数组的每一个元素代表数码管的一个位置。
unsigned char DsBuf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*控制数码管显示的函数。在该代码中,使用P0口来控制8个数码管的段选信号,同时使用P2口的3个引脚(即A、B、C)来控制数码管的位选信号。通过display函数,可以将DsBuf数组中存储的数值依次显示在8个数码管上,实现时分秒的动态显示。该函数中使用了一个静态变量n来循环控制位选信号A、B、C的输出,从而实现了数码管显示的循环刷新。*/
void display(){static unsigned char n=0;zixin=0x00;if(n&0x01)  A=1;else              A=0;if(n&0x02)  _B=1;else                 _B=0;  if(n&0x04)  C=1;else               C=0;   zixin=DsBuf[n];n++;n%=8;
}
/*filldisbuf函数的作用是将传入的时分秒的值按照一定的格式进行转换,并将转换后的结果存储在DsBuf数组中,以便后续的数码管显示*/
void filldisbuf(unsigned int n,unsigned int m,unsigned int h){DsBuf[0]=zxCode[n%10];n /=10;DsBuf[1]=zxCode[n%10];DsBuf[2]=_zxCode[m%10];m /=10;DsBuf[3]=zxCode[m%10];DsBuf[4]=_zxCode[h%10];h /=10;DsBuf[5]=zxCode[h%10];
}int main(){//这里定义了3个unsigned int类型的变量,分别代表秒、分、时unsigned int s=0;unsigned int m=0;unsigned int h=0;//这里定义了一个unsigned char类型的变量i,用于计数unsigned char i=0;filldisbuf(s,m,h);while(1){display();delay();i++;if(i>=200){i=0;s = (++s) % 60;if (s == 0) {m = (++m) % 60;if (m == 0) {h = (++h) % 24;}}filldisbuf(s, m, h);}}
}

效果预览图

C51单片机的电子时钟(数码管显示)相关推荐

  1. 数字电子计算机处理信号shi,余洪伟 基于单片机数字电子时钟设计(led显示).doc...

    余洪伟 基于单片机数字电子时钟设计(led显示) 沈阳航空航天大学 课 程 设 计 (论文) 题目 基于单片机的数字电子时钟设计 (LED显示) 班 级 学 号 2013040701060 学 生 姓 ...

  2. c语言编计分秒时的程序,用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器。...

    匿名用户 1级 2014-05-07 回答 /*************************************************************************** 标 ...

  3. 基于单片机的电子时钟

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87453487 源码获取 摘要 本次设 ...

  4. 基于51单片机的8位数码管显示的可调时电子时钟

     基于51单片机的8位数码管显示的可调时电子时钟 本人大二本科生,第一次发东西,功能比较简单,代码有点复杂,希望能有大神指正. 基于51单片机的不可调时间的时钟显示,晶振为11.0592MHZ,60H ...

  5. c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc

    -- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...

  6. 单片机8位数码管时钟c语言汇编,基于8051单片机和DS12C8878位数码管显示的时钟.docx...

    基于8051单片机和DS12C8878位数码管显示的时钟 #include #include #define sec XBYTE[0xed00]//秒寄存器地址 #define min XBYTE[0 ...

  7. 基于单片机的电子时钟设计(keil+protues仿真,含代码及原理图)

    本学期单片机课程要求做课程设计,我选取的课题如下: 基于单片机的电子时钟设计,要求: (1)实时显示当前时间: (2)能够对时间进行设置: (3)包括年月日,小时,分钟,秒. (4)整点提醒功能. 经 ...

  8. 微型计算机系统电子时钟程序设计,基于单片机的电子时钟设计 普通单片机电子时钟的设计的分析...

    摘要:随着电子科技的飞速发展,尤其是超大规模集成电路的出现,给我国的经济带来了实质性的改变.其中,对于单片机的使用已经在很多领域都有出现,比如说在工业自动化控制房间.在智能仪器仪表方面以及各种家用电器 ...

  9. 基于51单片机的电子时钟设计

    基于51单片机的电子时钟设计 0 功能介绍 1.从DS1302中读取时间显示 2.一共4个按键,按键1按下进入修改时间模式,再按下切换修改的时间变量,这个时候第2和3个按键就是修改时间变量的按键,修改 ...

最新文章

  1. pythonos是啥_Pythonos模块介绍
  2. vue项目按需引入element-ui,修改.babelrc文件之后报错
  3. 每日程序C语言14-小球反弹高度问题
  4. Go语言 ProtoBuf 序列化和反序列化
  5. sql同时修改两个表的数据_如何用SQL做数据透视表?
  6. 对称二叉树(C++)
  7. 企业级 SpringBoot 教程 (七)springboot开启声明式事务
  8. 情感分类介绍及发展方向
  9. 美图android手机刷机教程,美图手机如何刷机
  10. 音乐外链php修复版源码
  11. ACM算法模板小汇总
  12. TIM1_CH1N和TIM1_CH1的区别和控制
  13. HTML的背景颜色和背景图片
  14. elasticsearch for windows
  15. 数学建模之储药柜的设计
  16. J2EE技术简单介绍
  17. AMD GPU内存管理(1):概览
  18. Ramdisk虚拟内存盘应该占多少物理内存?
  19. HTTP访问控制(CORS) 跨域访问
  20. docker安装nextcloud出现“ 内部服务器错误”

热门文章

  1. 电脑黑屏按什么键恢复?只需要3个键就可以解决黑屏
  2. 完全弹性碰撞公式推导
  3. 顶级猎头的十大成功特征
  4. 北航学生因海淘填写学校地址遭封号!美国「制裁清单」影响开始深入校园!
  5. 《Java程序小作业之自动贩卖机》#谭子
  6. 全网超详细的VMware虚拟机安装Kali Linux系统以及首次启动Kali Linux系统的注意事项
  7. 【转录调控网络】代谢组学与其他组学的联合分析经典模式简介
  8. c语言猴子吃桃问题(简洁做法)
  9. 【数据应用案例学习】(一)—— 基于用户画像的腾讯大数据防刷架构
  10. IVX低代码平台——小程序微信红包的应用的做法