找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5143|回复: 0
收起左侧

00-59秒计时器的proteus仿真电路及C语言程序设计

[复制链接]
ID:152472 发表于 2016-12-8 20:46 | 显示全部楼层 |阅读模式
例3 00-59秒计时器的proteus仿真电路及C语言程序设计

0.png

  1. #include <REG51.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uint sec;


  5. uint tcnt;
  6. unsigned char table[]=
  7.    {0xc0,0xf9,0xa4,0xb0,0x99,
  8.    0x92,0x82,0xf8,0x80,0x90,
  9.    0xbf};
  10.    //共阴数码管 0-9  '-'  

  11. //显示延时 函数
  12. void delay(unsigned int z)
  13. {
  14.         unsigned int x;
  15.         unsigned char y;
  16.         for(x=z;x>0;x--)
  17.                 for(y=200;y>0;y--);       
  18. }
  19. void display()
  20. {   

  21. P3=0xfd;P2=0x00;
  22. P2=table[sec%10];
  23.   delay(3);


  24. P3=0xfe;P2=0x00;
  25. P2=table[sec/10];
  26. delay(3);


  27. }


  28. main()
  29. {
  30.          
  31.        TMOD=0x02;               //设置模式为定时器T0的模式2 (8位自动重装计数初值的计数值)        
  32.        TH0=0x06;                //设置计数器初值,靠TH0存储重装的计数值X0=256-250=6
  33.        TL0=0x06;
  34.        TR0=1;                   //启动T0
  35.        ET0=1;                   //开启定时器T0中断允许
  36.        EA=1;

  37. while(1)
  38.         {   
  39.          
  40. display();
  41.            
  42.         }
  43. }
  44. void t0(void)interrupt 1 using 0      //t0的中断程序
  45. {
  46.        tcnt++;
  47.        if(tcnt==4000)//定时器的定时计数,4000次250us为1秒
  48.        {
  49.            tcnt=0;
  50.            
  51.            sec++;
  52.            if(sec==60)
  53.            {     
  54.                sec=0;
  55.                
  56.            }
  57.        }
  58. }

复制代码

0.png

所有资料下载:
例3 00-59秒计时器的proteus仿真电路及C语言程序设计.zip (47.7 KB, 下载次数: 43)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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