长汀无线电厂交流论坛

 找回密码
 注册
查看: 8361|回复: 52
打印 上一主题 下一主题

我也发个2051定时器的图

  [复制链接]
跳转到指定楼层
地板
 楼主| 发表于 2013-4-13 18:11:42 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 摇滚铁心 于 2013-4-13 18:13 编辑

已经正常使用了。电路图中2051的引脚看标号,软件里没有2051的库。我实际用的是1051这个块子,以前在这里买的2051里混了这么个家伙。

剪贴板2051.jpg (66.19 KB, 下载次数: 65)

剪贴板2051.jpg

1.rar

58.26 KB, 下载次数: 601

回复

使用道具 举报

53#
 楼主| 发表于 2015-3-18 22:56:18 | 只看该作者
这个东西每次使用都要设置时间,很麻烦。
回复 支持 反对

使用道具 举报

52#
 楼主| 发表于 2015-3-18 22:54:43 | 只看该作者
会不会是按键虚焊或者按键不良?
回复 支持 反对

使用道具 举报

51#
发表于 2015-3-13 08:42:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

50#
 楼主| 发表于 2013-7-31 22:51:38 | 只看该作者
在农村还勉强,偶尔会有几天晴朗的夜空。现在近视戴着眼镜,也不知道是天空变了还是戴眼镜看不清了。小时候看见清澈夜空中满天繁星的感觉现在都找不到了。
回复 支持 反对

使用道具 举报

49#
发表于 2013-7-29 07:34:33 | 只看该作者
回复 摇滚铁心 的帖子

现在的污染严重,还能看到天空吗?
回复 支持 反对

使用道具 举报

48#
 楼主| 发表于 2013-7-26 20:42:58 | 只看该作者
那我就不太清楚了。这几天在牧夫天文论坛逛逛,又勾起了买望远镜的欲望。小时候看见清澈夜空中满天繁星的感觉不知道还能不能找回一丝一毫。
回复 支持 反对

使用道具 举报

47#
 楼主| 发表于 2013-7-19 22:36:22 | 只看该作者
    void EX0_set()interrupt 0//set键
      {
                      EX0=0;
                      delay(10);
                      if(set==0)
                              {
                                      while(!set);
                                             
                                      TR0=0;
                                      e=e++;
                                      if(e>4)
                                              {
                                                      e=0;
                                                      TR0=1;//第五次按SET键则开始定时
                                                        out=1;
                                              }
                              }
                            EX0=1;
      }
会不会是倒数第三个大括号没有了?
回复 支持 反对

使用道具 举报

46#
 楼主| 发表于 2013-7-18 22:18:42 | 只看该作者
也许是某语句被接到注释后面,没有被编译。你可以试试把注释都删掉。
回复 支持 反对

使用道具 举报

45#
发表于 2013-7-18 12:52:21 | 只看该作者
回复 摇滚铁心 的帖子

编译时没有警告,也能通过。
回复 支持 反对

使用道具 举报

44#
 楼主| 发表于 2013-7-13 22:23:03 | 只看该作者
也许是自动换行造成编译出错。你仔细检查看看是哪里出错了。我好像也碰到过这个问题。
回复 支持 反对

使用道具 举报

43#
发表于 2013-7-13 18:32:39 | 只看该作者
摇滚铁心 发表于 2013-7-6 21:06
这几天想装LINUX,把前年跟坛友买的旧主板套装翻出来凑个主机,没想到几个硬盘都出了问题,折腾了几个晚上。 ...

就是下载1楼你的,直接烧写hex那个可以,复制编译的就不行。
回复 支持 反对

使用道具 举报

42#
发表于 2013-7-21 18:37:57 | 只看该作者
回复 摇滚铁心 的帖子

大括号有的。
回复 支持 反对

使用道具 举报

41#
发表于 2013-7-8 12:13:39 | 只看该作者
回复 社建电子 的帖子

这条语句直接写成:e++;就可以了。
回复 支持 反对

使用道具 举报

40#
发表于 2013-7-3 19:08:18 | 只看该作者
时间不走,设置10分钟,过了一个小时还是10分钟。
原来设置键无效,坛友告诉我改这里,改了后,设置可以了,但是时间不走。
    {
                                     while(!set);
                                     TR0=0;
                                     e=e++;【把这里改成了e=e+1按键就可以用了】
                                     if(e>4)
                        
回复 支持 反对

使用道具 举报

39#
 楼主| 发表于 2013-6-30 22:30:33 | 只看该作者
本帖最后由 摇滚铁心 于 2013-6-30 22:31 编辑

又或者是时间在走,但秒点没闪,你以为时间没走?这里的的问题或者前面的c参数的问题?
void display()
              {
                              P1=0xff;//消隐
                              ge=0;
                              shi=1;
                              bai=1;
                              qian=1;
                              P1=table[m%10];//gewei
                              delay(2);
                              P1=0xff;
                              ge=1;
                              shi=0;
                              bai=1;
                              qian=1;
                              P1=table[m/10];//shiwei
                              delay(2);
                              P1=0xff;
                              ge=1;
                              shi=1;
                               bai=0;
                              qian=1;
                              P1=table[h%10];//baiwei
                              delay(2);
                              P1=0xff;
                              ge=1;
                              shi=1;
                              bai=1;
                              qian=0;
                              P1=table[h/10];//qianwei
                              delay(2);
                              md=c%2;
                              delay(2);
              }

这里有c参数:
   void t0_time() interrupt 1
       {
              b=b++;
              if(b>=1250)
                      {
                              b=0;
                              c=c++;
                      }
                              if(c>=120)
                                      {
                                              c=0;
                                               m=m--;
                                      }
                                      if(m==0)
                                              if(h==0)
                                                      {          //当定时时间到后关闭定时器1,显示00:00不闪烁
                                                              ET0=0;
                                                              TR0=0;
                                                              P1=table[0];
                                                              md=0;
                                                              while(1)
                                                              {
                                                                      out=0;
                                                                      ge=0;
                                                                      shi=0;
                                                                      bai=0;
                                                                      qian=0;//全亮,继电器动作,整个程序将停在这里。
                                                              }
                                                      }
                                      if(m<0)
                                              {
                                                      m=59;
                                                      h=h--;
                                              }
      }


回复 支持 反对

使用道具 举报

38#
 楼主| 发表于 2013-6-30 22:19:44 | 只看该作者
这里对不对?
    void EX0_set()interrupt 0//set键
      {
                      EX0=0;
                      delay(10);
                      if(set==0)
                              {
                                      while(!set);
                                             
                                      TR0=0;
                                      e=e++;
                                      if(e>4)
                                              {
                                                      e=0;
                                                      TR0=1;//第五次按SET键则开始定时
                                                                                                                                                out=1;
                                              }
                              }
                              EX0=1;
      }

回复 支持 反对

使用道具 举报

37#
 楼主| 发表于 2013-6-26 21:00:09 | 只看该作者
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};开头这里就是段码定义,下面这里是显示子程序,把时和分的寄存器里的内容分成个十百千位,把对应段码定义里的数值发送到p1口。
void display()
              {
                              P1=0xff;//消隐
                              ge=0;
                              shi=1;
                              bai=1;
                              qian=1;
                              P1=table[m%10];//gewei
                              delay(2);
                              P1=0xff;
                              ge=1;
                              shi=0;
                              bai=1;
                              qian=1;
                              P1=table[m/10];//shiwei
                              delay(2);
                              P1=0xff;
                              ge=1;
                              shi=1;
                               bai=0;
                              qian=1;
                              P1=table[h%10];//baiwei
                              delay(2);
                              P1=0xff;
                              ge=1;
                              shi=1;
                              bai=1;
                              qian=0;
                              P1=table[h/10];//qianwei
                              delay(2);
                              md=c%2;
                              delay(2);
              }
回复 支持 反对

使用道具 举报

36#
 楼主| 发表于 2013-6-26 20:46:21 | 只看该作者
本帖最后由 摇滚铁心 于 2013-6-26 20:46 编辑

p1.0~p1.7分别对应a,b,c,d,e,f,g, : 。要加电阻限流的,不能直接焊接在单片机引脚上。单片机的I/O口的吸收电流也不大,笔画全亮的话就有三四十毫安的电流,驱动数码管还是加个三极管安全些。
回复 支持 反对

使用道具 举报

35#
发表于 2013-6-26 11:04:29 | 只看该作者
摇滚铁心 发表于 2013-6-25 22:45
Keil7.06版汉化

你编译时选对器件型号没?

找到原因了,keil没注册引起的。
现在可以用了。

还有,led的段码怎么定义引脚的,我想把数码管直接焊接在单片机引脚上,位码定义可以看到并更改,段码没看到在哪里设置的。
段码就:abcdefg冒号
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|Archiver|长汀无线电厂交流论坛  

GMT+8, 2024-5-4 15:20 , Processed in 0.768410 second(s), 20 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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