实验5定时器计数器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验五定时器/计数器设计实验报告
一、实验内容
1、采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数。按下开关10次,计算按键的平均时间,并通过数码管显示出来。
二、实验目的
1、了解定时器的各种工作方式。
2、掌握定时器/计数器的使用和编程方法。
三、实验设备
win7系统下的proteus7.8和ceil4联调
四、实验电路图
五、程序代码
#include
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);
}
}
}
六、实验结果
七、实验小结
通过实验,我了解了定时器的各种工作方式和定时器/计数器的使用和编程方法,为进一步学习打下基础。