

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 聲光顯示智力競(jìng)賽搶答器</p><p> 摘要:隨著電子技術(shù)的飛速發(fā)展,基于單片機(jī)的控制系統(tǒng)已廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、電力、電子、智能樓宇等行業(yè),微型計(jì)算機(jī)作為嵌入式控制系統(tǒng)的主體與核心,代替了傳統(tǒng)的控制系統(tǒng)的常規(guī)電子線路。同時(shí)樓宇智能化的發(fā)展與成熟,也為基于單片機(jī)的照明控制系統(tǒng)的普及與應(yīng)用奠定了堅(jiān)實(shí)的基礎(chǔ)。</p><p> 電子智能搶答計(jì)分器在搶答過(guò)程中,為了知
2、道哪一組或哪一位選手先答題,必須要設(shè)計(jì)一個(gè)系統(tǒng)來(lái)完成這個(gè)任務(wù)。如果在搶答中,靠視覺(jué)是很難判斷出哪組先答題。利用單片機(jī)系統(tǒng)來(lái)設(shè)計(jì)搶答器,使以上問(wèn)題得以解決,即使兩組的搶答時(shí)間相差幾微秒,也可分辨出哪組優(yōu)先答題。搶答組數(shù)可以在八組以內(nèi)任意使用,本系統(tǒng)設(shè)計(jì)為模塊形式采用九針插頭進(jìn)行連接,系統(tǒng)工作原理本系統(tǒng)采用AT89S51單片機(jī)作為核心??刂葡到y(tǒng)的五個(gè)模塊分別為:?jiǎn)纹瑱C(jī)最小系統(tǒng)(六位并行數(shù)碼顯示、4*4矩陣式鍵盤)、顯示模塊、顯示驅(qū)動(dòng)模塊、搶
3、答開(kāi)關(guān)模塊、音樂(lè)音頻輸出模塊。</p><p> 關(guān)鍵詞:?jiǎn)纹瑱C(jī);矩陣式鍵盤;顯示;驅(qū)動(dòng);搶答</p><p> Abstract:With the rapid development of electronic technology, the control system based on SCM has been widely used in industry, agricultu
4、re, electricity, electronics, intelligent buildings, industry, micro-computers embedded control system as the main and core, instead of the traditional control System of conventional electronic circuits. At the same time
5、 the development of intelligent buildings and maturity, but also based on the lighting control system MCU and popularity of application laid a </p><p> Points for electronic smart Qiangda Qiangda in the pro
6、cess, in order to know which group or which one player to answer, we must design a system to complete this task. If the Qiangda, rely on the visual is very difficult to determine which group to answer. SCM system used to
7、 design Qiangda, bringing the above problems are resolved, even if the two groups Qiangda the difference in time a few microseconds, which can also be distinguished group of priority answer. Qiangda group of eight can wi
8、thin t</p><p> Key words: SCM,modules, display driver module, Qiangda switch modules.</p><p><b> 目 錄</b></p><p> 引言…………………………………………………………………………………………………1</p>
9、<p> 第1章 單片機(jī)的應(yīng)用技術(shù) ………………………………………………………………………2</p><p> 第2章 系統(tǒng)設(shè)計(jì)要點(diǎn) ……………………………………………………………………………3</p><p> 2.1 搶答器的硬件設(shè)計(jì)要求 ……………………………………………………………………3</p><p> 2.2 計(jì)分器系統(tǒng)的軟件流程
10、……………………………………………………………………3</p><p> 2.3 計(jì)分器的硬件設(shè)計(jì)要求 ……………………………………………………………………4</p><p> 2.4 人機(jī)交互程序設(shè)計(jì) …………………………………………………………………………4</p><p> 2.4.1計(jì)分器系統(tǒng)的軟件鍵盤掃描程序流程圖………………………………………………
11、5</p><p> 2.5 搶答器系統(tǒng)軟件的流程圖…………………………………………………………………6</p><p> 2.6 搶答數(shù)碼顯示軟件程序設(shè)計(jì)………………………………………………………………6</p><p> 2.7 音樂(lè)音頻輸出程系流程圖…………………………………………………………………8</p><p> 第3章
12、各模塊方案選擇和論證…………………………………………………………………9</p><p> 3.1 搶答器顯示模塊……………………………………………………………………………9</p><p> 3.2 控制器模塊…………………………………………………………………………………10</p><p> 3.3 電源方案的選擇………………………………………………………
13、……………………10</p><p> 3.4 槍答器鍵盤的選擇…………………………………………………………………………10</p><p> 3.5 計(jì)分器顯示模塊……………………………………………………………………………12</p><p> 3.6 計(jì)分器鍵盤的選擇…………………………………………………………………………13</p><
14、;p> 3.7 模塊的最終方案……………………………………………………………………………13</p><p> 第4章 電子智能搶答器系統(tǒng)的硬件電路設(shè)計(jì) ………………………………………………15</p><p> 4.1 計(jì)分器的電路設(shè)計(jì)…………………………………………………………………………15</p><p> 4.1.1 計(jì)分器系統(tǒng)的硬件電路
15、………………………………………………………………15</p><p> 4.1.2 計(jì)分顯示模塊…………………………………………………………………………17</p><p> 4.2 搶答器的電路設(shè)計(jì)…………………………………………………………………………17</p><p> 4.2.1搶答電路模塊…………………………………………………………………………1
16、7</p><p> 4.2.2搶答按鍵模塊的設(shè)計(jì)…………………………………………………………………18</p><p> 第5章 單片機(jī)干擾防護(hù)…………………………………………………………………………20</p><p> 5.1 采用隔離技術(shù)………………………………………………………………………………20</p><p> 5.2
17、 正確的接地措施……………………………………………………………………………20</p><p> 結(jié)束語(yǔ) ……………………………………………………………………………………………22</p><p> 參考文獻(xiàn) …………………………………………………………………………………………23</p><p> 附錄1:計(jì)分器顯示程序…………………………………………………
18、………………………24</p><p> 附錄2:搶答器軟件程序…………………………………………………………………………29</p><p><b> 引 言</b></p><p> 電子技術(shù)和微型計(jì)算機(jī)的迅速發(fā)展,促進(jìn)微型計(jì)算機(jī)測(cè)量和控制技術(shù)的迅速發(fā)展和廣泛應(yīng)用,單片機(jī)(單片微型計(jì)算機(jī))的應(yīng)用已經(jīng)滲透到國(guó)民經(jīng)濟(jì)的各個(gè)部門和領(lǐng)域,它
19、起到了越來(lái)越重要的作用。單片微型計(jì)算機(jī)就是將中央處理單元、存儲(chǔ)器、定時(shí)/計(jì)數(shù)器和多種接口都集成到一塊集成電路芯片上的微型計(jì)算機(jī)。因此一塊芯片就構(gòu)成了一臺(tái)計(jì)算機(jī)。它已成為工業(yè)控制領(lǐng)域、智能儀器儀表、尖端武器、日常生活中最廣泛使用的計(jì)算機(jī)。</p><p> 電子智能搶答器分別用兩片單片機(jī)控制,分別為計(jì)分器和搶答器。計(jì)分器的工作原理是采用最小系統(tǒng),用4x4鍵盤來(lái)輸入是選手需要加減進(jìn)行分?jǐn)?shù)的加減輸入。主板上的6個(gè)數(shù)碼
20、顯示,加幾分的數(shù),按確定鍵后分?jǐn)?shù)值從串口P3.0,P3.1傳到計(jì)分器顯示模塊上再通過(guò)數(shù)碼管驅(qū)動(dòng)模塊顯示。搶答器的工作原理是采用單片機(jī)最小系統(tǒng),用查詢式鍵盤進(jìn)行搶答。采用串行靜態(tài)顯示組號(hào)。</p><p> 第1章 單片機(jī)的應(yīng)用技術(shù)</p><p> 單片機(jī)由硬件系統(tǒng)與軟件系統(tǒng)組成。硬件系統(tǒng)是指構(gòu)成微機(jī)系統(tǒng)的實(shí)體與裝置,通常由運(yùn)算器、控制器、存儲(chǔ)器、輸入接口電路和輸入設(shè)備、輸出接口電路和
21、輸出設(shè)備等組成。其中運(yùn)算器和控制器一般做在一個(gè)集成芯片上,統(tǒng)稱中央處理單元(Central Processing Unit),簡(jiǎn)稱CPU,是微機(jī)的核心部件。CPU配上存放程序和數(shù)據(jù)的存儲(chǔ)器、輸入/輸出(Input/Output,簡(jiǎn)稱I/O)接口電路以及外部設(shè)備即構(gòu)成單片機(jī)的硬件系統(tǒng)。軟件系統(tǒng)是微機(jī)系統(tǒng)所使用的各種程序的總稱,人們通過(guò)它對(duì)微機(jī)進(jìn)行控制并與微機(jī)系統(tǒng)進(jìn)行信息交換,使微機(jī)按照人的意圖完成預(yù)定的任務(wù)。軟件系統(tǒng)與硬件系統(tǒng)共同構(gòu)成完整
22、的單片微型計(jì)算機(jī)系統(tǒng),兩者相輔相成,缺一不可。</p><p> 第2章 系統(tǒng)設(shè)計(jì)要點(diǎn)</p><p> 系統(tǒng)設(shè)計(jì)主要包括硬件和軟件兩大部分,依據(jù)控制系統(tǒng)的工作原理和技術(shù)性能,將硬件和軟件分開(kāi)設(shè)計(jì)。硬件設(shè)計(jì)部分包括電路原理圖、合理選擇元器件、繪制線路圖,然后對(duì)硬件進(jìn)行調(diào)試、測(cè)試,以達(dá)到設(shè)計(jì)要求。軟件設(shè)計(jì)部分,首先在總體設(shè)計(jì)中完成系統(tǒng)總框圖和各模塊的功能設(shè)計(jì),擬定詳細(xì)的工作計(jì)劃;然后進(jìn)行
23、具體設(shè)計(jì),包括各模塊的流程圖,選擇合適的編程語(yǔ)言和工具,進(jìn)行代碼設(shè)計(jì)等;最后是對(duì)軟件進(jìn)行調(diào)試、測(cè)試,達(dá)到所需功能要求。</p><p> 在系統(tǒng)設(shè)計(jì)中設(shè)計(jì)方法的選用是系統(tǒng)設(shè)計(jì)能否成功的關(guān)鍵。硬件電路是采用結(jié)構(gòu)化系統(tǒng)設(shè)計(jì)方法,該方法保證設(shè)計(jì)電路的標(biāo)準(zhǔn)化、模塊化。硬件電路的設(shè)計(jì)最重要的選擇用于控制的單片機(jī),并確定與之配套的外圍芯片,使所設(shè)計(jì)的系統(tǒng)既經(jīng)濟(jì)又高性能。硬件電路設(shè)計(jì)還包括輸入輸出接口設(shè)計(jì),畫出詳細(xì)電路圖,標(biāo)
24、出芯片的型號(hào)、器件參數(shù)值,根據(jù)電路圖在仿真機(jī)上進(jìn)行調(diào)試,發(fā)現(xiàn)設(shè)計(jì)不當(dāng)及時(shí)修改,最終達(dá)到設(shè)計(jì)目的。軟件設(shè)計(jì)的方法與開(kāi)發(fā)環(huán)境的選取有著直接的關(guān)系,本系統(tǒng)由于是采用51系列單片機(jī),因此使用Keil C語(yǔ)言進(jìn)行開(kāi)發(fā)。此編程工具相比匯編語(yǔ)言具有結(jié)構(gòu)化、適用范圍大、可移植性好等特點(diǎn)。本系統(tǒng)軟件設(shè)計(jì)采用模塊化系統(tǒng)設(shè)計(jì)方法,先編寫各個(gè)功能模塊子程序,然后進(jìn)行組合與調(diào)整,經(jīng)過(guò)調(diào)試后,達(dá)到設(shè)計(jì)功能要求。</p><p> 2.1
25、搶答器的硬件設(shè)計(jì)要求</p><p> 搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕S1~S8表示。設(shè)置一個(gè)系統(tǒng)清除和搶答控制按扭,該按扭由主持人控制。搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),并在LED數(shù)碼管上顯示,同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。</p><p> 2.2 計(jì)分器系統(tǒng)的軟件流
26、程</p><p> 2.3 計(jì)分器的硬件設(shè)計(jì)要求</p><p> 加減計(jì)分有三位顯示,用串行通信口,顯示分?jǐn)?shù),用4*4陣列式鍵盤進(jìn)行同時(shí)加減和單組加分。</p><p> 2.4 人機(jī)交互程序設(shè)計(jì)</p><p> 系統(tǒng)的人機(jī)交互程序設(shè)計(jì),主要是解決按鍵的掃描與信息的顯示,讓操作者能夠靈活地控制系統(tǒng)工作。鍵盤用來(lái)輸入指令,發(fā)光數(shù)碼
27、管用來(lái)顯示單片機(jī)的狀態(tài),這是一個(gè)比較簡(jiǎn)單的人機(jī)交互形式。</p><p> 2.4.1計(jì)分器系統(tǒng)的軟件鍵盤掃描程序流程圖</p><p> 本系統(tǒng)的鍵盤采用的是4×4矩陣式鍵盤,矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點(diǎn)上。一個(gè)4×4的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)含有16個(gè)按鍵的鍵盤,顯然,在按鍵數(shù)量較多時(shí),矩陣式鍵盤較之獨(dú)立式按鍵鍵盤要節(jié)省很多I/O口。<
28、;/p><p> 矩陣式鍵盤中,行、列線分別連接到按鍵開(kāi)關(guān)的兩端,在進(jìn)行鍵盤掃描時(shí),首先把矩陣鍵盤列線的第一根線置高,然后分別再檢測(cè)矩陣鍵盤行線是否有高電平的信號(hào),如果有信號(hào),那么就證明這根行線與第一根列線相交處的按鍵被按下了,單片機(jī)就讀入這個(gè)鍵值。如果所有的四根行線都沒(méi)有信號(hào),那么就把第一根列線置低,把第二根列線置高,再一次檢測(cè)行線有沒(méi)有信號(hào),然后依次類推。</p><p> 由于鍵盤掃
29、描的速度很快,而人按鍵總會(huì)持續(xù)一定的時(shí)間,因此只要單片機(jī)處在等待輸入的狀態(tài),這個(gè)鍵盤掃描程序基本上不會(huì)錯(cuò)過(guò)任何一個(gè)按鍵信號(hào)。由于一般人按鍵會(huì)有抖動(dòng),抖動(dòng)信號(hào)造成鍵盤掃描時(shí)會(huì)出現(xiàn)一些錯(cuò)誤的信號(hào),要不就是掃描不進(jìn)數(shù)據(jù),要不就是重復(fù)輸入很多次數(shù)據(jù),因此需要有一個(gè)消除抖動(dòng)的程序。讓單片機(jī)不響應(yīng)一些相關(guān)的抖動(dòng)信號(hào),而只響應(yīng)一次確實(shí)存在的按鍵信號(hào)。消抖動(dòng)程序是這樣實(shí)現(xiàn)的,當(dāng)檢測(cè)到一個(gè)脈沖信號(hào)時(shí),并不立即認(rèn)為是一次按鍵,而是延時(shí)一段時(shí)間以后再進(jìn)行檢測(cè)
30、,如果三次檢測(cè)都有信號(hào),那么就認(rèn)為有一次按鍵動(dòng)作發(fā)生了。延時(shí)的選擇非常重要,太快了,起不到消除抖動(dòng)的效果,太慢了又讓鍵盤太不靈活,錯(cuò)過(guò)較多的按鍵信號(hào)。鍵盤掃描程序的流程圖如圖2所示。</p><p> 鍵盤掃描程序流程圖2</p><p> 2.5 搶答器系統(tǒng)軟件的流程圖</p><p> 搶答組數(shù)可以在八組以內(nèi)任意使用,其流程如圖3</p>&
31、lt;p> 2.6 搶答數(shù)碼顯示軟件程序設(shè)計(jì)</p><p> 采用靜態(tài)顯示,顯示器由9個(gè)共陽(yáng)極數(shù)碼管組成。輸入只有兩個(gè)信號(hào),它們是串行數(shù)據(jù)線DIN和移位信號(hào)CLK。9個(gè)串/并移位寄存器芯片74LS164首尾相連,了九位共陽(yáng)極七段數(shù)碼管,共陽(yáng)極數(shù)碼管的8個(gè)發(fā)關(guān)二極管的陽(yáng)極(二極管正端)連接在一起,通常,公共陽(yáng)極接高電平(一般接電源),七它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所
32、連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字</p><p> 收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻,這里的限流電阻選為100Ω。數(shù)碼顯示程序流程如圖4。</p><p> 數(shù)碼顯示程序流程圖4</p><p> 2.7 音樂(lè)音頻輸出程系流程圖</p><p> 音樂(lè)音頻輸出由P3.7輸出,如圖5</p&
33、gt;<p> 第3章 各模塊方案選擇和論證</p><p> 3.1 搶答器顯示模塊</p><p> 在步進(jìn)電機(jī)控制過(guò)程中,系統(tǒng)需要對(duì)運(yùn)行的時(shí)間和轉(zhuǎn)向、相數(shù)做必要的顯示。我們考慮有以下兩種顯示方案。</p><p> 方案一:使用液晶屏顯示時(shí)間。液晶顯示屏(LCD)具有輕薄短小、低耗電量、無(wú)輻射危險(xiǎn),平面直角顯示以及影像穩(wěn)定不閃爍等優(yōu)勢(shì),可
34、視面積大,畫面效果好,分辨率高,抗干擾能力強(qiáng)的特點(diǎn)。但由于只需要顯示時(shí)間和轉(zhuǎn)向、相數(shù)這樣的數(shù)字,信息量比較少,且由于液晶是以點(diǎn)陣的模式顯示各種符號(hào),需要利用控制芯片創(chuàng)建字符庫(kù),編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時(shí),不能有靜電干擾,否則易燒壞液晶顯示芯片,不易維護(hù)。</p><p> 方案二:在使用傳統(tǒng)的數(shù)碼管顯示。數(shù)碼管具有:低能耗、低損耗、低壓、壽命長(zhǎng)、耐老化、防曬、防潮、防火、防高(低
35、)溫,對(duì)外界環(huán)境要求低,易于維護(hù),同時(shí)其精度高,稱量快,精確可靠,操作簡(jiǎn)單。數(shù)碼顯示是采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。</p><p> 靜態(tài)顯示,電路圖中所示。顯示器由9個(gè)共陽(yáng)極數(shù)碼管組成。輸入只有兩個(gè)信號(hào),它們是串行數(shù)據(jù)線DIN和移位信號(hào)CLK。9個(gè)串/并移位寄存器芯片74LS164首尾相連,每片的并行輸出作為L(zhǎng)ED數(shù)碼管的段碼74LS164的引腳圖如圖6所示:</p>&
36、lt;p> 74LS164為8位串入并出移位寄存器,1、2為串行輸入端,Q0-Q7為并行輸出端,CLK為移位時(shí)鐘脈沖上升沿移入一位;MR為清零端,低電平時(shí)并行輸出為零。</p><p> 根據(jù)以上的論述,采用方案二。</p><p><b> 3.2 控制器模塊</b></p><p> 控制器主要用于各模塊控制對(duì)顯示、搶答、音樂(lè)
37、、計(jì)分等??刂破鞯倪x擇有以下兩鐘方案。</p><p> 方案一:采用FPGA(現(xiàn)場(chǎng)可編程門列陣)作為系統(tǒng)的控制器。FPGA可以實(shí)現(xiàn)各種復(fù)雜的邏輯功能,規(guī)模大,密度高,它將所有器件集成在一塊芯片上,減小了體積,提高了穩(wěn)定性,并且可以應(yīng)用EDA軟件仿真、調(diào)試,易于進(jìn)行功能擴(kuò)展。FPGA采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)模實(shí)時(shí)系統(tǒng)的控制核心。但由于本設(shè)計(jì)對(duì)數(shù)據(jù)處理的速度要求不高,F(xiàn)PGA的高
38、速處理的優(yōu)勢(shì)得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時(shí)由于芯片的引腳較多,實(shí)物硬件電路板布線復(fù)雜,加重了電路設(shè)計(jì)和實(shí)際焊接的工作。</p><p> 方案二:采用ATMEL公司的AT89C51作為系統(tǒng)控制器的CPU方案。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可以用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛?;谝陨戏治鰯M訂方案二。
39、</p><p> 3.3 電源方案的選擇</p><p> 系統(tǒng)需要多個(gè)電源,AT89C51使用5V穩(wěn)壓電源,驅(qū)動(dòng)芯片需要5-50V電壓驅(qū)動(dòng),步進(jìn)電機(jī)等需要12V穩(wěn)壓電源。</p><p> 方案一:采用升壓型穩(wěn)壓電路。用兩片MC34063芯片分別將3V的電池電壓進(jìn)行直流嶄波調(diào)壓,得到5V和12V的穩(wěn)壓輸出。只需使用兩節(jié)電池,既節(jié)省了電池,又減小系統(tǒng)體積重量
40、但該電路供電電流小,供電時(shí)間短,無(wú)法使相對(duì)龐大的系統(tǒng)穩(wěn)定運(yùn)作。</p><p> 方案二:采用三端穩(wěn)壓集成7805與7812分別得到5V和12V的穩(wěn)定電壓。利用該方法方便簡(jiǎn)單,工作穩(wěn)定可靠。</p><p> 綜上所述,選擇方案二,采用三端穩(wěn)壓器電路。</p><p> 3.4 槍答器鍵盤的選擇</p><p> 鍵盤是單片機(jī)不可缺少
41、的輸入設(shè)備,是實(shí)現(xiàn)人機(jī)對(duì)話的紐帶。鍵盤按結(jié)構(gòu)形式可以分為非編碼鍵盤和編碼鍵盤,前者用軟件方法產(chǎn)生鍵碼,而后者則用硬件方法來(lái)產(chǎn)生鍵碼。在單片機(jī)中使用的都是非編碼鍵盤,因?yàn)榉蔷幋a鍵盤結(jié)構(gòu)簡(jiǎn)單,成本低廉,非編碼鍵盤的類型很多,常用的有獨(dú)立式鍵盤,行列式鍵盤等。</p><p><b> 方案一:獨(dú)立式鍵盤</b></p><p> 鍵盤接口中使用多少根I/O線,鍵盤中就
42、有幾個(gè)按鍵,鍵盤接口使用了8根I/O口線,該鍵盤就有8個(gè)按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。因此可以根據(jù)實(shí)際需要對(duì)鍵盤中的按鍵靈活的編碼。如圖7。</p><p> 最簡(jiǎn)單的編碼方式就是根據(jù)I/O輸入口所直接反映的相應(yīng)按鍵,按下的狀態(tài)進(jìn)行編碼,稱按鍵直接狀態(tài)碼,對(duì)于這樣編碼的獨(dú)立式鍵盤,CPU可以通過(guò)直接讀取I/O口的狀態(tài)來(lái)獲取按鍵的直接狀態(tài)編碼值,根據(jù)這個(gè)值直接進(jìn)行按鍵識(shí)別,這樣
43、形式的鍵盤結(jié)構(gòu)簡(jiǎn)單,按鍵識(shí)別容易。</p><p> 獨(dú)立式鍵盤的缺點(diǎn)是需要占用比較多的I/O口線,當(dāng)單片機(jī)應(yīng)用系統(tǒng)鍵盤中需要的按鍵比較少或I/O口線比較富余時(shí),可以采用這樣類型的鍵盤。</p><p><b> 方案二:行列式鍵盤</b></p><p> 行列式鍵盤是用N條I/O線作為行線,M條I/O線作為列線組成的鍵盤,在行線和列線
44、的每個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵中按鍵的個(gè)數(shù)是M*N個(gè)。這種形式的鍵盤結(jié)構(gòu),能夠有效的提高單片機(jī)系統(tǒng)中I/O的利用率,列線接P1.0~P1.3行線接P1.4~P1.7,行列適用于按鍵輸入多的情況。</p><p> CPU對(duì)鍵盤的掃描可以采用取程序控制的隨機(jī)方式,即只有在CPU空閑是時(shí)才去掃描鍵盤,響應(yīng)操作人員的鍵盤輸入,但CPU在執(zhí)行應(yīng)用程序的過(guò)程中,不能響應(yīng)鍵盤輸入,對(duì)鍵盤的掃描可以采用定時(shí)方式,即利用單片機(jī)內(nèi)
45、部定時(shí)器每隔一定時(shí)間對(duì)鍵盤掃描一次,這樣控制方式,不管鍵盤上有無(wú)鍵閉合,CPU總是定時(shí)的關(guān)心鍵盤狀態(tài)。</p><p> 在大多數(shù)情況下,CPU對(duì)鍵盤可能進(jìn)行空掃描。為了提高CPU的效率而又能及時(shí)響應(yīng)鍵盤輸入,可以采用中斷方式,既CPU平時(shí)不必掃描鍵盤,只要當(dāng)鍵盤上有鍵盤閉合時(shí)就產(chǎn)生中斷請(qǐng)求,向CPU申請(qǐng)中斷后,立即對(duì)鍵盤上有鍵盤進(jìn)性掃描,識(shí)別閉合鍵,并做相應(yīng)的處理。</p><p>
46、 根據(jù)以上的論述,采用方案一,在本系統(tǒng)中采用了獨(dú)立式鍵盤,其按鍵比較少,且鍵盤中各個(gè)按鍵的工作互不干擾。如圖8所示。</p><p> 3.5 計(jì)分器顯示模塊</p><p> 顯示模塊必須要顯示三位數(shù)為一組,本系統(tǒng)設(shè)計(jì)為八組,共要顯示27位數(shù)。采用靜態(tài)顯示,其方案如下:</p><p> 方案一:不帶鎖存方式。顯示器由9個(gè)共陰極數(shù)碼管組成。輸入只有兩個(gè)信號(hào),
47、它們是串行數(shù)據(jù)線DIN和移位信號(hào)CLK。9個(gè)串/并移位寄存器芯片74LS164首尾相連,74LS164為8位串入并出移位寄存器,1、2為串行輸入端,Q0-Q7為并行輸出端,CLK為移位時(shí)鐘脈沖上升沿移入一位;MR為清零端,低電平時(shí)并行輸出為零。實(shí)驗(yàn)證明在顯示位數(shù)超出6位,數(shù)碼管有閃爍的現(xiàn)象。</p><p> 方案二:帶鎖存方式。采用帶有鎖存功能的移位寄存器74LS595芯片,74595的數(shù)據(jù)端:QA--QH:
48、 八位并行輸出端,可以直接控制數(shù)碼管的8個(gè)段。QH': 級(jí)聯(lián)輸出端。我將它接下一個(gè)595的SI端。SI: 串行數(shù)據(jù)輸入端。74595的控制端說(shuō)明:SRCLR(10腳): 低點(diǎn)平時(shí)將移位寄存器的數(shù)據(jù)清零。通常接Vcc。SRCK(11腳):上升沿時(shí)數(shù)據(jù)寄存器的數(shù)據(jù)移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器數(shù)據(jù)不變。(脈沖寬度:5V時(shí),大于幾十納秒就行了。我通常都選微秒級(jí))RCK(1
49、2腳):上升沿時(shí)移位寄存器的數(shù)據(jù)進(jìn)入數(shù)據(jù)存儲(chǔ)寄存器,下降沿時(shí)存儲(chǔ)寄存器數(shù)據(jù)不變。(通常我將RCK置為低電平,) 當(dāng)移位結(jié)束后,在RCK端產(chǎn)生一個(gè)正脈沖(5V時(shí),大于幾十納秒就行了。我通常都選微秒級(jí)),更新顯示數(shù)據(jù)。13腳: 高電平時(shí)禁止輸出(高阻態(tài))。如果單片機(jī)的引腳不緊張,用一個(gè)引腳控制它,可以方便地產(chǎn)生閃爍和熄滅效果。比通過(guò)數(shù)據(jù)端移位控制要省時(shí)省力。74164和74595功能相仿,都是8位串行輸入轉(zhuǎn)并行輸出移位寄存器。74164的驅(qū)
50、動(dòng)電流(25mA)比74595(35mA)的要小,</p><p> 根據(jù)以上論證,采用方案二。</p><p> 3.6 計(jì)分器鍵盤的選擇</p><p><b> 方案一:行列式鍵盤</b></p><p> 行列式鍵盤是用N條I/O線作為行線,M條I/O線作為列線組成的鍵盤,在行線和列線的每個(gè)交叉點(diǎn)上,設(shè)置
51、一個(gè)按鍵中按鍵的個(gè)數(shù)是M*N個(gè)。這種形式的鍵盤結(jié)構(gòu),能夠有效的提高單片機(jī)系統(tǒng)中I/O的利用率,列線接P1.0~P1.3行線接P1.4~P1.7,行列適用于按鍵輸入多的情況。</p><p><b> 方案二:獨(dú)立式鍵盤</b></p><p> 鍵盤接口中使用多少根I/O線,鍵盤中就有幾個(gè)按鍵,鍵盤接口使用了16根I/O口線,需要占用比較多的I/O口線這種類型的鍵
52、盤,</p><p> 根據(jù)以上論證,采用方案一。</p><p> 3.7 模塊的最終方案</p><p> 主控制器模塊:采用AT89C51單片幾機(jī)控制</p><p> 搶答器顯示模塊:數(shù)碼管顯示</p><p> 電源方案的選擇:采用三端穩(wěn)壓器電路</p><p> 槍答器鍵
53、盤模塊:獨(dú)立式鍵盤</p><p> 計(jì)分器顯示模塊:采用帶有鎖存功能的移位寄存器74LS595芯片</p><p> 計(jì)分器鍵盤模塊:行列式鍵盤</p><p> 第4章 電子智能搶答器系統(tǒng)的硬件電路設(shè)計(jì)</p><p> 4.1 計(jì)分器的電路設(shè)計(jì)</p><p> 主控制器采用AT89C51單片機(jī)作為微
54、處理器,AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片機(jī),片內(nèi)含4K bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash 存儲(chǔ)單元。</p><p> 4.1.1計(jì)分器系統(tǒng)的硬件電路</p>&
55、lt;p> 計(jì)分器的工作原理是采用最小系統(tǒng),用4x4鍵盤來(lái)輸入是選手需要加減進(jìn)行分?jǐn)?shù)的加減輸入。主板上的6個(gè)數(shù)碼顯示,加幾分的數(shù),按確定鍵后分?jǐn)?shù)值從串口p3.0,p3.1傳到計(jì)分器顯示模塊上再通過(guò)數(shù)碼管驅(qū)動(dòng)模塊顯示。原理圖如圖9所示</p><p><b> 圖9</b></p><p> 4.1.2計(jì)分顯示模塊</p><p>
56、 計(jì)分顯示模塊是采用74LS595移位寄存器。并帶鎖存功能,在數(shù)碼顯示不會(huì)閃。具有很好的觀看效果。如圖10</p><p> 圖10 計(jì)分顯示模塊</p><p> 4.2 搶答器的電路設(shè)計(jì)</p><p> 4.2.1搶答電路模塊</p><p> 搶答器的工作原理是采用單片機(jī)最小系統(tǒng),用查詢式鍵盤進(jìn)行搶答。通過(guò)搶答按鍵模塊,連接
57、按鍵進(jìn)行搶答。其工作原理為: 主持人按清零鍵后,選手可按鍵搶答,單片機(jī)鎖存信號(hào),屏蔽外界信號(hào)。串顯示編號(hào),并有丁冬聲輸出。搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。搶答器原理如圖11。</p><p> 圖11 搶答器原理圖</p><p> 4.2.2搶答按鍵模塊的設(shè)計(jì)</p><p> 搶答按鍵模塊的設(shè)計(jì)是通過(guò)利用光電耦合器,光電偶合器的輸入/輸出之
58、間沒(méi)有接觸,能有效地防止輸入端的電磁干擾以電藕合的方式進(jìn)入應(yīng)用系統(tǒng),而且光電偶合器的輸入阻抗很小,干擾源的內(nèi)阻很大,所以能輸入到光電偶合器的干擾電壓很小。把單片機(jī)信號(hào)和按鈕的信號(hào)隔開(kāi),采用+12V電源給單片機(jī)開(kāi)關(guān)量的控制。其原理圖如圖12。</p><p> 圖12 輸入隔離電路</p><p> 第5章 單片機(jī)干擾防護(hù)</p><p> 單片機(jī)應(yīng)用系統(tǒng)在實(shí)
59、際工作過(guò)程中,難免會(huì)受到各種外部或內(nèi)部的干擾,使系統(tǒng)發(fā)生異常情況。比如,因干擾使程序指針發(fā)生錯(cuò)誤時(shí),可能會(huì)將非操作碼執(zhí)行,造成程序執(zhí)行的混亂(跑飛)或進(jìn)入死循環(huán),甚至可能會(huì)損壞元器件。</p><p> 干擾竄入應(yīng)用系統(tǒng)的主要渠道有三條:通過(guò)電磁波輻射竄入系統(tǒng)的空間干擾;通過(guò)輸入/輸出通道竄入的通道干擾;電源的干擾。</p><p> 5.1 采用隔離技術(shù)</p><
60、;p> 對(duì)于供電系統(tǒng)的干擾,可以采用交流穩(wěn)壓器、不間斷電源(UPS)、隔離變壓器、底通慮波器等,以防止電源電壓的波動(dòng)和干擾噪聲;在直流電源的抗干擾措施中,對(duì)應(yīng)用系統(tǒng)中的不同等級(jí)的直流電源采取集成穩(wěn)壓塊單獨(dú)供電,以避免模塊間的互相影響,使直流開(kāi)關(guān)電源、DC-DC變換器以加強(qiáng)隔離提高電源穩(wěn)定性等。</p><p> 在單片機(jī)應(yīng)用系統(tǒng)的輸入/輸出通道中,普遍采用通道隔離技術(shù)來(lái)防止通道干擾。其中應(yīng)用較多的是光電
61、耦合器。光電耦合器的輸入/輸出之間沒(méi)有接觸,能有效地防止輸入端的電磁干擾以電耦合的方式進(jìn)入應(yīng)用系統(tǒng),而且光電耦合器的輸入阻抗很小,干擾源的內(nèi)阻很大,所以能輸入到光電偶合器的干擾電壓很小。</p><p> 5.2 正確的接地措施</p><p> 在低頻電路中,因寄生電抗的影響不大,常采用一點(diǎn)接地,以減少地線造成的地環(huán)路。</p><p> 在單片機(jī)系統(tǒng)中,數(shù)
62、字地和模擬地應(yīng)分別接地,即使一個(gè)芯片上有兩種地也要分別接地,然后再在一點(diǎn)處把兩種分別連接起來(lái)。</p><p> 在研制印刷電路板時(shí),對(duì)地線的分布、形狀、長(zhǎng)度和寬度等也有一定的要求,比如地線要呈輻射狀,避免環(huán)行,地線要寬,連接旁路電容的地線不要太長(zhǎng)等。</p><p> 單片機(jī)應(yīng)用系統(tǒng)中的數(shù)字地、模擬地(低電平電路地)、大功率電氣設(shè)備等強(qiáng)電設(shè)備的地(噪聲地)、機(jī)殼或其他金屬構(gòu)件的屏蔽地
63、應(yīng)分開(kāi)布置并在一點(diǎn)上和電源地相連。每個(gè)單元宜采用一個(gè)接地點(diǎn),地線應(yīng)盡量加粗以減少地線的阻抗。</p><p> 在采用屏蔽雙絞線傳遞信號(hào)時(shí),應(yīng)將地與工作地連在一起。要注意只能在一個(gè)點(diǎn)接地,以免形成回路,在屏蔽體上產(chǎn)生較大的噪聲。</p><p><b> 結(jié)束語(yǔ)</b></p><p> 通過(guò)這次畢業(yè)設(shè)計(jì)。我設(shè)計(jì)聲光顯示智能競(jìng)賽搶答器,采
64、用了單片機(jī)技術(shù)、數(shù)字電子、模擬電子、制作電路板等相關(guān)技術(shù)。把在學(xué)校三年所學(xué)知識(shí)連成一串。理論聯(lián)系實(shí)踐,體現(xiàn)出大學(xué)生動(dòng)手能力。通過(guò)查資料和搜集有關(guān)的文獻(xiàn),培養(yǎng)了自學(xué)能力和動(dòng)手能力。并且由原先的被動(dòng)的接受知識(shí)轉(zhuǎn)換為主動(dòng)的尋求知識(shí),這可以說(shuō)是學(xué)習(xí)方法上的一個(gè)很大的突破。在以往的傳統(tǒng)的學(xué)習(xí)模式下,我們可能會(huì)記住很多的書本知識(shí),但是通過(guò)畢業(yè)論文,我們學(xué)會(huì)了如何將學(xué)到的知識(shí)轉(zhuǎn)化為自己的東西,學(xué)會(huì)了怎么更好的處理知識(shí)和實(shí)踐相結(jié)合的問(wèn)題。把握重點(diǎn)、攻克
65、難關(guān),學(xué)到用到、活學(xué)活用。在設(shè)計(jì)過(guò)程中由于時(shí)間倉(cāng)促有很多地方難免存在不足之處。但在以后的工作中,我們會(huì)嚴(yán)格要求自己,追求完美。</p><p> 已注定我將在這里度過(guò)人生中最美麗的青春年華。提筆寫下“結(jié)束語(yǔ)”,我才驚覺(jué)自己即將真正離開(kāi),人生亦從此展開(kāi)新的畫卷。盡管不舍,卻更珍惜,因?yàn)槲业纳杏心敲炊嗫蓯?ài)的人值得感激。他們使我的大學(xué)生活充滿了色彩,無(wú)論收獲、遺憾,對(duì)我來(lái)說(shuō)都是一筆寶貴的財(cái)富。</p>
66、<p> 三年的大學(xué)生活不知不覺(jué)中就要結(jié)束了,在這段難忘的生活中,有我許多美好的回憶。在這份大學(xué)的最后一頁(yè)里,首先感謝黨、感謝學(xué)院給我們提供這個(gè)能自我展示的平臺(tái),感謝我的指導(dǎo)教師魯明旭老師,他從一開(kāi)始的論文方向的選定,到最后的整篇文論的完成,都非常耐心的對(duì)我進(jìn)行指導(dǎo)。給我提供了大量數(shù)據(jù)資料和建議,告訴我應(yīng)該注意的細(xì)節(jié)問(wèn)題,細(xì)心的給我指出錯(cuò)誤,修改論文。我要感謝在我三年的學(xué)習(xí)中無(wú)私傳授我知識(shí)的各位老師,是你們將自己寶貴的財(cái)
67、富無(wú)私地奉獻(xiàn)給了我們,讓我們能在學(xué)業(yè)上有所成績(jī);是你們讓我倍感教師職業(yè)的偉大,交給我們知識(shí),又不忘教育我們?nèi)绾巫鋈耍?lt;/p><p><b> 【參考文獻(xiàn)】</b></p><p> [1] 康華光,鄒壽彬編.電子技術(shù)基礎(chǔ)數(shù)字部分(第四版)[M].北京:高等教育出版社,2005</p><p> [2] 謝自美編.電子線路設(shè)計(jì)
68、3;實(shí)驗(yàn)·測(cè)試 (第二版) [M].上海:電子工業(yè)出版社,2001</p><p> [3] 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999年</p><p> [4] 陸坤,奚大順,李之權(quán)等,電子設(shè)計(jì)技術(shù)[M].成都:電子科技大學(xué)出版社1997年[5] 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口
69、技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999年</p><p> [5] 胡學(xué)海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:京電子工業(yè)出版社,2005年</p><p> [6] 林凌,李剛,丁茹,李小霞.新型單片機(jī)接口器件與技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005年</p><p><b> 附 錄 1</b>&l
70、t;/p><p><b> 計(jì)分器顯示程序</b></p><p> //搶答器加減記分顯示程序2</p><p> DBUFEQU30H;三位顯示緩沖區(qū)首址</p><p> ORG0000H</p><p><b> AJMPMAIN</b><
71、;/p><p><b> ORG0030H</b></p><p> MAIN:MOVSP,#60H</p><p> ACALLKEYSCAN;調(diào)用鍵盤掃描子程序判斷是加分或減分</p><p> CJNEA,#0EH,NEXT2;不是加分鍵,則轉(zhuǎn)移判斷是減分鍵?</p><p
72、> NEXT1:ACALLKEYSZ;是加分鍵,調(diào)用鍵盤設(shè)置子程序</p><p> ACALLDISPLAY;調(diào)用串口靜態(tài)顯示子程序</p><p><b> SJMPMAIN</b></p><p> NEXT2:CJNEA,#0FH,MAIN;都不是,則轉(zhuǎn)MAIN</p><p>
73、; AJMPNEXT1;是減分鍵,調(diào)用鍵盤設(shè)置子程序</p><p><b> ORG0100H</b></p><p> KEYSZ:PUSHPSW;鍵盤設(shè)置子程序</p><p><b> PUSHACC</b></p><p><b> SETBRS1
74、</b></p><p> MOVR0,#DBUF;R0指向顯示緩沖區(qū)首地址</p><p> MOVR7,#3;設(shè)置鍵盤輸入位數(shù)</p><p> L1:CLRRS1</p><p> ACALLKEYSCAN;調(diào)用鍵盤掃描子程序取按下鍵的鍵號(hào)</p><p><
75、b> SETBRS1</b></p><p> CJNEA,#0AH,L2;鍵入數(shù)合法性檢測(cè)(是否大于9)</p><p> L2:JNCL1;大于9,重新鍵入</p><p> MOVR0,A;鍵號(hào)送顯示緩沖區(qū)</p><p><b> INCR0</b>&l
76、t;/p><p> DJNZR7,L1;3位數(shù)值輸入完否?未完繼續(xù),否則返回</p><p><b> POPACC</b></p><p><b> POPPSW</b></p><p><b> CLRRS1</b></p><p&
77、gt;<b> RET</b></p><p> KEYSCAN:MOVR3, #0F7H;掃描初值(P1.3=0)</p><p> MOVR1,#00H;取碼指針</p><p> L3:MOVA,R3;開(kāi)始掃描</p><p> MOVP1,A;將掃描值輸出至P1&l
78、t;/p><p> MOVA,P1;讀入P1值,判斷是否有鍵按下</p><p> MOVR4,A;存入R4,以判斷按鍵是否放開(kāi)</p><p> SETBC;C=1</p><p> MOVR5,#04H;掃描P1.4~P1.7</p><p> L4:RLCA
79、;將按鍵左移一位</p><p> JNCKEYIN;判斷C=0?有鍵按下則C=0,跳至KEYIN</p><p> INCR1;C=1,則無(wú)鍵按下,將取碼指針值加1</p><p> DJNZR5,L4;4列掃描完畢了嗎?</p><p> MOVA,R3;掃描值載入</p><
80、;p> SETBC;C=1</p><p> RRCA;掃描下一行(P1.3~P1.0)</p><p> MOVR3,A;存回掃描寄存器</p><p> JCL3;C=1?是則P1.0尚未掃描到</p><p> SJMPKEYSCAN;C=0,則四行已掃描完畢</p>
81、;<p> KEYIN:MOVR7,#60;延時(shí)消除抖動(dòng)</p><p> D2:MOVR6,#248;</p><p> DJNZR6,$;</p><p> DJNZR7,D2;</p><p> D3:MOVA,P1;延時(shí)后再讀入P1值</p>
82、<p> XRLA,R4;與上次讀入值作比較</p><p> JZD3;A=0,表示按鍵未放,等待按鍵釋放</p><p> MOVA,R1;按鍵已放開(kāi),取碼指針載入累加器</p><p> MOVDPTR,#TABLE;鍵盤碼表首地址送DPTR</p><p> MOVCA,@
83、A+DPTR;查鍵碼</p><p> RET;返回</p><p> TABLE:DB00H,01H,02H,03H;鍵碼安排表與鍵盤相同</p><p> DB04H,05H,06H,07H</p><p> DB08H,09H,0AH,0BH</p><p> DB0CH,0D
84、H,0EH,0FH</p><p><b> ORG0200H</b></p><p> DISPLAY:MOVR0,#DBUF;串口靜態(tài)顯示子程序</p><p> MOVR2,#3;顯示3位數(shù)碼</p><p> MOVDPTR,#SEGTAB;</p><p>
85、DISP: MOVA,@R0;</p><p> MOVCA,@A+DPTR;取字段碼</p><p> MOVSCON,#0;置串口工作方式0</p><p> MOVSBUF,A;開(kāi)始發(fā)送</p><p> JNBTI,$;等待發(fā)送完畢</p><p> CLRTI;
86、發(fā)送完畢,標(biāo)志位清零</p><p> INCR0;緩沖單元地址增1</p><p> DJNZR2,DISP;三位數(shù)碼發(fā)送完否?</p><p> RET;發(fā)送完畢,則返回</p><p> SEGTAB: DB0FCH,60H,0DAH,0F2H ;0,1,2,3(共陽(yáng)極字段碼表)</p>
87、;<p> DB66H,0B6H, 0BEH,0E0H;4,5,6,7</p><p> DB0FEH,0F6H,0EEH,3EH;8,9,A,B</p><p> DB9CH,7AH,9EH,8EH ;C,D,+,-</p><p><b> END</b></p><p&g
88、t; DBUFEQU30H;三位顯示緩沖區(qū)首址</p><p> ORG0000H</p><p><b> AJMPMAIN</b></p><p><b> ORG0030H</b></p><p> MAIN:MOVSP,#60H</p>&l
89、t;p> ACALLKEYSCAN;調(diào)用鍵盤掃描子程序判斷是加分或減分</p><p> CJNEA,#0EH,NEXT2;不是加分鍵,則轉(zhuǎn)移判斷是減分鍵?</p><p> NEXT1:ACALLKEYSZ;是加分鍵,調(diào)用鍵盤設(shè)置子程序</p><p> ACALLDISPLAY;調(diào)用串口靜態(tài)顯示子程序</p>
90、<p><b> SJMPMAIN</b></p><p> NEXT2:CJNEA,#0FH,MAIN;都不是,則轉(zhuǎn)MAIN</p><p> AJMPNEXT1;是減分鍵,調(diào)用鍵盤設(shè)置子程序</p><p><b> ORG0100H</b></p><p>
91、 KEYSZ:PUSHPSW;鍵盤設(shè)置子程序</p><p><b> PUSHACC</b></p><p><b> SETBRS1</b></p><p> MOVR0,#DBUF;R0指向顯示緩沖區(qū)首地址</p><p> MOVR7,#3;設(shè)置鍵盤輸入位
92、數(shù)</p><p> L1:CLRRS1</p><p> ACALLKEYSCAN;調(diào)用鍵盤掃描子程序取按下鍵的鍵號(hào)</p><p><b> SETBRS1</b></p><p> CJNEA,#0AH,L2;鍵入數(shù)合法性檢測(cè)(是否大于9)</p><p> L
93、2:JNCL1;大于9,重新鍵入</p><p> MOVR0,A;鍵號(hào)送顯示緩沖區(qū)</p><p><b> INCR0</b></p><p> DJNZR7,L1;3位數(shù)值輸入完否?未完繼續(xù),否則返回</p><p><b> POPACC</b>&
94、lt;/p><p><b> POPPSW</b></p><p><b> CLRRS1</b></p><p><b> RET</b></p><p> KEYSCAN:MOVR3, #0F7H;掃描初值(P0.3=0)</p><
95、p> MOVR1,#00H;取碼指針</p><p> L3:MOVA,R3;開(kāi)始掃描</p><p> MOVP0,A;將掃描值輸出至P1</p><p> MOVA,P0;讀入P1值,判斷是否有鍵按下</p><p> MOVR4,A;存入R4,以判斷按鍵是否放開(kāi)<
96、/p><p> SETBC;C=1</p><p> MOVR5,#04H;掃描P1.4~P1.7</p><p> L4:RLCA;將按鍵左移一位</p><p> JNCKEYIN;判斷C=0?有鍵按下則C=0,跳至KEYIN</p><p> INCR1;C=
97、1,則無(wú)鍵按下,將取碼指針值加1</p><p> DJNZR5,L4;4列掃描完畢了嗎?</p><p> MOVA,R3;掃描值載入</p><p> SETBC;C=1</p><p> RRCA;掃描下一行(P1.3~P1.0)</p><p> MOVR3,
98、A;存回掃描寄存器</p><p> JCL3;C=1?是則P1.0尚未掃描到</p><p> SJMPKEYSCAN;C=0,則四行已掃描完畢</p><p> KEYIN:MOVR7,#60;延時(shí)消除抖動(dòng)</p><p> D2:MOVR6,#248;</p><p&
99、gt; DJNZR6,$;</p><p> DJNZR7,D2;</p><p> D3:MOVA,P0;延時(shí)后再讀入P1值</p><p> XRLA,R4;與上次讀入值作比較</p><p> JZD3;A=0,表示按鍵未放,等待按鍵釋放</p><p>
100、 MOVA,R1;按鍵已放開(kāi),取碼指針載入累加器</p><p> MOVDPTR,#TABLE;鍵盤碼表首地址送DPTR</p><p> MOVCA,@A+DPTR;查鍵碼</p><p> RET;返回</p><p> TABLE:DB00H,01H,02H,03H;鍵碼安排表與鍵盤相同
101、</p><p> DB04H,05H,06H,07H</p><p> DB08H,09H,0AH,0BH</p><p> DB0CH,0DH,0EH,0FH</p><p><b> ORG0200H</b></p><p> DISPLAY:MOVR0,#DBUF
102、;串口靜態(tài)顯示子程序</p><p> MOVR2,#3;顯示3位數(shù)碼</p><p> MOVDPTR,#SEGTAB;</p><p> DISP: MOVA,@R0;</p><p> MOVCA,@A+DPTR;取字段碼</p><p> MOVSCON,#0;置串口工作方
103、式0</p><p> MOVSBUF,A;開(kāi)始發(fā)送</p><p> JNBTI,$;等待發(fā)送完畢</p><p> CLRTI;發(fā)送完畢,標(biāo)志位清零</p><p> INCR0;緩沖單元地址增1</p><p> DJNZR2,DISP;三位數(shù)碼發(fā)送完否?</p&
104、gt;<p> RET;發(fā)送完畢,則返回</p><p> SEGTAB: DB0FCH,60H,0DAH,0F2H ;0,1,2,3(共陽(yáng)極字段碼表)</p><p> DB66H,0B6H, 0BEH,0E0H;4,5,6,7</p><p> DB0FEH,0F6H,0EEH,3EH;8,9,A,B<
105、;/p><p> DB9CH,7AH,9EH,8EH ;C,D,+,-</p><p><b> END</b></p><p> 附 錄 2</p><p><b> 搶答器軟件程序:</b></p><p> #include <REGX5
106、1.H></p><p> #define uchar unsigned char</p><p><b> //共陰碼</b></p><p> //uchar code table[]={0x00,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe }; /*代碼存儲(chǔ)區(qū)(64KB)*/ </
107、p><p><b> //共陽(yáng)碼</b></p><p> uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0xc2,0x41,0x1f,0x01,0xff }; </p><p> void delay (void) { /* dela
108、y 函數(shù)*/</p><p> uchar i,j; /*這個(gè)函數(shù)執(zhí)行時(shí)間的延遲 */</p><p> for (i=0;i<20;i++)</p><p> for(j=0;j<250;j++)</p><p><b> ;</b></p><
109、p><b> } </b></p><p> void main (void) {</p><p> uchar temp,key,j,time; /* 聲明變量temp */</p><p> while (1) { /* 無(wú)窮循環(huán) */&l
110、t;/p><p> temp=P0;/* 將P2輸入的數(shù)據(jù)直接放入變量temp當(dāng)中 */</p><p><b> delay();</b></p><p><b> temp=P0;</b></p><p> switch(temp) {</p><p>
111、 case 0xfe: key = 1;break;</p><p> case 0xfd: key = 2;break;</p><p> case 0xfb: key = 3;break;</p><p> case 0xf7: key = 4;break;</p><p> case 0xef: key = 5;break;&l
112、t;/p><p> case 0xdf: key = 6;break;</p><p> case 0xbf: key = 7;break;</p><p> case 0x7f: key = 8;break;</p><p> default : break; }</p><p> if(temp==0xff)
113、 { for(time=1;time>0;time--)/*無(wú)鍵按下,則關(guān)顯示*/</p><p> { j=table[0];</p><p> SCON=0x00;</p><p><b> SBUF=j;</b></p><p> while(TI!=1);</p><p>
114、<b> TI=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> else { j=table[key]; /*取鍵值并顯示*/</p><p> SCON=0x00;</p><p&
115、gt;<b> SBUF=j;</b></p><p> while(TI!=1);</p><p><b> TI=0; </b></p><p> for(;;)/*指示顯示,并實(shí)現(xiàn)鎖鍵功能*/</p><p> { P1=temp;</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)(論文)-聲光顯示智力競(jìng)賽搶答器
- 基于聲光顯示智力競(jìng)賽搶答器畢業(yè)設(shè)計(jì)
- 聲光顯示智力競(jìng)賽16路搶答器畢業(yè)設(shè)計(jì)
- 聲光顯示智力競(jìng)賽16路搶答器開(kāi)題報(bào)告
- 畢業(yè)設(shè)計(jì)-四路智力競(jìng)賽搶答器的設(shè)計(jì)
- 智力競(jìng)賽搶答器畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---多路智力競(jìng)賽搶答器設(shè)計(jì)(含外文翻譯)
- 智力競(jìng)賽搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)---智力競(jìng)賽搶答器
- 智力競(jìng)賽搶答器課程設(shè)計(jì)
- 智力競(jìng)賽搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)---智力競(jìng)賽搶答器設(shè)計(jì)
- 智力搶答器課程設(shè)計(jì)--智力競(jìng)賽搶答裝置的設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告---智力競(jìng)賽搶答器
- 智力競(jìng)賽搶答器課程設(shè)計(jì)報(bào)告
- 數(shù)電課程設(shè)計(jì)---智力競(jìng)賽搶答器
- 模電課程設(shè)計(jì)---智力競(jìng)賽搶答器
- 智力競(jìng)賽搶答器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 數(shù)電課程設(shè)計(jì)--智力競(jìng)賽搶答器
- 智力競(jìng)賽搶答器__數(shù)字邏輯課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論