• 方案介紹
    • 1.? 簡介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設(shè)計(jì)報(bào)告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的8路搶答器設(shè)計(jì)(四)!!!

04/18 08:33
689
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf

共1個(gè)文件

資料清單:C程序+仿真+設(shè)計(jì)報(bào)告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語言:C語言

設(shè)計(jì)編號(hào):【O04】

1.? 簡介

? 本文提出了一種基于51單片機(jī)的8路搶答器設(shè)計(jì)。該設(shè)計(jì)在硬件方面主要采用AT89C51單片機(jī)作為主控核心,結(jié)合獨(dú)立按鍵、LCD12864、蜂鳴器。搶答限定時(shí)間為10S,答題時(shí)間為15S,在按下開始搶答后開始倒計(jì)時(shí),當(dāng)選手搶答后顯示對應(yīng)的搶答選手編碼;在搶答結(jié)束后,選手須在15S內(nèi)答題,主持人根據(jù)答題結(jié)果予以加分減分。

2.? 主要功能

a.主持人按下?lián)尨痖_始按鍵,搶答者才可以開始搶答,搶答倒計(jì)時(shí)10S。

b.搶答者按下按鍵,LCD12864顯示搶答者的編號(hào)。

c.在搶答結(jié)束后,選手須在15S內(nèi)答題,主持人根據(jù)答題結(jié)果予以加分減分。

d.在開始搶答之前可以通過按鍵修改搶答時(shí)間和答題時(shí)間。

3.? 源程序(Keil5)

本設(shè)計(jì)采用keil5 C51軟件(內(nèi)附安裝包)實(shí)現(xiàn)程序設(shè)計(jì)。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

uchar mode=0;//模式 0:停止 1:搶答 2:答題 
uchar flag=0;//暫停模式
uchar time=0;//系統(tǒng)定時(shí)
uchar sec=0;//延時(shí)
uchar num=0;//選手編號(hào)
uchar miao1=0,miao=0;//倒計(jì)時(shí)
uchar shi1=0,shi2=0;//搶答+答題計(jì)時(shí)
uchar fen[]={10,10,10,10,10,10,10,10};//分?jǐn)?shù)
uchar cha=0;//查看模式
uchar beep_time=0;//蜂鳴器控制
//清空顯示
void clear()
{
	lcd_clear(0);               // 清屏
   	lcd_set_line(0);             // 設(shè)置起始行為0
}
//顯示"歡迎使用搶答器"
void disp1()
{
	display(0, 0 , str1);
	display(0, 1 , str2);
	display(0, 2 , str3);
	display(0, 3 , str4);
	display(0, 4 , str5);
	display(0, 5 , str6);
	display(0, 6 , str7);
}
//顯示比賽名稱和日期
void disp2()
{
	display(0, 2 , str5);//搶答比賽
	display(0, 3 , str6);
	display(0, 4 , str10);
	display(0, 5 , str11);
	Ds1302ReadTime();//讀取時(shí)間
	display_num(1,0,num2,num0);//年
	find(ds1302_time[6]/10);qqq=ppp;
	find(ds1302_time[6]%10);
	display_num(1,1,qqq,ppp);
	display(1, 2 , str12);
	find(ds1302_time[4]/10);qqq=ppp;//月
	find(ds1302_time[4]%10);
	display_num(1,3,qqq,ppp);
	display(1, 4 , str13);
	find(ds1302_time[3]/10);qqq=ppp;//日
	find(ds1302_time[3]%10);
	display_num(1,5,qqq,ppp);
	display(1, 6 , str14);
}
//顯示倒計(jì)時(shí)
void disp_time()
{
	find(miao/10);qqq=ppp;
	find(miao%10);
	display_num(3,0,qqq,ppp);
	display_num(3,1,char1,kong);
}
//顯示單人分?jǐn)?shù)
void disp_fen1()
{
	display(3, 4 , str25);
	display(3, 5 , str26);
	display(3, 6 , mao);
	find(fen[num-1]/10);qqq=ppp;
	find(fen[num-1]%10);
	display_num(3,7,qqq,ppp);
}
//顯示全部分?jǐn)?shù)
void disp_fen2()
{						  
	uchar i;
	for(i=0;i<4;i++)
	{
	find(i+1);
	display_num(i,0,kong,ppp);
	display(i, 1 , mao);
	find(fen[i]/10);qqq=ppp;
	find(fen[i]%10);
	display_num(i,2,qqq,ppp);
	}
	for(i=0;i<8;i++)
	{
	find(i+1);
	display_num(i,4,kong,ppp);
	display(i, 5 , mao);
	find(fen[i]/10);qqq=ppp;
	find(fen[i]%10);
	display_num(i,6,qqq,ppp);
	}
}
//顯示“搶答超時(shí)”
void disp3()
{	
	disp2();
	display(2, 2 , str5);
	display(2, 3 , str6);
	display(2, 4 , str8);
	display(2, 5 , str9);
}
//顯示“答題超時(shí)”
void disp4()
{	
	disp2();
	display(2, 2 , str6);
	display(2, 3 , str15);
	display(2, 4 , str8);
	display(2, 5 , str9);
}
//顯示“搶答開始”
void disp5()
{	
	disp2();
	display(2, 2 , str5);
	display(2, 3 , str6);
	display(2, 4 , str16);
	display(2, 5 , str17);
	disp_time();
}

4.? 仿真proteus8.6

? 本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導(dǎo)出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

初始界面:

開始倒計(jì)時(shí):

選手搶答:

答題加減分:

5.? 設(shè)計(jì)報(bào)告

設(shè)計(jì)報(bào)告主要包括硬件電路、軟件設(shè)計(jì)、仿真調(diào)試等等,僅供參考。

6.? 資料清單

設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說明+元件清單+操作視頻等。

7.? 資料獲取鏈接

百度網(wǎng)盤下載鏈接:【O04】百度網(wǎng)盤下載鏈接

更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集

  • 單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf
    下載

相關(guān)推薦