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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 26671|回復: 19
收起左側

八位競賽搶答器的單片機課程設計 仿真+源碼+論文

  [復制鏈接]
ID:253682 發表于 2017-11-26 10:21 | 顯示全部樓層 |閱讀模式
Keilc課程設計

成績評定表
學生姓名
賈超
班級學號
140302*
專  業
測控
課程設計題目
八位競賽搶答器的設計



組長簽字:

成績

日期

             2017年  月  日


課程設計任務書
學  院
自動化與電氣工程
專 業
測控技術與儀器
學生姓名
賈超
班級學號
1403020313
課程設計題目
八位競賽搶答器的設計

實踐教學要求與任務:
通過本課程設計使學生進一步鞏固《KeilC程序設計》的基本概念、理論、分析方法和實現方法;增強學生軟件編程實現能力和解決實際問題的能力。
1、熟悉所確定的題目從問題需求,數據結構,程序結構,難點及關鍵技術等方面進行分析,形成系統的設計方案;
2、根據方案設計硬件電路;
3、軟件編程并調試;
4、完成文檔整理,按照軟件工程的要求完成設計論文;
5、通過答辯的形式對程序的功能進行評價與驗收。


工作計劃與進度安排:

第18周(12月26日-1月4日):布置設計任務,查資料,完成總體設計框架,完善設計內容,系統調試,驗收答辯。



指導教師:
   2017年  月  日
專業負責人:
2017 年  月  日
學院教學副院長:
2017 年  月  日


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

引言

單片機的出現方便了人們的生活,所以單片機的使用也使搶答器電路更加簡單和實用。但是傳統搶答器具有以下問題有待解決:

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

    3、由于傳統搶答器由數字電路構成,所以可能造成搶答時控制不精確,功能單一等缺陷。

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


1  設計背景1.1課題背景

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

1.2設計要求

本設計主要是介紹了單片機控制下的八路智能搶答器系統,詳細介紹了其硬件和軟件設計,并對其各功能模塊做了詳細介紹,其主要功能和指標如下:

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

(2)設置系統清除開關S和搶答控制開關S,該開關由主持人控制。

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

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

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


2  8位競賽搶答器系統簡介

2.1系統設計原理

該搶答器系統的硬件設計是以單片機為中心控制模塊,采用模塊化設計的八路搶答器,具有四個模塊,分別為:按鍵輸入模塊、顯示模塊、時鐘與復位模塊、核心控制模塊。

2.2系統組成

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

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

3  系統硬件設計3.1主控制器選擇

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

AT89C51單片機簡介:

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

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

圖3-1 引腳圖


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

3.2 數碼管動態顯示電路

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

圖3-2 內部結構圖
顯示屏外形尺寸如圖3-3所示。

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

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



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

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

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

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

3.4時鐘電路

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

圖3-6時鐘電路圖

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

3.5復位電路

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



                                 圖3-7復位電路

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

3.6系統總體電路圖
    系統總體電路圖如圖3-8所示。

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


圖3-8系統總體電路圖

4  程序設計

4.1系統運行結果

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



    圖4-1 主程序流程圖
    定時器T1用于倒計時,每次中斷為50ms,當計數標志為20時即為一秒,顯示數字減一。其流程圖如下:

     圖4-2 倒計時中斷流程圖

圖4-3主程序流程圖詳細介紹


4.2系統分析

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

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


單片機源程序如下:
  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延時函數,含有輸入參數 unsigned char t,無返回值
  71. unsigned char 是定義無符號字符變量,其值的范圍是
  72. 0~255 這里使用晶振12M,精確延時請使用匯編
  73. ------------------------------------------------*/
  74. void DelayMs(unsigned char t)
  75. {

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


  83. /*------------------------------------------------
  84.                     主函數
  85. ------------------------------------------------*/

  86. void Init_Timer0(void)
  87. {
  88.               TMOD |= 0x01;                //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                                
  89.               TH0=(65536-2000)/256;                              //重新賦值 2ms
  90.               TL0=(65536-2000)%256;
  91.               EA=1;            //總中斷打開
  92.               ET0=1;           //定時器中斷打開
  93.               TR0=1;           //定時器開關打開
  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();        //定時器0初始化


  107. while (1)           //主循環
  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黑下載附件…………
復制代碼
0.png

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

評分

參與人數 2黑幣 +51 收起 理由
347642831Q + 1 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:357642 發表于 2018-6-25 09:38 來自手機 | 顯示全部樓層
仿真圖上沒有喇叭啊
回復

使用道具 舉報

ID:452950 發表于 2018-12-23 22:24 | 顯示全部樓層
很好很強大
回復

使用道具 舉報

ID:454036 發表于 2018-12-25 09:16 | 顯示全部樓層
系統圖沒有喇叭啊
回復

使用道具 舉報

ID:493224 發表于 2019-3-18 15:27 | 顯示全部樓層
為什么有兩個顯示數碼管
回復

使用道具 舉報

ID:568181 發表于 2019-6-20 20:37 | 顯示全部樓層
好好,功能強大
回復

使用道具 舉報

ID:569489 發表于 2019-6-22 14:54 | 顯示全部樓層
寫的太好了  謝謝樓主
回復

使用道具 舉報

ID:572202 發表于 2019-6-27 08:19 | 顯示全部樓層
非常感謝樓主,我原本還一時想不出來沒有鎖存器怎么有鎖存功能。
回復

使用道具 舉報

ID:514064 發表于 2019-7-8 10:30 | 顯示全部樓層
很好,非常有幫助
回復

使用道具 舉報

ID:660094 發表于 2019-12-9 22:10 | 顯示全部樓層
大佬就是大佬
回復

使用道具 舉報

ID:659106 發表于 2019-12-10 14:52 | 顯示全部樓層
太強了
回復

使用道具 舉報

ID:762374 發表于 2020-5-27 16:17 | 顯示全部樓層
真的很優秀。
回復

使用道具 舉報

ID:772490 發表于 2020-6-8 10:10 | 顯示全部樓層
謝謝樓主大大
回復

使用道具 舉報

ID:775155 發表于 2020-6-10 15:41 | 顯示全部樓層
感謝樓主!
回復

使用道具 舉報

ID:774488 發表于 2020-6-11 21:53 | 顯示全部樓層
為什么打不開啊
回復

使用道具 舉報

ID:779046 發表于 2020-6-14 15:55 | 顯示全部樓層
Eason張 發表于 2018-6-25 09:38
仿真圖上沒有喇叭啊

感謝樓主
回復

使用道具 舉報

ID:785615 發表于 2020-6-21 10:38 | 顯示全部樓層
太強大了
回復

使用道具 舉報

ID:784492 發表于 2020-6-21 13:03 | 顯示全部樓層
很不錯
回復

使用道具 舉報

ID:752658 發表于 2020-7-13 15:38 | 顯示全部樓層
太棒了,對我來說太有用了
回復

使用道具 舉報

ID:840812 發表于 2020-11-10 12:09 | 顯示全部樓層
時隔多年依舊有用,謝樓主
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天躁天天操 | 成人精品区 | 国产成人自拍一区 | 亚洲第一色av | 激情免费视频 | 国产精品一区三区 | 男人的天堂avav | 精产国产伦理一二三区 | 亚洲国产精品久久久久 | 免费h视频 | 一级黄色av电影 | 国产粉嫩尤物极品99综合精品 | 中文一区 | 欧美日韩综合视频 | 日韩电影中文字幕 | 超黄视频网站 | 日韩在线欧美 | 国产在线观看一区 | 国产一级片久久久 | 一级一级一级毛片 | 在线观看深夜视频 | 国产日产精品一区二区三区四区 | 亚洲免费观看 | 国产目拍亚洲精品99久久精品 | 香蕉一区| 九九色综合 | 99亚洲国产精品 | 精品久久久久久久久久久久久 | 国产精品久久久久久吹潮 | 日本午夜精品 | 亚洲一区二区三区免费观看 | 91精品国产91久久久久福利 | 中文字幕成人 | www.夜夜草 | 日韩av免费在线电影 | 精品视频在线观看 | 日本黄色一级片视频 | 午夜成人在线视频 | 国产女人精品视频 | 免费一级片| 在线国产一区二区 |