銀行調(diào)度系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p>  題 目: 銀行叫號(hào)調(diào)度系統(tǒng)</p><p><b>  初始條件: </b></p><p>  protues,計(jì)算機(jī)</p><p>  要求完成的主要任務(wù): </p>

2、<p><b>  設(shè)計(jì)任務(wù)</b></p><p>  銀行門口有一個(gè)叫號(hào)機(jī),在客戶操作下可打印出一個(gè)順序號(hào);客戶按照順序號(hào)依次到銀行窗口辦理業(yè)務(wù);叫號(hào)機(jī)支持兩類業(yè)務(wù):現(xiàn)金業(yè)務(wù)和非現(xiàn)金業(yè)務(wù)。辦理現(xiàn)金業(yè)務(wù)的窗口有3個(gè),辦理非現(xiàn)金業(yè)務(wù)的窗口有2個(gè),稱為綜合窗口;現(xiàn)金業(yè)務(wù)窗口只能辦理現(xiàn)金業(yè)務(wù),而綜合業(yè)務(wù)窗口可以辦理現(xiàn)金業(yè)務(wù)和非現(xiàn)金業(yè)務(wù);非現(xiàn)金業(yè)務(wù)優(yōu)先級(jí)高;銀行工作人員在辦理了一個(gè)客戶

3、業(yè)務(wù)后,按一個(gè)呼叫按鈕,由系統(tǒng)安排其下一個(gè)辦理業(yè)務(wù)的順序號(hào);順序號(hào)在窗口前的LED屏上顯示的同時(shí)進(jìn)行語(yǔ)音播音,提示客戶前來(lái)辦理業(yè)務(wù).</p><p><b> ?。?)設(shè)計(jì)要求</b></p><p>  1.制定出業(yè)務(wù)調(diào)度控制規(guī)則;</p><p>  2.進(jìn)行系統(tǒng)總體設(shè)計(jì),畫出系統(tǒng)構(gòu)成框架圖;</p><p>  3

4、.進(jìn)行銀行業(yè)務(wù)前端排隊(duì)子系統(tǒng)的詳細(xì)設(shè)計(jì);</p><p>  4.進(jìn)行銀行業(yè)務(wù)調(diào)度系統(tǒng)的詳細(xì)設(shè)計(jì);</p><p>  5.進(jìn)行業(yè)務(wù)提示子系統(tǒng)(LED屏顯示、語(yǔ)音提示)的詳細(xì)設(shè)計(jì);</p><p>  5.設(shè)計(jì)調(diào)度系統(tǒng)與排隊(duì)子系統(tǒng)、提示子系統(tǒng)的通信方式和通信協(xié)議;</p><p>  6.總結(jié)整個(gè)系統(tǒng)的設(shè)計(jì),形成文檔,作為課程設(shè)計(jì)的結(jié)果提交。

5、</p><p>  7.鼓勵(lì)進(jìn)行完整的理論設(shè)計(jì)-編程-仿真過(guò)程;如果條件有限,無(wú)法獲得嵌入式開發(fā)板,可以用單片機(jī)代替</p><p><b>  時(shí)間安排:</b></p><p>  1、2013年1月5日分班集中,作課設(shè)具體實(shí)施計(jì)劃與課程設(shè)計(jì)報(bào)告格式的要求說(shuō)明。 </p><p>

6、  2、2012年1月6日至2013年1月19日完成設(shè)計(jì)制作與調(diào)試。</p><p>  3、2013年1月20日完成課程設(shè)計(jì)報(bào)告與答辯。</p><p>  指導(dǎo)教師簽名: 年 月 日</p><p>  系主任(或責(zé)任教師)簽名: 年 月 日</p>&

7、lt;p><b>  目 錄</b></p><p><b>  摘要I</b></p><p>  AbstractII</p><p>  1 設(shè)計(jì)目的與任務(wù)要求1</p><p>  1.1 設(shè)計(jì)目的1</p><p>  1.2 設(shè)計(jì)任務(wù)1</p

8、><p>  1.3 設(shè)計(jì)要求1</p><p>  2 方案的設(shè)計(jì)與論證2</p><p>  2.1 方案一:用ARM板實(shí)現(xiàn)2</p><p>  2.2 方案二:用單片機(jī)實(shí)現(xiàn)2</p><p>  2.3 方案比較及最終方案選擇2</p><p><b>  3 基本原理

9、3</b></p><p>  3.1 鍵盤電路基本原理3</p><p>  3.2 STC89C52基本原理4</p><p>  3.3 LCD液晶顯示基本原理5</p><p>  3.3.1 LM061L液晶模塊5</p><p>  3.3.2 LM016L的指令說(shuō)明及時(shí)序7</

10、p><p><b>  4 系統(tǒng)設(shè)計(jì)9</b></p><p>  4.1業(yè)務(wù)調(diào)度控制規(guī)則設(shè)計(jì)9</p><p>  4.2 前端排隊(duì)子系統(tǒng)設(shè)計(jì)9</p><p>  4.3 銀行業(yè)務(wù)調(diào)度系統(tǒng)設(shè)計(jì)10</p><p>  4.4 業(yè)務(wù)提示子系統(tǒng)設(shè)計(jì)12</p><p>

11、;  4.4.1 液晶顯示電路12</p><p>  4.4.2 聲音提示電路13</p><p>  4.5調(diào)度系統(tǒng)與排隊(duì)子系統(tǒng)的通信方式與通信協(xié)議13</p><p>  4.6 系統(tǒng)總設(shè)計(jì)15</p><p>  5 仿真結(jié)果及分析17</p><p>  6 小結(jié)及心得21</p>

12、<p><b>  結(jié)束語(yǔ)22</b></p><p><b>  參考文獻(xiàn)23</b></p><p><b>  附錄:源程序24</b></p><p><b>  摘要</b></p><p>  隨著現(xiàn)代技術(shù)的不斷發(fā)展特別是計(jì)算機(jī)

13、技術(shù)的應(yīng)用,使排隊(duì)技術(shù)的發(fā)展也突飛猛進(jìn)。智能排隊(duì)機(jī)或稱智能排隊(duì)系統(tǒng)是一種綜合運(yùn)用計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)、通訊控制技術(shù)的高新技術(shù)產(chǎn)品。它完全模擬了人群排隊(duì)過(guò)程,通過(guò)取號(hào)、進(jìn)隊(duì)、排隊(duì)等待、叫號(hào)服務(wù)等功能,取代各類服務(wù)性窗口傳統(tǒng)的由顧客站立排隊(duì)的方式,實(shí)現(xiàn)了計(jì)算機(jī)系統(tǒng)代替客戶進(jìn)行排隊(duì)的過(guò)程。適用于各類窗口服務(wù)行業(yè),目前在國(guó)外已經(jīng)廣泛應(yīng)用于金融、醫(yī)院、電信、以及各級(jí)政府對(duì)外服務(wù)窗口等行業(yè)。銀行自動(dòng)叫號(hào)系統(tǒng)就是電子排隊(duì)管理統(tǒng)的一種 ,是

14、針對(duì)銀行服務(wù)窗口的特點(diǎn)而設(shè)計(jì)的.這里以ATMEL 公司的AT89C52單片機(jī)為核心, 設(shè)計(jì)了一個(gè)簡(jiǎn)單的把客戶與服務(wù)機(jī)構(gòu)相結(jié)合的排隊(duì)叫號(hào)系統(tǒng)。模擬排隊(duì)叫號(hào)管理,科學(xué)地處理各種排隊(duì)情況,操作簡(jiǎn)便,控制靈活,顯示清晰,制作成本低,性價(jià)比較高。</p><p>  關(guān)鍵詞:排隊(duì)技術(shù)、智能排隊(duì)系統(tǒng)、銀行排隊(duì)叫號(hào)系統(tǒng)、AT89C52</p><p><b>  Abstract</b&

15、gt;</p><p>  With the development of modern technology, especially the application of computer technology, the queuing technology also develops by leaps and bounds. Intelligent Automatic Call Distributor or

16、intelligent queuing system is a kind of high and new technology products of the comprehensive use of computer technology, network technology, multimedia technology and communication control technology. It completely sim

17、ulates the crowd queue process.Through the functions of taking number, into the team, </p><p>  Keywords: queuing technology, Intelligent Automatic Call Distributor, Bank queuing station system,AT89C52</p

18、><p>  1 設(shè)計(jì)目的與任務(wù)要求</p><p><b>  1.1 設(shè)計(jì)目的</b></p><p>  通過(guò)課程設(shè)計(jì),使學(xué)生加強(qiáng)對(duì)電子電路的理解,學(xué)會(huì)對(duì)電路分析計(jì)算以及設(shè)計(jì)。進(jìn)一步提高分析解決實(shí)際問(wèn)題的能力,通過(guò)完成綜合設(shè)計(jì)型和創(chuàng)新性實(shí)驗(yàn)及訓(xùn)練,創(chuàng)造一個(gè)動(dòng)腦動(dòng)手﹑獨(dú)立開展電路實(shí)驗(yàn)的機(jī)會(huì),鍛煉分析﹑解決電子電路問(wèn)題的實(shí)際本領(lǐng),實(shí)現(xiàn)由課本知識(shí)向

19、實(shí)際能力的轉(zhuǎn)化。</p><p><b>  1.2 設(shè)計(jì)任務(wù)</b></p><p><b>  銀行叫號(hào)調(diào)度系統(tǒng):</b></p><p>  1.銀行門口有一個(gè)叫號(hào)機(jī),在客戶操作下可打印出一個(gè)順序號(hào);客戶按照順序號(hào)依次到銀行窗口辦理業(yè)務(wù);</p><p>  2.叫號(hào)機(jī)支持兩類業(yè)務(wù):現(xiàn)金業(yè)務(wù)和

20、非現(xiàn)金業(yè)務(wù)。辦理現(xiàn)金業(yè)務(wù)的窗口有3個(gè),辦理非現(xiàn)金業(yè)務(wù)的窗口有2個(gè),稱為綜合窗口;現(xiàn)金業(yè)務(wù)窗口只能辦理現(xiàn)金業(yè)務(wù),而綜合業(yè)務(wù)窗口可以辦理現(xiàn)金業(yè)務(wù)和非現(xiàn)金業(yè)務(wù);</p><p>  3.非現(xiàn)金業(yè)務(wù)優(yōu)先級(jí)高,綜合業(yè)務(wù)窗口只有在沒(méi)有非現(xiàn)金業(yè)務(wù)情況下,才能辦理現(xiàn)金業(yè)務(wù); 4.銀行工作人員在辦理了一個(gè)客戶業(yè)務(wù)后,按一個(gè)呼叫按鈕,由系統(tǒng)安排其下一個(gè)辦理業(yè)務(wù)的順序號(hào);順序號(hào)在窗口前的LED屏上顯示的同時(shí)進(jìn)行語(yǔ)音播音,提示客戶前來(lái)辦

21、理業(yè)務(wù); 設(shè)計(jì)一個(gè)叫號(hào)調(diào)度系統(tǒng),實(shí)現(xiàn)對(duì)辦理銀行業(yè)務(wù)的排隊(duì)和調(diào)度。</p><p><b>  1.3 設(shè)計(jì)要求</b></p><p>  1.制定出業(yè)務(wù)調(diào)度控制規(guī)則;</p><p>  2.進(jìn)行系統(tǒng)總體設(shè)計(jì),畫出系統(tǒng)構(gòu)成框架圖;</p><p>  3.進(jìn)行銀行業(yè)務(wù)前端排隊(duì)子系統(tǒng)的詳細(xì)設(shè)計(jì);</p>

22、<p>  4.進(jìn)行銀行業(yè)務(wù)調(diào)度系統(tǒng)的詳細(xì)設(shè)計(jì);</p><p>  5.進(jìn)行業(yè)務(wù)提示子系統(tǒng)(LED屏顯示、語(yǔ)音提示)的詳細(xì)設(shè)計(jì);</p><p>  5.設(shè)計(jì)調(diào)度系統(tǒng)與排隊(duì)子系統(tǒng)、提示子系統(tǒng)的通信方式和通信協(xié)議;</p><p>  6.總結(jié)整個(gè)系統(tǒng)的設(shè)計(jì),形成文檔,作為課程設(shè)計(jì)的結(jié)果提交。</p><p>  7.鼓勵(lì)進(jìn)行完整的

23、理論設(shè)計(jì)-編程-仿真過(guò)程;如果條件有限,無(wú)法獲得嵌入式開發(fā)板,可以用單片機(jī)代替</p><p>  2 方案的設(shè)計(jì)與論證</p><p>  2.1 方案一:用ARM板實(shí)現(xiàn)</p><p>  LPC2134微控制器是基于一個(gè)支持實(shí)時(shí)仿真和嵌入式跟蹤的16/32位ARM7TDMI-SCPU,超小LQFP64封裝,并帶有128kBB嵌入的高速Flash存儲(chǔ)器。1128

24、位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu)使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行。對(duì)代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用16位Thumb模式將代碼規(guī)模降低超過(guò)30%,而性能的損失卻很小。較小的封裝和很低的功耗使LPC2131/2132/2134/2136/2138特別適用于訪問(wèn)控制和POS機(jī)等小型應(yīng)用中;由于內(nèi)置了寬范圍的串行通信接口和16k的片內(nèi)SRAM,128位寬度接口/加速器可實(shí)現(xiàn)高達(dá)60MHz工作頻率。它們也非常適合于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、軟件

25、mo-dem、語(yǔ)音識(shí)別、低端成像,為這些應(yīng)用提供大規(guī)模的緩沖區(qū)和強(qiáng)大的處理功能。多個(gè)32位定時(shí)器、2個(gè)8路10位的A/D轉(zhuǎn)換器,共提供16路模擬輸入,每個(gè)通道的轉(zhuǎn)換時(shí)間低至2.44us。1個(gè)10位的D/A轉(zhuǎn)換器,可產(chǎn)生不同的模擬輸出。3個(gè)32位定時(shí)器/外部事件計(jì)數(shù)器(帶4路捕獲和4路比較通道)、PWM單元(6路輸出)和看門狗、47個(gè)GPIO以及多達(dá)9個(gè)邊沿或電平觸發(fā)的外部中斷使它們特</p><p>  2.2

26、方案二:用單片機(jī)實(shí)現(xiàn)</p><p>  AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。 </p>&

27、lt;p>  2.3 方案比較及最終方案選擇</p><p>  由于在上課過(guò)程中接觸到了單片機(jī)的有關(guān)知識(shí),對(duì)單片機(jī)的使用及編程都比較熟悉,而嵌入式ARM板沒(méi)有接觸過(guò),因此不太熟悉它的原理及使用,因此本次課程設(shè)計(jì)采用方案二來(lái)實(shí)現(xiàn),即用AT89C52單片機(jī)作為整個(gè)系統(tǒng)的控制核心,分別設(shè)計(jì)叫號(hào)電路、取號(hào)電路、顯示電路及聲音提示等外圍電路與單片機(jī)的對(duì)應(yīng)引腳相連接,然后編寫程序下載到單片機(jī)中通過(guò)單片機(jī)來(lái)控制外圍電路

28、的功能,從而實(shí)現(xiàn)整個(gè)系統(tǒng)的功能仿真。</p><p><b>  3 基本原理</b></p><p>  3.1 鍵盤電路基本原理</p><p>  鍵盤分編碼鍵盤和非編碼鍵盤,鍵盤上閉合鍵的識(shí)別由專用的硬件編碼器實(shí)現(xiàn),并產(chǎn)生按鍵編碼號(hào)或鍵值的稱為編碼鍵盤,如計(jì)算機(jī)鍵盤。而靠軟件編程來(lái)識(shí)別的稱為非編碼鍵盤,在單片機(jī)組成的各種系統(tǒng)中,用的最多

29、的是非編碼鍵盤。非編碼鍵盤又分為矩陣鍵盤和獨(dú)立鍵盤,分別如圖3.1.1-1(a)(b)所示。 </p><p>  圖3.1.1-1(a)矩陣鍵盤 圖3.1.1-2(b)獨(dú)立鍵盤</p><p>  鍵盤掃描原理:在這種非編碼鍵盤的單片機(jī)系統(tǒng)中,鍵盤處理程序首先執(zhí)行有無(wú)按鍵按下的程序段,當(dāng)確認(rèn)有按鍵按下后,下一步就要識(shí)別哪一個(gè)按鍵被按下,對(duì)鍵的

30、識(shí)別常采用逐行(逐列)掃描的方法。</p><p>  首先判斷有無(wú)按鍵按下。方法是:向行線輸出全掃描字00H,把全部行線置為低電平,然后將列線的電平狀態(tài)讀入到累加器A中,如果有按鍵按下,會(huì)使列線電平被拉至低電平,是列輸入不全為1。</p><p>  判斷鍵盤哪一個(gè)鍵被按下。方法是:一次給行線送低電平,然后查所有列線狀態(tài),稱為行掃描,如果全為1,則所按下鍵不在此行,如果不全為1,則所按下

31、鍵必在此行,而且是在與零電平列線相交的交點(diǎn)上的那個(gè)鍵。</p><p>  在此,按鍵的位置碼并不等于按鍵的實(shí)際定義鍵值,因此還必須進(jìn)行轉(zhuǎn)換,即鍵值譯碼。</p><p>  在本次課程設(shè)計(jì)中,由于只需采用兩個(gè)取號(hào)鍵盤和五個(gè)服務(wù)窗口鍵盤,所以我采用了獨(dú)立鍵盤來(lái)實(shí)現(xiàn),在程序中直接對(duì)連接鍵盤的單片機(jī)引腳進(jìn)行掃描,若引腳為0且延時(shí)去抖動(dòng)之后仍為低電平則說(shuō)明該鍵盤按下了。</p>&

32、lt;p>  3.2 STC89C52基本原理</p><p>  單片機(jī)AT89C52 具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。晶振采用12MHZ。其芯片管腳圖如圖3.2-1所示。</p><p>  圖3.2-1 STC89C52單片機(jī)</p><p>  VCC:

33、電源。GND:接地。</p><p>  P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p>  P1口:P1口是一個(gè)內(nèi)部提供上拉電阻

34、的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p><p>  P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸

35、入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存 儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p>  P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出

36、4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  P3口也可作為AT89C51的一些特殊功能口,如下:</p><p>  P3.0 RXD(串行輸入口)</p><p>  P3.1 TXD(串行輸出口)</p><p&

37、gt;  P3.2 /INT0(外部中斷0)</p><p>  P3.3 /INT1(外部中斷1)</p><p>  P3.4 T0(記時(shí)器0外部輸入)</p><p>  P3.5 T1(記時(shí)器1外部輸入)</p><p>  P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p>  P3.7 /RD(外部數(shù)

38、據(jù)存儲(chǔ)器讀選通)</p><p>  P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p>  ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率

39、周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器 時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。</p><p>  PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)

40、器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。</p><p>  EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí), /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源。</p>&l

41、t;p>  3.3 LCD液晶顯示基本原理</p><p>  3.3.1 LM061L液晶模塊</p><p>  LM016L液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(B

42、F),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來(lái)存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼。CGRAM是為用戶編寫特殊字符留用的,它的容量?jī)H64字

43、節(jié),可以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,AC可以存儲(chǔ)DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM或CGRAM,LM016L液晶模塊如圖3.3.1-1所示,其引腳功能如表3.3.2-1所示:</p><p>  圖3.3.1-1 LM016L液晶</p><p>  表3.3.1-1 LM016L液晶引腳功能<

44、;/p><p>  3.3.2 LM016L的指令說(shuō)明及時(shí)序</p><p>  LM016L液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.3.2-1所示:</p><p>  表3.3.2-1 控制命令表</p><p>  LM016L液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)</p

45、><p>  指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。</p><p>  指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。</p><p>  指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。</p><p>  指令4:顯示開關(guān)控制。 D:控制

46、整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。</p><p>  指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。</p><p>  指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F:

47、 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。</p><p>  指令7:字符發(fā)生器RAM地址設(shè)置。</p><p>  指令8:DDRAM地址設(shè)置。</p><p>  指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b>  

48、指令10:寫數(shù)據(jù)。</b></p><p>  指令11:讀數(shù)據(jù)。 </p><p>  與HD44780相兼容的芯片時(shí)序表如表3.3.2-2:</p><p>  表3.3.2-2 基本操作時(shí)序表</p><p><b>  4 系統(tǒng)設(shè)計(jì)</b></p><p>  4.1

49、業(yè)務(wù)調(diào)度控制規(guī)則設(shè)計(jì)</p><p>  由于本次課設(shè)要求是叫號(hào)機(jī)支持兩類業(yè)務(wù):現(xiàn)金業(yè)務(wù)和非現(xiàn)金業(yè)務(wù)。辦理現(xiàn)金業(yè)務(wù)的窗口有3個(gè),辦理非現(xiàn)金業(yè)務(wù)的窗口有2個(gè),稱為綜合窗口;現(xiàn)金業(yè)務(wù)窗口只能辦理現(xiàn)金業(yè)務(wù),而綜合業(yè)務(wù)窗口可以辦理現(xiàn)金業(yè)務(wù)和非現(xiàn)金業(yè)務(wù);非現(xiàn)金業(yè)務(wù)優(yōu)先級(jí)高,綜合業(yè)務(wù)窗口只有在沒(méi)有非現(xiàn)金業(yè)務(wù)情況下,才能辦理現(xiàn)金業(yè)務(wù);銀行工作人員在辦理了一個(gè)客戶業(yè)務(wù)后,按一個(gè)呼叫按鈕,由系統(tǒng)安排其下一個(gè)辦理業(yè)務(wù)的順序號(hào);順序號(hào)

50、在窗口前的LED屏上顯示的同時(shí)進(jìn)行語(yǔ)音播音,提示客戶前來(lái)辦理業(yè)務(wù)。</p><p>  因此,本次我設(shè)計(jì)的銀行叫號(hào)系統(tǒng)其業(yè)務(wù)調(diào)度規(guī)則如下:銀行設(shè)置兩個(gè)取號(hào)機(jī),分別是現(xiàn)金業(yè)務(wù)取號(hào)機(jī)和非現(xiàn)金業(yè)務(wù)取號(hào)機(jī),顧客根據(jù)自身辦理業(yè)務(wù)來(lái)選擇對(duì)應(yīng)叫取號(hào)機(jī)打印自己的號(hào)碼;銀行共設(shè)置五個(gè)叫號(hào)機(jī),其中2個(gè)非現(xiàn)金業(yè)務(wù)叫號(hào)機(jī)和3個(gè)現(xiàn)金業(yè)務(wù)叫號(hào)機(jī)來(lái)分別對(duì)應(yīng)5個(gè)服務(wù)窗口;現(xiàn)金業(yè)務(wù)窗口只能處理現(xiàn)金業(yè)務(wù);非現(xiàn)金業(yè)務(wù)窗口能處理兩種業(yè)務(wù),但若有非現(xiàn)金業(yè)

51、務(wù),非現(xiàn)金業(yè)務(wù)窗口優(yōu)先處理非現(xiàn)金業(yè)務(wù),完成后才處理現(xiàn)金業(yè)務(wù)。非現(xiàn)金業(yè)務(wù)和現(xiàn)金業(yè)務(wù)待處理的堆積量分別均為20人,以免引起取號(hào)過(guò)多等待服務(wù)的人數(shù)過(guò)多導(dǎo)致超負(fù)荷服務(wù)。</p><p>  4.2 前端排隊(duì)子系統(tǒng)設(shè)計(jì)</p><p>  前端排隊(duì)子系統(tǒng)我主要是靠2個(gè)按鍵來(lái)模擬兩個(gè)取號(hào)機(jī),以LM016L液晶顯示來(lái)模擬打印機(jī)顯示客戶的號(hào)碼,然后通過(guò)程序來(lái)控制顧客取號(hào)排隊(duì)的過(guò)程。其電路圖如圖4.2-1所

52、示,取號(hào)排隊(duì)流程圖如圖4.2-2所示。</p><p>  圖4.2-1 取號(hào)排隊(duì)電路圖</p><p>  圖4.2-2 排隊(duì)取號(hào)流程圖</p><p>  4.3 銀行業(yè)務(wù)調(diào)度系統(tǒng)設(shè)計(jì)</p><p>  銀行業(yè)務(wù)調(diào)度系統(tǒng)主要實(shí)現(xiàn)的就是對(duì)顧客業(yè)務(wù)的處理,5個(gè)處理窗口共分為2個(gè)非現(xiàn)金業(yè)務(wù)和3個(gè)現(xiàn)金業(yè)務(wù)的處理窗口,在仿真中我采用了5個(gè)按鍵來(lái)模

53、擬著5個(gè)處理窗口,然后通過(guò)程序來(lái)控制單片機(jī)實(shí)現(xiàn)整個(gè)業(yè)務(wù)的分類處理和優(yōu)先級(jí)處理的問(wèn)題。其流程圖如圖4.3-1所示,電路圖如圖4.3-2所示。</p><p>  圖4.3-1 業(yè)務(wù)調(diào)度流程圖</p><p>  圖4.3-2 業(yè)務(wù)調(diào)度電路圖</p><p>  4.4 業(yè)務(wù)提示子系統(tǒng)設(shè)計(jì)</p><p>  4.4.1 液晶顯示電路</

54、p><p>  本次課設(shè)我采用了LM016L液晶來(lái)模擬顯示,主要對(duì)排隊(duì)取號(hào)的號(hào)碼進(jìn)行顯示(模擬實(shí)際系統(tǒng)中的打印機(jī))以及對(duì)服務(wù)窗口叫號(hào)的顯示,其電路如圖4.4.1-1所示,單片機(jī)P1口接LM016L的8個(gè)雙向數(shù)據(jù)線接口,P3.4接LM016L的數(shù)據(jù)/命令選擇端,P3.5接LM016L的使能信號(hào)。通過(guò)對(duì)RS以及E的高低電平進(jìn)行寫指令和寫數(shù)據(jù)操作來(lái)控制LM016L的顯示。</p><p>  圖4.

55、4.1-1 顯示系統(tǒng)</p><p>  4.4.2 聲音提示電路</p><p>  實(shí)際銀行排隊(duì)叫號(hào)系統(tǒng)中,當(dāng)服務(wù)窗口可以服務(wù)時(shí),會(huì)有廣播播報(bào)對(duì)應(yīng)的“請(qǐng)某某號(hào)顧客到某某號(hào)窗口”的提示音,但是由于PROTUES里面沒(méi)有語(yǔ)音芯片,沒(méi)辦法進(jìn)行錄音仿真,于是本課設(shè)里面我采用了簡(jiǎn)單的蜂鳴器發(fā)聲電路來(lái)模擬實(shí)際的語(yǔ)音電路,以簡(jiǎn)單的蜂鳴器發(fā)聲來(lái)達(dá)到聲音提示的效果,其電路圖如圖4.4.2-1所示。<

56、;/p><p>  圖4.4.2-1 蜂鳴器聲音提示電路</p><p>  4.5調(diào)度系統(tǒng)與排隊(duì)子系統(tǒng)的通信方式與通信協(xié)議</p><p>  上位機(jī)和下位機(jī)中的數(shù)據(jù)發(fā)送。物理通信層中提供了兩個(gè)基本的操作函數(shù),發(fā)送一個(gè)字節(jié)數(shù)據(jù)則為數(shù)據(jù)發(fā)送的基礎(chǔ)。數(shù)據(jù)包的發(fā)送即把數(shù)據(jù)包中的左右字節(jié)按照順序一個(gè)一個(gè)的發(fā)送。在單片機(jī)系統(tǒng)中,比較常用的方法是直接調(diào)用串口發(fā)送單個(gè)字節(jié)數(shù)據(jù)的函數(shù)

57、。另外一種方法是采用中斷發(fā)送的方式,所有需要發(fā)送的數(shù)據(jù)被送入一個(gè)緩沖區(qū),利用發(fā)送中斷將緩沖區(qū)中的數(shù)據(jù)發(fā)送出去。對(duì)于51系列單片機(jī),比較傾向于采用直接發(fā)送的方式,采用中斷發(fā)送的方式比較占用RAM資源,而且對(duì)比直接發(fā)送來(lái)說(shuō)也沒(méi)有太多的優(yōu)點(diǎn)。以下是51系列單片機(jī)中發(fā)送單個(gè)字節(jié)的函數(shù)。</p><p>  void SendByte(unsigned char ch)</p><p><b&

58、gt;  { </b></p><p>  SBUF = ch; </p><p>  while(TI ==0);TI = 0; </p><p><b>  }</b></p><p>  數(shù)據(jù)接收和協(xié)議解析。下位機(jī)接收數(shù)據(jù)也有兩種方式:1.等待接收,處理器一直查詢串口狀態(tài),來(lái)判斷是否接收到數(shù)據(jù)。2中斷

59、接收。如果協(xié)議比較簡(jiǎn)單,整個(gè)系統(tǒng)只是處理一些簡(jiǎn)單的命令,那么可以直接把數(shù)據(jù)包的解析過(guò)程放入到中斷處理函數(shù)中,當(dāng)收到正確的數(shù)據(jù)包的時(shí)候,置位相應(yīng)的標(biāo)志,在主程序中再對(duì)命令進(jìn)行處理。以下給出具體的實(shí)例。在這個(gè)系統(tǒng)中,串口的命令非常簡(jiǎn)單。所有的協(xié)議全部在串口中斷中進(jìn)行。數(shù)據(jù)包的格式如下:0x55, 0xAA, 0x7E, 0x12, 0xF0, 0x02, 0x23, 0x45, SUM, XOR, 0x0D 其中0x55,0xAA,0x7E

60、為數(shù)據(jù)幀的幀頭,0x0D為幀尾,0x12為設(shè)備的目的地址,0xF0為源地址,0x02為數(shù)據(jù)長(zhǎng)度,后面接著兩個(gè)數(shù)據(jù)0x23,0x45,從目的地址開始結(jié)算累加、異或校驗(yàn)和,到數(shù)據(jù)的最后一位結(jié)束。協(xié)議解析的目的,首先判斷數(shù)據(jù)包的完整性,正確性,然后提取數(shù)據(jù)類</p><p>  型,數(shù)據(jù)等數(shù)據(jù),存放起來(lái)用于主程序處理。</p><p>  單片機(jī)的串行下載通信電路為單片機(jī)與PC機(jī),其他單片機(jī)之間

61、的通信提供了一個(gè)通信端口,使單片機(jī)的通信成為可能。我們這里使用單片機(jī)的串口,直接將主機(jī)的接受口P3^0(RXD)與從機(jī)的發(fā)送口P3^1(TXD)連接,將主機(jī)的發(fā)送口P3^1(TXD)與從機(jī)的接收口P3^0(RXD)連接。本系統(tǒng)使用了串行通信,采用方式1(10位異步收發(fā)),傳輸波特率由定時(shí)器1的溢出率決定(這里設(shè)為9600bps),每次傳送一個(gè)字節(jié)的數(shù)據(jù)。主機(jī)(調(diào)度子系統(tǒng))先不斷發(fā)送一個(gè)標(biāo)識(shí)數(shù)據(jù),從機(jī)接收到標(biāo)識(shí)后返回一個(gè)對(duì)應(yīng)的標(biāo)識(shí)給主機(jī),

62、然后主機(jī)將兩個(gè)實(shí)時(shí)排隊(duì)數(shù)組以及隊(duì)伍長(zhǎng)度發(fā)給從機(jī);從機(jī)向主機(jī)發(fā)送數(shù)據(jù)的過(guò)程同理。主程序中每次循環(huán)都是交換更新一次隊(duì)伍信息。</p><p>  主機(jī)向從機(jī)發(fā)送非現(xiàn)金業(yè)務(wù)信息,如圖4.5-1.</p><p>  主機(jī)向從機(jī)發(fā)送現(xiàn)金業(yè)務(wù)信息,如圖4.5-2.</p><p>  從機(jī)向主機(jī)發(fā)送非現(xiàn)金業(yè)務(wù)信息,如圖4.5-3.</p><p>  

63、從機(jī)向主機(jī)發(fā)送現(xiàn)金業(yè)務(wù)信息,如圖4.5-4.</p><p><b>  圖4.5-1</b></p><p><b>  圖4.5-2</b></p><p><b>  圖4.5-3</b></p><p><b>  圖4.5-4</b></p

64、><p><b>  4.6 系統(tǒng)總設(shè)計(jì)</b></p><p>  整個(gè)銀行排隊(duì)叫號(hào)系統(tǒng)的原理電路圖如圖4.6-1所示,其程序流程圖如圖4.6-2所示。</p><p>  圖4.6-1 系統(tǒng)總原理圖</p><p>  圖4.6-2 系統(tǒng)總流程圖</p><p><b>  5 仿真結(jié)果

65、及分析</b></p><p>  首先,我將非現(xiàn)金業(yè)務(wù)取號(hào)鍵按兩次,結(jié)果如圖5-1顯示,說(shuō)明非現(xiàn)金業(yè)務(wù)取號(hào)正常。</p><p>  圖5-1 非現(xiàn)金業(yè)務(wù)取號(hào)</p><p>  然后分別按下現(xiàn)金業(yè)務(wù)的叫號(hào)窗口1、2、3的對(duì)應(yīng)鍵,結(jié)果均如圖5-2所示,說(shuō)明現(xiàn)金業(yè)務(wù)窗口不能處理非現(xiàn)金業(yè)務(wù),且無(wú)現(xiàn)金業(yè)務(wù)排隊(duì)時(shí)其窗口顯示隊(duì)列空。</p><

66、;p>  圖5-3 現(xiàn)金業(yè)務(wù)窗口的限制</p><p>  然后依次按下非現(xiàn)金業(yè)務(wù)處理窗口1、2對(duì)應(yīng)鍵,結(jié)果如圖5-3所示,同時(shí)蜂鳴器發(fā)聲,說(shuō)明非現(xiàn)金業(yè)務(wù)能正常處理非現(xiàn)金業(yè)務(wù)。</p><p>  圖5-4 非現(xiàn)金業(yè)務(wù)處理</p><p>  然后,我按下四次現(xiàn)金業(yè)務(wù)取號(hào)鍵,其結(jié)果如圖5-4顯示,說(shuō)明現(xiàn)金業(yè)務(wù)取號(hào)正常。</p><p>

67、  圖5-4 現(xiàn)金業(yè)務(wù)取號(hào)</p><p>  然后,我一次按下了現(xiàn)金業(yè)務(wù)處理窗口3、4、5,結(jié)果如5-5所示,同時(shí)蜂鳴器發(fā)聲,說(shuō)明現(xiàn)金業(yè)務(wù)處理正常.</p><p>  圖5-5 現(xiàn)金業(yè)務(wù)處理</p><p>  然后,我又按下一次非現(xiàn)金業(yè)務(wù)取號(hào)鍵,結(jié)果如5-6顯示,說(shuō)明現(xiàn)金和非現(xiàn)金業(yè)務(wù)共同取號(hào)正常。</p><p><b>  

68、圖5-6 綜合取號(hào)</b></p><p>  然后,我按下非現(xiàn)金業(yè)務(wù)處理窗口1,結(jié)果顯示如圖5-7,同時(shí)蜂鳴器發(fā)聲,說(shuō)明非現(xiàn)金業(yè)務(wù)的優(yōu)先級(jí)在現(xiàn)金業(yè)務(wù)之前。</p><p>  圖5-6 非現(xiàn)金業(yè)務(wù)的優(yōu)先權(quán) </p><p>  然后,我再次按下非現(xiàn)金業(yè)務(wù)處理窗口1,結(jié)果顯示如圖5-7,同時(shí)蜂鳴器發(fā)聲,說(shuō)明非現(xiàn)金業(yè)務(wù)處理窗口在處理完非現(xiàn)金業(yè)務(wù)之后也能處理

69、現(xiàn)金業(yè)務(wù)。</p><p>  圖5-7 非現(xiàn)金業(yè)務(wù)窗口處理現(xiàn)金業(yè)務(wù)</p><p>  然后,我將現(xiàn)金業(yè)務(wù)和非現(xiàn)金業(yè)務(wù)取號(hào)窗口各按21次,其顯示均如圖5-8所示,說(shuō)明非現(xiàn)金業(yè)務(wù)和現(xiàn)金業(yè)務(wù)都能限制待處理人數(shù)在20人以內(nèi)。</p><p>  圖5-8 排隊(duì)隊(duì)列已滿</p><p>  綜上所述,我設(shè)計(jì)的銀行排隊(duì)叫號(hào)系統(tǒng)能夠正確實(shí)現(xiàn)所需的功能,

70、性能優(yōu)良。</p><p><b>  6 小結(jié)及心得</b></p><p>  通過(guò)本次課設(shè)我受益匪淺,尤其是對(duì)我之前學(xué)的的理論知識(shí)的鞏固與提高,并將所學(xué)理論與實(shí)際操作和設(shè)計(jì)結(jié)合讓我更深刻的理解和貫通了理論知識(shí)。同時(shí),在課程設(shè)計(jì)的過(guò)程中我也發(fā)現(xiàn)了很多問(wèn)題和自己的不足之處,這些都有利于我以后改進(jìn)和提高,為將來(lái)打下牢固的知識(shí)基礎(chǔ)。這次課設(shè)不僅使我的設(shè)計(jì)能力大幅提高,也

71、鍛煉我的意志品質(zhì),提高了自學(xué)能力。尤其是在軟件的使用和報(bào)告的撰寫過(guò)程中,我學(xué)到了很多以前不知道但是很重要的必備知識(shí),更重要的是讓我領(lǐng)悟到做事一定要認(rèn)真仔細(xì)的去體會(huì)每一個(gè)要求,要做到穩(wěn)扎穩(wěn)打勤懇務(wù)實(shí)。這才是求學(xué)應(yīng)有的態(tài)度。尤其是在protues仿真軟件的使用,KEIL 軟件的學(xué)習(xí)操作和報(bào)告的撰寫過(guò)程中,我學(xué)到了很多以前不知道但是很重要的必備知識(shí),更重要的是讓我領(lǐng)悟到做事一定要認(rèn)真仔細(xì)的去體會(huì)每一個(gè)要求,要做到穩(wěn)扎穩(wěn)打勤懇務(wù)實(shí)。這才是求學(xué)應(yīng)

72、有的態(tài)度。</p><p>  在這次課設(shè)過(guò)程中我用到了單片機(jī)和KEIL軟件的有關(guān)知識(shí),終于感受到了什么是學(xué)有所用。我想這才是理論聯(lián)系實(shí)踐吧,短短的幾個(gè)星期的課程設(shè)計(jì)即將接近尾聲,我在這次課設(shè)中學(xué)到了很多知識(shí);同時(shí)也利用這次機(jī)會(huì)溫故了以前學(xué)習(xí)的知識(shí)。</p><p><b>  結(jié)束語(yǔ)</b></p><p>  本次通信工程應(yīng)用技術(shù)課程設(shè)計(jì)就

73、要結(jié)束了,在這整個(gè)過(guò)程中,我受到了不少熱心的老師和同學(xué)們的幫助,尤其是我的指導(dǎo)教師**老師,在我遇到專業(yè)知識(shí)性問(wèn)題和設(shè)計(jì)難題或撰寫報(bào)告遇到困惑時(shí),他們都給予我耐心的講解和幫助,讓我能運(yùn)用知識(shí)排除困難,理解原理與錯(cuò)誤原因從而真正解決一個(gè)或一系列相關(guān)的問(wèn)題。在此,我對(duì)幫助過(guò)我的同學(xué)老師表示衷心的感謝。希望下一次的課程設(shè)計(jì)我能做的更好,能夠更好的鍛煉自己,從而學(xué)到更多知識(shí)。</p><p><b>  參考文

74、獻(xiàn):</b></p><p>  [1] 謝自美.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試(第三版).武漢:華中科技大學(xué)出版社</p><p>  [2] 李群芳. 單片微型計(jì)算機(jī)與接口技術(shù)(第3版).電子工業(yè)出版社,2008</p><p>  [3] 劉教瑜. 單片機(jī)原理及應(yīng)用.武漢理工大學(xué)出版社,2011</p><p>

75、;  [4] 張東亮. 單片機(jī)原理與應(yīng)用.人民郵電出版社,2009</p><p>  [5] 郭天祥. 51單片機(jī)C語(yǔ)言教程——入門、提高、開發(fā)、拓展全攻略.電子工業(yè)出版社,2009</p><p>  [6] 章工榮.計(jì)算機(jī)高級(jí)應(yīng)用.高等教育出版社, 2004</p><p>  [7] 李文成.計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ).科學(xué)出版社,2007</p>&

76、lt;p>  [8] 張錦程.C語(yǔ)言高級(jí)程序設(shè)計(jì)及其講解.機(jī)械工業(yè)出版社,2000</p><p><b>  附錄:源程序</b></p><p><b>  主機(jī)程序</b></p><p>  #include<reg51.h></p><p>  #define uchar

77、 unsigned char</p><p>  #define uint unsigned int</p><p>  sbit rs=P3^4;</p><p>  sbit e=P3^5;</p><p>  sbit key2=P1^1;</p><p>  sbit key3=P1^2;</p>

78、<p>  sbit sounder=P3^7;</p><p>  sbit key4=P1^3; </p><p>  sbit key5=P1^4;</p><p>  sbit key6=P1^5;</p><p>  uint aa;bb;cc;</p><p>  uchar prompt1[]

79、="Your No.is 00!"; </p><p>  uchar prompt2[]="No.00 Go To Win.0"; </p><p>  uchar prompt3[]="Queue is full "; </p><p>  uchar prompt4[]="

80、Queue is empty !"; </p><p>  uchar prompt5[]="Welcome!";</p><p>  static uint idata rank_number[20]={0}; //排隊(duì)叫號(hào)存儲(chǔ)的數(shù)組</p><p>  static uint num=0;

81、 //窗口消的現(xiàn)金號(hào)碼</p><p>  static int ClearNumFlag=0; //消號(hào)的標(biāo)志</p><p>  static uint LengthFlag=0; //現(xiàn)金業(yè)務(wù)隊(duì)列長(zhǎng)度 取一次號(hào)時(shí)+1,消一次號(hào)時(shí)-1</p><p>  static uint

82、idata rank_number1[20]={0}; //非現(xiàn)金業(yè)務(wù)排隊(duì)叫號(hào)存儲(chǔ)的數(shù)組</p><p>  static uint num1=0; //窗口消的非現(xiàn)金號(hào)碼</p><p><b>  uchar i;</b></p><p>  static int ClearN

83、umFlag1=0; //消號(hào)的標(biāo)志</p><p>  static uint LengthFlag1=0; //非現(xiàn)金業(yè)務(wù)隊(duì)列長(zhǎng)度 取一次號(hào)時(shí)+1,消一次號(hào)時(shí)-1 </p><p>  uint idata* data q1=rank_number1;</p><p>  uint idata*

84、data q2=rank_number ;</p><p><b>  /*延時(shí)函數(shù)*/</b></p><p>  void delay(uint n) </p><p><b>  { </b></p><p>  while (n--);</p><p><b&g

85、t;  }</b></p><p>  /*****************************************</p><p>  LCD1602 *顯示屏命令寫入函數(shù)*</p><p>  *****************************************/</p><p>  void LCD_w

86、rite_com(uchar com) </p><p><b>  { </b></p><p><b>  e=0;</b></p><p><b>  rs=0; </b></p><p><b>  P0= com; </b></p>

87、;<p>  delay(1000); </p><p><b>  e=1;</b></p><p>  delay(1000);</p><p><b>  e=0;</b></p><p><b>  }</b></p><p>  

88、/*****************************************</p><p>  LCD1602 *顯示屏數(shù)據(jù)寫入函數(shù)*</p><p>  *****************************************/</p><p>  void LCD_write_data(uchar dat)</p><p&

89、gt;<b>  { </b></p><p><b>  e=0; </b></p><p><b>  rs=1; </b></p><p>  P0 = dat; </p><p>  delay(1000); </p><p><b>

90、;  e=1;</b></p><p>  delay(1000);</p><p><b>  e=0;</b></p><p><b>  }</b></p><p>  /*****************************************</p>&l

91、t;p>  LCD1602 *顯示屏清空顯示*</p><p>  *****************************************/</p><p>  void LCD_clear(void) </p><p><b>  { </b></p><p>  LCD_write_com(0x01

92、); </p><p>  delay(1000);</p><p><b>  }</b></p><p>  /*****************************************</p><p>  LCD1602 顯示屏初始化函數(shù)</p><p>  ************

93、*****************************/</p><p>  void LCD_init(void) </p><p><b>  {</b></p><p>  LCD_write_com(0x38); /*顯示模式設(shè)置*/ </p><p>  delay(100); </p>

94、<p>  LCD_write_com(0x38); </p><p>  delay(100); </p><p>  LCD_write_com(0x38); </p><p>  delay(100); </p><p>  LCD_write_com(0x38); //設(shè)置16x2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)接口<

95、;/p><p>  LCD_write_com(0x08); /*顯示關(guān)閉*/ </p><p>  LCD_write_com(0x01); /*顯示清屏,指針清零*/ </p><p>  LCD_write_com(0x06); /*寫一個(gè)字符后地址指針自動(dòng)加1*/ </p><p>  delay(100); </

96、p><p>  LCD_write_com(0x0C); /*顯示開及不顯示光標(biāo)*/</p><p><b>  }</b></p><p>  /*簡(jiǎn)單的蜂鳴器提示音*/</p><p>  void sound()</p><p><b>  { </b></p&

97、gt;<p><b>  uint a;</b></p><p>  for(a=0;a<500;a++)</p><p><b>  {</b></p><p>  sounder=0;</p><p>  delay(61);</p><p>  so

98、under=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*獲取鍵值函數(shù)*/</p><p>  uint sweep_key()</p><p><b>  { </b></p>

99、;<p>  uint jianzhi; </p><p>  if(key2==0||key3==0) //非現(xiàn)金業(yè)務(wù)銷號(hào)按鍵</p><p><b>  { </b></p><p>  delay(1000);</p><p>  if(key2==0)&l

100、t;/p><p>  {jianzhi=2;}while(!key2);delay(50);while(!key2); // 2</p><p>  if(key3==0)</p><p><b>  {</b></p><p>  jianzhi=3;// 3 </p><

101、;p>  } while(!key3);delay(50);while(!key3);</p><p>  ClearNumFlag1=1;</p><p><b>  }</b></p><p>  if(key4==0||key5==0||key6==0)//現(xiàn)金業(yè)務(wù)銷號(hào)按鍵</p><p><b&g

102、t;  { </b></p><p>  delay(1000);</p><p>  if(key4==0)</p><p>  {jianzhi=4;}while(!key4);delay(100);while(!key4); // 4</p><p>  if(key5==0)</p><

103、p>  {jianzhi=5;}while(!key5);delay(100);while(!key5); // 5</p><p>  if(key6==0)</p><p><b>  {</b></p><p>  jianzhi=6; // 6</p><p>  }whil

104、e(!key6);delay(100);while(!key6);</p><p>  ClearNumFlag=1;</p><p><b>  }</b></p><p>  return (jianzhi);</p><p><b>  }</b></p><p>  

105、/*****************************************</p><p><b>  窗口消號(hào)處理函數(shù)</b></p><p>  *****************************************/</p><p>  void ClearNumProcess()</p><p&

106、gt;<b>  {</b></p><p><b>  uint i;</b></p><p>  if (ClearNumFlag1==1) //判斷消號(hào)標(biāo)志是否有效</p><p><b>  {</b></p><p>  num1=*q1; //把消的非現(xiàn)

107、金號(hào)賦給全局變量num1</p><p>  for(i=0;i<20;i++) //讓數(shù)組整體左移一個(gè)存儲(chǔ)單元,即把消得號(hào)刪除</p><p><b>  {</b></p><p>  *(q1+i)=*(q1+i+1);</p><p><b>  }</b></p>

108、<p>  LengthFlag1--;</p><p><b>  }</b></p><p>  if (ClearNumFlag==1) //判斷消號(hào)標(biāo)志是否有效</p><p><b>  {</b></p><p>  num=*q2; //把消的號(hào)賦給全局變量n

109、um</p><p>  for(i=0;i<20;i++) //讓數(shù)組整體左移一個(gè)存儲(chǔ)單元,即把消得號(hào)刪除</p><p><b>  {</b></p><p>  *(q2+i)=*(q2+i+1);</p><p><b>  }</b></p><p>

110、;  LengthFlag--;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****************************************</p><p>  檢測(cè)到按鍵后,檢測(cè)函數(shù)處理及LCD顯示處理</p>

111、;<p>  *****************************************/</p><p>  void CheckButtonProcess(uint m) //m代表檢測(cè)到的鍵值</p><p><b>  { </b></p><p>  uint jz,i;</p><p>

112、;<b>  jz=m;</b></p><p>  if((jz==2||jz==3) && ClearNumFlag1==1) //非現(xiàn)金業(yè)務(wù)銷號(hào)窗口</p><p><b>  { </b></p><p>  if(LengthFlag1==0) //沒(méi)有非現(xiàn)金業(yè)務(wù)客

113、戶</p><p><b>  { </b></p><p>  if(LengthFlag==0)//沒(méi)有客戶</p><p><b>  {</b></p><p>  LCD_clear();</p><p>  LCD_write_com(0x80+0);&l

114、t;/p><p>  delay(1000);</p><p>  for(i=0;i<16;i++)</p><p><b>  {</b></p><p>  LCD_write_data(prompt4[i]);//"Queue is empty ";</p><p>

115、  delay(100);</p><p><b>  }</b></p><p>  delay(65535); //無(wú)人排隊(duì)時(shí)屏幕自動(dòng)清屏</p><p>  LCD_clear();</p><p>  LCD_write_com(0x80+02);</p><p>  for(i=0;i&

116、lt;15;i++)</p><p><b>  {</b></p><p>  LCD_write_data(prompt5[i]); //"Welcome!"; </p><p>  delay(100);</p><p><b>  }</b></p>&l

117、t;p>  //num_count=0;</p><p><b>  }</b></p><p>  else //但是有現(xiàn)金業(yè)務(wù)客戶</p><p><b>  { </b></p><p>  ClearNumFlag=1;</p><p&

118、gt;  ClearNumFlag1=0 ;</p><p>  ClearNumProcess(); //消號(hào)處理,營(yíng)業(yè)員操作</p><p><b>  sound();</b></p><p>  prompt2[3]=num/10+'0';</p><p>  prompt2[4]=n

119、um%10+'0';</p><p>  prompt2[15]=(jz-1)+'0';</p><p>  LCD_clear();</p><p>  LCD_write_com(0x80+0);</p><p>  delay(100);</p><p>  for(i=0;i&l

120、t;16;i++)</p><p><b>  {</b></p><p>  LCD_write_data(prompt2[i]); //"No.00 come to No.0"; </p><p>  delay(100);</p><p><b>  }</b></p

121、><p>  ClearNumFlag=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else //有非現(xiàn)金客戶</p><p><b>  {</b></p><

122、;p>  ClearNumProcess(); //消號(hào)處理,營(yíng)業(yè)員操作</p><p><b>  sound();</b></p><p>  prompt2[3]=(num1)/10+'0';</p><p>  prompt2[4]=(num1)%10+'0';</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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論