設計以八路搶答為基本理念。考慮到依需設定限時回答的功能,利用at89c51微控制器及外圍介面實現的搶答系統,利用微控制器的定時器/計數器定時和記數的原理,將軟、硬體有機地結合起來,使得系統能夠正確地進行計時。同時使液晶顯示屏能夠正確地顯示時間,並且給出指令的提示,揚聲器發生提示。系統能夠實現:在搶答中,只有開始後搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可在1-99s設定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵後有聲音的提示;搶答時間和回答問題時間倒記時顯示,滿時後系統計時有聲音提示;搶答倒計時時間和回答問題時間均可通過硬體的按鍵調整。
程式清單
#include//包含微控制器的標頭檔案
#include//包含_nop_()函式定義的標頭檔案
sbit rs=p2^0; //暫存器選擇位,將rs位定義為p2.0引腳
sbit rw=p2^1; //讀寫選擇位,將rw位定義為p2.1引腳
sbit e=p2^2;
sbit ring=p3^6;
sbit start=p3^0;
sbit ok=p3^1;
sbit add=p3^4;
sbit sub=p3^5;
sbit d0=p1^0;
sbit d1=p1^1;
sbit d2=p1^2;
sbit d3=p1^3;
sbit d4=p1^4;
sbit d5=p1^5;
sbit d6=p1^6;
sbit d7=p1^7;
unsigned char num=0;
unsigned char a=30,b=60,n=0,qd,hd,d;
void display();
void delay1ms()
void delay(unsigned char n)
bit lcd_bz()
void writeinstruction (unsigned char dictate)
void writedata(unsigned char y)
void lcdinitiate(void)
void display(unsigned char string)
}/*void bark()
*/void answer()
if(!d1)
if(!d2)
if(!d3)
if(!d4)
if(!d5)
if(!d6)
if(!d7)
}writeinstruction(0x01);
switch(n)
n=0;
//writeinstruction(0x01);
delay(5000);
d=b;
while(d+1) ;
} void display()
;unsigned char a1,b1;
a1=d/10;
tm[1]=a1+0x30;
b1=d%10;
tm[2]=b1+0x30;
writeinstruction(0x01);
delay(1);
display™;
}void main(void) //主函式 }
else
answer();} }
void int0() interrupt 0 //中斷服務程式
else if(!sub)
if(!ok)
break;}
}void t0_timer() interrupt 1 //中斷服務程式
void int1() interrupt 2 //中斷服務程式
else if(!sub)
if(!ok)
break;}}
void t1_timer() interrupt 3 //中斷服務程式
if(d0)
}
51微控制器
數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...
51微控制器
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...
51微控制器
設計包含乙個矩陣式鍵盤電路和動態顯示電路的微控制器應用系統,通過根據按下不同的數字按鍵 0 9 在數碼管上顯示出自己學號的後8位。各位大神幫忙挑挑錯,或者問題太大了可以幫忙寫乙個新的麼!萬分感謝!好著急 a 8255 equ 7cffh a口 b 8255 equ 7dffh b口 c 8255 e...