仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計(jì)編號:S0048
1.主要功能:
本設(shè)計(jì)旨在設(shè)計(jì)一個基于51單片機(jī)的籃球比賽計(jì)分器仿真設(shè)計(jì),下面是設(shè)計(jì)的功能要求
1.可以在比賽期間隨時更新A和B隊(duì)的比分。
2.中場休息期間交換場地,交換A隊(duì)和B隊(duì)的位置。
3.當(dāng)添加比賽分?jǐn)?shù)時,如果有錯誤,可以手動更改賽場分?jǐn)?shù)。
4.具備籃球24秒進(jìn)攻時間倒計(jì)時,精確到0.01秒,進(jìn)攻時間結(jié)束時可以觸發(fā)警報。
需注意仿真中51單片機(jī)芯片是通用的,AT89C51,AT89C52都是51單片機(jī)的具體型號,內(nèi)核是兼容的。無論stc還是at都一樣,引腳功能都是一樣的,程序也是一樣的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
以下為本設(shè)計(jì)資料展示圖:
2.仿真
開始仿真
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后,數(shù)碼管顯示0,需要按下啟動/暫停按鍵開始計(jì)時。
當(dāng)系統(tǒng)啟動時,發(fā)光二極管數(shù)碼管按程序流程被點(diǎn)亮,顯示賽場比賽24秒倒計(jì)時和賽場比賽計(jì)分。沒啟動之前24秒倒計(jì)時時間顯示00.00。比賽分?jǐn)?shù)00:00.按下啟動按鍵后,24秒倒計(jì)時數(shù)碼管開始以0.01的精度倒計(jì)時。比賽狀態(tài)指示燈開始指示燈點(diǎn)亮,如果有A隊(duì)得分,可以通過A+按鍵按一下加一份。如果有錯誤需要修正可以按下A-,按一下減一份。B隊(duì)得分同理操作。如果比賽開始后有犯規(guī)或者其他需要暫停比賽的需要,可以按下啟動/暫停按鍵來暫停比賽,需要重新開始再按一下。24秒進(jìn)攻倒計(jì)時結(jié)束后蜂鳴器報警提醒。
下圖是中場A隊(duì)得分26分,B隊(duì)得分26分。需要交換場地再計(jì)分輕觸交換場地按鍵即可。比分會換過來。
交換后:
3. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合報告理解代碼含義。
void main()//主函數(shù)
{
uchar k=0;
beep=0;
TMOD|=0X11;//定時器設(shè)置
TH0=0XD8;
TL0=0XEF;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
ET1=1;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
while(1)
{
//點(diǎn)亮LED
if(start==0)
{
led1=1;
led2=1;
}
if(start==1)
{
led1=0;
led2=1;
}
if(start==2)
{
led1=1;
led2=0;
}
//顯示時間
P0=smgduan[fen/10];
smg1=0;
delay(50);
smg1=1;
P0=smgduan[fen%10]+0x80;
smg2=0;
delay(50);
smg2=1;
P0=smgduan[miao/10];
smg3=0;
delay(50);
smg3=1;
P0=smgduan[miao%10];
smg4=0;
delay(50);
smg4=1;
//顯示分?jǐn)?shù)
if(flag==0)
P0=smgduan[fena/10];
else
P0=smgduan[fenb/10];
smg5=0;
delay(50);
smg5=1;
if(flag==0)
P0=smgduan[fena%10];
else
P0=smgduan[fenb%10];
smg6=0;
delay(50);
smg6=1;
if(flag==1)
P0=smgduan[fena/10];
else
P0=smgduan[fenb/10];
smg7=0;
delay(50);
smg7=1;
if(flag==1)
P0=smgduan[fena%10];
else
P0=smgduan[fenb%10];
smg8=0;
delay(50);
smg8=1;
//按鍵檢測
if(start>=0)//調(diào)分?jǐn)?shù)
{
if(!k1 &&(k!=1))
{
k=1;
if(fena<99)
fena++;
}
if(!k2 &&(k!=2))
{
k=2;
if(fena>0)
fena--;
}
if(!k3 &&(k!=3))
{
k=3;
if(fenb<99)
fenb++;
}
if(!k4 &&(k!=4))
{
k=4;
if(fenb>0)
fenb--;
}
}
//啟動暫停
if(!k7 &&(k!=7))
{
k=7;
if(start==0)
{
start=1;
fen=24;
miao=0;
}
else
{
if(start==1)
start=2;
else
start=1;
}
}
//交換場地
if(start==0)
{
if(!k6 &&(k!=6))
{
k=6;
flag=!flag;
}
}
//清零
if(start==0)
{
if(!k5 &&(k!=5))
{
k=5;
fena=0;
miao=0;
fen=0;
fenb=0;
}
}
//24s
if(start>0)
{
if(!k8 &&(k!=8))
{
k=8;
start=1;
fen=24;
miao=0;
}
}
if(k1 && k2 && k3 && k4 && k5 && k6 && k7&& k8)
k=0;
}
}
4. 原理圖
原理圖使用AD繪制,可供實(shí)物參考,仿真不同于實(shí)物,經(jīng)驗(yàn)不足不要輕易搞實(shí)物。
Proteus仿真和實(shí)物作品的區(qū)別:
1.運(yùn)行環(huán)境:Proteus仿真是在計(jì)算機(jī)上運(yùn)行的,而實(shí)物則是在硬件電路板上運(yùn)行。
2.調(diào)試方式:在Proteus仿真中,可以方便地進(jìn)行單步調(diào)試和觀察變量值的變化,而在實(shí)物中則需要通過調(diào)試器或者串口輸出等方式進(jìn)行調(diào)試。
電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進(jìn)行電路連接的修改,而在實(shí)物中則需要通過硬件電路板和連接線進(jìn)行修改。
3.運(yùn)行速度:Proteus仿真通常比實(shí)物運(yùn)行速度快,因?yàn)榉抡媸腔谟?jì)算機(jī)運(yùn)行的,而實(shí)物則需要考慮電路板上的物理限制和器件的響應(yīng)時間等因素。
4.功能實(shí)現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實(shí)現(xiàn)不同的功能,而在實(shí)物中則需要根據(jù)電路設(shè)計(jì)和器件的性能進(jìn)行實(shí)現(xiàn)。
5. 設(shè)計(jì)報告
8554+字設(shè)計(jì)報告
6. 設(shè)計(jì)資料內(nèi)容清單&&下載鏈接
資料設(shè)計(jì)資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計(jì)報告、軟硬件設(shè)計(jì)框圖等。
0、常見使用問題及解決方法–必讀?。。?!
1、仿真圖
2、程序源碼
3、開題報告
4、原理圖
5、功能要求
6、設(shè)計(jì)報告
7、軟硬件流程框圖
8、講解視頻
Altium Designer 軟件資料
KEIL軟件資料
Proteus軟件資料
單片機(jī)學(xué)習(xí)資料
答辯技巧
設(shè)計(jì)報告常用描述
鼠標(biāo)雙擊打開查找更多51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接(可點(diǎn)擊):