zoukankan      html  css  js  c++  java
  • 定时器/计数器设计实验

    一、  实验内容

        采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示出来。

    二、  实验目的

    了解定时器的各种工作方式

    掌握定时器/计数器的使用和编程方法

    三、  实验设备

    DELL台式机 + proteus版本6 + keilC51版本7

    四、  实验电路图(可打印)

     

     

    五、  程序流程图

     

     

    六、程序源码(可打印)

    #include<reg51.h>

    sbit P1_0=P1^0;

    unsigned char numcode[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88};

    unsigned char seqcode[4]={0x01,0x02,0x04,0x08};

    unsigned int num=0;

    void int1() interrupt 1

    {

    num++;

    TL0=0xb0;

    TH0=0x3c;

    }

    void DelayMS(unsigned int ms)

    {

    unsigned char i;

    while(ms--) for(i=0;i<120;i++);

    }

    void main()

    {

    unsigned char i=0;

    unsigned char dspcode[4];

    unsigned long t;

    P3=numcode[i];

    ET0=1;

    EA=1;

    TH0=0x3c;

    TL0=0xb0;

    TMOD=0x01;

    while(1)

    {

         if(P1_0==0)

         {

             TR0=1;

             i++;

             P3=numcode[i];

             while(P1_0==0);

             TR0=0;

             if(i==10)

             {

                 t=((TH0<<8)+TL0)/1000;

                 t=(t+50*num)/10;

                 dspcode[0]=numcode[(t/1000)%10]^0x80;

                 dspcode[1]=numcode[(t/100)%10];

                 dspcode[2]=numcode[(t/10)%10];

                 dspcode[3]=numcode[t%10];

                 break;

             }

         }

    }

    while(1)

    {

         for(i=0;i<4;i++)

         {

             P2=seqcode[i];

             P0=dspcode[i];

             DelayMS(5);

         }

    }

    }

  • 相关阅读:
    雨林木风操作系统有感
    Bitcoin P2P 虚拟货币原理详解
    SVN switch 用法详解
    Bitcoin P2P 货币:有史以来最危险的项目
    回旋线科普
    Mathematica 如何绘制双纵坐标轴的图像?
    c#数据库操作
    在自定义HttpHandler中无法使用Session
    VS2010安装因net framework4.0无法安装而失败的解决方法
    .net framework 4.0 0xc8000247错误解决
  • 原文地址:https://www.cnblogs.com/johanxu/p/5066381.html
Copyright © 2011-2022 走看看