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

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

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

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

共1個(gè)文件

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

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

程序編譯:Keil5 C51

編程語(yǔ)言:C語(yǔ)言

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

1.? 簡(jiǎn)介

? 本文提出了一種基于51單片機(jī)的8路搶答器設(shè)計(jì)。該設(shè)計(jì)在硬件方面主要采用AT89C51單片機(jī)作為主控核心,結(jié)合獨(dú)立按鍵、數(shù)碼管、蜂鳴器。搶答限定時(shí)間為10S,在按下復(fù)位后顯示當(dāng)前選手分?jǐn)?shù),再按下開始搶答才有效,當(dāng)選手搶答后顯示對(duì)應(yīng)的搶答選手編碼,在倒計(jì)時(shí)20S內(nèi)評(píng)委對(duì)選手打分。

2.? 主要功能

a.主持人進(jìn)行復(fù)位,依次顯示8位選手的分?jǐn)?shù),8位選手分?jǐn)?shù)顯示結(jié)束后主持人按下?lián)尨痖_始按鍵,搶答者才可以開始搶答,數(shù)碼管搶答倒計(jì)時(shí)10S。

b.搶答者按下按鍵,數(shù)碼管顯示搶答者的編號(hào)和答題剩余時(shí)間倒計(jì)時(shí)20S

c.在20S內(nèi),搶答者答題正確,主持人按下加分按鍵,分?jǐn)?shù)加一,答錯(cuò)主持人按下減分按鍵,分?jǐn)?shù)減一。

3.? 源程序(Keil5)

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

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k0=P1^0;		
sbit k1=P1^1;
sbit k2=P1^2;
sbit k3=P1^3;
sbit k4=P1^4;
sbit k5=P1^5;
sbit k6=P1^6;
sbit k7=P1^7;

sbit beep=P3^7;				/*蜂鳴器*/
sbit ks=P2^4;				/*開始計(jì)時(shí)*/
sbit jiayi=P2^5;			/*分?jǐn)?shù)加1*/
sbit jianyi=P2^6;			/*分?jǐn)?shù)減1*/
sbit fw=P2^7;				/*復(fù)位*/
int flg=1;
bit flg1=0;
int t=0,s=0;

uchar qiangdanum=0x0b;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00};
uchar ge=0,shi=0;
uint num,time=10, fs=0;
int nums[]={5,5,5,5,5,5,5,5};
void kyy(void) ;
void displayfs(); 
void display();                         /*顯示函數(shù)*/
void kys();								/*設(shè)置按鍵函數(shù)*/
void kys2();							/*搶答按鍵函數(shù)*/
void delay(unsigned int z)              /*延遲函數(shù)*/
{
    unsigned int x,y;
    for(x=z;x>0;x--)
      for(y=110;y>0;y--);
} 
void intial()              
{
    TMOD=0X01;                     /*采用方式一,即十六位計(jì)數(shù)器*/
    TH0=(65536-50000)/256;         /*設(shè)置初始值,50ms中斷一次*/
    TL0=(65536-50000)%256;                                         
    EA=1;ET0=1;                 /*開啟總中斷源,定時(shí)器中斷*/ 

}  
void intia2()                                 
{	TMOD=0X10;                     /*采用方式一,即十六位計(jì)數(shù)器*/
    TH1=(65536-50000)/256;         /*設(shè)置初始值,50ms中斷一次*/
    TL1=(65536-50000)%256;                                         
     EA=1;ET1=1;                 /*開啟總中斷源,定時(shí)器中斷*/ 
	}
main()
{	intia2();
    intial();				    /*初始化*/
	beep=0;
	while(1)
	{ kys();

	if(flg1==1)
	    displayfs();
		else  
	    display();			   /*顯示函數(shù)*/
	   
		if(flg==0)
		{  
		    kys2();
		}
	}	  
}

void kys2()							/*搶答按鍵函數(shù)*/
{
    if(k0==0)                               /*開關(guān)0按下*/
    {
	    delay(5);
        if(k0==0)                        
        {	flg=1;
		    qiangdanum=1; 	   /* 1號(hào)選手搶答成功,數(shù)碼管顯示1*/
			beep=1;
			delay(1000);
			beep=0;
		
			time=20;
	
		}

4.? 仿真proteus8.6

? 本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過(guò)proteus8.6導(dǎo)出的,所以請(qǐng)盡量使用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)告+使用說(shuō)明+元件清單+操作視頻等。

7.? 資料獲取鏈接

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

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

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

相關(guān)推薦