基于51单片机的双机串口通信排队叫号系统(LCD显示)设计

1 开发环境

仿真图:proteus8.9以上

程序代码:KEIL4/KEIL5

原理图:AD

设计编号:A0006

视频讲解

基于51单片机的双机串口通信排队叫号系统(LCD显示)设计

2 功能说明介绍

结合实际情况,基于51单片机设计一个排队叫号系统设计。该系统应满足的功能要求为:

由51单片机、按键模块、LCD1602液晶屏、蜂鸣器呼叫模块构成

具体功能:

1、主机通过按键完成叫号,LCD1602液晶显示屏显示被叫的号码及服务的柜台号;同时,蜂鸣器响,以提醒顾客接收服务;

2、从机按下按键实现取号,并通过串行通信方式实现排队取号功能;

3、从机还可以实时显示自己的排队号及及当前正在等待的人数。

3 仿真图

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS16位单片机,片内含4k bytes的可反复擦写的只读程序存储器和128 bytes的随机存取数据存储器,期间采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用16位中央处理器和Flash存储单元,功能强大的AT89C51单片机可灵活应用于各种控制领域。

AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个1 6位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

本系统中央控制器采用的单片机AT89C51,复位电路采用上电复位电路。外接的晶振为12MHz晶振。

img

当前仿真情况为:取号机取了三个号,叫号器的柜台2叫第一个号。叫号过程有蜂鸣器提示。

img

4 程序

工程文件使用Keil4/keil5打开。

代码分为取号机代码和叫号机代码,分别编译产生hex加载到对应的单片机中。

代码

img

叫号机主函数

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char 
#define uint unsigned int 
sbit RS=P2^0;     //1:数据输入,0:指令输入 
sbit RW=P2^1;    //1: 读出,0:写入 
sbit E=P2^2;      //1:有效,0:无效
sbit key0=P1^0; 
sbit key1=P1^1; 
sbit key2=P1^2; 
sbit key3=P1^3; 
sbit key4=P1^4; 
sbit key5=P1^5;
sbit key6=P1^6; 
sbit key7=P1^7; 
sbit BEEP=P2^6;
uint sev=0; 
uint sev1=0; 
uint sev2=0; 
uint sev3=0; 
uint sev4=0;
uint m=0,i=0;
uint jhao=1,qhao=0,dhao=0;                              //排队叫号                                 //窗口消的号码 
uint jz=0;
uchar data test[]="Hello!";                    //初始显示的字符 
uchar data prompt2[]="No.00 come to No";     //1062第一行显示的字符 
uchar data prompt3[]="0.window,Please!";     //1062第二行显示的字符 
uchar data prompt8[]="00 is left"; 
uchar data prompt9[]="All is 00"; 
uchar data prompt10[]="W1 - 00"; 
uchar data prompt11[]="W2 - 00";
uchar data prompt12[]="W3 - 00"; 
uchar data prompt13[]="W4 - 00"; 
                                  
void intCon()  
{
       
	  EA=0;   	   //关总中断
	  SCON=0x50;   //0101 0000,SM0 SM1=01表示选择工作方式1;SM2 REN=01表示串行口多机通讯控制位,串行口允许接收(从外部接收数据)
	  PCON=0X00;   //电源控制寄存器 最高位为SMOD,为0,表示波特率不加倍,为1,表示波特率加倍
	  TMOD=0x20;   //0010 0000,GATE=0,以运行控制位TR启动定时器;采用定时1工作方式2
	  TH1=0xfd;    //波特率9600=2^smod*(11.05926*10^6)/(32*12*(2^8-X))
	  TL1=0xfd;  
	  TR1=1;  		 //计数器工作
  } 
//
 void delay(int n)       //延时子程序 
{
    
int k,j;  
 for(k=0;k<=n;k++)  
 for(j=
  • 9
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值