基于AT89C51單片機的排隊叫號系統(tǒng)設計_第1頁
基于AT89C51單片機的排隊叫號系統(tǒng)設計_第2頁
基于AT89C51單片機的排隊叫號系統(tǒng)設計_第3頁
基于AT89C51單片機的排隊叫號系統(tǒng)設計_第4頁
基于AT89C51單片機的排隊叫號系統(tǒng)設計_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 B排隊叫號機的實現(xiàn) 目目 錄錄1.引言.- 1 -2.系統(tǒng)功能分析及設計要求 .- 2 -3.系統(tǒng)框圖.- 2 -4.主要應用器件及技術原理.- 2 - 4.1 微處理器介紹.- 2 - 4.1.1、MCS-51 單片機的特點.- 2 - 4.1 2、MCS-51 單片機的結構.- 3 - 4.2 液晶 LCD1602 的介紹.- 3- 4.2.1 字符型液晶顯示器的顯示原理.- 3- 4.2.2 液晶 LCD1602 的簡介.- 4 -5.系統(tǒng)硬件電路設計.- 8 - 5.1 晶振電路.- 8- 5.2 液晶顯示電路.- 9 - 5.3 聲音提示電路.- 10 -6系統(tǒng)測試.- 11 -7

2、系統(tǒng)軟件設計.- 13 - 7.1 系統(tǒng)軟件流程圖.- 13 - 7.2 系統(tǒng)程序設計.- 13 - 7.2.1 主程序.- 13 - 7.2.2 液晶 LCD1602 顯示處理程序.- 20 - 7.2.3 按鍵檢測程序.- 21 -8結束語.- 23 -9致謝辭.- 24-10參考文獻.- 25 - 1 / 24排隊叫號系統(tǒng)設計排隊叫號系統(tǒng)設計1.1.引言引言近年來,隨著科學技術的迅猛發(fā)展和人們生活水平的日益提高,各行各業(yè)特別是服務行業(yè)的競爭也逐漸激烈。服務質量作為體現(xiàn)企業(yè)的公眾形象、服務理念、管理水平的標準已越來越受到服務和被服務雙方所關注,而營業(yè)窗口正是代表銀行、醫(yī)院、電信、稅務、工商

3、等企業(yè)服務質量的重要場所。隨著服務行業(yè)業(yè)務量的增長及業(yè)務種類的增加,排隊等候已成為人們面臨的實際問題。長期以來,人們在銀行、醫(yī)院、電信、稅務、工商等營業(yè)大廳里前擁后擠、雜亂無章地排隊等候, 有時一站就是一個多小時,這已是司空見慣的現(xiàn)象,極大地影響了服務質量。員工坐著服務、客戶站著等待的服務方式與“用戶就是上帝” 的服務宗旨完全背道而馳!改善服務質量、樹立良好形象,解決勞累的排隊現(xiàn)象、創(chuàng)造人性化服務環(huán)境已成為急需解決的問題。設計一套排隊抽號的服務系統(tǒng),可以很好的解決因排隊引起的種種問題,排隊系統(tǒng)應運而生。此系統(tǒng)完全模擬人群排隊過程,通過取票進隊、排隊等待、叫號服務等功能,詮釋了人性化的服務理念,

4、舒緩顧客等待的急噪情緒,使人們在等候服務的過程中擁有一個相對自由的空間,是科技以人為本的真正體現(xiàn)。本文基于單片機的排隊叫號系統(tǒng),由客戶端和主機終端組成,有LCD大屏幕顯示信息,讓客戶知道自己的隊號,并有叫號提示音提醒客戶,方便快捷,可以滿足日常的服務行業(yè)排隊叫號,所以非常有意義。 2 / 242.系統(tǒng)功能分析及設計要求一個很好的叫號系統(tǒng),它的功能設計首先要符合用戶的習慣,同時操作方便,易學,易用。本系統(tǒng)由鍵盤輸入系統(tǒng)、單片機系統(tǒng)、屏幕顯示系統(tǒng)及叫號提示音系統(tǒng)組成,系統(tǒng)分為兩個部分:抽號部分和叫號部分,其控制核心為AT89C51 單片機,選用此單片機編程簡單,開發(fā)工具便于使用,能滿足很好的滿足排

5、隊抽號的控制數(shù)據(jù)處理。抽號部分和叫號部分采用一塊 LCD 液晶顯示器,這樣顯示數(shù)據(jù)直觀,便于客戶理解,抽號部分輸入只需使用一個抽號按鍵即可,便于客戶操作,叫號部分包括叫兩個號鍵,系統(tǒng)采用自動清零,無需人工操作 3 / 243.系統(tǒng)框圖設備上電后,顯示器屏幕亮,無信息顯示。當客戶按鍵后,每按一下,隊伍加 1,顯示器顯示客戶隊伍號;排滿 20 位后,再按取號鍵,屏幕顯示“隊伍滿” 。當客服叫號時,隊伍減 1,程序進行信息處理,在顯示器上顯示“幾號客戶到幾號窗口” ,同時進行聲音提示;當隊伍空時,顯示“隊伍空” ,顯示器屏幕清空,儲存的隊伍號碼歸零處理1602 液晶顯示液晶顯示 AT89C51單片機

6、單片機叫號提示音叫號提示音終端窗口叫終端窗口叫號號客戶端客戶端取號取號 4 / 244.主要應用器件及技術原理4.1 微處理器介紹4.1.1、MCS-51 單片機的特點:(1)小巧靈活、成本低、易于產品化。能組裝成各種智慧式測控設備及智能儀器儀表。(2)可靠性好,應用范圍廣。單片機芯片本身是按工業(yè)測控環(huán)境要求設計的,抗干擾性強,能適應各種惡劣的環(huán)境,這是其它機種無法比擬的。(3)易擴展,很容易構成各種規(guī)模的應用系統(tǒng),控制功能強。單片機的邏輯控制功能很強,指令系統(tǒng)有各種控制功能指令,可以對邏輯功能比較復雜的系統(tǒng)進行控制。(4)具有通訊功能,可以很方便地實現(xiàn)多機和分布式控制,形成控制網絡和遠程控制

7、。正是由于 51 系列單片機具有以上優(yōu)點,所以成為本次畢業(yè)設計所選用的處理器。4.1 2、MCS-51 單片機的結構AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復擦除 100 次。從工作原理上講,單片機就是一種微型計算機,是一種“程序存儲式”計算機。它是在一塊硅片上集成了中央處理器(CPU)、隨機內存(RAM)、程序內存(ROM 或 EPROM)、定時/計數(shù)器以及各種 I/O 接口,

8、也就是集成在一塊芯片上的計算機。圖 4.1 MCS-51 單片機的結構 5 / 244.2 液晶 LCD1602 的介紹4.2.1 字符型液晶顯示器的顯示原理用 LCD 顯示一個字符時比較復雜,因為一個字符由 6x8 或 8x8 點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示 RAM 區(qū)的 8 個字節(jié),還要使每字節(jié)的不同位為“1” ,其它的為“0” ,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但對于內帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在 LCD 上開始顯示的行列號及每行的列數(shù)找出顯示 RAM 對應的地址,設立游標,在此送上該字符對

9、應的代碼即可。4.2.2 液晶 LCD1602 的簡介 6 / 24 7 / 24 8 / 245.5.系統(tǒng)硬件電路設計系統(tǒng)硬件電路設計系統(tǒng) Proteus 仿真圖:圖中主要以 AT89C51 為控制核心,包括顯示電路,音樂提示電路,晶振電路。 圖 5.1 電路仿真5.1 晶振電路AT89C51 中有一個用于構成內部振蕩器的高增益反相放大器,引腳 XTAL1和 XTAL2 分別是該放大器的輸入端和輸出端。這個放大器與作為回饋組件的片外石英晶體或陶瓷諧振器一起構成自激振蕩器。 9 / 24外接石英晶體(或陶瓷諧振器)及電容 C1、C2 接在放大器的反饋回路中構成并聯(lián)振蕩電路。對外接電容 C1、C

10、2 雖然沒有十分嚴格的要求,但是電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用 30pF10pF,而如果使用陶瓷諧振器建議選用 40pF10pF。使用外部振蕩器時,外部振蕩信號應直接加到 XTAL1,而 XTAL2 懸空。內部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為 12MHz,時鐘頻率就為6MHz。晶振的頻率可以在 1MHz-24MHz 內選擇。電容取 30PF 左右。本系統(tǒng)采用內部方式,晶振選用 12MHz。圖 5.2 晶體內部方式5.2 液晶顯示電路如下圖 5.3,P1 口接 LCD1602 的 8 個雙向數(shù)

11、據(jù)線接口,P3.4 接 1602 的數(shù)據(jù)/命令選擇端,P3.5 接 1602 的讀/寫選擇端,P3.6 接 1602 的使能信號。BLA、BLK 分別是 1602 的背光源的正負極,VL 是 1602 對比度調整端。本文是通過對 RS、RW 以及 E 的高低電平進行寫指令和寫數(shù)據(jù)操作來控制 1602 的顯示的。 10 / 24 圖 5.3 液晶顯示電路5.3 聲音提示電路 使用最簡單的蜂鳴器來作為提示音部分,通過改變端口高低電平來進行發(fā)聲,并對延時進行修改來調試發(fā)聲頻率,從而修改發(fā)出的聲音的好壞 圖 5.4 聲音提示電路圖 11 / 246系統(tǒng)仿真仿真是在軟件 Proteus 7.4 上進行的

12、,用 C 語言編寫的程序,通過 keil 生成了hex 文件,經過調試,仿真實現(xiàn)了排隊叫號系統(tǒng)的功能客戶取號圖按下客戶端取號按鍵,屏幕顯示“Your No.is 03!” 圖 6.1 客戶端顯示 12 / 24窗口叫號圖按下窗口服務叫號按鍵一,屏幕顯示“No.03 Come to No.1 window, please”圖 6.2 窗口服務叫號顯示 13 / 247 7系統(tǒng)軟件設計系統(tǒng)軟件設計7.1 系統(tǒng)軟件流程圖開始開始初始化初始化客戶取號客戶取號隊伍號碼累加隊伍號碼累加1602 顯示信息顯示信息窗口消號窗口消號隊伍號碼遞減隊伍號碼遞減信息處理信息處理隊伍空顯示器初始化、清零結束結束 聲音提

13、示聲音提示7.2 系統(tǒng)程序設計7.2.1 主程序設備上電后,顯示器屏幕亮,無信息顯示。當客戶按鍵后,每按一下,隊伍加 1,顯示器顯示客戶隊伍號;排滿 20 位后,再按取號鍵,屏幕顯示“隊伍滿” 。當客服叫號時,隊伍減 1,程序進行信息處理,在顯示器上顯示“幾號客戶到幾號窗口” ,同時進行聲音提示;當隊伍空時,顯示“隊伍空” ,顯示器屏幕清空,儲存的隊伍號碼歸零處理。#include#define uchar unsigned char#define uint unsigned intsbit rs=P20;sbit rw=P21;sbit e=P22;sbit key1=P10; 14 / 2

14、4sbit key2=P11;sbit key3=P12;sbit sounder=P37;uchar prompt1=Your No.is 00!; uchar prompt2=No.00 Go To Win.0; uchar prompt3=Queue is full ; uchar prompt4=Queue is empty !; uint num_count=0; /排隊叫的號碼uint rank_number20=0; /排隊叫號存儲的數(shù)組uint num=0; /窗口消的號碼int RankFlag=0; /叫號的標志int ClearNumFlag=0; /消號的標志uint

15、LengthFlag=0; /隊列長度 叫一次號時+1,消一次號時-1/*延時函數(shù)*/void delay(uint n) while (n-);/*LCD1602 *顯示屏命令寫入函數(shù)*/void LCD_write_com(uchar com) e=0; rs=0; rw=0; P0= com; delay(1000); e=1; delay(1000); e=0; /* 15 / 24LCD1602 *顯示屏數(shù)據(jù)寫入函數(shù)*/void LCD_write_data(uchar dat) e=0; rs=1; rw=0; P0 = dat; delay(1000); e=1; delay(1

16、000); e=0;/*LCD1602 *顯示屏清空顯示*/void LCD_clear(void) LCD_write_com(0 x01); delay(1000);/*LCD1602 顯示屏初始化函數(shù)*/void LCD_init(void) LCD_write_com(0 x38); /*顯示模式設置*/ delay(100); LCD_write_com(0 x38); delay(100); LCD_write_com(0 x38); delay(100); LCD_write_com(0 x38); LCD_write_com(0 x08); /*顯示關閉*/ LCD_write

17、_com(0 x01); /*顯示清屏*/ 16 / 24 LCD_write_com(0 x06); /*顯示光標移動設置*/ delay(100); LCD_write_com(0 x0C); /*顯示開及光標設置*/*簡單的蜂鳴器提示音*/void sound() uint a;for(a=0;a500;a+)sounder=0;delay(61);sounder=1;/*獲取鍵值函數(shù)*/uint sweep_key() uint jianzhi; if(key1=0)delay(1000);if(key1=0)jianzhi=1;RankFlag=1;if(key2=0|key3=0)

18、 delay(1000);if(key2=0)jianzhi=2;if(key3=0)jianzhi=3;ClearNumFlag=1;return (jianzhi);/* 17 / 24叫號機 按一次一號鍵變量+1,最大為 20 */ void QueueNumProcess()if(RankFlag=1) /判斷叫號標志是否有效 if ( LengthFlag20) num_count+; rank_numberLengthFlag = num_count; LengthFlag+; /*窗口消號處理函數(shù)*/void ClearNumProcess() uint i; if (Clear

19、NumFlag=1) /判斷消號標志是否有效 num=rank_number0; /把消的號賦給全局變量 num for(i=0;i=20 ) LCD_clear(); LCD_write_com(0 x80+0 x02); delay(100); for(i=0;i16;i+) LCD_write_data(prompt3i); delay(100); else QueueNumProcess(); prompt111=(num_count)/10+0; prompt112=(num_count)%10+0; LCD_clear(); LCD_write_com(0 x80+02); del

20、ay(100); for(i=0;i15;i+) LCD_write_data(prompt1i); /Your No.is 00!; delay(100); RankFlag=0; 19 / 24 if(jz=2|jz=3) & ClearNumFlag=1) if(LengthFlag=0) LCD_clear(); LCD_write_com(0 x80+0); delay(1000); for(i=0;i16;i+) LCD_write_data(prompt4i);/Queue is empty ; delay(100); delay(65535);/無人排隊時屏幕自動清屏,計數(shù)歸零

21、LCD_clear();num_count=0; else ClearNumProcess(); /消號處理,營業(yè)員操作 sound(); prompt23=num/10+0; prompt24=num%10+0; prompt215=(jz-1)+0;LCD_clear(); LCD_write_com(0 x80+0); delay(100); for(i=0;i16;i+) LCD_write_data(prompt2i); /No.00 come to No.0; delay(100); ClearNumFlag=0; 20 / 24/*main 函數(shù)*/void main() uin

22、t Kvalue; LCD_init(); while(1) Kvalue=sweep_key(); /獲取鍵值 if (RankFlag=1 | ClearNumFlag=1)/判斷叫號標志和消號標志是否有效 CheckButtonProcess(Kvalue); delay(200); RankFlag=0; /使叫號標志無效 ClearNumFlag=0; /使消號標志無效 Kvalue=0; /鍵值清 0 7.2.2 液晶 LCD1602 顯示處理程序/*LCD1602 *顯示屏命令寫入函數(shù)*/void LCD_write_com(uchar com) e=0; rs=0; rw=0; P0= com; delay(1000); e=1; delay(1000); e=0; /*LCD1602 *顯示屏數(shù)據(jù)寫入函數(shù)*/void LCD_write_data(uchar dat) 21 / 24 e=0; rs=1; rw=0; P0 = dat; delay(1000); e=1; delay(1000)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論