基于51单片机的银行排队系统方案
![基于51单片机的银行排队系统方案](https://img.360docs.net/img15/12h1lf0ynp6kxcbzzcuelfzddjcds5hq-51.webp)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机电职业技术学院
课程设计(实训)任务书
电子1101班
根据教学计划的安排,于本学期2013年1月7日- 11日为期壹周进行课程设计(实训),望做好准备。
实训名称:银行排队系统的设计
提交成果:1.实训报告;2.编写的软件
实训容与要求(见附件)。
专业负责人:
系主任:
电气工程系
2012年12月31日
附件:《单片机原理及应用》实训说明
一、实训目的、任务与要求:
本课程实训目的:通过对单片机程序的设计,基本掌握51单片机开发系统的操作、编程技巧,实现让学生对单片机的了解从感性认识上升为理性认识。
实训任务:完成排队系统的控制功能。
二、时间安排
周一、三、五:8:00-11:30,14:30-16:30
周二:8:00-10:30 周四:8:00-10:30 ,14:30-16:30
三、实训教学容:
实训容:
1.控制数码管显示:数码管Q1-Q4分别作两个不同窗口业务办理序号显示;
2.分别用两个按键作为“普通业务”、“VIP业务”的选择,剩余两个按键分别作为两个窗口叫号的选择,长按1秒表示业务办理中;当按下“下一位”键的时候,相应窗口数码管闪动显示,并加入声光提示;
3.*在定时3S后如无人办理,自动显示下一位序号(要求选择时VIP业务优先于普通业务且显示号为“P*”,*代表序号)。
4.答辩,展示、介绍程序运行结果。
四、考核方式
1.无故不能缺勤;
2.要求按规定时间完成设计和实训报告;
3.进行答辩。
4.总成绩=10%(平时考勤)+60%(演示、答辩)+30%(实训报告)
附:实训报告要求
1.实训目的
2.实训容
3.流程图
4.源程序
5.实训心得
银行排队系统
#include
#define uint unsigned int
#define uchar unsigned char
sbit b1=P3^2;//VIP用户排队键
sbit b2=P3^3;//普通用户排队键
sbit b3=P3^4;//窗口一
sbit b4=P3^5;//窗口二
sbit b5=P3^7;//蜂鸣器
uint i,j,i0,j0,i1,j1;
uchar s1,s2,s3,s4,k1,k2,k3,k4;
uchar y1,y2,v1,v3,v4,m1,m2,m3,m4;
uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};//0到9 void delay(uint x)
{
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void xianshi1();//千位和百位显示
void xianshi2();//十位和个位显示
void jianpan(); //键盘扫描
void dingshi(); //定时
void panduan1();//窗口一判断
void panduan2();//窗口二判断
void main()
{
EA=1;
TMOD=0x11;
ET0=1;
ET1=1;
TH0=(65536-45600)/256;
TL0=(65536-45600)%256;
TH1=(65536-45600)/256;
TL1=(65536-45600)%256;
while(1)
{
jianpan();//键盘扫描
xianshi1();//扫描显示
xianshi2();
dingshi(); //定时判断
}
}
void int1() interrupt 1 //窗口一定时
{
TH0=(65536-45600)/256;
TL0=(65536-45600)%256;//定时50ms(晶振11.0592M) m1++;
if(m1==120)//定时120*50ms=6s
{
m1=0;
m3++;
}
}
void int2() interrupt 3 //窗口二定时
{
TH1=(65536-45600)/256;
TL1=(65536-45600)%256;
m2++;
if(m2==120)
{
m2=0;
m4++;
}
}
void dingshi()
{
if(m3==1) //如果m3=1,调用判断1函数 {
m3=0;
panduan1();
}
if(m4==1)
{
m4=0;
panduan2();
}
}
void xianshi1()
{
P2=0x10; //千位
if(y1>0) //y1>0,显示“P”
P0=0x8c;
else P0=a[k1];
delay(1);