AT89C52实现篮球计分计时器,并通过proteus仿真
一、設計環境與器材
Keil開發uVision4開發環境,window10系統。
二、設計內容
a.設計內容分析:
1.能夠記錄整個賽程的比賽時間并可同時用數碼管顯示。
2.可通過鍵盤修改當前的比賽成績。
3.能夠通過數碼管顯示籃球比賽成績。(由于數碼管數量的限制,比賽時間和分數輪流顯示)
4.比賽中場和結束時,能發出報警。
b.設計方案:
硬件使用網絡標號連接,用到的AT89C52單片機引腳口:P0口八個引腳接上拉電阻,用于驅動數碼管顯示,P2口中P2.3引腳接FM,控制蜂鳴器,P2.6控制段碼鎖存器鎖存數據,P2.7控制位碼鎖存器鎖存數據,P3口八個引腳接矩陣鍵盤的4個行和4個列。所有引腳均作為IO口使用。
LED采用6個八位共陰數碼管,前三位數碼管交替顯示分(minute)和第一個隊的比分(藍隊),后三位數碼管顯示時鐘秒數(second)和第二個隊的比分。用鎖存器將數碼管的位碼先鎖存,然后再鎖存段碼。LED和鎖存器之間加入上拉電阻(為了高電平驅動數碼管段碼顯示),數碼管從1~6交替顯示,利用視覺暫留,能同時顯示,顯示一段時間分鐘和秒鐘后轉到顯示分數,然后時間數和分數交替顯示。
?鎖存器:
鍵盤檢測:矩陣鍵盤的列加上拉電阻便于檢測(不需要程序內對列線置為高電平),矩陣鍵盤的行用來單片機置低電平,然后單片機進行列掃描。
蜂鳴器:三極管接蜂鳴器,高電平驅動蜂鳴器發聲音。
三、設計電路圖(仿真及實際電路圖)
四、C程序
下面列出了部分函數mian()
/******************************************************************** * 名稱 : main() * 功能 : 初始化 調用數碼管顯示 開啟中斷和定時器 * 輸入 : 無 * 輸出 : 無 ***********************************************************************/ void main() {//主函數uint8 i=0;uint8 number_key;P3=0xff;WELA = 0;DULA = 0;FM=0;//初始化數碼管引腳SEG_PIN = 0x00;delay(1);DULA=1;delay(1);DULA=0; ;//定時器0,方式1 tmod 00000001 0x01TMOD=0x01;TH0=(65536-50000)/256 ;//50msTL0=(65536-50000)%256 ;while(key_scan()!=13) //點擊鍵盤上的開始比賽 才能進行記錄分數,開始計數{};EA=1; //總中斷ET0=1; //定時器1中斷TR0=1;while(1){for(i=0;i<100;i++){number_key=key_scan();display(now_second,SECOND,1);key_function(number_key);key_last=number_key; //上一次的鍵值display(now_minute,MINUTE,0);number_key=key_scan();key_function(number_key);key_last=number_key; //上一次的鍵值}for(i=0;i<100;i++){number_key=key_scan();display(blue_score,BLUE,2) ;key_function(number_key);key_last=number_key; //記錄上一次的鍵值display(red_score,RED,2);number_key=key_scan();key_function(number_key);key_last=number_key; //上一次的鍵值}完整的程序和proteus工程圖:
(55條消息) 單片機應用技術,AT89C51,籃球比賽計分、計時器-單片機文檔類資源-CSDN文庫https://download.csdn.net/download/weixin_52013159/85436389如有疑惑,評論區聯系。
總結
以上是生活随笔為你收集整理的AT89C52实现篮球计分计时器,并通过proteus仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己来造钢筋字符-增加系统字体
- 下一篇: qq旋风离线服务器维护,QQ旋风停止服务