基于51單片機(jī)籃球24秒倒計時設(shè)計( proteus仿真+程序+設(shè)計報告+原理圖+講解視頻)
仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計編號:S0076
1. 主要功能:
基于51單片機(jī)的籃球24秒進(jìn)攻倒計時器設(shè)計
(1)用三位數(shù)碼管設(shè)計24秒計時器,顯示精度0.1秒。
(2)計時器為遞減計時模式,時間間隔為0.1秒。
(3)計時器可由按鍵控制,功能分別為:啟動、暫停/連續(xù)、清零。
(4)當(dāng)按下清零鍵時,計時器顯示00.0。當(dāng)按下啟動鍵時,計時器從24秒開始遞減計時工作。在計時器工作時,按下暫停/連續(xù)鍵,計時器停止計時,當(dāng)再按下暫停/連續(xù)鍵時,計數(shù)器將繼續(xù)倒計時工作。
(5)當(dāng)計時器遞減計時到零,計時器顯示00.0,同時紅色警告燈閃爍,當(dāng)按下清零鍵時,警告燈閃爍解除。
需注意仿真中51單片機(jī)芯片是兼容的,AT89C51,AT89C52是51單片機(jī)的具體型號,內(nèi)核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
2. 講解視頻:
講解視頻包含仿真運(yùn)行講解和代碼講解
3. 仿真設(shè)計
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。
開始仿真后數(shù)碼管顯示00.0
當(dāng)按下啟動鍵時,計時器從24秒開始遞減計時工作。在計時器工作時,按下暫停/連續(xù)鍵,計時器停止計時,當(dāng)再按下暫停/連續(xù)鍵時,計數(shù)器將繼續(xù)倒計時工作。
當(dāng)計時器遞減計時到零,計時器顯示00.0,同時紅色警告燈閃爍,當(dāng)按下清零鍵時,警告燈閃爍解除。
4. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合視頻理解代碼含義。
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^0;//按鈕
sbit k2=P3^1;
sbit k3=P3^2;
sbit led=P2^7;
sbit smg1=P2^0;//數(shù)碼管
sbit smg2=P2^1;
sbit smg3=P2^2;
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9,無小數(shù)點
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//顯示0~9,有小數(shù)點
uchar time=0,mode=0;//定時+模式
uint miao=0;
uchar sec=0;
//延時
void delay(uint i)
{
while(i--);
}
// 主函數(shù)定義
void main()
{
// 定義一個變量k用于記錄按鍵狀態(tài)
uchar k = 0;
// 設(shè)置定時器0工作在模式1(16位定時器)
TMOD |= 0X01;
// 設(shè)置定時器0的高8位初始值,計算得出0.1s的計時周期
TH0 = 0X3C;
// 設(shè)置定時器0的低8位初始值
TL0 = 0XB0;
// 打開定時器0中斷允許位
ET0 = 1;
// 打開總中斷開關(guān)
EA = 1;
// 主循環(huán),不斷檢測按鍵和更新顯示
while(1)
{
// 顯示部分:三位數(shù)碼管分別顯示當(dāng)前秒數(shù)的百位、十位和個位及十分位
P0 = smgduan0[miao / 100]; // 顯示百位
smg1 = 0;
delay(50); // 延遲以實現(xiàn)分段顯示效果
smg1 = 1;
P0 = smgduan1[miao % 100 / 10]; // 顯示十位
smg2 = 0;
delay(50);
smg2 = 1;
P0 = smgduan0[miao % 10]; // 顯示個位
smg3 = 0;
delay(50);
smg3 = 1;
完整代碼見文章末壓縮包
// 按鍵處理部分
// 檢測啟動鍵k1,當(dāng)按下且之前未按下時,啟動計時并設(shè)置miao為240表示24.0秒
if (!k1 && (k != 1))
{
k = 1;
TR0 = 1; // 啟動定時器0
miao = 240;
}
// 檢測暫停/連續(xù)鍵k2,當(dāng)按下且之前未按下時,切換定時器0的工作狀態(tài)
if (!k2 && (k != 2))
{
k = 2;
TR0 = !TR0; // 切換定時器工作狀態(tài)(啟動或停止)
}
// 檢測清零鍵k3,當(dāng)按下且之前未按下時,停止計時并將miao置零,同時點亮紅色警告燈led
if (!k3 && (k != 3))
{
k = 3;
TR0 = 0; // 關(guān)閉定時器
miao = 0;
led = 1; // 點亮警告燈
}
// 當(dāng)三個鍵都被釋放時,重置按鍵狀態(tài)變量k
if (k1 && k2 && k3)
k = 0;
}
}
5. 設(shè)計報告
6417字設(shè)計報告,內(nèi)容包括硬件設(shè)計、軟件設(shè)計、軟硬件框圖、調(diào)試、結(jié)論等
本課程設(shè)計項目正是圍繞這一關(guān)鍵設(shè)備展開,目標(biāo)是通過運(yùn)用51系列單片機(jī)的強(qiáng)大功能,并結(jié)合Proteus仿真軟件進(jìn)行綜合實踐訓(xùn)練,旨在設(shè)計并實現(xiàn)一款高精度、功能完備的籃球24秒進(jìn)攻倒計時控制系統(tǒng)。此系統(tǒng)不僅要求能夠以0.1秒為單位準(zhǔn)確遞減計時,還須具備靈活多樣的控制功能,如啟動、暫停/連續(xù)運(yùn)行以及一鍵清零等操作,滿足實際比賽中對計時器靈活性和可靠性的嚴(yán)格需求。
學(xué)生在完成該項目的過程中,將全面接觸和掌握單片機(jī)系統(tǒng)的硬件設(shè)計原理,包括數(shù)碼管顯示模塊、按鍵輸入模塊和LED狀態(tài)指示模塊的設(shè)計及連接;同時,在軟件層面,需要學(xué)習(xí)和編寫基于定時中斷機(jī)制的嵌入式程序代碼,確保計時過程的實時性和穩(wěn)定性。此外,通過Proteus仿真平臺進(jìn)行虛擬調(diào)試與驗證,可以直觀地觀察到系統(tǒng)工作全過程,幫助學(xué)生更好地理解硬件與軟件之間的交互關(guān)系,加深對實時控制技術(shù)的理解與應(yīng)用能力。
6. 原理圖
原理圖使用AD繪制,可供實物參考,仿真不同于實物,需要調(diào)試經(jīng)驗才能做出來。
Proteus仿真和實物作品的區(qū)別:
1.運(yùn)行環(huán)境:Proteus仿真是在計算機(jī)上運(yùn)行的,而實物則是在硬件電路板上運(yùn)行。
2.調(diào)試方式:在Proteus仿真中,可以方便地進(jìn)行單步調(diào)試和觀察變量值的變化,而在實物中則需要通過調(diào)試器或者串口輸出等方式進(jìn)行調(diào)試。
電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進(jìn)行電路連接的修改,而在實物中則需要通過硬件電路板和連接線進(jìn)行修改。
3.運(yùn)行速度:Proteus仿真通常比實物運(yùn)行速度快,因為仿真是基于計算機(jī)運(yùn)行的,而實物則需要考慮電路板上的物理限制和器件的響應(yīng)時間等因素。
4.功能實現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實現(xiàn)不同的功能,而在實物中則需要根據(jù)電路設(shè)計和器件的性能進(jìn)行實現(xiàn)。
7. 設(shè)計資料內(nèi)容清單&&下載鏈接
資料設(shè)計資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計報告、軟硬件設(shè)計框圖等。
0、常見使用問題及解決方法–必讀?。。。?/p>
1、程序代碼注釋
2、proteus仿真
3、功能要求
4、軟硬件流程圖
5、開題報告
6、設(shè)計報告
7、原理圖
8、講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊
答辯技巧
設(shè)計報告常用描述
鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計.url
下載鏈接
https://docs.qq.com/doc/DS3VObWtKbHNBUlFm