基于单片机的排队叫号系统设计

1.设计任务

利用AT89C51单片机为核心控制元件,设计一个节日彩灯门,设计的系统实用性强、操作简单,实现了智能化、数字化。

基本要求:利用单片机AT89C51设计排队叫号机,能实现叫号功能。

创新:能显示叫号号码;能显示等号人数。

任务区分:能显示当天已经服务人数。

2. 设计要求

2.1系统方案论证

根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。

2.2系统硬件电路设计

根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。

2.3软件设计

根据该系统要求的功能进行软件设计,简述软件的功能,并根据每个模块的功能绘制软件流程图,根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求加以注释。

基于单片机的排队叫号系统设计_第1张图片

#include 
#include "LCD1602.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit key1 = P1^0;
sbit key2 = P1^1;

void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

u8 Key(void)
{
	u8 KEY_Num;

	if(key1==0)			  //如果K1按键按下
	{
		Delay(20);		  //延时消抖
		while(key1==0);	//松手检测
		Delay(20);		  //延时消抖
		
		KEY_Num = 1;
	}
	
	if(key2==0)			  //如果K2按键按下
	{
		Delay(20);		  //延时消抖
		while(key2==0);	//松手检测
		Delay(20);		  //延时消抖
		
		KEY_Num = 2;
	}

	return 	KEY_Num;
}

int main()
{
	u8 key;
	u8 Pass  = 0;
	u8 Now   = 0;
	u8 Exist = 0;	
	u8 Next  = 1;
    
	LCD_Init();
	LCD_ShowString(1, 1,"Pass ");
	LCD_ShowString(1, 7,"Now  ");
	LCD_ShowString(1,12,"Exist");
	while(1)
	{
		key = Key();
		if(key)
		{
			if(key==1)//叫号
			{
				Now++  ;
				Pass++ ;
				Next++ ;
				Exist--;
				
				if(Exist == 255)
				{
					Exist++;
					Now--  ;
					Pass-- ;
					Next-- ;
				}
			}

			if(key==2)//挂号
			{
				Exist++;	
			}
		}
		LCD_ShowNum(2, 2,Pass, 2);
		LCD_ShowNum(2, 8,Now,  2);
		LCD_ShowNum(2,13,Exist,3);
	}
}

完整代码点开链接私信  免费  获取。

【iBot机器人工作室的个人空间-哔哩哔哩】 https://b23.tv/ryUWVKa

你可能感兴趣的:(单片机,嵌入式硬件)