找回密码
 立即注册

QQ登录

只需一步,快速开始

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

定时器控制流水灯和数码管

[复制链接]
跳转到指定楼层
楼主
今天学习51的第二天,刚刚学了定时器,仿照例程写了一个定时器计时控制LED灯的程序,一次性通过然后直接上数码管
效果还不错
声明:板子不是金沙滩工作室的,在数码管显示可能和别的板子有很大的区别
先上图
可惜的是不能上传自己的视频。。
下面贴代码
定时器控制LED亮灭
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit LED = P1^0;

  6. void main ()
  7. {
  8.         uint count = 0;
  9.         LED = 0;
  10.         TMOD = 0X01;//设置T0为工作模式1
  11.         TH0 = 0XB8;        //装初值
  12.         TL0 = 0X00;
  13.         TR0 = 1;//启动T0
  14.         while (1)
  15.         {
  16.                 if (TF0 == 1)  //判断T0是否溢出
  17.                 {
  18.                         TF0 = 0;//T0溢出后,清零
  19.                         TH0 = 0XB8;//重新装初值
  20.                         TL0 = 0X00;
  21.                         count ++;
  22.                         if (count == 10) //判断T0是否溢出达到10次,即计时200ms
  23.                         {
  24.                                 count = 0;
  25.                                 LED = ~LED;       
  26.                         }
  27.                 }
  28.         }
  29. }
复制代码

定时器控制数码管
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define SHUMAGUAN P0

  6. sbit dula = P2^6;
  7. sbit wela = P2^7;

  8. uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,                                //数码管显示编码(1-F)
  9.                      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  10. void show_shumaguan ( i )
  11. {
  12.         dula = 0;        //开段选
  13.         SHUMAGUAN = table[i];//送数据
  14.         dula = 1;
  15.         dula = 0;

  16.         wela = 0; //开位选
  17.         SHUMAGUAN = 0x00;
  18.         wela = 1;
  19.         wela = 0;
  20. }

  21. void main()
  22. {       
  23.         uint count = 0;
  24.         uint i = 0;
  25.         TMOD = 0X01;//选择工作方式为1
  26.         TH0 = 0XB8;//装初值,定时20ms
  27.         TL0 = 0X00;
  28.         TR0 = 1;//启动T0
  29.         while (1)
  30.         {
  31.                 if (TF0 == 1)//判断T0是否溢出
  32.                 {
  33.                         TF0 = 0;//重装初值
  34.                         TH0 = 0XB8;
  35.                         TL0 = 0X00;
  36.                         count ++;
  37.                         if (count == 10)//判断计时到达500ms
  38.                         {
  39.                                 show_shumaguan(i);
  40.                                 i ++;
  41.                                 if ( i == 16 )
  42.                                         i = 0;
  43.                                 count = 0;

  44.                         }
  45.                 }
  46.         }
  47. }
复制代码

大神路过别笑!毕竟新手!还望鼓励!谢谢!

IMG_20161223_164220.jpg (1.98 MB, 下载次数: 80)

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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