1.设计任务
利用AT89C51单片机为核心控制元件,设计一个节日彩灯门,设计的系统实用性强、操作简单,实现了智能化、数字化。
基本要求:利用单片机AT89C51设计排队叫号机,能实现叫号功能。
创新:能显示叫号号码;能显示等号人数。
任务区分:能显示当天已经服务人数。
2. 设计要求
2.1系统方案论证
根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。
2.2系统硬件电路设计
根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。
2.3软件设计
根据该系统要求的功能进行软件设计,简述软件的功能,并根据每个模块的功能绘制软件流程图,根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求加以注释。
#include <REGX52.H>
#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