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

基于51單片機的8路搶答器設(shè)計(三)!!!

04/18 08:26
626
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

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

共1個文件

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

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

程序編譯:Keil5 C51

編程語言:C語言

設(shè)計編號:【O03】

1.? 簡介

? 本文提出了一種基于51單片機的8路搶答器設(shè)計。該設(shè)計在硬件方面主要采用AT89C51單片機作為主控核心,結(jié)合獨立按鍵、數(shù)碼管蜂鳴器。搶答限定時間為20S,在按下開始搶答后開始倒計時,當(dāng)選手搶答后顯示對應(yīng)的搶答選手編碼,在按下答題計時鍵,選手在30S倒計時內(nèi)開始答題。支持修改搶答時間和答題時間。

2.? 主要功能

a.主持人按下?lián)尨痖_始按鍵,搶答者才可以開始搶答,數(shù)碼管搶答倒計時20S。

b.搶答者按下按鍵,數(shù)碼管顯示搶答者的編號和剩余時間倒計時。

c.按下答題計時鍵,選手在30S倒計時內(nèi)開始答題。

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

3.? 源程序(Keil5)

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

#include<at89x51.h>
#define uchar unsigned char
#define uint unsigned int
char s;
uchar num=0;
char time=20;	//搶答時間
char datitime=30;	//答題限時時間
uint tt,t1;	//T0,T1定時器定一秒時
bit flag,s_flag=1,b_flag,fall_flag;	//標志位
bit K_startcountflag,K_timecountflag;	//時間調(diào)整標志位
sbit K0=P3^0;
sbit beep=P3^7;         //蜂鳴器輸出口
sbit rled=P3^1;		//指示燈輸出口
sbit K1=P1^0;		
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;
sbit K_Time=P3^2;	//答題計時鍵
sbit K_startcount=P3^3;	//開始搶答時間加鍵
sbit K_startjian=P3^4;	//開始搶答時間減鍵
sbit K_timecount=P3^5;	//答題計時時間加鍵
sbit K_timejian=P3^6;	//答題計時時間減鍵
void delay(uchar ms)
{
	uchar y;
	for(;ms>0;ms--)
		for(y=120;y>0;y--);
}
uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x40};
uchar code tablewe[]={0XFE,0XFD,0XFB,0XF7};
void T0_Init(void)
{
	TMOD=0X01;
	TH0=(65536-2000)/256;
	TL0=(65536-2000)%256;
	TH1=(65536-2000)/256;
	TL1=(65536-2000)%256;
	ET0=1;
	ET1=1;
	EA=1;
	P0=0;
}
void Key_Scan(void)		//開始鍵掃描
{
	if(K0==0)
	{
		delay(10);
		if(K0==0)
		{
			while(!K0);
			TR0=1;
			s=time;
			tt=0;
			flag=1;
			s_flag=1;
			b_flag=1;
			num=0;
			beep=1;
			rled=1;
			fall_flag=0;	//清除違規(guī)標志位
			K_startcountflag=0;
			K_timecountflag=0;
		}
	}
}
void Scan(void)		//八路熱鍵掃描(哪個鍵先按下,哪個優(yōu)先級最高)
{
	if(K1==0)
	{
		delay(10);
		if(K1==0)
		{
			while(!K1);
			num=1;		//數(shù)碼管顯示1號"1"
			TR0=0;		//關(guān)閉定時器0,時間停止
			TR1=1;		//打開定時器1,使揚聲器響一聲
			s_flag=0;	//關(guān)閉開始鍵標志位,使再按其他七個鍵不會響應(yīng)
		}
	}
	if(K2==0)			//下面七個鍵的處理同上
	{
		delay(10);
		if(K2==0)
		{
			while(!K2);
			num=2;		
			TR0=0;
			TR1=1;
			s_flag=0;	//重要
		}
	}
	if(K3==0)
	{
		delay(10);
		if(K3==0)
		{
			while(!K3);
			num=3;
			TR0=0;
			TR1=1;
			s_flag=0;
		}
	}
	if(K4==0)
	{
		delay(10);
		if(K4==0)
		{
			while(!K4);
			num=4;
			TR0=0;
			TR1=1;
			s_flag=0;
		}
	}
	if(K5==0)
	{
		delay(10);
		if(K5==0)
		{
			while(!K5);
			num=5;
			TR0=0;
			TR1=1;
			s_flag=0;
		}
	}

4.? 仿真proteus8.6

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

初始界面:

開始倒計時:

選手搶答:

答題計時:

5.? 設(shè)計報告

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

6.? 資料清單

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

7.? 資料獲取鏈接

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

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

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

相關(guān)推薦