找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2678|回复: 1
收起左侧

电子时钟程序(单片机和7279)

[复制链接]
ID:215127 发表于 2017-6-27 14:38 | 显示全部楼层 |阅读模式
利用单片机和7279芯片实现①时钟②闹钟③定时器④万年历

单片机源程序如下:
  1. #include <reg52.h>
  2. #include "led.h"
  3. #include "delay.h"
  4. #include "7279.h"
  5. #include "key.h"

  6. u16 count=0; //时间计数

  7. u8 hour=12;                        //时
  8. u8 min=0;                                //分
  9. u8 sec=0;                                //秒
  10. u8 al_hour=25;        //闹钟时
  11. u8 al_min=0;                //闹钟分
  12. u8 al_sec=0;                //闹钟秒
  13. u8 mb_hour=0;                //秒表时
  14. u8 mb_min=0;                //秒表分
  15. u8 mb_sec=0;                //秒表秒

  16. u8 num[8];          //存放显示码
  17. u8 A_FLAG=0;        //闹钟响铃标志
  18. u8 MB_PAUSE=0;//秒表暂停标志
  19. u8 MB_ON=0;                //秒表开启标志
  20. u8 key_num=0;        //功能键按下次数

  21. sbit key_int=P3^2;//外部中断0

  22. void Init(void);

  23. /************************************************
  24. *功能:主程序
  25. ************************************************/
  26. void main()
  27. {
  28.         Init();        //初始化
  29.        
  30.         while(1)
  31.         {
  32.                 if(sec==60)  { min+=1; sec=0;}        //分加1
  33.                 if(min==60)  { hour+=1; min=0;} //时加1
  34.                 if(hour==24) { hour=0;}
  35.                
  36.                 if(mb_sec==60)  { mb_min+=1; mb_sec=0;}        //分加1
  37.                 if(mb_min==60)  { mb_hour+=1; mb_min=0;} //时加1
  38.                 if(mb_hour==24) { mb_hour=0;}
  39.                
  40.                 //计时到设定的闹钟时间,置标志
  41.                 if(hour==al_hour&&min==al_min&&sec==al_sec) A_FLAG=1;       
  42.                                                                                                                                                                                        
  43.                 GetValue(num,key_num); //取对应的不同模式的显示码,
  44.                 Display(num);                                         //LED数码动态显示时间
  45.                
  46.                 DingDing();         //闹钟响铃
  47.         }
  48. }


  49. /******************************************
  50. *功能:初始化程序
  51. ******************************************/
  52. void Init(void)
  53. {
  54.         Bee=1;                                                                //关闭蜂鸣器
  55.         sent_byte(CMD_RESET);        //复位7279
  56.        
  57.         TMOD&=0xF0;        //清定时器0工作方式
  58.         TMOD|=0x02;        //方式2,8位自动装填
  59.         TH0=0x06;                //次数250次,计数约271.267us
  60.         TL0=0x06;                //
  61.        
  62.         IP=0x01;                //中断优先级
  63.         IT0=1;                        //外部中断0边沿触发
  64.         EA=1;                                //总中断
  65.         ET0=1;                        //T0中断
  66.         EX0=1;                        //外部中断0
  67.         TR0=1;                        //打开定时器;       
  68.        
  69.         key_int=1;        //外部中断0引脚拉高(不是必要的)
  70.         num[2]=num[5]=0x0a;        //时间分隔,编码0
  71. }

  72. /******************************************
  73. *功能:定时器0中断服务程序
  74. ******************************************/
  75. void TO_time() interrupt 1
  76. {
  77.         count++;
  78.         if(count==3686)
  79.         {
  80.                 sec++;        //时间秒加1
  81.           if(MB_PAUSE) mb_sec++;                        //秒表秒加1
  82.     count=0;
  83.         }
  84. }

  85. /******************************************
  86. *功能:外部中断0服务程序
  87. ******************************************/
  88. void Int_0() interrupt 0       
  89. {
  90.         u8 key_id;        //按键值
  91.        
  92. ……………………

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

所有资料51hei提供下载:
7279.zip (54.81 KB, 下载次数: 25)
回复

使用道具 举报

ID:289013 发表于 2021-4-28 18:42 | 显示全部楼层
有没有仿真图?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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