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);

         }

    }

    }

  • 相关阅读:
    VS中的路径宏
    Eigen3
    Python3.6 import源文件与编译文件的关系
    使用C语言扩展Python3
    mysql.connector 事务总结
    C++ -- STL泛型编程(一)之vector
    JSP -- include指令与include动作的区别
    Rails -- 关于Migration
    ruby -- 进阶学习(八)自定义方法route配置
    ruby -- 进阶学习(七)strong parameters之permitted.has_key
  • 原文地址:https://www.cnblogs.com/johanxu/p/5066381.html
Copyright © 2011-2022 走看看