找回密码
 立即注册

QQ登录

只需一步,快速开始

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

大婶们,请问如何用单片机所实现0-59循环跑秒,然后把定时数值(,秒数)显示在led上

[复制链接]
跳转到指定楼层
楼主
ID:100791 发表于 2015-12-28 08:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大婶们,请问如何用单片机所实现0-59循环跑秒,然后把定时数值(,秒数)显示在led上
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:99538 发表于 2016-1-3 11:18 | 只看该作者
对51单片机,12m晶振,先设定时器为方式1,在设定时50ms,打开中断,打开定时器,定时器每计20次,送数码管显示,到10,第二个数码管加1,第一个数码管清零。
回复

使用道具 举报

板凳
ID:79544 发表于 2016-1-3 14:16 | 只看该作者
给你个程序你研究,其实论坛里很多程序你怎么不找
  1. /******************************************************
  2.         功能  :二组2位数码管分别显示1秒加一和减一
  3.                        
  4.         单片机:STC12C5A60S2
  5.         晶振  :11.0582M
  6.         作者  :苏义江
  7.         时间  :2016-1-2
  8.         注释  :在大数码管实验板实验通过,用定时器0定时
  9. ****************************************************/
  10. #include <reg52.h>
  11. //#include <intrins.h>

  12. sbit  wei= P0^6;   //
  13. sbit  duan = P0^7;   //

  14. #define uchar unsigned char
  15. #define uint  unsigned int

  16. uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
  17. 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//共阳LED段码表

  18. uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位码
  19. uchar t,a,b,c,d,shi=90,ge=0;//定义变量
  20. void delay(uint z)
  21. {
  22.         uint x,y;
  23.         for(x=z;x>0;x--)
  24.         for(y=610;y>0;y--);     
  25. }
  26. void init()//定时器0初始化
  27. {
  28.         TMOD=0X01;
  29.         TH0=0X4C;//11.0592M 50ms初值
  30.         TL0=0X00;
  31.         ET0=1;
  32.         TR0=1;
  33.         EA=1;
  34.         t=0;//计数初始为0
  35. }
  36. void display()//显示函数
  37. {
  38.         a=ge/10;
  39.         b=ge%10;

  40.         c=shi/10;
  41.         d=shi%10;
  42.     wei=1;
  43.         P2=0xfe;
  44.         wei=0;
  45.         duan=1;
  46.         P2=table1[a];
  47.         duan=0;
  48.         delay(5);
  49.     P2=0xff;

  50.         wei=1;
  51.         P2=0xfd;
  52.         wei=0;
  53.         duan=1;
  54.         P2=table1[b];
  55.         duan=0;
  56.         delay(5);
  57.     P2=0xff;
  58.         wei=1;
  59.         P2=0xfb;
  60.         wei=0;
  61.         duan=1;
  62.         P2=table1[c];
  63.         duan=0;
  64.         delay(5);
  65.     P2=0xff;
  66.         wei=1;
  67.         P2=0xf7;
  68.         wei=0;
  69.         duan=1;
  70.         P2=table1[d];
  71.         duan=0;
  72.         delay(5);
  73.     P2=0xff;
  74. }

  75. void main()
  76. {
  77.         init();
  78.     while(1)
  79.    {
  80.                 display();                               
  81.    }
  82. }
  83. void t0() interrupt 1//定时器0中断服务函数
  84. {
  85.         TH0=0X4C;
  86.         TL0=0X00;
  87.         t++;
  88.         if(t==20)//1秒到
  89.         {
  90.                 t=0;//计数清零
  91.                 ge++;
  92.                 shi--;
  93.                 if(ge==90)               
  94.                         ge=0;                                                               
  95.                  if(shi==0)
  96.                         shi=90;
  97.         }
  98. }
复制代码
回复

使用道具 举报

地板
ID:101741 发表于 2016-1-4 12:58 来自手机 | 只看该作者
腾飞的龙 发表于 2016-1-3 14:16
给你个程序你研究,其实论坛里很多程序你怎么不找

使用定时器控制时间,每经过1s让计数加1,计数到60后给计数赋予0重新计数,再用数码管的动态显示就行了。
回复

使用道具 举报

5#
ID:79544 发表于 2016-1-5 09:00 | 只看该作者
你把这个程序一改不就是嘛。把减减的那块去掉。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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