资源描述:
《模拟掷骰子矿大--信科--王允臣》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、中国矿业大学电子设计实验需求:本游戏电路是模拟掷骰子,可供两人游戏。游戏规则:本游戏电路是模拟掷骰子,可供两人游戏。游戏者每按动一次按键可得到1-6范围内的两个数,并按下列规则决定胜负。1.第一场比赛,游戏者每人各按一次按键,所得两数之和为7和11者胜;若无人取胜,则进行第二场比赛;2.第二场比赛,游戏者每人各按一次按键,所得两数之和与第一场比赛相同者获胜,所得两数之和为7或11者负,若无人获胜或负,则重复进行,直至出现胜者或负者为止;功能要求:用两个计数器建立投骰子读数电路,读数锁存并用数码管显示。两计数器读数之和应显示并存储,以便于第二场比赛结果相比较。比赛结果可以用发光二极管或
2、数码管指示。显示模块如果硬件不同可以修改。。。#include#include//#include//#include#defineucharunsignedchar//宏定义用uchar代替unsignedchar#defineuintunsignedintsbitsmg_d=P3^6;//定义控制数码管数据的573的锁存端sbitsmg_w=P3^5;//定义控制数码管公共端的573的锁存端#definesmg_dataP1//定义之后可以用DATA_573代替P0sbitkey=P3^7;sbitbe
3、ep=P3^4;uintmem11,mem12,sum1,sum1_pre,sum1_next;uintmem21,mem22,sum2,sum2_pre,sum2_next;uinttotal=1;uintstate;//标志状态,是否已按下,1按下之后置为1,2按下之后置为0uintfirst;//first为1说明是第一次按键uintover;uintwin1,win2;uintled;uintii=0;uinttime=0;uints=0;uintcount_led;//*****************共阳数码管段码表****************************
4、************constunsignedchartable[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//******************函数声明************************************************voidLED1();voidLED2();voiddelay(uintz);voiddelay_50us(unsignedintt);//50US基准延时函数voiddisplay(unsig
5、nedchardis_data,unsignedchardis_bit);//数码管显示函数//**************************************************************************voidInit(){mem11=0;mem12=0;sum1=0;sum1_pre=0;sum1_next=0;mem21=0;mem22=0;sum2=0;sum2_pre=0;sum2_next=0;key=1;state=0;first=1;over=0;win1=0;win2=0;count_led=0;led=0;total=0;}
6、voidInit_Timer0(void){TMOD
7、=0x11;TH0=0x00;TL0=0x00;TH1=(65536-5000)/256;TL1=(65536-5000)%256;//50msEA=1;ET0=1;TR0=1;ET1=1;TR1=1;}voidmain(){Init();Init_Timer0();while(1){while(key==0);while(key!=0){//if(total<=15){display(total,1);display(16,2);}display(total,1);display(time,2);//if(total>15){/
8、/display(total/10,1);//display(total%10,2);//}display(sum2,3);display(mem22,4);display(mem21,5);display(sum1,6);display(mem12,7);display(mem11,8);if(over==0){//没结束if(key==0){//按键按下delay(20);if(key==0){//消抖total++;if(state==0){//第一