3.2.9 中场指示灯程序 void over() {
if((m==0)&&(n==0)) 当m,n均为0的时候,通过变量jie的值判断比赛 { 是否结束 if(jie>1)
如果jie>1,说明半场到了,比赛没有结束,
{ 令m=2,n=0,关中断,再次按下暂停键时候继续倒计时
m=2; 同是T1=1;delay(400) ; delay(400);,是蜂鸣器 n=0; 发声报警 EA=0;
T1=1; delay(400); T1=0;
while(1)
if(P1_0==0)
{
display(m,n,x,y); 刷新数码管,等待暂停减再次按下,跳出暂停
{
delay(1); if(P1_0==0) {
while(P1_0==0); EA=1; break; } }
}
20
jie--;
}
if(jie==1&&bujin==2) 如果jie==1&&bujin==2,说明比赛结束了, { 关闭中断,比赛秒表不再走动,同时不短刷新数码管,
EA=0; m=0;
n=0;
T1=1; 全场比赛结束蜂鸣器开始报警
delay(400); T1=0;
P1=0x3f; P1=0x3f上下半场指示灯同时点亮,比赛结束 while(1) }
3.2.10 主程序 void main()
display(m,n,x,y); 同时应当不断刷新数码管 } }
{ TMOD=0x01; 首先设置定时器工作方式 EA=1; ET0=1;
TH0=0xb1; 定时器送计数初值,EA=1,开中断,P3口电平拉高 TL0=0x10; P1=0x7f, 上半场指示灯点亮 TR0=1; TR0=1启动定时器 P3=0xff; P1=0x7f;
T1=0;
while(1) 主程序通过 while(1),反复调用循环体内的子程序 { 来执行相应的功能
keyjiafen1();
21
keyjianfen1();
key2(); if(zidong==1) zidong==1为key3()执行条件 key3(); key3()半场交换场地时自动交换双方 if(n==18&&bujin==0) 比赛分数子程序,所以仅当中场时调用 {
bujin=2;
} shijian();
key4();
over(); }
}
修改变量bujin的值,目的是设定over() 中第二个if语句的执行条件
22
4 . PROTEUS仿真
4.1 PROTEUS简介
Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。 ③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。
④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 4.2仿真过程
接通电源,计时显示即开始倒计时工作,上半场指示灯亮,计时初始设计为2分钟,按下A+1键实现对A的加分,每按下一次加1分,如图11.
23
RP1RESPACK-81C1191nFU1XTAL123456789X1C21nF18CRYSTALXTAL29RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617计时显示R11kC3291uF3031R210k12345678PSENALEEAA+1B+1P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7AT89C52回表按键时间快进A-1B-1暂停/启动GNDD1LED-REDD2LED-REDR30R1Q2NPNLS1SPEAKER 图11
同样可实现A和B的加减分,按下暂停/启动键可实现暂停和启动。
RP1RESPACK-8123456789计时显示A+1B+1回表按键时间快进A-1B-1暂停/启动GND 图12 24