久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27017|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

八位競賽搶答器的單片機(jī)課程設(shè)計(jì) 仿真+源碼+論文

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:253682 發(fā)表于 2017-11-26 10:21 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Keilc課程設(shè)計(jì)

成績評定表
學(xué)生姓名
賈超
班級學(xué)號
140302*
專  業(yè)
測控
課程設(shè)計(jì)題目
八位競賽搶答器的設(shè)計(jì)



組長簽字:

成績

日期

             2017年  月  日


課程設(shè)計(jì)任務(wù)書
學(xué)  院
自動化與電氣工程
專 業(yè)
測控技術(shù)與儀器
學(xué)生姓名
賈超
班級學(xué)號
1403020313
課程設(shè)計(jì)題目
八位競賽搶答器的設(shè)計(jì)

實(shí)踐教學(xué)要求與任務(wù):
通過本課程設(shè)計(jì)使學(xué)生進(jìn)一步鞏固《KeilC程序設(shè)計(jì)》的基本概念、理論、分析方法和實(shí)現(xiàn)方法;增強(qiáng)學(xué)生軟件編程實(shí)現(xiàn)能力和解決實(shí)際問題的能力。
1、熟悉所確定的題目從問題需求,數(shù)據(jù)結(jié)構(gòu),程序結(jié)構(gòu),難點(diǎn)及關(guān)鍵技術(shù)等方面進(jìn)行分析,形成系統(tǒng)的設(shè)計(jì)方案;
2、根據(jù)方案設(shè)計(jì)硬件電路;
3、軟件編程并調(diào)試;
4、完成文檔整理,按照軟件工程的要求完成設(shè)計(jì)論文;
5、通過答辯的形式對程序的功能進(jìn)行評價(jià)與驗(yàn)收。


工作計(jì)劃與進(jìn)度安排:

第18周(12月26日-1月4日):布置設(shè)計(jì)任務(wù),查資料,完成總體設(shè)計(jì)框架,完善設(shè)計(jì)內(nèi)容,系統(tǒng)調(diào)試,驗(yàn)收答辯。



指導(dǎo)教師:
   2017年  月  日
專業(yè)負(fù)責(zé)人:
2017 年  月  日
學(xué)院教學(xué)副院長:
2017 年  月  日


Keilc課程設(shè)計(jì)
目錄
引言
1  設(shè)計(jì)背景
1.1課題背景
1.2設(shè)計(jì)要求
2  8位競賽搶答器系統(tǒng)簡介
2.1系統(tǒng)設(shè)計(jì)原理
2.2系統(tǒng)組成
3  系統(tǒng)硬件設(shè)計(jì)
3.1主控制器選擇
3.2 數(shù)碼管動態(tài)顯示電路
3.3 8位競賽搶答器與單片機(jī)的接口電路圖
3.4時(shí)鐘電路
3.5復(fù)位電路
3.6系統(tǒng)總體電路圖
4  程序設(shè)計(jì)
4.1系統(tǒng)運(yùn)行結(jié)果
4.2系統(tǒng)分析
附錄:源程序代碼            
參考文獻(xiàn)

引言

單片機(jī)的出現(xiàn)方便了人們的生活,所以單片機(jī)的使用也使搶答器電路更加簡單和實(shí)用。但是傳統(tǒng)搶答器具有以下問題有待解決:

  • 有的傳統(tǒng)搶答器由數(shù)字電路組成,在使用現(xiàn)場會有多名選手或代表團(tuán)參加比賽,所以會造成布線繁瑣麻煩,現(xiàn)場不美觀等問題;
  • 由于傳統(tǒng)搶答器由電子元器件集成制作而成,所以會造成可靠性低,元器件集成工藝復(fù)雜,花費(fèi)比較高等麻煩;

    3、由于傳統(tǒng)搶答器由數(shù)字電路構(gòu)成,所以可能造成搶答時(shí)控制不精確,功能單一等缺陷。

隨著科學(xué)技術(shù)的發(fā)展和普及,各種各樣的競賽越來越多, 其中搶答器的作用也就顯而易見。因此設(shè)計(jì)一種更易于使用和區(qū)分度高的搶答器成了非常迫切的任務(wù)。 現(xiàn)在單片機(jī)已進(jìn)入各個(gè)領(lǐng)域,以其功耗小、智能化而著稱。所以來利用單片機(jī)來設(shè)計(jì)搶答器便使以上問題得以解決。針對以上情況, 本課程通過Keilc軟件編程,Protues軟件仿真,設(shè)計(jì)出以AT89C51單片機(jī)為核心的八位搶答器,與晶振、數(shù)碼管、蜂鳴器等通過外圍接口實(shí)現(xiàn)的八路搶答器,利用單片機(jī)的延時(shí)電路、按鍵復(fù)位電路、時(shí)鐘電路、定時(shí)器/計(jì)數(shù)器等,設(shè)計(jì)八路搶答器不僅具有實(shí)時(shí)顯示選手的號碼和搶答時(shí)間的功能,同時(shí)還利用匯編語言,使其實(shí)現(xiàn)復(fù)位,定時(shí)和報(bào)警功能。本次設(shè)計(jì)的系統(tǒng)實(shí)用性強(qiáng),操作簡單,擴(kuò)展功能強(qiáng)。


1  設(shè)計(jì)背景1.1課題背景

各種知識競賽、文娛活動的廣泛開展,使搶答器成了必不可少的電子設(shè)備,它為參賽選手提供了公正、客觀、快速的裁決,已逐漸發(fā)展成為一種成型的電子產(chǎn)品,但市面上所售搶答器價(jià)格一般較貴且多為小規(guī)模集成電路構(gòu)成,其性能單一,工作起來不夠理想。本文介紹了通過Keilc軟件編程,及Protues軟件仿真,模擬出一種以AT89C51單片機(jī)為核心的智能搶答器,它充分利用了單片機(jī)系統(tǒng)的優(yōu)點(diǎn),具有結(jié)構(gòu)簡單、功能強(qiáng)大、可靠性好、成本較低的特點(diǎn)。它能根據(jù)不同的搶答輸入信號,經(jīng)過單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號相對應(yīng)的輸出信號,最后通過液晶顯示屏顯示相應(yīng)的路數(shù)和答題時(shí)間等。

1.2設(shè)計(jì)要求

本設(shè)計(jì)主要是介紹了單片機(jī)控制下的八路智能搶答器系統(tǒng),詳細(xì)介紹了其硬件和軟件設(shè)計(jì),并對其各功能模塊做了詳細(xì)介紹,其主要功能和指標(biāo)如下:

    (1)同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕表示。

(2)設(shè)置系統(tǒng)清除開關(guān)S和搶答控制開關(guān)S,該開關(guān)由主持人控制。

(3)搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,并在數(shù)碼管上顯示選手號碼。并且優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。

    (4)搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定。

    (5)當(dāng)主持人啟動“開始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí)。參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。如果定時(shí)時(shí)間已到,無人搶答,本次搶答無效,定時(shí)顯示器上顯示00。


2  8位競賽搶答器系統(tǒng)簡介

2.1系統(tǒng)設(shè)計(jì)原理

該搶答器系統(tǒng)的硬件設(shè)計(jì)是以單片機(jī)為中心控制模塊,采用模塊化設(shè)計(jì)的八路搶答器,具有四個(gè)模塊,分別為:按鍵輸入模塊、顯示模塊、時(shí)鐘與復(fù)位模塊、核心控制模塊。

2.2系統(tǒng)組成

按鍵輸入模塊共有10個(gè)按鍵,分為搶答按鍵和控制按鍵。搶答按鍵共有八個(gè),分別為S0―S7,供搶答選手進(jìn)行搶答使用,P1.0-P1.7口為八個(gè)按鍵搶答信號的輸入口,低電平有效。控制按鍵有2個(gè),分別為S8與S9,S8和S9分別為“清除/設(shè)置時(shí)間”和“開始鍵”, 其對應(yīng)的I∕O接口分P2.0與P2.1
    顯示模塊本系統(tǒng)采用七段數(shù)碼管顯示搶答選手及時(shí)間。

時(shí)鐘與復(fù)位模塊包括時(shí)鐘電路和復(fù)位電路,單片機(jī)的最小系統(tǒng)就是由時(shí)鐘電路、復(fù)位電路、電源電路及單片機(jī)構(gòu)成。單片機(jī)的時(shí)鐘信號用來提供單片機(jī)片內(nèi)各種操作的時(shí)間基準(zhǔn),單片機(jī)的時(shí)鐘信號通常用兩種電路形式得到:內(nèi)部振蕩方式和外部振蕩方式。復(fù)位操作則使單片機(jī)的片內(nèi)電路初始化,使單片機(jī)從一種確定的初態(tài)開始運(yùn)行。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位或開關(guān)復(fù)位。當(dāng)5l系列單片機(jī)的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。
    核心控制模塊就是人們所謂的CPU,它是整個(gè)系統(tǒng)的總控制部分,本系統(tǒng)的核心控制模塊為51系列的單片機(jī),只有我們通過軟件程序的編寫,并將程序?qū)懭雴纹瑱C(jī),該系統(tǒng)才會正確的工作。

3  系統(tǒng)硬件設(shè)計(jì)3.1主控制器選擇

主控制器選擇即為單片機(jī)的選擇,單片機(jī)實(shí)際上就是把CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器、I/O接口電路等微型機(jī)的主要部件集成在一塊芯片上,因此稱之為單片機(jī)。   

AT89C51單片機(jī)簡介:

AT89C51單片機(jī)主要有以下部件構(gòu)成:八位微處理器CPU、振蕩電路、總線控制部件、中斷控制部件、片內(nèi)Flash存儲器、片內(nèi)RAM、并行I/O接口、定時(shí)器和串行I/O接口。AT89C51單片機(jī)內(nèi)部由CPU、4KB的FPEROM ,128B的RAM,兩個(gè)16位的定時(shí)/計(jì)數(shù)器T0和T1,4個(gè)8位的I/O端P0、P1、P2、P3等組成。單片微機(jī)內(nèi)部最核心的部分是CPU,CPU按其功能可分為運(yùn)算器和控制器兩部分。控制器由程序計(jì)數(shù)器PC、指令儲存器、指令譯碼器、實(shí)時(shí)控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進(jìn)行譯碼,通過實(shí)時(shí)控制電路,在規(guī)定的時(shí)刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運(yùn)算器由算術(shù)邏輯器部件ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW,BCD碼運(yùn)算調(diào)整電路等組成。為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個(gè)通用寄存器B和一些專用寄存器,還增加了位處理邏輯電路的功能。

AT89C51引腳圖如圖3-1所示。

圖3-1 引腳圖


P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8個(gè)TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
    P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
    P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。
    P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。
    RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
    ALE∕P:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。
    PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個(gè)機(jī)器周期兩次PSEN有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的PSEN信號將不出現(xiàn)。
EA/VPP:當(dāng)保持低電平時(shí),則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時(shí),EA/VPP將內(nèi)部鎖定為RESET;當(dāng)EA/VPP端保持高電平時(shí),此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
    XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
    XTAL2:來自反向振蕩器的輸出。

3.2 數(shù)碼管動態(tài)顯示電路

在單片機(jī)的應(yīng)用系統(tǒng)中,顯示器是最常見的輸出設(shè)備,也是人機(jī)對話必不可少的部分。顯示器按其顯示形式分為分段式顯示器、點(diǎn)陣式顯示器和條圖(光柱)式顯示器。顯示器可用于數(shù)字、符號、文字、圖形和光柱顯示。七段數(shù)碼管顯示器是單片機(jī)開發(fā)中常用的輸出器件。它是由若干個(gè)發(fā)光二極管組成的,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆畫發(fā)亮。控制不同組合的二極管導(dǎo)通,就能顯示出各種字符。 常用的LED顯示屏有7段式和“米”字段之分,7字段單個(gè)數(shù)碼管內(nèi)共有八只發(fā)光二極管,7只為字段,可組成字形,第八個(gè)為小數(shù)點(diǎn)。故單個(gè)管有人稱為7段數(shù)碼管顯示,也有人稱為8段顯示。7段數(shù)碼顯示管內(nèi)部結(jié)構(gòu)如圖3-2所示。

圖3-2 內(nèi)部結(jié)構(gòu)圖
顯示屏外形尺寸如圖3-3所示。

圖3-3顯示屏的外形尺寸

顯示模塊電路連接圖如圖3-4所示:



圖3-4顯示模塊電路連接圖

3.3 8位競賽搶答器與單片機(jī)的接口電路圖

    AT89C51單片機(jī)P1.0~P1.7端口分別與S0~S7按鈕相連對應(yīng)8個(gè)不同的選手的搶答按鍵。選手通過搶答按鍵進(jìn)行搶答,單片機(jī)接收信號后內(nèi)部進(jìn)行處理并在顯示屏上顯示選手編號。內(nèi)部進(jìn)行鎖存。如圖3-5所示。

圖3-5 8位競賽搶答器與單片機(jī)的接口電路圖

3.4時(shí)鐘電路

單片機(jī)必須在時(shí)鐘的驅(qū)動下才能工作。AT89C51單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。無論何種形式,都需要外部附加電路,產(chǎn)生時(shí)鐘脈沖。
    外部時(shí)鐘方式就是直接將外部的振蕩脈沖通過XTALl或XTAL2接入單片機(jī),外部時(shí)鐘方式多用于多機(jī)系統(tǒng),以便各個(gè)單片機(jī)能夠同時(shí)工作。對外部震蕩信號無特殊要求,但需保證脈沖寬度不小于20ns,且頻率應(yīng)低于單片機(jī)所支持的最高頻率。
    內(nèi)部時(shí)鐘方式就是利用單片機(jī)芯片內(nèi)部的振蕩器,通過在引腳XTALl和XTAL2兩端跨接晶體振蕩器,構(gòu)成穩(wěn)定的自激振蕩器的方法,再由獲得的自激振蕩器發(fā)出穩(wěn)定的脈沖,直接送入芯片內(nèi)部的時(shí)鐘電路的方式。跨接的晶體振蕩器如果已經(jīng)起振,則會向XTAL2引腳上輸出一定幅值的正弦波。自激振蕩器的頻率取決于晶體振蕩器的頻率,常見的晶體振蕩器頻率有6MHz和12MHz。AT89C52單片機(jī)的時(shí)鐘頻率最高可為24Mz。
   本系統(tǒng)中采用的是內(nèi)部時(shí)鐘方式。時(shí)鐘電路如圖3-6所示。

圖3-6時(shí)鐘電路圖

從時(shí)鐘電路的示意圖中可以看到,單片機(jī)所跨接的晶體振蕩器旁邊還有兩個(gè)電容器C8和C9。C8和C9被稱為諧振電容,主要作用有兩點(diǎn):一是可以促使單片機(jī)系統(tǒng)快速起振;二是C8、C9具有對頻率進(jìn)行微調(diào)作用,有利于單片機(jī)系統(tǒng)振蕩頻率的穩(wěn)定,維持單片機(jī)的正常運(yùn)行。諧振電容的容值選擇,與所用的晶體振蕩器的頻率值有關(guān)。晶體振蕩器的振蕩頻率越高,相應(yīng)的諧振電容的容值也要提高。二者如果配合的好,可以發(fā)揮諧振電容的積極作用。反之,自激振蕩器頻率的穩(wěn)定性將受到影響。經(jīng)過大量的實(shí)際應(yīng)用,晶體振蕩器的頻率與諧振電容的容值之間形成了一定的固定搭配。例如:當(dāng)晶體振蕩器的頻率為12MHz時(shí),諧振電容的容值一般為30pF左右。
    確定系統(tǒng)中晶體振蕩器的頻率,我認(rèn)為與具體的應(yīng)用有關(guān)。理論上當(dāng)然希望單片機(jī)的運(yùn)算速度越快越好,即晶體振蕩器的頻率越高越好。但是,在有些情況下,單片機(jī)的外圍設(shè)備的速度無法匹配單片機(jī)的運(yùn)行速度。為了節(jié)約成本,可以選擇振蕩頻率較低的晶體振蕩器。基于這種考慮,本文中的晶體振蕩頻率設(shè)計(jì)為12MHz,諧振電容的容值選定為30pF。
    單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號頻率的倒數(shù),常用T=1/fosc表示。圖中時(shí)鐘頻率為12MHz,即fosc=12MHz,則時(shí)鐘周期為1/12µs。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號。
    為了減小寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作。在設(shè)計(jì)電路板時(shí),晶體振蕩器和諧振電容的位置應(yīng)盡可能地靠近單片機(jī)的XTALl和XTAL2引腳 。

3.5復(fù)位電路

使CPU進(jìn)入初始狀態(tài),從0000H地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。單片機(jī)本身不能自動進(jìn)行復(fù)位,必須配合相應(yīng)的外部復(fù)位電路才能實(shí)現(xiàn)。從實(shí)現(xiàn)系統(tǒng)復(fù)位的方法來看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。
硬件復(fù)位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時(shí)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個(gè)事實(shí)卻容易為不少編碼人員所忽視。
    軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從0000H地址開始執(zhí)行。對各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實(shí)際需要去主程序初始化過程中完成。而對中斷激活標(biāo)志的清除工作常被遺忘,因?yàn)樗鼪]有明確的位地址可供編程。有的編程人員用020000(LJMP 0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000H地址就完成了軟件復(fù)位,就是這類錯(cuò)誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進(jìn)行的工作,這時(shí)程序出錯(cuò)完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級中斷響應(yīng)。由于軟件看門是高級中斷,它將阻止說要中斷響應(yīng),由此可見清除中斷激活標(biāo)志的重要性。
    單片機(jī)系統(tǒng)在啟動運(yùn)行時(shí),首先完成的復(fù)位操作,即上電復(fù)位。其目的是使CPU和系統(tǒng)中其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。復(fù)位很重要,單片機(jī)有多種復(fù)位方式。這里僅介紹上電復(fù)位和按鍵復(fù)位這兩種常用的復(fù)位方式。
    上電復(fù)位常用的方法是使用電容器。利用電容器的充電特性達(dá)到滿足接通電源后,單片機(jī)實(shí)現(xiàn)自動復(fù)位的要求。
    單片機(jī)的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖3-7所示。



                                 圖3-7復(fù)位電路

在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(3.5V),需要的時(shí)間是10K*10uF=0.1S。也就是說在電腦啟動的0.1S內(nèi),電容兩端的電壓時(shí)在0-3.5V增加。這個(gè)時(shí)候10K電阻兩端的電壓為從5-1.5V減少(串聯(lián)電路各處電壓之和為總電壓)。所以在0.1S內(nèi),RST引腳所接收到的電壓是5V-1.5V。在5V正常工作的52單片機(jī)中小于1.5V的電壓信號為低電平信號,而大于1.5V的電壓信號為高電平信號。所以在開機(jī)0.1S內(nèi),單片機(jī)系統(tǒng)自動復(fù)位(RST引腳接收到的高電平信號時(shí)間為0.1S左右)。
    在單片機(jī)啟動0.1S后,電容C兩端的電壓持續(xù)充電為5V,這是時(shí)候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下的時(shí)候,開關(guān)導(dǎo)通,這個(gè)時(shí)候電容兩端形成了一個(gè)回路,電容被短路,所以在按鍵按下的這個(gè)過程中,電容開始釋放之前充的電量。隨著時(shí)間的推移,電容的電壓在0.1S內(nèi),從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個(gè)時(shí)候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機(jī)系統(tǒng)自動復(fù)位。
    復(fù)位電路的原理是單片機(jī)RST引腳接收到2uS以上的電平信號,只要保證電容的充放電時(shí)間大于2uS,即可實(shí)現(xiàn)復(fù)位,所以電路中的電容值是可以改變的。值得注意的是,在設(shè)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。

3.6系統(tǒng)總體電路圖
    系統(tǒng)總體電路圖如圖3-8所示。

    本設(shè)計(jì)主要是介紹了單片機(jī)控制下的8路競賽搶答器系統(tǒng),同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕S0~ S7表示。設(shè)置一個(gè)系統(tǒng)清楚和搶答控制開關(guān)S,該開關(guān)由主持人控制。搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,并在數(shù)碼管上顯示選手號碼。并且優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定。(如本次試驗(yàn)設(shè)定為50s)當(dāng)主持人啟動“開始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間為0.5s左右。參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。如果定時(shí)時(shí)間已到,無人搶答,本次搶答無效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。


圖3-8系統(tǒng)總體電路圖

4  程序設(shè)計(jì)

4.1系統(tǒng)運(yùn)行結(jié)果

8位競賽搶答器在正常工作的情況下,首先對控制系統(tǒng)進(jìn)行初始化,然后進(jìn)行鍵盤掃描,判斷主持人是否按下了“開始搶答”按鍵,如果按鍵沒有按下,則選手無法搶答;如果“開始搶答”按鍵按下則執(zhí)行倒計(jì)時(shí)子程序和顯示子程序,并調(diào)正常搶答處理子程序,如果。其中倒計(jì)時(shí)程序包括搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)。涉及的程序框圖如圖4-1,4-2,4-3所示。



    圖4-1 主程序流程圖
    定時(shí)器T1用于倒計(jì)時(shí),每次中斷為50ms,當(dāng)計(jì)數(shù)標(biāo)志為20時(shí)即為一秒,顯示數(shù)字減一。其流程圖如下:

     圖4-2 倒計(jì)時(shí)中斷流程圖

圖4-3主程序流程圖詳細(xì)介紹


4.2系統(tǒng)分析

由于這次的課設(shè)我們選擇了用AT89C51單片機(jī)來設(shè)計(jì)設(shè)計(jì)搶答器,很多東西都是臨時(shí)學(xué)的,像Proteus仿真軟件的使用以及keil軟件的使用,還有各種硬件的選擇和區(qū)分。我通過查資料和搜集有關(guān)的文獻(xiàn),學(xué)習(xí)使用各種軟件及焊接電路板,培養(yǎng)了自學(xué)能力和動手能力。在以往的傳統(tǒng)的學(xué)習(xí)模式下,我們可能會記住很多的書本知識,但是通過課程設(shè)計(jì),我們學(xué)會了如何將學(xué)到的知識轉(zhuǎn)化為自己的東西,并且由原先的被動的接受知識轉(zhuǎn)換為主動的尋求知識,這可以說是學(xué)習(xí)方法上的一個(gè)很大的突破。

對于單片機(jī)設(shè)計(jì),其硬件電路是比較簡單的,主要是解決程序設(shè)計(jì)中的問題。而程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力。它才是一個(gè)設(shè)計(jì)的靈魂所在。因此在整個(gè)設(shè)計(jì)過程中大部分時(shí)間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個(gè)子程序才是關(guān)鍵的問題所在,這需要對單片機(jī)的結(jié)構(gòu)很熟悉。因此可以說單片機(jī)的設(shè)計(jì)是軟件和硬件的結(jié)合,二者是密不可分的。通過這次課程設(shè)計(jì)我也發(fā)現(xiàn)自己的很多不足之處。在設(shè)計(jì)過程中我發(fā)現(xiàn)自己考慮問題很不全面,自己的專業(yè)知識掌握的很不牢固,所掌握的計(jì)算機(jī)應(yīng)用軟件還不夠多,我希望自己的這些不足之處能在今后的學(xué)習(xí)中得到改善。我的設(shè)計(jì)也還存在著一些缺陷,有待于在將來設(shè)計(jì)中進(jìn)一步提高,在此懇請老師批評指正。這次設(shè)計(jì)也讓我懂得細(xì)節(jié)決定成敗,在以后的設(shè)計(jì)中我會嚴(yán)格吸取教訓(xùn),做的更好!


單片機(jī)源程序如下:
  1. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  2. #define  TIMEQIANG  50

  3. sbit CHN_0  = P1^0;
  4. sbit CHN_1  = P1^1;
  5. sbit CHN_2  = P1^2;
  6. sbit CHN_3  = P1^3;
  7. sbit CHN_4  = P1^4;
  8. sbit CHN_5  = P1^5;
  9. sbit CHN_6  = P1^6;
  10. sbit CHN_7  = P1^7;

  11. sbit START_BUT  = P2^1;
  12. sbit CLEAR_BUT  = P2^0;
  13. sbit BEEP  = P3^7;
  14. //顯示
  15. sbit SMG_0  = P2^2;
  16. sbit SMG_1  = P2^3;
  17. sbit SMG_2  = P2^4;
  18. sbit SMG_3  = P2^5;
  19. #define SMG_PORT   P0
  20. Unsigned char code Dofly_table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x77,0x7c,0x39,0x5e,0x79,0x71};

  21. unsigned char ucCon_Page = 0;//顯示的界面控制


  22. void  Dis_Play(unsigned char uiDis_NumHigh,unsigned char uiDis_NumLow)
  23. {
  24. static unsigned char ucStep = 0;
  25. unsigned char ucDis_Dat = 0;
  26. switch(ucStep)
  27. {
  28. //2345  11
  29.    case 0 :               //主頻
  30.               SMG_PORT = 0XFF;
  31.               P3&=0Xf0;
  32.               ucDis_Dat = uiDis_NumHigh/10;
  33.               SMG_PORT = Dofly_table[ucDis_Dat];
  34.               P3 |=0X01;
  35.               ucStep++;
  36.               break;

  37.               case 1 :
  38.               SMG_PORT = 0XFF;
  39.               P3&=0Xf0;
  40.               ucDis_Dat = uiDis_NumHigh%10;
  41.               SMG_PORT = Dofly_table[ucDis_Dat];
  42.               P3 |=0X02;
  43.               ucStep++;
  44.               break;

  45.               case 2 :
  46.               SMG_PORT = 0XFF;
  47.               P3&=0Xf0;
  48.               ucDis_Dat = uiDis_NumLow/10;
  49.               SMG_PORT = Dofly_table[ucDis_Dat];
  50.               P3 |=0X04;
  51.               ucStep++;
  52.               break;

  53.               case 3 :
  54.               SMG_PORT = 0XFF;
  55.               P3&=0Xf0; ;
  56.               ucDis_Dat = uiDis_NumLow%10;
  57.               SMG_PORT = Dofly_table[ucDis_Dat];
  58.               //////////////
  59.               P3 |=0X08;
  60.     ucStep = 0;
  61.     break;
  62.   default: break;
  63. }
  64. }

  65. void DelayUs2x(unsigned char t)
  66. {  
  67. while(--t);
  68. }
  69. /*------------------------------------------------
  70. mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  71. unsigned char 是定義無符號字符變量,其值的范圍是
  72. 0~255 這里使用晶振12M,精確延時(shí)請使用匯編
  73. ------------------------------------------------*/
  74. void DelayMs(unsigned char t)
  75. {

  76. while(t--)
  77. {
  78.      //大致延時(shí)1mS
  79.      DelayUs2x(245);
  80.               DelayUs2x(245);
  81. }
  82. }


  83. /*------------------------------------------------
  84.                     主函數(shù)
  85. ------------------------------------------------*/

  86. void Init_Timer0(void)
  87. {
  88.               TMOD |= 0x01;                //使用模式1,16位定時(shí)器,使用"|"符號可以在使用多個(gè)定時(shí)器時(shí)不受影響                                
  89.               TH0=(65536-2000)/256;                              //重新賦值 2ms
  90.               TL0=(65536-2000)%256;
  91.               EA=1;            //總中斷打開
  92.               ET0=1;           //定時(shí)器中斷打開
  93.               TR0=1;           //定時(shí)器開關(guān)打開
  94.               PT1 = 1;
  95. }
  96.   char Start_Flag = 0;
  97. unsigned char Time_Use = 0;
  98. unsigned int uiDis_1S = 0;
  99. unsigned char ucTime = TIMEQIANG ;
  100. char  Beep = 6;
  101. unsigned char Beep_Time = 0;
  102. void main (void)
  103. {

  104.     unsigned char  ucChn_Num = 0;
  105.               BEEP = 1;
  106.               Init_Timer0();        //定時(shí)器0初始化


  107. while (1)           //主循環(huán)
  108.   {                 
  109.   ////////////////////
  110.   if(Start_Flag == 1)//可以搶答
  111.   {
  112.                 if(CHN_0 == 0)
  113.                 {
  114.                  DelayMs(10);//去抖動
  115.                  if(CHN_0 == 0)
  116.                   
  117. ……………………

  118. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼


完整的Word格式論文51黑下載地址(附仿真+程序源碼):
八路搶答器.rar (743.67 KB, 下載次數(shù): 717)




評分

參與人數(shù) 2黑幣 +51 收起 理由
347642831Q + 1 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂7 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:357642 發(fā)表于 2018-6-25 09:38 來自觸屏版 | 只看該作者
仿真圖上沒有喇叭啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:452950 發(fā)表于 2018-12-23 22:24 | 只看該作者
很好很強(qiáng)大
回復(fù)

使用道具 舉報(bào)

地板
ID:454036 發(fā)表于 2018-12-25 09:16 | 只看該作者
系統(tǒng)圖沒有喇叭啊
回復(fù)

使用道具 舉報(bào)

5#
ID:493224 發(fā)表于 2019-3-18 15:27 | 只看該作者
為什么有兩個(gè)顯示數(shù)碼管
回復(fù)

使用道具 舉報(bào)

6#
ID:568181 發(fā)表于 2019-6-20 20:37 | 只看該作者
好好,功能強(qiáng)大
回復(fù)

使用道具 舉報(bào)

7#
ID:569489 發(fā)表于 2019-6-22 14:54 | 只看該作者
寫的太好了  謝謝樓主
回復(fù)

使用道具 舉報(bào)

8#
ID:572202 發(fā)表于 2019-6-27 08:19 | 只看該作者
非常感謝樓主,我原本還一時(shí)想不出來沒有鎖存器怎么有鎖存功能。
回復(fù)

使用道具 舉報(bào)

9#
ID:514064 發(fā)表于 2019-7-8 10:30 | 只看該作者
很好,非常有幫助
回復(fù)

使用道具 舉報(bào)

10#
ID:660094 發(fā)表于 2019-12-9 22:10 | 只看該作者
大佬就是大佬
回復(fù)

使用道具 舉報(bào)

11#
ID:659106 發(fā)表于 2019-12-10 14:52 | 只看該作者
太強(qiáng)了
回復(fù)

使用道具 舉報(bào)

12#
ID:762374 發(fā)表于 2020-5-27 16:17 | 只看該作者
真的很優(yōu)秀。
回復(fù)

使用道具 舉報(bào)

13#
ID:772490 發(fā)表于 2020-6-8 10:10 | 只看該作者
謝謝樓主大大
回復(fù)

使用道具 舉報(bào)

14#
ID:775155 發(fā)表于 2020-6-10 15:41 | 只看該作者
感謝樓主!
回復(fù)

使用道具 舉報(bào)

15#
ID:774488 發(fā)表于 2020-6-11 21:53 | 只看該作者
為什么打不開啊
回復(fù)

使用道具 舉報(bào)

16#
ID:779046 發(fā)表于 2020-6-14 15:55 | 只看該作者
Eason張 發(fā)表于 2018-6-25 09:38
仿真圖上沒有喇叭啊

感謝樓主
回復(fù)

使用道具 舉報(bào)

17#
ID:785615 發(fā)表于 2020-6-21 10:38 | 只看該作者
太強(qiáng)大了
回復(fù)

使用道具 舉報(bào)

18#
ID:784492 發(fā)表于 2020-6-21 13:03 | 只看該作者
很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

19#
ID:752658 發(fā)表于 2020-7-13 15:38 | 只看該作者
太棒了,對我來說太有用了
回復(fù)

使用道具 舉報(bào)

20#
ID:840812 發(fā)表于 2020-11-10 12:09 | 只看該作者
時(shí)隔多年依舊有用,謝樓主
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品国产电影 | 色99视频 | 国产精品成人一区二区三区夜夜夜 | 亚洲色图综合 | 日本一二三区高清 | 国产精品久久久久久中文字 | 国产黄色小视频 | 免费性视频 | 美国一级黄色片 | 欧美在线视频网站 | 国产精品美女一区二区 | 99免费在线视频 | chengrenzaixian| 欧洲视频一区 | 欧美精品中文字幕久久二区 | 国产成人精品一区二区在线 | 国产午夜亚洲精品不卡 | 在线视频91 | 中文字幕乱码视频32 | 亚洲国产精品久久久久秋霞不卡 | 日韩 欧美 综合 | 久久亚洲欧美日韩精品专区 | 在线视频一区二区 | 亚洲高清成人在线 | 国产高清毛片 | 成人做爰9片免费看网站 | 手机看片169| 日本高清视频在线播放 | 91性高湖久久久久久久久_久久99 | 日韩av一区二区在线观看 | 91一区二区 | 欧美日韩国产高清视频 | 欧美精品在线一区 | 中文字幕在线一区二区三区 | 色爱综合网 | 久草免费视| аⅴ资源新版在线天堂 | www.日韩欧美| 欧美日韩在线一区二区三区 | 黄色在线免费播放 | 在线日韩 |