长汀无线电厂交流论坛

 找回密码
 注册
查看: 8364|回复: 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

回复

使用道具 举报

沙发
 楼主| 发表于 2013-4-13 21:25:43 | 显示全部楼层
不知道,这是我自己画的,程序也是现学现编的。2051也就这么几个脚,要驱动4个数码管也只能这么接了。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2013-4-14 22:00:44 | 显示全部楼层
我的数码管不是高亮的,我设计时取的电流差不多有10毫安,7个笔画就五六十毫安了,我怕2051吸收不了这么大的电流,就加了驱动三极管。
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2013-4-15 21:46:09 | 显示全部楼层
附件里就是,直接烧写用的.hex文件也有。原先还有个计时功能的,被砍掉了。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2013-4-16 23:01:57 | 显示全部楼层
本帖最后由 摇滚铁心 于 2013-4-16 23:12 编辑

跟英文无关啊,我都是把那些当做符号,按书本上的语句要求写下来而已。这种简单的程序真不难。我看的是郭天祥的《 新概念51单片机C语言教程——入门、提高、开发、拓展》133M就不上传了。只看了需要用到的部分,其它没看。呵呵
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2013-4-16 23:14:24 | 显示全部楼层
还下载了他的教学视频《[十天学会单片机和C语言编程]》5.7G
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2013-4-18 21:58:46 | 显示全部楼层
本帖最后由 摇滚铁心 于 2013-4-18 22:16 编辑

回复 社建电子 的帖子

东西都是在长汀这里买的,没买到6M晶振用的是7.2M。如果用6M晶振要改延时子程序的y参数。我那个延时子程序没做注释现在看不懂y参数是怎么定的了。数码管是共阳。

延时子程序:
void delay(uchar z)
        {
          uint x,y;
             for(x=z;x>0;x--)
                for(y=74;y>0;y--);
         }
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2013-4-18 22:05:23 | 显示全部楼层
回复 衡水家维 的帖子

屏的abcdefg分别接p1.0~p1.6,p1.7是秒点。屏的脚位要测量才行。
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2013-4-18 22:20:21 | 显示全部楼层
本帖最后由 摇滚铁心 于 2013-4-18 22:37 编辑

这个定时器现在我用来控制电动车充电器,限定充电时间。程序还有些该改进的地方,比如应该改成从最高位开始设置定时时间和最高位无效零消隐,这样才比较好。


点评

制作不错! 学习!  发表于 2013-7-5 23:34
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2013-4-19 22:01:59 | 显示全部楼层
我在这里买的拆机数码管,我也不知道引脚功能,也是靠测量。我一般不去记它,用到的时候就测测。还顺便检查了好坏。
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2013-5-8 22:13:32 | 显示全部楼层
我这只是需要用的才做,都是用手头上的东东,里面都是洞洞板其实单片机也是自由度相当大的东东,对程序精通的可以把电路设计得简单些,像我这样的初学者就只好把电路搞复杂些,程序就简单了,
回复 支持 反对

使用道具 举报

12#
 楼主| 发表于 2013-5-13 23:26:05 | 显示全部楼层
本帖最后由 摇滚铁心 于 2013-5-13 23:26 编辑

回复 社建电子 的帖子

这里有视频,我看的就是这个。《十天学会单片机和C语言编程》郭天祥老师教程

http://xidong.net/File001/File_54834.html
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2013-6-13 22:10:55 | 显示全部楼层
会不会是电路有不对的地方?用12兆晶振时间当然会很快,我的程序里的参数是对应7.2兆的。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2013-6-13 22:18:52 | 显示全部楼层
也许是编译时出了问题,你试试把我的注释删掉再编译看看。
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2013-6-13 22:25:27 | 显示全部楼层
  void main()//定时模式
        {
                                    out=0;
              EA=1;
              EX0=1;//开set键中断
              ET0=1;//开定时器0做计时基准
              TMOD=0x02;
              TH0=(256-240);
              TL0=(256-240);
             定时的基准在这里设置。你试计算一下看看我这里设置的是多少,再改成使用你的12兆晶振的。我自己都忘光了,还得再翻书再重新学习过,这太麻烦了。
回复 支持 反对

使用道具 举报

16#
 楼主| 发表于 2013-6-14 22:44:56 | 显示全部楼层
把 case 4和case 1里面的内容互换, case 2和case 3里面的内容互换,共有两处。这样就是从高位开始设置。符合使用习惯。
回复 支持 反对

使用道具 举报

17#
 楼主| 发表于 2013-6-25 22:45:13 | 显示全部楼层
本帖最后由 摇滚铁心 于 2013-6-25 22:48 编辑

Keil7.06版汉化

你编译时选对器件型号没?
回复 支持 反对

使用道具 举报

18#
 楼主| 发表于 2013-6-26 20:46:21 | 显示全部楼层
本帖最后由 摇滚铁心 于 2013-6-26 20:46 编辑

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

使用道具 举报

19#
 楼主| 发表于 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);
              }
回复 支持 反对

使用道具 举报

20#
 楼主| 发表于 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;
      }

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 18:50 , Processed in 0.594430 second(s), 22 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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