本次的项目是基于51单片机的计件器,项目内容为:实现计件器功能,这对于工厂中的货物计数具有实际意义;系统上电后自动设置检测距离20cm,小于该距离的物体会引起计数变化和蜂鸣器鸣响,每个物体仅能触发一次;使用两个数码管用于显示检测距离和物品个数;使用两个按键用于调整检测距离。
项目使用到了51单片机的四个中断源,分别为:外部中断0,定时器中断0,外部中断1,定时器中断1。基本上使用完了基础51内核的所有中断源,在两个定时器中断之间存在中断嵌套,是一份学习单片机中断的好实例!!
项目采用Proteus进行仿真实验,下图是项目的原理图,超声波传感器采用HC-SR04(SRF04)。
采用ad绘制了原理图PCB,版图大小8*9cm,空间较大,便于焊接。
部分代码如下,项目主要内容是:中断的嵌套使用、传感器的驱动代码、数码管显示代码。
void start()//测距初始化
{
TR=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TR=0;
}
int getdistance(void)
{
start();
while(!ECHO);
TR1=1;
while(ECHO);
TR1=0;
time=TH1*256+TL1;
TH1=0;
TL1=0;
s=(time*1.7)/100; //测得cm
if(flag==1||(s>700))
{
flag=0;
s=0;
return s;
}
return s;
}
完整项目包括:keilC语言代码+Proteus仿真原理图+ad原理图PCB+产品说明书