排队叫号系统设计 - 图文

更新时间:2024-01-16 05:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机系统课程设计

单片机系统 课 程 设 计

成绩评定表

设计课题 : 排队叫号系统设计 学院名称 : 电气工程学院 专业班级 : 自动F1207 学生姓名 : 郑康 学 号 : 201223911402 指导教师 : 周刚 设计地点 : 31-517 设计时间 : 2014-12-29~2015-01-09

指导教师意见: 成绩: 签名: 年 月 日

单片机系统课程设计

单片机系统

课 程 设 计

课程设计名称: 排队叫号系统设计 专 业 班 级 : 自动F1207 学 生 姓 名 : 郑康 学 号 : 201223911402 指 导 教 师 : 周刚 课程设计地点: 31-517 课程设计时间: 2014-12-29~2015-01-09

单片机系统 课程设计任务书

学生姓名 郑康 专业班级 自动F1207 1

学号 201223911402 单片机系统课程设计 题 目 课题性质 工程设计 排队叫号系统设计 课题来源 自拟 指导教师 周刚 1、该系统是一款自动的排队叫号系统,以排队抽号顺序为核心,排队者利用客户端抽号,工作人员利用叫号端叫号; 主要内容 (参数) 2、通过显示器及时显示当前所叫号数,语音提示,提醒排队者接受服务; 3、客户及时了解排队信息,可以通过显示器显示队列中排在其前面的顾客数,通过合理的程序结构来执行排队抽号; 排队叫号系统主要由系统主从机、键盘电路、显示电路、语音电路等部分构成 第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。 第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及任务要求 (进度) 元件参数选择要有依据,各单元电路的设计要有详细论述。 第5-6天:软件设计,编写程序。 第7-8天:实验室调试。 第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。 [1] 夏路易 石宗义.Protel 99se电路原理图与电路板设计教程.北京:北京主要参考 资料 希望电子出版社,2004 [2] 伟福LAB6000系列单片机仿真实验系统使用说明书 [3] 阎石.数字电路技术基础(第五版).北京:高等教育出版社,2006 审查意见 系(教研室)主任签字: 年 月 日

目录

2

单片机系统课程设计

1绪论…………………………………………………………………………………6 1.1课题背景………………………………………………………………………6 1.2课题研究的目的和意义………………………………………………………6 1.3课题研究现状…………………………………………………………………7 1.4设计目的及功能………………………………………………………………7 2系统需求分析与整体设计…………………………………………………………7 2.1确定的方案……………………………………………………………………7 2.2系统原理图……………………………………………………………………8 2.3整体设计方案…………………………………………………………………8 3系统硬件设计………………………………………………………………………10 3.1主电路硬件设计………………………………………………………………11 3.2时钟电路………………………………………………………………………12 3.3键盘电路………………………………………………………………………13 3.4LED显示电路…………………………………………………………………14 3.5LCD显示电路…………………………………………………………………15 3.6语音提示电路…………………………………………………………………17 4系统软件设计………………………………………………………………………20 4.1主控软件设计…………………………………………………………………20 4.2LED显示程序设计……………………………………………………………21 4.3LCD显示程序设计……………………………………………………………22 4.4声音系统程序设计……………………………………………………………23 5系统仿真实验………………………………………………………………………23 6总结…………………………………………………………………………………25 7参考文献……………………………………………………………………………26 附录1实物图…………………………………………………………………………26 附录2系统原理图……………………………………………………………………27 附录3C51源程序…………………………………………………………………….28

1 绪论

3

单片机系统课程设计 1.1课题背景

近年来,随着我国社会经济的持续快速发展,资金流动加快,服务行业的不断增加,加上我国政府正在努力构建和谐社会、服务性政府,大量的用户越来越频繁的光顾经融系统、电信、医疗、政府办事部门,时代的发展给这些服务型机构提出了新的服务理念,也给这些行业和部门带来了巨大压力。

如何解决长久以来枯燥无序的排队问题,如何加强窗口单位的服务质量,如何加强对客户及工作人员的管理,如何克服诸如顾客挑选自己熟悉的工作人员而引起的各种弊端,创造一个轻松而个性化的窗口环境,已成为公共服务部门急需解决的问题,它直接影响着企业公共形象及业务量,涉及企业根本利益。另外,传统柜台服务存在不安全隐患,偷盗密码已经不再是个别案例,多窗口的服务往往让人无所适从,客户盼望只排一个队,只接受“一对一”的个性化服务已成趋势。

因此排队叫号系统应运而生,排队叫号系统是针对银行、工商、税务、通讯、政府机构等部门的大厅工作流程设计的,是利用电脑的科学管理客户排队的系统,很好地解决了客户在服务机构办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的方便和愉悦。该系统基于51单片机的排队叫号系统,由取号机、客户服务窗口、大厅显示叫号和主机部分组成,有LCD大屏幕,可以显示客户被呼叫的信息,让客户知道什么时候被叫到去办理业务,另外还有语音提示客户,简单方便的实现了排队机叫号系统。它主要由主控制器、键盘、数码管显示电路、蜂鸣器电路等部分构成。 系统利用单片机进行控制,通过串行通信方式传输处理数据;通过按键取号,在数码管上显示排队的号码以及当前正在等待的人数;通过按键叫号,在数码管上显示叫到的号码,由扬声器发出声音提示客户。

1.2课题研究的目的和意义

由于当今各行各业的信息化、智能化建设越来越健全,整个社会对各个行业的办事效率的要求越来越高。现在人们不仅仅要求福区机构满足业务上的需要,还要求尽量减少人们的等待时间,而服务机构本身有由于竞争的需要也要求提高办事效率。而这些窗口的排队现象在所难免,为了减少办事人的时间,为人们创

4

单片机系统课程设计 造一个良好的环境,排队系统应运而生。

1.3课题研究现状

在我国,排队产品概念的引进时间也不长,特别是加入WTO之后,大批国人走出国门,将很多优秀的服务方法、理念带回国内。派对技术也随之被引进国内,兵在我们得到普及和应用。

随着计算机技术与通信技术、电子技术等的飞速发展,只能排队系统的功能仍和结构也日益完善和丰富。目前,市场上的只能排队系统除了已实现的最基本的功能,如自动根据客户选择的服务类型打印票号、通过计算机自动分流排队、呼叫和保留。

1.4设置目的及功能

这种现代化的高科技产品彻底解决了银行、医院等服务性企业普遍存在的站立等候,服务无序的问题,深化并完善了服务的质量。本系统采用单片机进行控制,利用数码管显示,蜂鸣器鸣叫提示的人机交互界面,模拟排队管理系统,科学地处理各种排队情况。操作简便,控制灵活,显示清晰,制作成本低,性价比较高。

排队叫号系统具有以下几个基本功能:

(1)取号控制:该功能是在客户进入营业厅之后,通过按键从取号机上获取自己相应的排队小票;

(2)叫号控制:系统可以根据服务人员按下相应的按键,通过语音呼叫提示客户到相应的窗口进行服务;

(3)显示控制:该功能是通过大厅的LCD显示屏显示,客户可以直观的找到自己相应的办理窗口。

2系统需求分析与整体设计

2.1确定的方案

排队技术在国内外都已经达到相当智能的水平。单片机在此类电子产品中得到了广泛的应用。为完成一个取号、叫号、显示分别管理排队和叫号的系统,排队叫号系统有我了解的以下两种方案:

方案一系统的窗口显示结构使用数码管,客户可以通过数码管显示数字和语

5

单片机系统课程设计 音提示,找到相应的办理窗口。

方案二系统有窗口数码管显示和大厅液晶LCD12864显示,客户通过两种显示方式和语音提示,找到相应的办理窗口。

方案一的排队叫号系统通过按键给计数器脉冲,并通过译码器驱动数码管显示,完成取号、叫号功能,同时叫号按键外接有源蜂鸣器实现提示客户的作用。总体电路比较简单,采用普通的数码管显示即可。

方案二的排队叫号系统以 STC89C51单片机为核心,利用取号机输入排队相应信息,经单片机处理后,将信息分别输出到总屏幕LCD12864上和窗口屏幕显示,同时进行语音提示,完成排队取号流程

方案一是由译码器、数码管为一体的数码显示管。电路相对简单,可以较好的实现排队叫号的基本功能,但是显示内容较少。方案二通过综合使用数码管和总屏幕LCD12864显示,可以更好的实现排队叫号的基本功能,而且在客户端和服务机构两方面都能很方便的使用和控制,利用串行通信原理,由简单的51单片机芯片实现,达到复杂问题简单化的目的,是设计理论的趋势;综合各条件从简单实现考虑,我选择方案二。

2.2系统原理图

方案(二)的系统框图如图2.1

最小系统语音输出取号按键模块STC89C51LCD显示模块叫号按键模块图2.1系统框图

数码管显示模块 2.3整体设计方案

该系统基于51单片机的排队叫号系统,由取号机、客户服务窗口、大厅显示叫号和主机部分组成,有LCD大屏幕,可以显示客户被呼叫的信息,让客户知道什么时候被叫到去办理业务,另外还有语音提示客户,简单方便的实现了排队机

6

单片机系统课程设计 叫号系统。

由于当今经济快速的发展,加之各行各业的信息化、智能化建设越来越普及,快节奏的发展使得整个社会对各个行业的办事效率的要求越来越高,尤其是服务性行业,既要满足被服务人的种种服务需求,又要提高行业服务的质量,提高服务的效率。随着生活质量的不断提高,人们对服务机构的要求不仅仅停留在满足业务上的需要上,而且还要求尽量减少人们的等待时间,而服务机构本身由于竞争的需要,也要求提高其办事效率和服务的形象。而这些窗口服务的排队现象在所难免,为了在排队时减少办事人的办事时间,为人们创造一个良好的环境,排队系统应运而生。

本设计的总体任务是分别利用客户端使用取号机进行排队,服务机构使用一个叫号来管理取号机的排队信息。能按显示出排队的顺序;按键控制芯片显示叫到的人排队号码,并配有发出声音加以提示;在服务机构端可按键显示剩余排队人数等信息。对此,本此设计排队叫号系统具体有以下几大功能:

(1)取号控制:此功能是通过按键输入自己的业务类型,主机收到数据后并作出应答进行小票的打印,客户取号机上获取自己相应的排队小票;

(2)叫号控制:此过程是通知客户到相应的窗口进行服务的过程,通过语音呼叫提示客户到相应的窗口进行服务;

(3)显示控制:此过程是通过大厅的LCD显示屏显示,与此同时窗口也会显示相应客户号码,客户可以直观的找到自己相应的办理窗口。

排队叫号系统设计的总体流程图如图2.2所示

7

单片机系统课程设计 开 始客户光临领取号码大厅等候柜员叫号办理手续客户离开结 束 图2.2排队叫号系统流程图

本系统是一种集单片机控制、串行口通信、网络通信、语音识别与处理等理论为一体的综合控制系统。系统由上位主机和下位从机组成两级控制管理体系,采用总线及串行通信协议实现分布式管理与控制。系统由一台主机和若干窗口设备组成,各自独立的单片机系统通过总线组成分布式通信系统,可实现按顾客到达的先后次序,自动排号及语音提示。作为上位机的主机是整个系统的管理和控制核心,完成号码的打印、存储、分类并通过总线发送到从机,同时在LCD上显示和通过音响播放语音信息;呼叫器接受主机发送来的命令和数据及向主机送出请求,同时在LCD液晶显示屏上显示当前信息;接受主机发来的数据,显示顾客号码信息;窗口显示屏接受主机发来的数据,显示当前服务顾客号码。

3系统硬件设计

8

单片机系统课程设计 3.1主电路硬件设计

主控电路在整个的系统中充当着最重要的角色,它在整个系统中起到了系统宏观调节的作用,首先主控电路要通过通信接收来自取号机的数据,将客户的取号存入系统之中,同时主控电路还要实时接收来自服务窗口的数据。对于来自窗口的请求数据,主控芯片接收后立即处理,判断之后将对应的客户号码发送到服务窗口和大厅的显示屏及语音系统。强大的通信及数据处理就要求主控电路要有强大的处理能力,才能时刻保持整个系统的运行畅通,不会出现数据丢失或发生错误等现象。完成本次课程设计所需主控芯片有多种多样。说明如下:

(1)STC89C51RC:该芯片是采用8051核的ISP在系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C52RC系列单片机是单时钟/机器周期(1T)的兼容8051 内核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/精简指令集结构,内部集成MAX810 专用复位电路。

(2)STC12C5410AD:宏晶公司出款的STC12C5410AD单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,兼容传统的8051数据指令代码,但提高了8-10倍的速度。内部使用了MAX810专用复位电路。程序存储空间10K,片上集成512字节RAM。包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时计数器、UART串口、I/O接口、高速AD转换、SPI接口、PCA、看门狗及片内R/C震荡器和外部晶振体振荡电路等模块。

STC89C51系列单片机具有完整的的功能模块,对89C51系列单片机有学习基础,理解使用方便,且能够完成基本的实验操作,所以本系统中主控电路采用的是STC公司出款的STC89C51单片机。

STC89C51RC单片机最小系统如图3.1所示:

9

单片机系统课程设计 VCC4.7KC2VCC104ufC310ufR310KC430pfU1NRF_SCKMOSIRSTKEY11234567891011121314P2.2P2.3RSTRXD/P3.0TXD/P3.1RXAL2RXAL1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5P2.4P2.5GNDSTC89C51RCVCCP2.1P2.0P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.7P2.7P2.62827262524232221201918171615CSNNRF_CEP4P3P2P1MotorSYNCResetLCD_RSTP2.7P2.6X1C530pfKEY2KEY3LCD_CSLCD_SIDMISOJRQ

图3.1是本次设计的主体电路图,它的主体是基本的STC89C51RC单片机,外部的时钟电路和复位电路,构成了一个总的系统的关于单片机的核心主体部分。

3.2时钟电路

RXAL2C430pfX1C530pfRXAL1

图3.2 时钟电路

XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大

10

单片机系统课程设计 器的反馈回路中。电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。

3.3键盘电路

通常,键盘有编码和非编码两种。编码键盘通过硬件电路产生被按按键的键码和一个选通脉冲。这种键盘硬件电路复杂,常不被单片机采用。非编码键盘按组成结构又可分为独立式键盘和矩阵式键盘。独立式键盘的工作过程与矩阵式键盘类似,无论是硬件结构还是软件结构都比较简单。

(1)独立式键盘:每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单。适用于所需按键较少的场合。

(2)矩阵式键盘:电路连接复杂,但提高了I/O口的利用率,软件编程较复杂。适用于需使用大量按键的场合。

通过比较,设计采用独立式键盘结构。取号按键输入电路图3.3所示

VCCR1110KR1210KR1310KS1KEY1S2KEY2S3 KEY3 图3.3 取号键盘电路

本文的设计中提供了3个按键,分别对应3中不同的业务类型,客户在选择服务类型的时候,只需要按一下对应的按键即可完成取号过程的所有操作,简单易懂。

11

单片机系统课程设计 此部分电路的按键采用了和取号按键部分相同的独立式键盘结构。叫号按键输入装置电路为两个按键,一个负责呼叫下一位客户,一个负责重复呼叫,操作简单可靠。电路如图3.4所示

VCCVCCR210KR310KS1KEY1S2KEY2 图3.4 叫号键盘电路

3.4LED显示电路

数码管有共阴极和共阳极两种类型,其公共端主要进行位控制,笔画端则是进行字符控制,数码管有静态显示和动态显示两种方法,说明如下:

(1)静态显示驱动:是指每个数码管的每一个段码都由单片机的I/O进行驱动,或者使用如BCD码二—十进位器进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O多,实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。

(2)动态显示驱动:是将所有数码管的8个显示笔划a-dp的同名端连在一起,另外为每个数码管的公共极增加位元选通控制电路,位元选通由各自独立的I/O线控制,我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示。在轮流显示过程中,由于人的视觉暂留现象及发光二极体的余辉效应,好像所有数码管都在显示一样。能够节省大量的I/O口,而且功耗更低。

排队叫号系统设计窗口显示采用4位LED数码管的动态显示来达到显示目的。驱动器采用SN74HC573AN,由单片机89C51的P2.0、P2.1、P2.6、P2.7来

12

单片机系统课程设计 控制LED数码管的显示。

数码管驱动电路如图3.5所示

3U2VCC12345678910OUTPUTVCCD0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7GNDLATCHSN74HC573AN20191817161514131211VCC510124711dpgfedcbaLEDw46P2.7w38P2.6w29P2.1w212P2.0

图3.5窗口LED显示驱动电路

3.5LCD显示电路

大厅LCD显示为客户提供相应的的服务信息。主控电路通过通信接收来自取号的数据,将客户的取号存入系统之中,同时主控电路还要实时接收来自服务窗口的数据。对于来自窗口的请求数据,主控芯片接收后立即处理,判断之后将对应的客户号码发送到大厅LCD的显示屏和服务窗口及语音系统。显示功能所需芯片有LCD12864和LCD1602。说明如下:

(1)LCD1602:它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

(2)LCD12864:带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符 集.利用该模块灵活的接口方式和简单、方便的操作指令,

13

单片机系统课程设计 可构成全中文人机交互图形界面。可以显示8×4 行16×16 点 阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶 显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。芯片的具体参数如图3.6所示:

图3.6 LCD12864芯片的具体参数

如图3.7为LCD12864液晶显示的引脚图:

14

单片机系统课程设计 图3.7 LCD12864液晶显示的引脚图

显示部分采用的是LCD 12864液晶显示,因为距离客户距离很进,这样可以更加直观形象的将信息传递给每一个客户。为了更加的适应大厅显示的效果,本设计中此部分加入了LCD12864液晶显示,主要用于显示客户小票上的信息和一下必要的设置菜单。

具体的驱动电路如图3.8所示:

DW110KLCD_SCLKLCD_RSTLCD_SIDVCC2019181716151413121110987654321LCD_CSP2

图3.8 12864液晶驱动电路

LCD12864液晶可以显示汉字、字母、数字符号等,这样就可以利用液晶同时显示4个客户的信息,分别占据一行,这儿样客户就可以提前看到自己被呼叫的相关信息。

3.6语音提示电路

语音电路部分主要部件为语音芯片。ISD4004系列语音芯片ISD4004-08、ISD4004-10、ISD4004-12、ISD4004-16共4款不同的芯片,每种芯片的具体参数如下图3.9所示

图3.9ISD4004系列芯片参数

本设计中采用的是ISD4004-08芯片,8分钟即可满足设计的需求,ISD4004语音芯片由美国ISD公司推出,芯片内部高度的集成化,振荡器、滤波器、除噪

15

单片机系统课程设计 音、防大功率等均集于一体,仅仅需要几个外围电路就可以构成一个很强大的语音录制播放的系统。通信方式采用SPI串行接口输入。采样频率可分为8、6.4、5.3、4KHZ,与所能录制的时间成反比,与音质成正比。芯片存储器内的数据更是可以保存100年在短点的情况下,而且可以录制10次左右而不损坏。市场上很多的电子产品均在采用此款芯片。

电源:(VCCA,VCCD):为使噪声最小,芯片的模拟和数字电路使用不同的电源总线,并且分别引到外封装的不同管脚上,模拟和数字电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容应尽量靠近器件。

地线:(VSSA,VSSD):芯片内部的模拟和数字电路也使用不同的地线。 同相模拟输入(N+):这是录音信号的同相输入端。输入放大器可用单端或差分驱动。单端输入时,信号由耦合电容输入,最大幅度为峰峰值32mV,耦合电容和本端的3KΩ电阻输入阻抗决定了芯片频带的低端截止频

率。差分驱动时,信号最大幅度为峰峰值16mV,为ISD33000 系列相同。

反相模拟输入(IN-):差分驱动时,这是录音信号的反相输入端。信号通过耦合电容输入,最大幅度为峰峰值16mV

音频输出(OUT):提供音频输出,可驱动5KΩ的负载。

片选(SS):此端为低,即向该ISD4004 芯片发送指令,两条指令之间为高电平。

串行输入(MOSI):此端为串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD 输入。

串行输出(MISO):ISD 的串行输出端。ISD 未选中时,本端呈高阻态。 串行时钟(SCLK):ISD 的时钟输入端,由主控制器产生,用于同步MOSI 和MISO 的数据传输。数据在SCLK上升沿锁存到ISD,在下降沿移出ISD。

中断(/INT):本端为漏极开路输出。ISD 在任何操作(包括快进)中检测到EOM 或OVF 时,本端变低并保持。中断状态在下一个SPI 周期开始时清除。中断状态也可用RINT 指令读取。OVF 标志----指示ISD的录、放操作已到达存储器的未尾。EOM 标志----只在放音中检测到内部的EOM 标志时,此状态位才置1。

行地址时钟(RAC):漏极开路输出。每个RAC 周期表示ISD 存储器的操作进行了一行(ISD4004 系列中的存贮器共2400 行)。该信号175ms 保持高电平,低

16

单片机系统课程设计 电平为25ms。快进模式下,RAC 的218.75μs 是高电平,31.25μs 为低电平。该端可用于存储管理技术。

外部时钟(XCLK):本端内部有下拉元件。芯片内部的采样时钟在出厂前已调校,误差在 +1%内。商业级芯片在整个温度和电压范围内, 频率变化在+2.25%内。工业级芯片在整个温度和电压范围内,频率变化在-6/+4%内,此时建议使用稳压电源。若要求更高精度,可从本端输入外部时钟(如前表所列)。由于内部的防混淆及平滑滤波器已设定,故上述推荐的时钟频率不应改变。输入时钟的占空比无关紧要,因内部首先进行了分频。在不外接地时钟时,此端必须接地。

自动静噪(AMCAP):当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰弱,这样有助于养活无信号(静音)时的噪声。通常本端对地接1mF 的电容,构成内部信号电平峰值检测电路的一部分。检出的峰值电平与内部设定的阈值作比较,决定自动静噪功能的翻转点。大信号时,自动静噪电路不衰减,静音时衰减6dB。1mF 的电容也影响自动静噪电路对信号幅度的响应速度。本端接VCCA 则禁止自动静噪。

ISD4004-08芯片可以分为2400段存储空间,即最多可以录制2400段录音,也可以连续的录音,读取每一段的其实地址即可放音。驱动电路见下图3.12所示电路:

17

单片机系统课程设计 VCC-3.3VR1U1SSMOSI1234567891011121314SSMOSIMISOVSSDNCNCNCNCNCNCVSSAVSSAOUTCAPISD4004SCLKVDDXCLKINTRACVSSANCNCNCNCVCCAIN+IN-NC28SCLK272625JNT24RAC232221201918171615104ufC1VCC-3.3VR24.7KC210ufC3104ufC4104C7104R44.7KR34.7KP312MICC101ufC111ufR510KU31234GAIN-INPUT+INPUTGNDLM386GAINBYPASSVsVoutC810uf8765C12104VCCC14p412CON2DW210KC15104220uf 图3.12 ISD4004驱动电路

电路中对于ISD4004语音输入的MIC接口电路做了去耦滤波的处理,使得输入的声音信号更加清新平稳,尽量减噪音的影响。放音电路采用了LM386芯片放大声音信号,使得输出的电压信号可以驱动较大点的喇叭,省的声音更大更清晰,效果更好。

4系统软件设计

4.1主控软件设计

本文在设计之前,对此部分做了主程序流程图规划,具体内容如下图4.1:

18

单片机系统课程设计 开始系统初始化取号按键服务台按键语言提示N检测是否有信号Y单片机加减计数器单片机移位指令显示模块心事等待人数显示模块显示正在服务的客户号码N检测是否有信号Y结束

图4.1主程序流程图

主程序流程说明:主程序流程图主要分为以下几个部分,分别是按键部分、显示部分、语音部分、单片机主控器件部分,各部分具有不同的子程序。系统初始化后,单片机在进行高速检测状态。当单片机检测到任何的按键动作的时候,单片机加减计数模块就会有相应的动作。从而编号也会增加,等待人数和正在服务的编号也会有相应的改变。

4.2LED显示程序设计

19

单片机系统课程设计 74HC573为八进制3态非反转透明锁存器,器件的输入是和标准的CMOS输出兼容的;加上上拉电阻,他们能和LS/ALSTTL输出兼容。74HC573控制时序如图4.2所示

图4.274HC573控制时序

窗口LED显示部分流程图如图4.3所示

开 始按键呼叫数据处理窗口LED显示 图4.3 窗口LED显示部分流程图

结束4.3LCD显示程序设计

LCD12864液晶可以显示汉字、字母、数字符号等,这样就可以利用液晶同时显示4个客户的信息,分别占据一行,这儿样客户就可以提前看到自己被呼叫的相关信息。12864液晶初始化的流程图如图4.4所示

20

单片机系统课程设计 开电源显示开/关控制字 0C0H延时>100us延时>40ms功能设定控制字 30H延时>100us轻触屏幕控制字 01H延时>10ms进入设定点控制字 06H功能设定控制字 30H延时>37us初始化完成

图4.412864液晶初始化的流程图

4.4声音系统程序设计

ISD4004在使用之前需要将播放的声音录制到芯片内,本设计中,因为需要播放的声音信号种类不多,提前将“请、号、到、窗口、0、1、2、3、4、5、6、7、8、9、A、B、C”分别单独录制到芯片即可,比如在本设计中如需要播放“请A123号到1号窗口”,当大屏幕上显示此信息时,就会听到此信息的声音信号。语音系统提示流程图如图4.5所示

21

单片机系统课程设计 初始化服务按键动作YN语音提示返回

图4.5 语音系统提示流程图

具体的完成过程是将每一个字的声音信号单独从芯片的存储器中调用,然后将其连续的播放即可实现一段语音的连续播放。

5系统仿真实验

初始状态下,窗口数码管显示如图5.1所示:

图5.1

当按一下任意大厅对应的按键,窗口数码管显示如图5.2所示:

22

单片机系统课程设计

图5.2

再次按一下任意大厅对应的按键,窗口数码管显示如图5.3所示:

图5.3

由以上仿真结果可知,仿真设计完全满足设计要求。

上电清零,按下任意大厅对应的按键,液晶上的显示如图5.4所示:

23

单片机系统课程设计

图5.4

按下抽号按键,按到第5下时,液晶上的显示如图5.5所示:

图5.5

排完20人,再按抽号按键时,液晶上的显示如图5.6所示:

图5.6

通过实验室调试,可以得出窗口数码管显示情况为:

6总结

这次的课程设计很重要,通过它我们系统的复习和实际运用已学知识,并且

联系动手能力.

通过去图书馆查阅相关书籍、网上资料和一些仿真实例,我分析了其中的原理之后,认真总结并深入其中,完成了本次的排队叫号系统设计。系统的原理,芯片的选型、引脚功能、使用的优缺点,硬件的设计,电路的连接,程序的设计,系统的仿真等,对这些问题都需要综合性的专业知识,以及资料的查询,自己的

24

单片机系统课程设计 认真钻研来解决。在程序设计过程中遇到的很多问题,阻碍设计的过程,通过总结,深深体会到程序设计的时候模块化处理的重要性,可以先画好程序流程图,然后对按键模块,显示模块,语音提示模块依次分析。

本次课程设计能够实现基本的智能排队叫号目的,但是由于初步将对单片机运用到实际操作当中,难免有不足之处,比如没有配置系统取号打印机部分等。总体来说,通过本次课程设计,增强了我在专业设计方面的能力,同时也培养了我对单片机的学习的兴趣。我感觉学单片机就是要多实践,老师领我们进入单片机世界,精通它就得靠我们自己,那就需要多实际操作,将自己所学知识灵活运用到实际生活当中。

衷心感谢给我们教课的老师!感谢您这学期以来的辛勤付出,在课程设计期间,您细心的为同学们解答问题提供帮助,使我们对单片机的学习有了进一步的提高,谢谢!

7参考文献

[1] 夏路易 石宗义.Protel 99se电路原理图与电路板设计教程.北京:北京希望电子出版社,2004

[2] 伟福LAB6000系列单片机仿真实验系统使用说明书

[3] 阎石.数字电路技术基础(第五版).北京:高等教育出版社,2006 [4] 薛庆军、张秀娟.单片机原理实验教程.北京.北京航空航天大学出版社,2008

[5] 杨家成.单片机原理与应用及C51程序设计.北京:清华大学出版社,2007

附录1实物图

25

单片机系统课程设计 附录2系统原理图23U212345678910OUTPUTVCCD0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7GNDLATCHSN74HC573ANVCC20191817161514131211VCC51012471134dpgw46P2.7P212345678910LCD_CSLCD_SID11121314151617181920LCD_SCLKLCD_RSTfedcbaLEDw38P2.6w29P2.1VCCw212P2.0VCCDW110KVCCC160.1pfU51SCLK2SS34.7KMOSI4RAC5C3610U78R391010KXTAL21112JNT131415X11617XTAL218XTAL11920XTAL1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTP3.0(RXD)P3.1(TXD)INT0INT1P3.4(T0)P3.5(T1)P3.6(WR)P3.7(RD)XTAL2XTAL1GNDSTC89C51RCR1U1SSMOSI1234567891011121314SSMOSIMISOVSSDNCNCNCNCNCNCVSSAVSSAOUTCAPISD4004SCLKVDDXCLKINTRACVSSANCNCNCNCVCCAIN+IN-NC28SCLK272625JNT24RAC232221201918171615VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VppALE(PROG)PSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.04039383736353433323130292827262524232221KEY1KEY2KEY3LED1LED2P5123456789VCCVCCR1110KR1210KR1310KS1KEY1CON9P2.7P2.6KEY2LCD_CSLCD_SIDLCD_SCLKLCD_RSTC2030pfS2C2130pfS3KEY3VCCVCCVCC-3.3V104ufC1VCC-3.3VR210KR24.7KC2KEY110ufR34.7KR310KS1C3104ufC4104C7104R44.7KS2KEY2P312MICC101ufC111ufR510KU31234GAIN-INPUT+INPUTGNDLM386GAINBYPASSVsVoutC810uf8765C12104VCCC14p412CON2DW210KC15104220uf 23 26

4 单片机系统课程设计 附录3 C51源程序:

#include

//C51程序包含的头文件

#define uchar unsigned char

#define uint unsigned int//以下定义要用到的字符串数组 uchar code t0[]=\ uchar code t1[]=\

//wp意为正在等待的人数

uchar code t2[]=%uchar code t3[]=%uchar code t33[]=%uchar code t4[]=%uchar code t44[]=%uchar code t5[]=%uchar code t55[]=%uchar code t6[]=%uchar code t66[]=%uchar num,waiting,count; 等待的人数

sbit lcden=P2^7; sbit lcdrw=P2^5; sbit lcdrs=P2^6; 令,置1写数据 sbit s0=P3^4; sbit s1=P3^1; sbit s2=P3^2; sbit s3=P3^3; sbit add=P3^5; sbit bee=P1^5; //函数声明 void delay(uint);

27

//num为所领号码,waiting为正在

//液晶使能端

//“读”或“写”选择端,要置低 //写命令或数据选择端:置0写命

//领号键 //窗口1的叫号键 //窗口2的叫号键 //停止领号键

//统计客流量 //语音端口

//延时

单片机系统课程设计 void di(); //语音

//向液晶写入命令 //向液晶写入数据

//移动光标

void write_com(uchar); void write_data(uchar); void go(uchar,uchar); void shownum(uchar);

//显示数字 //显示字符串 void showstr(uchar *); void clear(); void init();

void keyscan();

//函数定义

void delay(uint n) { uint i,j;

for(i=n;i>0;i--)

for(j=110;j>0;j--);

}

void di() { bee=0; delay(100); bee=1; }

void write_com(uchar com) { lcdrs=0; lcdrw=0; P0=com;

lcden=1;

delay(3);

//清空动态显示 //初始化

//键盘扫描

//不够精确地延时1ms

//选择写命令

//“读写”选择写

//液晶输入端接单片机P1口 //产生上升沿

28

单片机系统课程设计 }

lcden=0;

void write_data(uchar dat) { lcdrs=1;

//选择写数据

lcdrw=0; P0=dat; lcden=1; delay(3); lcden=0;

}

void go(uchar x,uchar y) { if(x==1)

write_com(0x80+y);

else

write_com(0x80+0x40+y);

}

void shownum(uchar dat) { uchar code t[]=\ uchar shi,ge; shi=dat/10; ge=dat;

if(shi>0)

write_data(0x30+shi);

else write_data(t[0]);

write_data(0x30+ge);

//从液晶第一行左端开始写入数据//从液晶第二行左端开始写入数据 //分离十位 //分离个位

//显示个位

//显示十位

29

单片机系统课程设计 }

void showstr(uchar *t) { while(*t) { write_data(*t);

//向液晶读入字符串

t++;

}

}

void clear() { write_com(0x01); go(1,14);

showstr(t1); go(2,14);

shownum(waiting);

}

void init() { lcden=0;

write_com(0x38);

write_com(0x0c); write_com(0x06); write_com(0x01);

go(1,4); showstr(t0);

}

void keyscan() {

//清空屏幕 //光标定位到1行14列

//光标定位到2行15列

//设置点阵显示和数据接口

//打开显示,不显示光标

//写一个字符指针加一

//显示清零、数据指针清零30

单片机系统课程设计 uchar a; if(waiting<20) {

if(s0==0&&(s1!=0)&&(s2!=0)&&(s3!=0)) //在工作人员的操作键未按

下才能领号

{

delay(5); }

if(s1==0) {

delay(5);

if(s1==0) {

while(!s1); di();

31

if(s0==0&&(s1!=0)&&(s2!=0)&&(s3!=0)) //确认领号键被按下 { }

while(!s0); di(); clear(); num++; waiting++; go(1,0); showstr(t2); go(2,0);

//光标定位到2行1列

//光标定位到1行1列

//等待按键释放

//语音提示

shownum(num); go(2,14);

shownum(waiting);

//显示所领的号码

//显示等待的人数

//窗口1的叫号键被按下

单片机系统课程设计

}

}

if(waiting==0) { } else { }

clear(); waiting--; go(1,0); showstr(t3); go(2,0); showstr(t33); go(1,3);

//如果没人在等待

write_com(0x01); go(1,3); showstr(t5); go(2,3); showstr(t55);

shownum(num-waiting); go(2,3); shownum(1); go(2,14); shownum(waiting);

if(s2==0) {

delay(5);

if(s2==0)

//窗口2的叫号键被按下

32

单片机系统课程设计 { while(!s2); di();

//如果没人在等待

if(waiting==0) { write_com(0x01); //清屏

go(1,3);

showstr(t5);

go(2,3); showstr(t55);

} else { clear(); waiting--; go(1,0); showstr(t3); go(2,0); showstr(t33); go(1,3);

shownum(num-waiting); go(2,3); shownum(2); go(2,14); shownum(waiting); }

}

}

33

}

单片机系统课程设计 else if(waiting==20) { if(!a)

di();

//如果等待的人数达到上限

//语音提示 //领号停止键被按下

if(s3==0) { delay(5); if(s3==0) { while(!s3); di();

a=1;

write_com(0x01); go(1,0); showstr(t4);

go(2,0); showstr(t44);

}

}

if(a==1) { if(s1==0) { delay(5); if(s1==0) { while(!s1); di();

clear();

//继续叫号

34

单片机系统课程设计

}

}

waiting--; go(1,0); showstr(t3); go(2,0); showstr(t33); go(1,3);

shownum(num-waiting); go(2,3); shownum(1); go(2,14); shownum(waiting); a=0;

if(s2==0) {

delay(5); if(s2==0) {

//继续叫号

while(!s2); di(); clear(); waiting--; go(1,0); showstr(t3); go(2,0); showstr(t33); go(1,3);

shownum(num-waiting);

35

单片机系统课程设计

}

}

go(2,3); shownum(2); go(2,14); shownum(waiting); a=0;

}

}

if((add==0)&&(s0!=0)&&(s1!=0)&&(s2!=0)&&(s3!=0))//其他按键未按下才能统计客流量 {

delay(add==0);

if((add==0)&&(s0!=0)&&(s1!=0)&&(s2!=0)&&(s3!=0)) { }

while(!add); di();

write_com(0x01); go(1,0); showstr(t6); go(2,0); showstr(t66); shownum(num); go(2,14); shownum(waiting);

} } main()

//主程序

36

单片机系统课程设计 { init(); }

while(1)

keyscan();

37

本文来源:https://www.bwwdw.com/article/q0do.html

Top