实验报告3--定时器1计数器实验

实  验  报  告

班    级          学号        姓  名      同组人            

实验日期            室温        大气压        成  绩       

 

第二篇:实验5定时器计数器实验报告

单片机实验五定时器/计数器设计实验报告

一、实验内容

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

二、实验目的

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

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

三、实验设备

win7系统下的proteus7.8和ceil4联调

四、实验电路图

五、程序代码

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

              }

       }

}

六、实验结果

七、实验小结

通过实验,我了解了定时器的各种工作方式和定时器/计数器的使用和编程方法,为进一步学习打下基础。

相关推荐