资源描述:
《lpc2000设计象棋比赛计时器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ARM大作业•某象棋快棋赛规则如下:红、黑双方对奕时间累计均为十分钟,超时判负;甲乙对奕方的计时器均用3位数码管显示,预定的初值均为十分钟,采用倒计时方式,通过按扭启动;由本方控制对方,比如甲方走完一步棋后必须按一次甲方的按键,该按键启动乙方倒计时。同理,乙方走完一步棋后必须按一次乙方的按键,该按键启动甲方倒计时。超时能发出报警声音,比赛结束。•利用你所学的知识,用LPC2000微控制器设计一个上述比赛用的计时器,尽可能详细给出软硬件设计、实现方案。一、软件流程图二、程序#defineucharunsignedcha
2、r#defineuintunsignedint#defineFpclk12000000//12MHz晶振#defineBEEPCON(1<<12)//0x00001000//定义P0.12脚控制B1,低电平蜂鸣/***甲方数码管****/#definewel1(1<<7)//0x00000080,定义p0.7脚控制数码管位选1,高电平选中#definewel2(1<<8)//0x00000100,定义p0.8脚控制数码管位选2#definewel3(1<<9)//0x00000200,定义p0.9脚控制数码管位选3/
3、***乙方数码管****/#definewel4(1<<23)//0x01000000,定义p0.23脚控制数码管位选1,高电平选中#definewel5(1<<24)//0x02000000,定义p0.24脚控制数码管位选2#definewel6(1<<25)//0x04000000,定义p0.25脚控制数码管位选3intcount1=600,count2=600;intkey1,key2;/*函数名称:定时器初始化函数******************//*函数功能:定时器时间为十分钟,为倒计时计数**/voi
4、dtime0_init(void)//定时器0初始化,定时时间1s{T0TC=0;//设置定时器0T0PR=99;//时钟100分频T0MCR=0x03;//设置T0MR0匹配后复位T0TC,并产生中断T0MR0=Fplck/100;//设置匹配值T0TCR=0x01;//启动定时器/*设置向量中断控制器*/VICIntSelect=VICIntSelect&(~(1<<4));//IRQVICVectCntl0=0x20
5、4;//向量IRQ通道0VICVectAddr0=(uint32)Timer0_ISR;//中
6、断服务地址Timer0_ISRVICIntEable=(1<<4);//使能中断}/*函数名称:中断服务函数*************************//*函数功能:控制甲乙两方时间的暂停和继续*********/void__irqTimer0_ISR(void){if(!key2)//乙按键后甲的时间减少count1--;display(count1);if(!key1)//甲按键后乙的时间减少count2--;display(count2);T0IR=0x01;//清除中断标志VICVectAddr=0x
7、00;//通知VIC中断处理结束}/*函数名称:甲方数码管显示函数********************//*函数功能:显示甲方计时**************************/voiddisplay1(intdis)//甲方显示数码管{ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9,共阴极intge,shi,bai;//PINSEL0&=0xfff00000;//设置引脚连接模块,将p0.0-9设置为GP
8、IO功能//IO0DIR
9、=0x00000177;//将p0.0-9设置为输出状态bai=dis/100;shi=(dis%100)/10;ge=dis%10;IO0SET=table[bai];//高电平亮,消隐IO0SET=wel1;//高电平选中delay_ns(100);IO0CLR=wel1;//关位选IO0SET=table[shi];IO0SET=wel2;delay_ns(100);IO0CLR=wel2;//关位选IO0SET=table[ge];IO0SET=wel3;delay_ns(100);
10、IO0CLR=wel3;//关位选}/*函数名称:乙方数码管显示函数********************//*函数功能:显示乙方计时**************************/voiddisplay2(intdis)//乙方显示数码管{ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,