基于51单片机的银行排队系统方案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档