排队叫号机.docx
- 文档编号:18249994
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:20
- 大小:144.05KB
排队叫号机.docx
《排队叫号机.docx》由会员分享,可在线阅读,更多相关《排队叫号机.docx(20页珍藏版)》请在冰点文库上搜索。
排队叫号机
湖南人文科技学院
课程设计报告
课程名称:
单片机原理及应用课程设计
设计题目:
排队叫号机
系别:
通信与控制工程系
专业:
电子信息工程
班级:
09级电子信息工程2班
学生姓名:
何军冯若愚
学号:
0940924909409208
起止日期:
2011年12月19日~2011年12月31日
指导教师:
谭周文田汉平
教研室主任:
侯海良
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
1、设计过程中出勤、学习态度等方面
0.2
2、课程设计质量与答辩
0.5
3、设计报告书写及图纸规范程度
0.3
总成绩
教研室审核意见:
教研室主任签字:
年月日
教学系审核意见:
主任签字:
年月日
摘要
排队叫号管理系统(排队机、叫号机)是针对银行、工商、税务、通讯、政府机构等部门的大厅工作流程设计的,是利用电脑的科学管理客户排队的系统,很好地解决了客户在服务机构办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的方便和愉悦。
本课题研究的目的是研制一款无人排队的排队叫号机,它主要由主控制器、键盘、数码管显示电路、蜂鸣器电路等部分构成。
系统利用单片机进行控制,通过串行通信方式传输处理数据;通过按键取号,在数码管上显示排队的号码以及当前正在等待的人数;通过按键叫号,在数码管上显示叫到的号码,由扬声器发出声音提示客户。
同时免除了令客户不舒服的站立式排队,这种现代化的高科技产品彻底解决了银行、医院等服务性企业普遍存在的站立等候,服务无序的问题,深化并完善了服务的质量。
本系统采用单片机进行控制,利用数码管显示,蜂鸣器鸣叫提示的人机交互界面,模拟排队管理系统,科学地处理各种排队情况。
操作简便,控制灵活,显示清晰,制作成本低,性价比较高。
关键词:
排队叫号机;串行通信;独立键盘;数码管动态显示;蜂鸣器
3.3叫号模块6
3.4串行通信模块6
4系统仿真及调试6
4.2.2叫号模块7
4.2.3串行通信模块7
5设计总结7
6致谢8
7详细仪器清单9
参考文献10
排队叫号机
设计要求
利用单片机的串行通信方式,完成一个科学管理各种复杂排队情况的排队叫号系统。
具体要求如下:
(1)主机:
通过按键来完成报号,由数码管显示叫到的号码,并发出蜂鸣声。
(2)客户端:
通过按键完成取号,由数码管显示号码和当前需要等待的人数。
(3)主机和客户端用串口通信,在20人等待的队列中进行测试。
1方案论证与对比
1.1方案一
系统采用如图1所示的电路,通过STC89C52的I/O口的扩展一块NECD8255AC-2构成的矩阵键盘,完成排队取号的流程,单片机控制数码管显示排队等待情况,控制蜂鸣器发声完成叫号功能。
图1采用矩阵键盘实现功能
1.2方案二
系统采用如图2所示的电路,通过STC89C52单片机直接扩展的独立键盘,完成排队取号流程(本系统直接利用系统的中断0按键控制),单片机控制数码管显示排队等待情况,控制蜂鸣器发声完成叫号功能。
1.3系统方案对比论证
因为采用矩阵键盘完成排队取号流程,但客户较多的时候要实现排队取号的功能,就要占去过多的I/O端口,操作起来也比较复杂,而方案二的独立键盘操作控制简单,占用主机资源少,所以选择方案二,采用独立键盘控制排队取号,通过串行通信的方式,模拟排队取号管理系统的流程显得更加方便、科学。
图2采用独立键盘实现功能
2硬件电路设计与分析
2.1排队取号机主电路设计
主电路原理图见附录一。
系统采用STC89C52单片机完成整个系统的控制流程。
从机通过单片机的中断0按键,当系统检测到按下时完成取号功能。
主机同样通过单片机的中断0按键,当系统检测到按下时完成叫号功能。
图3串行通信电路
2.2排队取号机通信电路设计
通信电路采用如图3所示的串行通信电路,通过单片机的串行通信端口进行数据传递。
2.3动态显示电路
由于需要动态显示排队等待情况,需要使用到LED动态显示功能,考虑到合理利用STC89C52单片机的I/O口资源,本系统通过一块NECD8255AC-2外扩LED电路进行动态显示。
由8255芯片的PA、PB口联合控制数码管显示排队等待情况。
采用如图4、图6所示电路实现LED动态显示功能。
图48255芯片引脚图
2.4叫号电路
此电路采用如图5所示的电路,通过单片机的P33端口输出一定频率的方波,使蜂鸣器发声,完成叫号,提醒客户。
3系统软件设计与分析
3.1软件流程图
本程序可以实现课程设计的基本要求。
客户端通过按键完成取号,数码管显示排队、等待人数情况;主机通过按键完成叫号,数码管显示叫到的号码,并通过蜂鸣器发声提示;客户端和主机通过串行通信方式完成排队取号功能。
程序流程如图7所示:
图5叫号电路
图6数码管显示电路
3.2动态显示模块
此模块由于要使数码显示管不同的数值,数字各位对应的段选值不同,所以位选不能同时打开,所以需要采用动态显示实现同时显示排队号码以及等待的人数。
最后采用如图8所示的电路完成要求功能。
图7总体流程图
图8动态显示流程图
3.3叫号模块
此模块采用无源蜂鸣器发声,采用如图9所示电路,通过单片机向P33端口输出一定频率的方波,就可使蜂鸣器的发声。
图9叫号模块电路
3.4串行通信模块
设计要求客户端与主机通过串行通信方式,采用如图3所示的常用双机通信方式,通过使用定时器1采用2400bps的波特率进行通信。
4系统仿真及调试
4.1软件调试
(1)在Keil软件中建立工程,新建工程,选择AtmelAT89C52芯片,创建源代码,进行编译,在Keil中仿真调试。
(2)在Protues软件中,根据功能模块,画出相应原理图。
利用Keil中生成的*.hex文件与Keil进行程序联调。
4.2硬件调试
4.2.1动态显示模块
开始调试时,在Protues软件上可以很好模拟动态显示效果,但硬件电路数码管显示效果失真,考虑到延时在动态显示中的重要作用,通过调小延时时间,使数码管稳定、准确地显示。
4.2.2叫号模块
开始调试时,由于程序产生的方波频率比较低,导致蜂鸣器无法正常工作,通过查找资料,熟悉蜂鸣器有特定的工作频率范围,调试一合适方波频率,使蜂鸣器正常发声。
4.2.3串行通信模块
开始调试时,通过串口调试助手进行调试,但效果始终不出来,通过向同学请教,设置好软件的波特率在调试可以实现,最后把程序细节部分调试,使串行通信部分正常工作。
5设计总结
(1)通过本次课程设计,加深了对于怎样学好单片机这门课程的理解,学单片机就是要多实践,老师领我们进入单片机世界,精通它就得靠我们自己,那就是多实践,灵活运用自己所学知识到自己的作品当中。
(2)在程序设计过程中遇到的很多问题,阻碍设计的过程,通过总结,深深体会到程序设计的时候模块化处理的重要性,可以先画好程序流程图,然后各个模块各个击破。
同时遇到问题时可以同学之间相互讨论、回到书本在学习,更有助于加深对所学知识的理解。
(3)软件编程上,由于对总的流程不是很清晰,刚开始时是一气呵成,把所有的程序编写完,接着就上电进行调试,结果什么反应都没有。
最后经过老师的指导才顺利完成。
其次,是对频率的转换理解不够甚透,计算初值很麻烦,最后是参考了同学的程序才做出来的。
在整个电路的设计制作过程中,电路是比较难焊接的。
管脚的排列很乱,需把每一个脚的信息用万用表测过方可知道是属于行或是列,这给焊接带来了相当大的难度。
在焊接过程中时刻秉着认真、仔细的态度去完成硬件的设计。
此外,在调试过程中也遇到很多问题,首先是对电路板的检测方法掌握得不够精,因此给硬件排除故障带来了一定的难度。
总的来说,此次电路的设计与制作,我们基本上达到了作品的要求功能。
做得好的继续发扬,做得不够好的及时改正。
6致谢
身为电信专业的学生,设计是我们将来必需具备的技能。
而这次课程设计恰恰给我们提供了一个应用自己所学知识去勇于创新和实践的平台。
从通过理论设计,到仿真软件仿真,再到确定具体方案,最后到调试电路、成型。
整个过程都需要我充分利用所学的知识进行思考、借鉴。
可以说,本次课程设计是针对前面所学的知识进行的一次比较综合的检验。
总的来说,这次课程设计虽然很累,但却是苦中有乐,非常充实。
在这次实习中,正确的思路是很重要的,只有你的设计思路是正确的,那你的设计才有可能成功。
因此我们在设计前必须做好充分的准备,认真查找详细的资料,为我们设计的成功打下坚实的基础,所以跑图书馆和上网查资料成为了我每天的必修课。
本次课程设计不仅培养了我们的科学严谨的学习态度,使我们认识到不管做任何事都要付出一定的努力,才会有大的收获。
同时也让我们领略到电子技术科学知识领域的广袤。
相信这次课程设计过后,我们的理论水平和实践动手能力都会有一个质的飞跃,也为今后的实践课程及毕业设计打下了坚实的基础。
要做好本次的课程设计,熟练地掌握课本上的理论知识是前提。
这样才能对试验中出现的问题进行一定的分析和解决。
当然能完成本次设计,更离不开老师辛勤地指导,老师能在百忙中来指导我,每当我遇到了棘手的问题,老师总能给我最好的建议,教我改进得方法,不厌其烦地指出我在设计中存在的问题和错误,使我能更好地完成设计。
正是老师不厌其烦的指导和每天下午的讲解,让我的设计思路越发清晰,明朗,清除了应该从哪些方面着手作。
同时还要感谢在这样课程设计中给我提供的帮助的同学,是你们让我能更好的
完成这次设计。
这次课程设计对我来说有着深远的意义,让我对未来的路又看得清楚了些。
在此我要深深的感谢那些传授我知识的老师们,是你们无私的奉献,才会有如今掌握一定知识的我们;要感谢父母一直给我的支持,感谢他们的关怀;还要感谢同学对我的鼓厉,感谢搭档对我的认可,让我能尽情的发挥我的能力,激扬去验证自己的想法。
路漫漫其修远兮,吾将上下而求往。
在以后的求学道路上,我坚信我们的未来我做主。
让我们一起奋斗吧,燃烧我们的激情,释放我们的才华。
7详细仪器清单
表1仪器清单
类型
规格
数量
备注
5V直流电源
ZH-6003
2
USB232converter
U232-P9
2
电阻
1k
28个
芯片
NECD8255AC-2
2片
扩展I/O
芯片
STC89C52
2片
晶振
12M
2个
蜂鸣器
无源
1个
数码管
3位共阳极
4个
极性电容
0.1UF
2个
非极性电容
30pf
2个
按键开关
2个
三极管
9015
12个
参考文献
[1]张鑫.单片机原理及应用[M].北京:
电子工业出版社,2005.8.
[2]邱关源、罗先觉.电路[M].北京:
高等教育出版社,2006.5.
[3]康光华.电子技术基础.数字部分[M].北京:
高等教育出版社,2006.1.
[4]康光华.电子技术基础.模拟部分[M].北京:
高等教育出版社,2006.1.
[5]祁伟,杨亭.单片机C51程序设计教程与实验[M].北京:
北京航空航天大学出版社,2006.
[6]楼然苗.李光飞.单片机课程设计指导[M].北京:
北京航空航天大学出版社,2007.4
[7]单片机学习网
附录一:
整体电路图
附录二:
程序清单
//头文件:
#include
#include
#definePAXBYTE[0xD9FF]/*PA口地址*/
#definePBXBYTE[0xDAFF]/*PB口地址*/
#definePCXBYTE[0xDDFF]/*PC口地址*/
#defineCONXBYTE[0xDFFF]/*控制字地址*/
//取号程序:
#include
#defineucharunsignedchar
#defineuintunsignedint
uintm,n;
uchari,j,q_head,q_tail;
sbitP32=P3^2;
ucharconsttable[16]={
0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,
0x20,0x28,0x30,0x25,0xE4,0x23,0x64,0x74,
};
ucharconsttable_queue[]={//20个排队号码
0x00,0x01,0x02,0x03,0x04,0x05,
0x06,0x07,0x08,0x09,0x0a,
0x0b,0x0c,0x0d,0x0e,0x0f,
0x10,0x11,0x12,0x13,0x14,
};
delay(uintk)
{
while(k--);
}
display(ucharp,ucharq)
{
uintb,c,d,e;
b=(uint)p/10;
c=(uint)p%10;
d=(uint)q/10;
e=(uint)q%10;
PA=0xfe;
PB=table[b];
delay(200);
PA=0Xfd;
PB=table[c];
delay(200);
PA=0xef;
PB=table[d];
delay(200);
PA=0Xdf;
PB=table[e];
delay(200);
}
init()
{
CON=0x80;
EA=1;
EX0=1;
SCON=0x50;
TMOD=0x20;
TH1=0xf3;
TL1=0xf3;
TR1=1;
}
voidint0()interrupt0
{
if(P32==0)
{
delay(1200);
if(P32==0)
{
q_tail=table_queue[++m];
i=q_tail;
j=q_tail-q_head;
display(i,j);
}
}
while(P32!
=1)display(i,j);
}
main()
{
init();
q_head=table_queue[++n];
while
(1)
{
display(i,j);
if(m>=n){
TI=0;
SBUF=q_head;
while(!
TI);
RI=0;
while(!
RI)display(i,j);
if(n { q_head=table_queue[++n]; j=q_tail-q_head; } elseif(n==m) q_head=table_queue[++n]; } } } //叫号程序: #include #defineucharunsignedchar #defineuintunsignedint uintj,k; uchart; sbitbuzzer=P3^3; sbitP32=P3^2; ucharconsttable[16]={ 0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA, 0x20,0x28,0x30,0x25,0xE4,0x23,0x64,0x74,}; delay(uinti) { while(i--); } display(uinti,uintj) { PA=0xfe; PB=table[i]; delay(200); PA=0Xfd; PB=table[j]; delay(200); } init() { CON=0x80; EA=1; EX0=1; SCON=0x50; TMOD=0x20; TH1=0xf3; TL1=0xf3; TR1=1; RI=1; } beep() { uints=500; while(s--) { buzzer=~buzzer; delay(50); display(j,k); } } voidint0()interrupt0 { if(RI==1) { t=SBUF; j=(uint)t/10; k=(uint)t%10; display(j,k); RI=0; TI=0; SBUF=0xff; while(! TI); beep(); } } main() { init(); RI=0; while (1) { display(j,k); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排队 叫号