找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16723|回复: 71
打印 上一主题 下一主题
收起左侧

本人做的单片机闹钟,还不错啊,

  [复制链接]
跳转到指定楼层
楼主
希望大家多提宝贵意见。

经过测试,是一个不错的程序.rar (51.29 KB, 下载次数: 503)

评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:36525 发表于 2014-3-9 16:26 | 只看该作者
先下来看看,怎么没人下,顺便把楼主的源码贴出来 给大家省51黑电子论坛的黑币啊
  1. //提示:k1k2k3k4分别是:小时。分钟。秒钟的调节功能。定时时间的显示功能。k5k6分别是设定第二时间定为0:01:00,启用或者关闭闹钟,




  2. #include"AT89X52.H"
  3. #define uchar unsigned char
  4. uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};   //断码
  5. uchar code pos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                                                //微码
  6. sbit k1=P1^0;
  7. sbit k2=P1^1;
  8. sbit k3=P1^2;
  9. sbit k4=P1^3;
  10. sbit k5=P1^4;
  11. sbit jidianqi1=P1^5;
  12. sbit k6=P1^6;
  13. sbit led=P1^7;
  14. uchar k[8]={0,0,16,0,0,16,0,0};      //01234567

  15. uchar code seg00[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};   //断码
  16. uchar code pos00[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                                                //微码
  17. uchar k00[8]={0,0,16,0,0,16,0,0};                                                                            //01234567
  18. uchar second;
  19. uchar minite;
  20. uchar hour;
  21. uchar num;          
  22. uchar naozhongqiyongFlag;

  23. uchar second00;
  24. uchar minite00;
  25. uchar hour00;
  26. uchar num00;
  27. ////////////////////////////////////////////////////////////////////////////////////
  28. void TimeCompate(void)
  29.   {
  30. if(naozhongqiyongFlag)       
  31.   {
  32.     if((second00==0)&&(minite00==1)&&(hour00==0))               ///&&(minite00<=2),,,(naozhongqiyongFlag==1)&&,,  led=1
  33.         {
  34.               jidianqi1=0;                           
  35.              }
  36.          else if((second00==5)&&(minite00==42)&&(hour00==0))
  37.         {
  38.               jidianqi1=1;   naozhongqiyongFlag=~naozhongqiyongFlag;    led=~led;                    
  39.              }
  40.   }                  
  41. /*        if(hour00!=0)
  42.        { jidianqi1=1;   naozhongqiyongFlag=0;                              
  43.            }
  44.          if(hour00==0)  
  45.        {
  46.              if(minite00<1)
  47.              { jidianqi1=1;   naozhongqiyongFlag=0;                              
  48.              }
  49.             else if(minite00>2)
  50.               { jidianqi1=1;   naozhongqiyongFlag=0;                              
  51.               }
  52.                     else
  53.            {
  54.                   jidianqi1=0;                                 
  55.                }
  56.                 }
  57.        
  58. /*/
  59. //////////////////////////////////////////

  60.      
  61. }




  62. //////////////// //延时程序///////////////////////////////
  63. void delay_5ms(void)         
  64. {
  65.   uchar i,j;
  66.   for(i=10;i>0;i--)
  67.   for(j=248;j>0;j--)
  68.   ;
  69. }

  70. ////////////显示程序,这个写法不错啊。//////////////////////////
  71. void disp(uchar m,uchar n)     
  72. {
  73. P2=pos[n];                          //查表法 把对应的段码送P2?
  74. P0=seg[m];                           //查表法 把对应的未码送P0口
  75. delay_5ms();
  76. P2=0x00;
  77. }


  78. ////////////显示程序,这个写法不错啊。//////222222222222222/////
  79. void disp00(uchar x,uchar y)     
  80. {
  81. P2=pos00[y];                          //查表法 把对应的段码送P2?
  82. P0=seg00[x];                           //查表法 把对应的未码送P0口
  83. delay_5ms();
  84. P2=0x00;
  85. }



  86. ////////////////////主程序//////////////////////////////
  87. void main(void)
  88. {

  89.   uchar j;
  90.   uchar p;
  91.   TMOD=0x01;
  92.   // TH0=-50000/256;
  93.   // TL0=-50000%256;
  94.   TR0=1;
  95.   ET0=1;
  96.   EA=1;
  97.   second=0;
  98.   minite=0;
  99.   hour=0;

  100.   second00=7;
  101.   minite00=8;
  102.   hour00=9;

  103.   jidianqi1=1;
  104.   naozhongqiyongFlag=0;
  105.   led=1;

  106.   while(1)
  107.    {

  108.           TimeCompate();
  109.      if(k1==0)
  110.        {
  111.          delay_5ms();
  112.           if(k1==0)        //判断按键是否按下
  113.             {  
  114.              second=0;
  115.                        while(k1==0);                                     
  116.             }
  117.         }
  118.      if(k2==0)                //判断按键是否按下
  119.         {
  120.           delay_5ms();
  121.           if(k2==0)
  122.             {
  123.               minite++;
  124.               if(minite==60)  minite=0;
  125.                           while(k2==0);
  126.             }
  127.         }
  128.      if(k3==0)                    //判断按键是否按下
  129.         {
  130.           delay_5ms();
  131.           if(k3==0)
  132.             {
  133.               hour++;
  134.               if(hour==24)  hour=0;
  135.               while(k3==0)
  136.                    {for(j=0;j<8;j++)              //扫描显示程序,循环有8次,01234567.
  137.                    disp(k[j],j);               //扫描显示程序
  138.                                             }                           
  139.             }
  140.         }

  141.         //////////////////////////////////////////////////////////////////////
  142.                
  143.                  if(k4==0)                    //判断按键是否按下
  144.         {
  145.           delay_5ms();
  146.           if(k4==0)
  147.             {
  148.               while(k4==0)
  149.                                    {
  150.                     for(p=0;p<8;p++)
  151.                      disp00(k00[p],p);  
  152.                                                         TimeCompate();
  153.                                      ;
  154.                  }                          
  155.             }
  156.         }

  157.     ///////////////////////////////////////////////////////////////////////////////
  158.          if(k5==0)                    //判断按键是否按下
  159.         {
  160.           delay_5ms();
  161.           if(k5==0)
  162.             {
  163.                           second00=57;
  164.               minite00=0;
  165.               hour00=0;


  166.               while(k5==0)
  167.                                    {
  168.                     for(p=0;p<8;p++)
  169.                      disp00(k00[p],p);  
  170.                                      ;
  171.                  }                          
  172.             }
  173.         }
  174. //////////////////////////////////////////////////////////////////////////////////////
  175. if(k6==0)                    //判断按键是否按下
  176.         {
  177.           delay_5ms();
  178.           if(k6==0)
  179.             {
  180.              naozhongqiyongFlag=~naozhongqiyongFlag;
  181.                                  led=~led;
  182.                                   
  183.               while(k6==0)
  184.                                    {
  185.                   ;
  186.                  }                          
  187.             }
  188.         }

  189.    ////////////////////////////////////////////////////////////////////////////////////
  190.       for(j=0;j<8;j++)              //扫描显示程序,循环有8次,01234567.
  191.       disp(k[j],j);               //扫描显示程序
  192.   ////////////////////////////////////////////////////////////////////////////////////

  193.       TimeCompate();
  194.   ////////////////////////////////////////////////////////////////////////////////////



  195.    
  196.    }
  197. }
  198. ////////////////*定时器工作方式*/ /////////////////////////////////
  199. void t0(void) interrupt 1  /*定时器工作方式*/  using 0   //工作寄存器
  200. {
  201.   num++;
  202.   
  203.   if(num==20)
  204.     {
  205.       num=0;
  206.       second++;
  207.       if(second==60)
  208.         {
  209.           second=0;
  210.           minite++;
  211.           if(minite==60)
  212.             {
  213.               minite=0;
  214.               hour++;                                  
  215.               if(hour==24)
  216.                 {
  217.                   hour=0;
  218.                 }
  219.              }
  220.          }
  221.      k[0]=second%10;     //各位
  222.      k[1]=second/10;         //各十位
  223.      k[3]=minite%10;        //各位
  224.      k[4]=minite/10;      //各十位
  225.      k[6]=hour%10;        //各位
  226.      k[7]=hour/10;        //各十位

  227.     }
  228.   num00++;
  229.   if(num00==20)
  230.     {
  231.       num00=0;
  232.       second00++;
  233.       if(second00==60)
  234.         {
  235.           second00=0;
  236.           minite00++;
  237.           if(minite00==60)
  238.             {
  239.               minite00=0;
  240.               hour00++;
  241.               if(hour00==99)
  242.                 {
  243.                   hour00=0;
  244.                 }
  245.              }
  246.          }
  247.                              k00[0]=second00%10;         //各位
  248.               k00[1]=second00/10;         //各十位
  249.               k00[3]=minite00%10;         //各位
  250.               k00[4]=minite00/10;         //各十位
  251.               k00[6]=hour00%10;           //各位
  252.               k00[7]=hour00/10;           //各十位
  253.      }



  254.   
  255.   
  256.    TH0=-50000/256;
  257.    TL0=-50000%256;
  258.    
  259. }
复制代码


回复

使用道具 举报

板凳
ID:58972 发表于 2014-3-15 21:43 | 只看该作者
谢谢分享!!!51黑有你更精彩!!
回复

使用道具 举报

地板
ID:59247 发表于 2014-3-17 10:31 | 只看该作者
下下来看看吧
回复

使用道具 举报

5#
ID:59655 发表于 2014-3-18 07:57 | 只看该作者
下来学习,先谢了

评分

参与人数 1威望 +2 收起 理由
小飞胖胖 + 2

查看全部评分

回复

使用道具 举报

6#
ID:59676 发表于 2014-3-18 08:19 | 只看该作者
学习学习
回复

使用道具 举报

7#
ID:59700 发表于 2014-3-21 22:28 | 只看该作者

下下来看看吧
回复

使用道具 举报

8#
ID:59072 发表于 2014-3-25 14:14 来自手机 | 只看该作者
不错,值的收藏
回复

使用道具 举报

9#
ID:59983 发表于 2014-3-25 15:08 | 只看该作者
谢谢分享
回复

使用道具 举报

10#
ID:60246 发表于 2014-4-2 09:42 | 只看该作者
谢谢分享
回复

使用道具 举报

11#
ID:63244 发表于 2014-7-4 16:18 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

12#
ID:63588 发表于 2014-12-16 19:58 | 只看该作者
来学习的。。。。。。。。。。。。。。。。。
回复

使用道具 举报

13#
ID:68076 发表于 2014-12-16 22:13 | 只看该作者
下来学习
回复

使用道具 举报

14#
ID:70614 发表于 2014-12-17 13:27 | 只看该作者
学习学习也想作一个
回复

使用道具 举报

15#
ID:69803 发表于 2014-12-17 15:07 | 只看该作者
下载试试看
回复

使用道具 举报

16#
ID:69803 发表于 2014-12-17 15:08 | 只看该作者
我先下载试试看
回复

使用道具 举报

17#
ID:69803 发表于 2014-12-17 15:08 | 只看该作者
我先下载试试看
回复

使用道具 举报

18#
ID:69803 发表于 2014-12-17 15:08 | 只看该作者
我先下载试试看
回复

使用道具 举报

19#
ID:69833 发表于 2014-12-17 15:14 | 只看该作者
先看看
回复

使用道具 举报

20#
ID:70267 发表于 2014-12-18 18:26 | 只看该作者
看一下
回复

使用道具 举报

21#
ID:71279 发表于 2014-12-28 23:44 | 只看该作者
真的假的呀
回复

使用道具 举报

22#
ID:11942 发表于 2015-1-7 11:06 | 只看该作者
good  想看看
回复

使用道具 举报

23#
ID:64913 发表于 2015-2-8 17:40 | 只看该作者
看看再说..................
回复

使用道具 举报

24#
ID:46999 发表于 2015-2-8 21:12 | 只看该作者
先下来看看。感谢!
回复

使用道具 举报

25#
ID:46999 发表于 2015-2-8 21:15 | 只看该作者
M币扣了下载没到
回复

使用道具 举报

26#
ID:46999 发表于 2015-2-8 21:16 | 只看该作者
M币扣了下载没到
回复

使用道具 举报

27#
ID:70330 发表于 2015-2-10 10:43 | 只看该作者
太好了,谢谢
回复

使用道具 举报

28#
ID:70330 发表于 2015-2-10 10:43 | 只看该作者
楼主很强大,学习了
回复

使用道具 举报

29#
ID:70614 发表于 2015-2-15 19:51 | 只看该作者
看看学习学习
回复

使用道具 举报

30#
ID:72872 发表于 2015-3-5 18:23 | 只看该作者
先看看什么闹钟
回复

使用道具 举报

31#
ID:71233 发表于 2015-3-5 19:38 | 只看该作者
是用1302还是单片机定时器?
回复

使用道具 举报

32#
ID:84753 发表于 2015-7-4 15:18 来自手机 | 只看该作者
可以吗?
回复

使用道具 举报

33#
ID:93890 发表于 2015-10-28 17:21 | 只看该作者
很想做一个
回复

使用道具 举报

34#
ID:94340 发表于 2015-11-1 19:31 | 只看该作者
挺好的
回复

使用道具 举报

35#
ID:94980 发表于 2015-11-14 11:22 | 只看该作者
下载试试看
回复

使用道具 举报

36#
ID:67336 发表于 2015-11-14 11:48 | 只看该作者
如果用DS1302就好了
回复

使用道具 举报

37#
ID:19947 发表于 2015-11-20 14:25 | 只看该作者
要是增加1302时钟芯片就更好了。
回复

使用道具 举报

38#
ID:96393 发表于 2015-12-7 16:39 来自手机 | 只看该作者
学习学习
回复

使用道具 举报

39#
ID:96702 发表于 2015-12-7 19:56 | 只看该作者
要是增加1302时钟芯片就更好了。
回复

使用道具 举报

40#
ID:95809 发表于 2015-12-24 13:57 | 只看该作者
挺好的,已经下载了·1,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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