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

         }

    }

    }

  • 相关阅读:
    MVC页面打印成pdf插件Rotativa
    lambda表达式嵌套
    MVC+EF五种条件查询获取数据列表方式
    自己写的通用分页存储过程
    Llinux命令大全之软件管理命令
    .net开发 chrome核心浏览器组件
    常用的SQL日期操作
    Linux各版本介绍说明
    大数据环境搭建
    markdown语法链接新页面打开
  • 原文地址:https://www.cnblogs.com/johanxu/p/5066381.html
Copyright © 2011-2022 走看看