打开大学时期用过的电脑,翻到了当时课程设计——《银行排队叫号系统》分享一下。
一、原理图
二、代码
/**********************************************************************
* 硬件材料:用M16单片机、4个独立按键(代表四个窗口营业员消号控制端)、
1个独立按键叫号(顾客使用)、无源蜂鸣器(起到提示作用)以
及LCD1602显示信息 *
* 目 的:使人们免于排队浪费时间和体力,能在排队的时间里处理个人事务 *
* 用 途:银行的排队,医院的挂号等等 *
* 功 能:实现自动排队并完成叫号,设置一个排号按键,以及四个柜台用消号
按键。
当按下叫号键时,1.若队列不满,LCD显示"Your No.is 01!"的字样。
2.若队列已排满,LCD显示"The queue is full,please wait"的字样。
当按下消号键时,1.若队列无人,LCD显示"Sorry,the queue is empty
!"的字样。2.若队列有人,蜂鸣器响,LCD显示如"No.01 come to No.1
window,please!"的字样。 *
* 时钟频率:内部1M *
* 编译环境:ICC-AVR6.31 *
* 编 程:Tinyf3 *
* 显 示:用LCD1602显示如"No.01 come to No.1window,please!"的字样 *
* 结 果:实验通过 *
*
* 要 求:通过控制4个独立按键实现窗口控制消号 ,一个键实现叫号。最大累计
允许20人排队,当排队人数超过此人数是系统显示停止排队 *
***********************************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar prompt1[]="Your No.is 00!"; //1062第一行显示的字符
uchar prompt2[]="No.00 come to No"; //1062第一行显示的字符
uchar prompt3[]=".0window,please!"; //1062第二行显示的字符
uchar prompt4[]="The queue is"; //1062第一行显示的字符
uchar prompt5[]="full,please wait"; //1062第二行显示的字符
uchar prompt6[]="Sorry,the queue "; //1062第一行显示的字符
uchar prompt7[]="is empty!"; //1062第二行显示的字符
static uint num_count=0; //排队叫的号码
uint rank_number[20]={0}; //排队叫号存储的数组
uint num=0; //窗口消的号码
int RankFlag=0; //叫号的标志
int ClearNumFlag=0; //消号的标志
static uint LengthFlag=0; //队列长度 叫一次号时+1,消一次号时-1
/*****************************************
LCD1602 端口RS、RW、EN的定义
*****************************************/
#define RS_CLR PORTC &= ~BIT(PC4)