任務描述 | 重難點 |
完成搶答器系統(tǒng)的軟硬件設計與調(diào)試,系統(tǒng)主要功能要求如下: 1. 在給定電路圖基礎上,完成8路搶答器設計; 2. 搶答成功后,顯示組號,同時蜂鳴器響一聲; 3. 搶答成功后,顯示20秒答題倒計時,計時時間到蜂鳴器響一聲; 3. 根據(jù)答題正確與否進行加、減分并顯示累計分數(shù)。 4. 設主持人復位鍵;主持人加、減分鍵; #include<reg51.h> sbit key1=P0^0; sbit key2=P0^1; sbit key3=P0^2; sbit key4=P0^3; sbit key5=P0^4; sbit key6=P0^5; sbit key7=P0^6; sbit key8=P0^7; sbit k1=P3^6; sbit k2=P3^7; sbit k3=P3^3; sbit wy=P3^4; sbit wk_key=P3^5; sbit ghr_key=P3^2; bit qd_hd,speaker_permit; bit grade_hxj; unsigned char duanma[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xa3,0xa1}; unsigned char fenshu[10]={0,0,0,0,0,0,0,0,0,0}; unsigned char weima[6]={0x01,0x02,0x04,0x08,0x10,0x20}; unsigned char xianshi[6]={0,0,0,0,0,0}; unsigned char saomiao_jishu, jishi,jishu,jishu1,jishu2,zuhao=0,fuhao1,jishu3,f_speaker; unsigned char jishi,miao,fen; unsigned int jishi1; unsigned char data_out; void chushihua (void) { zuhao=0; //組號 顯示 0, TMOD=0X11; EA=1; //設置初值;計時為0。 ET1=1;TR1=1; ET0=1;TR0=1; TH1=(65536-1000)/256; TL1=(65536-1000)%256; TH0=(65536-10000)/256; TL0=(65536-10000)%256; jishi=0;grade_hxj=0; qd_hd=0; speaker_permit=1; } void dtsm(void) //動態(tài)掃描子程序 { fen=fenshu[zuhao] ; xianshi[0]=duanma[zuhao/10]; xianshi[1]=duanma[zuhao%10]; xianshi[2]=duanma[miao/10]; xianshi[3]=duanma[miao%10]; xianshi[4]=duanma[fen/10]; xianshi[5]=duanma[fen%10]; saomiao_jishu++; if(saomiao_jishu==6) { saomiao_jishu=0; } P2= weima[saomiao_jishu];//位碼 P1=xianshi[saomiao_jishu];//段碼 } void preemptive_answer(void) //搶答子程序 { if(qd_hd==0) //允 許 搶 答 { if(key1==0) { zuhao=1; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } if(key2==0) { zuhao=2; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } if(key3==0) { zuhao=3; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } if(key4==0) { zuhao=4; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } if(key5==0) { zuhao=5; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } if(key6==0) { zuhao=6; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } if(key7==0) { zuhao=7; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } if(key8==0) { zuhao=8; miao=20;qd_hd=1; speaker_permit=0;grade_hxj=1; } } if(k3==0) //開始 { miao=10;qd_hd=0 ; } if(qd_hd==1) //計 數(shù) { jishu2++; if(jishu2==200) { jishu2=0; miao--; if((miao==19)||(miao==0)) { speaker_permit=1; } if(miao==1)speaker_permit=0; if(miao==0xff)miao=0; } } if(wk_key==0) //復 位 { zuhao=0; miao=0; qd_hd=0; fen=0; grade_hxj=0; } if(grade_hxj==1) { if(k1==0) //加 分 { fenshu[zuhao]=fenshu[zuhao]+1; fen=fenshu[zuhao]; while(k1==0); } if(k2==0) //減 分 { fenshu[zuhao]=fenshu[zuhao]-1; fen=fenshu[zuhao]; while(k2==0); } } } void zd(void) interrupt 3 //蜂鳴 (中斷) { TH1=(65536-8000)/256; TL1=(65536-8000)%256; jishu2++; if(jishu2==250) { jishu2=0; miao--; if(miao==0xff)miao=0; } if(miao==0)qd_hd=1; dtsm(); preemptive_answer(); } void zd1(void) interrupt 1 //蜂鳴(中斷) { TH0=(65536-1000)/256; TL0=(65536-1000)%256; if(speaker_permit==0) { f_speaker++; if(f_speaker==1) { f_speaker=0; ghr_key=~ghr_key; } } if(wy==0) { zuhao++; if(zuhao==9) { zuhao=0; fen=fenshu[zuhao] ; } while(wy==0); } } void main(void) { chushihua(); while(1); } [qq]1149795308[/qq] ![]() | 1. 蜂鳴器的控制; 2. 加減分功能的設計; 3. 各種信息的交替顯示; 4.系統(tǒng)的統(tǒng)調(diào)。 |
54.31 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |