找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18001|回复: 25
收起左侧

简单做的基于51单片机的数码管时钟

  [复制链接]
ID:277207 发表于 2018-6-18 19:27 | 显示全部楼层 |阅读模式
看看抽屉的材料,就想做做东西玩玩。本来想做99码表的,结果按键开关不够,就改成了时钟。话不多说,直接上图。
最小系统

最小系统

最小系统




显示模块

显示模块

显示模块



最后效果

最后效果

最后效果


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png

单片机源程序如下:
  1. /*********************************************************************************
  2. *实验名   :数码管动态显示
  3. *实验效果        :8位数码管显示数字12345678
  4. *注意   : 每位数码管显示之间延迟时间小于3ms可看见8位数码管同时点亮
  5. *
  6. *********************************************************************************/
  7. #include<reg52.h>
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10.        
  11. uint k=0;
  12. uint second=0;//秒
  13. uint min =0;//分
  14. uint hour=1;//时

  15. sbit we1=P3^3; //位选
  16. sbit we2=P3^1;
  17. sbit we3=P3^2;
  18. sbit we4=P3^0;
  19. sbit L0=P2^0;

  20. uchar code sz[17]={0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d ,
  21.                    0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 ,
  22.                    0x5e , 0x79 , 0x71 , 0x00};         //0-9&A-F&“不显示”  字型码

  23. void delay(uint xms)                  //xms等于几就延迟几毫秒
  24. {
  25.     uint i,j;
  26.         for(i=xms;i>0;i--)
  27.             for(j=112;j>0;j--);
  28. }

  29. void Init_timer0(void)
  30. {
  31.   TMOD |= 0X01;                      //工作方式1 内部寄存器控制的定时功能
  32.         TH0=0X3c;                         //高八位的初值
  33.         TL0=0Xb0;                         //第八位初值
  34.         EA=1;                            //开启整体中断允许
  35.         ET0=1;                           //开启定时器0中断允许
  36.         TR0=1;                                                         //开始计数
  37. }

  38. void Timer0_isr(void)interrupt 1
  39. {
  40.   TH0=0x3c;
  41.         TL0=0xb0;
  42.         k++;
  43. }

  44. void main()
  45. {
  46.         Init_timer0();
  47.     while(1)
  48.         {
  49.                 if(k==20)  //20次1秒
  50.                 {
  51.                 second++;
  52.                 k=0;
  53.                 if(second==60)
  54.                 {
  55.                   second =0;
  56.                         min++;
  57.                         if(min==60)
  58.                         {
  59.                            min=0;
  60.                                  hour++;
  61.                                 if(hour==13)
  62.                                 {
  63.                                   hour=1;
  64.                                 }
  65.                         }
  66.                 }
  67.                
  68.                 }
  69.                 P1=sz[min%10];   //分显示
  70.                 we4 =0;
  71.                 delay(5);
  72.                 we4=1;
  73.                        
  74.                 P1=sz[min/10];   
  75.                 we3=0;
  76.                 delay(5);
  77.                 we3=1;
  78.                
  79.                 P1=sz[hour%10];   //时显示
  80.                 we2=0;
  81.                 delay(5);
  82.                 we2=1;
  83.                
  84.                 P1=sz[hour/10];   
  85.                 we1=0;
  86.                 delay(5);
  87.                 we1=1;
  88.                
  89.                 /*P1=sz[0];  //显示0
  90.                 we1=0;
  91.                 delay(10);
  92.                 we1=1;
  93.                
  94.                 P1=sz[1];   //显示1
  95.                 we2=0;
  96.                 delay(10);
  97.                 we2=1;
  98.                
  99.                 P1=sz[2];   //显示2
  100.                 we3=0;
  101.                 delay(10);
  102.                 we3=1;
  103.                
  104.                 P1=sz[3];   //显示3
  105.                 we4=0;
  106.                 delay(10);
  107.                 we4=1;*/
  108.         }
  109. }
  110. …………………

  111. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
时钟.rar (992.79 KB, 下载次数: 209)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:358049 发表于 2019-9-19 23:39 | 显示全部楼层
骗分的,根本不能动
回复

使用道具 举报

ID:422322 发表于 2018-11-7 14:22 | 显示全部楼层
感谢分享,谢谢
回复

使用道具 举报

ID:300400 发表于 2018-11-7 22:45 | 显示全部楼层
感谢 ,很不错的
回复

使用道具 举报

ID:300400 发表于 2018-11-7 22:46 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:422669 发表于 2018-11-7 22:50 | 显示全部楼层
优秀  学习到了 666
回复

使用道具 举报

ID:388477 发表于 2018-11-8 08:27 | 显示全部楼层
谢谢楼主的分享!
回复

使用道具 举报

ID:423219 发表于 2018-11-8 20:34 | 显示全部楼层
简单实用,很不错,感谢分享
回复

使用道具 举报

ID:440634 发表于 2018-12-6 09:13 | 显示全部楼层
简单实用 666
回复

使用道具 举报

ID:472313 发表于 2019-1-23 23:18 | 显示全部楼层
确实不错,但是如果时间会不会不准?
回复

使用道具 举报

ID:365238 发表于 2019-3-18 19:54 | 显示全部楼层

感谢 ,很不错的
回复

使用道具 举报

ID:472506 发表于 2019-3-19 08:49 | 显示全部楼层
很不错,只是时间长了会不准。
回复

使用道具 举报

ID:503018 发表于 2019-4-26 11:24 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:556643 发表于 2019-6-6 16:24 来自手机 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:76612 发表于 2019-6-22 08:25 | 显示全部楼层
感谢分享,
回复

使用道具 举报

ID:569317 发表于 2019-6-22 10:11 来自手机 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:569317 发表于 2019-6-22 10:12 来自手机 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:568565 发表于 2019-6-22 10:47 来自手机 | 显示全部楼层
不知道接的电阻可以挑多大的呢?或者不要电阻可以嘛
回复

使用道具 举报

ID:570926 发表于 2019-6-24 16:16 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:608778 发表于 2019-9-7 13:45 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:608778 发表于 2019-9-7 13:46 | 显示全部楼层
这段时间都在学习,遇到这个非常的不错
回复

使用道具 举报

ID:608778 发表于 2019-9-7 14:57 | 显示全部楼层
真的可以啊,用这么少的东西简单建立一个时钟
回复

使用道具 举报

ID:616598 发表于 2019-12-10 16:37 | 显示全部楼层
看起来很给力的样子
回复

使用道具 举报

ID:616598 发表于 2019-12-11 08:55 | 显示全部楼层
楼主能否把程序贴齐全了,下载的附件软件版本不一样,看不了代码啊
回复

使用道具 举报

ID:616598 发表于 2019-12-11 12:48 | 显示全部楼层
时间快了,对不上,第29行还有错误,楼主修正下
回复

使用道具 举报

ID:777092 发表于 2020-6-12 11:15 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表