}
if(key6 == 0) { delay(8); if(key6 == 0) { number = 6;
number_display = number;
} }
if(number_display != 0) { return number_display;
} else { return 0; }
}
/*----------------------------------------------------------- 抢答复位函数
------------------------------------------------------------*/ void reset_keyscan() { if(reset == 0) { delay(8);
if(reset == 0)
13
{
number_display = 0;
second=10; } }
}
/*----------------------------------------------------------- 主函数
------------------------------------------------------------*/ void main() { TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=0; P2=0x00;
while(1) {
reset_keyscan(); start_keyscan();
if(jia==0&&a[number-1]<9)
{
delay(10); while(jia==0) display(number_display,second); a[number-1]=a[number-1]+1;
}
if(jian==0&&a[number-1]>0)
14
{
delay(10); while (jian==0)
display(number_display,second);
a[number-1]=a[number-1]-1;
} while(action) {
while(!key_scan8()) //无人抢答 {
display(number_display,second); if(second == 0) { second = 10; break;
}
} TR0 = 0; key7=0;
delay(80);
display(number_display,second);
key7=1; action = 0;
break;
}
display(number_display,second);
}
}
/*-----------------------------------------------------------
15
定时中断
------------------------------------------------------------*/ void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%6; timer0_count ++; if(timer0_count == 20) { second --;
timer0_count = 0;
if(second==0) {
key7=0; delay(60);
key7=1;
} }
}
\\ 第四章
系统调试
16
系统调试包括硬件调试和软件调试,而且两者是密不可分的。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。
硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。
软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。
本设计的调试方法:先仿真,达到预期效果,
4.1 硬件调试问题分析
数码管显示问题:本次设计的最终方案是采用数码管显示屏实现显示功能,最初数码管显示不正常,亮度不够。通过调试发现这是由于数码管的驱动电流不够,头一次增加了数码管驱动74LS245芯片在P0口,数码管依旧亮度不够,经分析,驱动应该加在数码管的位选信号上,再一次在P2口上加上74LS245芯片,数码管亮度正常。
蜂鸣器异常启动问题:蜂鸣器的启动/关闭是通过单片机输出的控制信号来实现的,最初蜂鸣器始终不发出声音,经过仔细的检查原件及连接电路,找出了其不发声的原因,三级管用成了NPN型的8050,改动芯片为PNP型的8550后,蜂鸣器发音正常。
4.2 软件调试问题分析
蜂鸣器发声异常:蜂鸣器要发出声音是通过单片机的P1^6输出低电平来实现,最初仿真
17